diff --git a/graphql/env/README.md b/graphql/env/README.md index 9e4f89c22..8add4f897 100644 --- a/graphql/env/README.md +++ b/graphql/env/README.md @@ -38,7 +38,7 @@ In addition to all environment variables supported by `@pgpmjs/env`, this packag - `FEATURES_POSTGIS` - Enable PostGIS support ### API Configuration -- `API_ENABLE_META` - Enable meta API +- `API_ENABLE_SERVICES` - Enable services API (domain/subdomain routing) - `API_IS_PUBLIC` - Whether API is public - `API_EXPOSED_SCHEMAS` - Comma-separated list of exposed schemas - `API_META_SCHEMAS` - Comma-separated list of meta schemas @@ -59,7 +59,7 @@ GraphQL defaults are provided by `@constructive-io/graphql-types`: postgis: true }, api: { - enableMetaApi: true, + enableServicesApi: true, exposedSchemas: [], anonRole: 'administrator', roleName: 'administrator', diff --git a/graphql/env/__tests__/__snapshots__/merge.test.ts.snap b/graphql/env/__tests__/__snapshots__/merge.test.ts.snap index e95e27738..2f32db1c3 100644 --- a/graphql/env/__tests__/__snapshots__/merge.test.ts.snap +++ b/graphql/env/__tests__/__snapshots__/merge.test.ts.snap @@ -5,7 +5,7 @@ exports[`getEnvOptions merges pgpm defaults, graphql defaults, config, env, and "api": { "anonRole": "env_anon", "defaultDatabaseId": "override_db", - "enableMetaApi": false, + "enableServicesApi": false, "exposedSchemas": [ "public", "app", @@ -60,6 +60,11 @@ exports[`getEnvOptions merges pgpm defaults, graphql defaults, config, env, and "usePlan": true, "useTx": true, }, + "errorOutput": { + "maxLength": 10000, + "queryHistoryLimit": 30, + "verbose": false, + }, "features": { "oppositeBaseNames": false, "postgis": false, diff --git a/graphql/env/__tests__/merge.test.ts b/graphql/env/__tests__/merge.test.ts index 1fa1786e8..4cc6e240f 100644 --- a/graphql/env/__tests__/merge.test.ts +++ b/graphql/env/__tests__/merge.test.ts @@ -34,7 +34,7 @@ describe('getEnvOptions', () => { simpleInflection: false }, api: { - enableMetaApi: false, + enableServicesApi: false, isPublic: false, metaSchemas: ['config_meta'] } @@ -46,7 +46,7 @@ describe('getEnvOptions', () => { GRAPHILE_SCHEMA: 'env_schema_a,env_schema_b', FEATURES_SIMPLE_INFLECTION: 'true', FEATURES_POSTGIS: 'false', - API_ENABLE_META: 'true', + API_ENABLE_SERVICES: 'true', API_IS_PUBLIC: 'true', API_EXPOSED_SCHEMAS: 'public,app', API_META_SCHEMAS: 'env_meta1,env_meta2', @@ -73,7 +73,7 @@ describe('getEnvOptions', () => { oppositeBaseNames: false }, api: { - enableMetaApi: false, + enableServicesApi: false, defaultDatabaseId: 'override_db' } }, diff --git a/graphql/env/src/env.ts b/graphql/env/src/env.ts index 6c846c7da..cb7b3fce3 100644 --- a/graphql/env/src/env.ts +++ b/graphql/env/src/env.ts @@ -20,7 +20,7 @@ export const getGraphQLEnvVars = (env: NodeJS.ProcessEnv = process.env): Partial FEATURES_OPPOSITE_BASE_NAMES, FEATURES_POSTGIS, - API_ENABLE_META, + API_ENABLE_SERVICES, API_IS_PUBLIC, API_EXPOSED_SCHEMAS, API_META_SCHEMAS, @@ -43,7 +43,7 @@ export const getGraphQLEnvVars = (env: NodeJS.ProcessEnv = process.env): Partial ...(FEATURES_POSTGIS && { postgis: parseEnvBoolean(FEATURES_POSTGIS) }), }, api: { - ...(API_ENABLE_META && { enableMetaApi: parseEnvBoolean(API_ENABLE_META) }), + ...(API_ENABLE_SERVICES && { enableServicesApi: parseEnvBoolean(API_ENABLE_SERVICES) }), ...(API_IS_PUBLIC && { isPublic: parseEnvBoolean(API_IS_PUBLIC) }), ...(API_EXPOSED_SCHEMAS && { exposedSchemas: API_EXPOSED_SCHEMAS.split(',').map(s => s.trim()) }), ...(API_META_SCHEMAS && { metaSchemas: API_META_SCHEMAS.split(',').map(s => s.trim()) }), diff --git a/graphql/server/src/middleware/api.ts b/graphql/server/src/middleware/api.ts index 3c9aed248..cf4a82fe6 100644 --- a/graphql/server/src/middleware/api.ts +++ b/graphql/server/src/middleware/api.ts @@ -85,7 +85,7 @@ export const createApiMiddleware = (opts: any) => { res: Response, next: NextFunction ): Promise => { - if (opts.api?.enableMetaApi === false) { + if (opts.api?.enableServicesApi === false) { const schemas = opts.api.exposedSchemas; const anonRole = opts.api.anonRole; const roleName = opts.api.roleName; diff --git a/graphql/types/README.md b/graphql/types/README.md index 124bb3b10..569eba89e 100644 --- a/graphql/types/README.md +++ b/graphql/types/README.md @@ -28,7 +28,7 @@ const config: ConstructiveOptions = { appendPlugins: [], }, api: { - enableMetaApi: true, + enableServicesApi: true, exposedSchemas: ['public'], }, features: { diff --git a/graphql/types/src/graphile.ts b/graphql/types/src/graphile.ts index 3f98c3ca5..d60f72b66 100644 --- a/graphql/types/src/graphile.ts +++ b/graphql/types/src/graphile.ts @@ -31,8 +31,8 @@ export interface GraphileFeatureOptions { * Configuration options for the Constructive API */ export interface ApiOptions { - /** Whether to enable the meta API endpoints */ - enableMetaApi?: boolean; + /** Whether to enable the services API (domain/subdomain routing via services_public) */ + enableServicesApi?: boolean; /** Database schemas to expose through the API */ exposedSchemas?: string[]; /** Anonymous role name for unauthenticated requests */ @@ -70,7 +70,7 @@ export const graphileFeatureDefaults: GraphileFeatureOptions = { * Default API configuration values */ export const apiDefaults: ApiOptions = { - enableMetaApi: true, + enableServicesApi: true, exposedSchemas: [], anonRole: 'administrator', roleName: 'administrator', diff --git a/packages/cli/src/commands/server.ts b/packages/cli/src/commands/server.ts index f2e7b8a2c..92472ad75 100644 --- a/packages/cli/src/commands/server.ts +++ b/packages/cli/src/commands/server.ts @@ -21,7 +21,7 @@ Options: --simpleInflection Use simple inflection (default: true) --oppositeBaseNames Use opposite base names (default: false) --postgis Enable PostGIS extension (default: true) - --metaApi Enable Meta API (default: true) + --servicesApi Enable Services API (default: true) --cwd Working directory (default: current directory) Examples: @@ -57,8 +57,8 @@ const questions: Question[] = [ useDefault: true }, { - name: 'metaApi', - message: 'Enable Meta API?', + name: 'servicesApi', + message: 'Enable Services API?', type: 'confirm', required: false, default: true, @@ -125,7 +125,7 @@ export default async ( port, postgis, simpleInflection, - metaApi, + servicesApi, origin } = await prompter.prompt(argv, questions); @@ -144,7 +144,7 @@ export default async ( let selectedSchemas: string[] = []; let authRole: string | undefined; let roleName: string | undefined; - if (!metaApi) { + if (!servicesApi) { const db = await getPgPool({ database: selectedDb }); const result = await db.query(` SELECT nspname @@ -197,8 +197,8 @@ export default async ( postgis }, api: { - enableMetaApi: metaApi, - ...(metaApi === false && { exposedSchemas: selectedSchemas, authRole, roleName }) + enableServicesApi: servicesApi, + ...(servicesApi === false && { exposedSchemas: selectedSchemas, authRole, roleName }) }, server: { port,