@constructive-io/graphql-env 3.34.6 → 3.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -107,6 +107,9 @@ PostgreSQL extensions or change the API's exposed schemas.
107
107
  Each cache limit must be a safe integer of at least `2`. When omitted, Grafast's
108
108
  upstream default for that cache remains in effect.
109
109
 
110
+ ### Grafast Explain
111
+ - `GRAPHILE_EXPLAIN` - Allow clients to request Grafast plan/SQL output via the `x-graphql-explain` header (off unless set)
112
+
110
113
  ### Feature Flags
111
114
  - `FEATURES_SIMPLE_INFLECTION` - Enable simple inflection plugin
112
115
  - `FEATURES_OPPOSITE_BASE_NAMES` - Enable opposite base names
@@ -121,6 +124,7 @@ upstream default for that cache remains in effect.
121
124
  - `API_ROLE_NAME` - Default role name
122
125
  - `API_FLUSH_TOKEN` - Bearer token required by `POST /flush`; the route is not mounted when unset
123
126
  - `API_INTROSPECTION_ROLE` - Role PostGraphile introspects as; unset means the pool's connecting role
127
+ - `API_CONTROL_ROLE` - Role every control-plane query runs as (`SET LOCAL ROLE` in its own transaction); required by the server, no default
124
128
 
125
129
  ## Defaults
126
130
 
package/env.js CHANGED
@@ -9,7 +9,7 @@ const scoped_introspection_1 = require("./scoped-introspection");
9
9
  */
10
10
  const getGraphQLEnvVars = (env = process.env) => {
11
11
  const scopedIntrospection = (0, scoped_introspection_1.getScopedIntrospectionEnv)(env);
12
- const { GRAPHILE_SCHEMA, GRAPHILE_QUERY_CACHE_MAX_LENGTH, GRAPHILE_OPERATIONS_CACHE_MAX_LENGTH, GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH, FEATURES_SIMPLE_INFLECTION, FEATURES_OPPOSITE_BASE_NAMES, FEATURES_POSTGIS, API_ROUTING_SCHEMA, API_IS_PUBLIC, API_EXPOSED_SCHEMAS, API_META_SCHEMAS, API_ANON_ROLE, API_ROLE_NAME, API_FLUSH_TOKEN, API_INTROSPECTION_ROLE, EMBEDDER_PROVIDER, EMBEDDER_MODEL, EMBEDDER_BASE_URL, CHAT_PROVIDER, CHAT_MODEL, CHAT_BASE_URL, SMS_PROVIDER, SMS_SENDER_ID, SMS_REQUEST_TIMEOUT_MS, SEND_SMS_DRY_RUN, DEVSMS_BASE_URL } = env;
12
+ const { GRAPHILE_SCHEMA, GRAPHILE_EXPLAIN, GRAPHILE_QUERY_CACHE_MAX_LENGTH, GRAPHILE_OPERATIONS_CACHE_MAX_LENGTH, GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH, FEATURES_SIMPLE_INFLECTION, FEATURES_OPPOSITE_BASE_NAMES, FEATURES_POSTGIS, API_ROUTING_SCHEMA, API_IS_PUBLIC, API_EXPOSED_SCHEMAS, API_META_SCHEMAS, API_ANON_ROLE, API_ROLE_NAME, API_FLUSH_TOKEN, API_INTROSPECTION_ROLE, API_CONTROL_ROLE, EMBEDDER_PROVIDER, EMBEDDER_MODEL, EMBEDDER_BASE_URL, CHAT_PROVIDER, CHAT_MODEL, CHAT_BASE_URL, SMS_PROVIDER, SMS_SENDER_ID, SMS_REQUEST_TIMEOUT_MS, SEND_SMS_DRY_RUN, DEVSMS_BASE_URL } = env;
13
13
  // Keep this function as a partial env-override parser. SMS runtime defaults
14
14
  // belong to the consuming application; injecting them here would incorrectly
15
15
  // let an absent env var overwrite pgpm.json or consumer-specific values.
@@ -41,6 +41,7 @@ const getGraphQLEnvVars = (env = process.env) => {
41
41
  operationOperationPlansCacheMaxLength: (0, grafast_cache_limits_1.parseGrafastCacheLimitEnv)(GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH, 'GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH')
42
42
  })
43
43
  }),
44
+ ...(GRAPHILE_EXPLAIN && { explain: (0, _12factor_env_1.parseEnvBoolean)(GRAPHILE_EXPLAIN) }),
44
45
  ...(GRAPHILE_SCHEMA && {
45
46
  schema: GRAPHILE_SCHEMA.includes(',')
46
47
  ? GRAPHILE_SCHEMA.split(',').map(s => s.trim())
@@ -60,7 +61,8 @@ const getGraphQLEnvVars = (env = process.env) => {
60
61
  ...(API_ANON_ROLE && { anonRole: API_ANON_ROLE }),
61
62
  ...(API_ROLE_NAME && { roleName: API_ROLE_NAME }),
62
63
  ...(API_FLUSH_TOKEN && { flushToken: API_FLUSH_TOKEN }),
63
- ...(API_INTROSPECTION_ROLE && { introspectionRole: API_INTROSPECTION_ROLE })
64
+ ...(API_INTROSPECTION_ROLE && { introspectionRole: API_INTROSPECTION_ROLE }),
65
+ ...(API_CONTROL_ROLE && { controlRole: API_CONTROL_ROLE })
64
66
  },
65
67
  ...((EMBEDDER_PROVIDER || CHAT_PROVIDER) && {
66
68
  llm: {
package/esm/env.js CHANGED
@@ -6,7 +6,7 @@ import { getScopedIntrospectionEnv } from './scoped-introspection';
6
6
  */
7
7
  export const getGraphQLEnvVars = (env = process.env) => {
8
8
  const scopedIntrospection = getScopedIntrospectionEnv(env);
9
- const { GRAPHILE_SCHEMA, GRAPHILE_QUERY_CACHE_MAX_LENGTH, GRAPHILE_OPERATIONS_CACHE_MAX_LENGTH, GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH, FEATURES_SIMPLE_INFLECTION, FEATURES_OPPOSITE_BASE_NAMES, FEATURES_POSTGIS, API_ROUTING_SCHEMA, API_IS_PUBLIC, API_EXPOSED_SCHEMAS, API_META_SCHEMAS, API_ANON_ROLE, API_ROLE_NAME, API_FLUSH_TOKEN, API_INTROSPECTION_ROLE, EMBEDDER_PROVIDER, EMBEDDER_MODEL, EMBEDDER_BASE_URL, CHAT_PROVIDER, CHAT_MODEL, CHAT_BASE_URL, SMS_PROVIDER, SMS_SENDER_ID, SMS_REQUEST_TIMEOUT_MS, SEND_SMS_DRY_RUN, DEVSMS_BASE_URL } = env;
9
+ const { GRAPHILE_SCHEMA, GRAPHILE_EXPLAIN, GRAPHILE_QUERY_CACHE_MAX_LENGTH, GRAPHILE_OPERATIONS_CACHE_MAX_LENGTH, GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH, FEATURES_SIMPLE_INFLECTION, FEATURES_OPPOSITE_BASE_NAMES, FEATURES_POSTGIS, API_ROUTING_SCHEMA, API_IS_PUBLIC, API_EXPOSED_SCHEMAS, API_META_SCHEMAS, API_ANON_ROLE, API_ROLE_NAME, API_FLUSH_TOKEN, API_INTROSPECTION_ROLE, API_CONTROL_ROLE, EMBEDDER_PROVIDER, EMBEDDER_MODEL, EMBEDDER_BASE_URL, CHAT_PROVIDER, CHAT_MODEL, CHAT_BASE_URL, SMS_PROVIDER, SMS_SENDER_ID, SMS_REQUEST_TIMEOUT_MS, SEND_SMS_DRY_RUN, DEVSMS_BASE_URL } = env;
10
10
  // Keep this function as a partial env-override parser. SMS runtime defaults
11
11
  // belong to the consuming application; injecting them here would incorrectly
12
12
  // let an absent env var overwrite pgpm.json or consumer-specific values.
@@ -38,6 +38,7 @@ export const getGraphQLEnvVars = (env = process.env) => {
38
38
  operationOperationPlansCacheMaxLength: parseGrafastCacheLimitEnv(GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH, 'GRAPHILE_OPERATION_PLANS_CACHE_MAX_LENGTH')
39
39
  })
40
40
  }),
41
+ ...(GRAPHILE_EXPLAIN && { explain: parseEnvBoolean(GRAPHILE_EXPLAIN) }),
41
42
  ...(GRAPHILE_SCHEMA && {
42
43
  schema: GRAPHILE_SCHEMA.includes(',')
43
44
  ? GRAPHILE_SCHEMA.split(',').map(s => s.trim())
@@ -57,7 +58,8 @@ export const getGraphQLEnvVars = (env = process.env) => {
57
58
  ...(API_ANON_ROLE && { anonRole: API_ANON_ROLE }),
58
59
  ...(API_ROLE_NAME && { roleName: API_ROLE_NAME }),
59
60
  ...(API_FLUSH_TOKEN && { flushToken: API_FLUSH_TOKEN }),
60
- ...(API_INTROSPECTION_ROLE && { introspectionRole: API_INTROSPECTION_ROLE })
61
+ ...(API_INTROSPECTION_ROLE && { introspectionRole: API_INTROSPECTION_ROLE }),
62
+ ...(API_CONTROL_ROLE && { controlRole: API_CONTROL_ROLE })
61
63
  },
62
64
  ...((EMBEDDER_PROVIDER || CHAT_PROVIDER) && {
63
65
  llm: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructive-io/graphql-env",
3
- "version": "3.34.6",
3
+ "version": "3.36.0",
4
4
  "author": "Constructive <developers@constructive.io>",
5
5
  "description": "Constructive environment configuration with GraphQL/Graphile support",
6
6
  "main": "index.js",
@@ -30,8 +30,8 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "12factor-env": "^1.33.0",
33
- "@constructive-io/graphql-types": "^3.33.6",
34
- "@pgpmjs/env": "^2.46.3",
33
+ "@constructive-io/graphql-types": "^3.35.0",
34
+ "@pgpmjs/env": "^2.47.0",
35
35
  "deepmerge": "^4.3.1"
36
36
  },
37
37
  "keywords": [
@@ -45,5 +45,5 @@
45
45
  "devDependencies": {
46
46
  "makage": "^0.8.0"
47
47
  },
48
- "gitHead": "a95137c03998f4ef18aaba770bdeb598077e5b51"
48
+ "gitHead": "2f506a4a4062b4bd92979c02249e0fee14af4043"
49
49
  }