@effect-gql/core 0.1.0 → 1.0.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.
Files changed (164) hide show
  1. package/README.md +100 -0
  2. package/builder/index.cjs +1431 -0
  3. package/builder/index.cjs.map +1 -0
  4. package/builder/index.d.cts +259 -0
  5. package/{dist/builder/pipe-api.d.ts → builder/index.d.ts} +49 -21
  6. package/builder/index.js +1390 -0
  7. package/builder/index.js.map +1 -0
  8. package/index.cjs +3419 -0
  9. package/index.cjs.map +1 -0
  10. package/index.d.cts +523 -0
  11. package/index.d.ts +523 -0
  12. package/index.js +3242 -0
  13. package/index.js.map +1 -0
  14. package/package.json +19 -28
  15. package/schema-builder-Cvdq7Kz_.d.cts +963 -0
  16. package/schema-builder-Cvdq7Kz_.d.ts +963 -0
  17. package/server/index.cjs +1555 -0
  18. package/server/index.cjs.map +1 -0
  19. package/server/index.d.cts +680 -0
  20. package/server/index.d.ts +680 -0
  21. package/server/index.js +1524 -0
  22. package/server/index.js.map +1 -0
  23. package/dist/analyzer-extension.d.ts +0 -105
  24. package/dist/analyzer-extension.d.ts.map +0 -1
  25. package/dist/analyzer-extension.js +0 -137
  26. package/dist/analyzer-extension.js.map +0 -1
  27. package/dist/builder/execute.d.ts +0 -26
  28. package/dist/builder/execute.d.ts.map +0 -1
  29. package/dist/builder/execute.js +0 -104
  30. package/dist/builder/execute.js.map +0 -1
  31. package/dist/builder/field-builders.d.ts +0 -30
  32. package/dist/builder/field-builders.d.ts.map +0 -1
  33. package/dist/builder/field-builders.js +0 -200
  34. package/dist/builder/field-builders.js.map +0 -1
  35. package/dist/builder/index.d.ts +0 -7
  36. package/dist/builder/index.d.ts.map +0 -1
  37. package/dist/builder/index.js +0 -31
  38. package/dist/builder/index.js.map +0 -1
  39. package/dist/builder/pipe-api.d.ts.map +0 -1
  40. package/dist/builder/pipe-api.js +0 -151
  41. package/dist/builder/pipe-api.js.map +0 -1
  42. package/dist/builder/schema-builder.d.ts +0 -301
  43. package/dist/builder/schema-builder.d.ts.map +0 -1
  44. package/dist/builder/schema-builder.js +0 -566
  45. package/dist/builder/schema-builder.js.map +0 -1
  46. package/dist/builder/type-registry.d.ts +0 -80
  47. package/dist/builder/type-registry.d.ts.map +0 -1
  48. package/dist/builder/type-registry.js +0 -505
  49. package/dist/builder/type-registry.js.map +0 -1
  50. package/dist/builder/types.d.ts +0 -283
  51. package/dist/builder/types.d.ts.map +0 -1
  52. package/dist/builder/types.js +0 -3
  53. package/dist/builder/types.js.map +0 -1
  54. package/dist/cli/generate-schema.d.ts +0 -29
  55. package/dist/cli/generate-schema.d.ts.map +0 -1
  56. package/dist/cli/generate-schema.js +0 -233
  57. package/dist/cli/generate-schema.js.map +0 -1
  58. package/dist/cli/index.d.ts +0 -19
  59. package/dist/cli/index.d.ts.map +0 -1
  60. package/dist/cli/index.js +0 -24
  61. package/dist/cli/index.js.map +0 -1
  62. package/dist/context.d.ts +0 -18
  63. package/dist/context.d.ts.map +0 -1
  64. package/dist/context.js +0 -11
  65. package/dist/context.js.map +0 -1
  66. package/dist/error.d.ts +0 -45
  67. package/dist/error.d.ts.map +0 -1
  68. package/dist/error.js +0 -29
  69. package/dist/error.js.map +0 -1
  70. package/dist/extensions.d.ts +0 -130
  71. package/dist/extensions.d.ts.map +0 -1
  72. package/dist/extensions.js +0 -78
  73. package/dist/extensions.js.map +0 -1
  74. package/dist/index.d.ts +0 -12
  75. package/dist/index.d.ts.map +0 -1
  76. package/dist/index.js +0 -47
  77. package/dist/index.js.map +0 -1
  78. package/dist/loader.d.ts +0 -169
  79. package/dist/loader.d.ts.map +0 -1
  80. package/dist/loader.js +0 -237
  81. package/dist/loader.js.map +0 -1
  82. package/dist/resolver-context.d.ts +0 -154
  83. package/dist/resolver-context.d.ts.map +0 -1
  84. package/dist/resolver-context.js +0 -184
  85. package/dist/resolver-context.js.map +0 -1
  86. package/dist/schema-mapping.d.ts +0 -30
  87. package/dist/schema-mapping.d.ts.map +0 -1
  88. package/dist/schema-mapping.js +0 -280
  89. package/dist/schema-mapping.js.map +0 -1
  90. package/dist/server/cache-control.d.ts +0 -96
  91. package/dist/server/cache-control.d.ts.map +0 -1
  92. package/dist/server/cache-control.js +0 -308
  93. package/dist/server/cache-control.js.map +0 -1
  94. package/dist/server/complexity.d.ts +0 -165
  95. package/dist/server/complexity.d.ts.map +0 -1
  96. package/dist/server/complexity.js +0 -433
  97. package/dist/server/complexity.js.map +0 -1
  98. package/dist/server/config.d.ts +0 -66
  99. package/dist/server/config.d.ts.map +0 -1
  100. package/dist/server/config.js +0 -104
  101. package/dist/server/config.js.map +0 -1
  102. package/dist/server/graphiql.d.ts +0 -5
  103. package/dist/server/graphiql.d.ts.map +0 -1
  104. package/dist/server/graphiql.js +0 -43
  105. package/dist/server/graphiql.js.map +0 -1
  106. package/dist/server/index.d.ts +0 -18
  107. package/dist/server/index.d.ts.map +0 -1
  108. package/dist/server/index.js +0 -48
  109. package/dist/server/index.js.map +0 -1
  110. package/dist/server/router.d.ts +0 -79
  111. package/dist/server/router.d.ts.map +0 -1
  112. package/dist/server/router.js +0 -232
  113. package/dist/server/router.js.map +0 -1
  114. package/dist/server/schema-builder-extensions.d.ts +0 -42
  115. package/dist/server/schema-builder-extensions.d.ts.map +0 -1
  116. package/dist/server/schema-builder-extensions.js +0 -48
  117. package/dist/server/schema-builder-extensions.js.map +0 -1
  118. package/dist/server/sse-adapter.d.ts +0 -64
  119. package/dist/server/sse-adapter.d.ts.map +0 -1
  120. package/dist/server/sse-adapter.js +0 -227
  121. package/dist/server/sse-adapter.js.map +0 -1
  122. package/dist/server/sse-types.d.ts +0 -192
  123. package/dist/server/sse-types.d.ts.map +0 -1
  124. package/dist/server/sse-types.js +0 -63
  125. package/dist/server/sse-types.js.map +0 -1
  126. package/dist/server/ws-adapter.d.ts +0 -39
  127. package/dist/server/ws-adapter.d.ts.map +0 -1
  128. package/dist/server/ws-adapter.js +0 -247
  129. package/dist/server/ws-adapter.js.map +0 -1
  130. package/dist/server/ws-types.d.ts +0 -169
  131. package/dist/server/ws-types.d.ts.map +0 -1
  132. package/dist/server/ws-types.js +0 -11
  133. package/dist/server/ws-types.js.map +0 -1
  134. package/dist/server/ws-utils.d.ts +0 -42
  135. package/dist/server/ws-utils.d.ts.map +0 -1
  136. package/dist/server/ws-utils.js +0 -99
  137. package/dist/server/ws-utils.js.map +0 -1
  138. package/src/analyzer-extension.ts +0 -254
  139. package/src/builder/execute.ts +0 -153
  140. package/src/builder/field-builders.ts +0 -322
  141. package/src/builder/index.ts +0 -48
  142. package/src/builder/pipe-api.ts +0 -312
  143. package/src/builder/schema-builder.ts +0 -970
  144. package/src/builder/type-registry.ts +0 -670
  145. package/src/builder/types.ts +0 -305
  146. package/src/context.ts +0 -23
  147. package/src/error.ts +0 -32
  148. package/src/extensions.ts +0 -240
  149. package/src/index.ts +0 -32
  150. package/src/loader.ts +0 -363
  151. package/src/resolver-context.ts +0 -253
  152. package/src/schema-mapping.ts +0 -307
  153. package/src/server/cache-control.ts +0 -590
  154. package/src/server/complexity.ts +0 -774
  155. package/src/server/config.ts +0 -174
  156. package/src/server/graphiql.ts +0 -38
  157. package/src/server/index.ts +0 -96
  158. package/src/server/router.ts +0 -432
  159. package/src/server/schema-builder-extensions.ts +0 -51
  160. package/src/server/sse-adapter.ts +0 -327
  161. package/src/server/sse-types.ts +0 -234
  162. package/src/server/ws-adapter.ts +0 -355
  163. package/src/server/ws-types.ts +0 -192
  164. package/src/server/ws-utils.ts +0 -136
@@ -1,280 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.toGraphQLArgs = exports.toGraphQLObjectType = exports.toGraphQLInputType = exports.toGraphQLType = void 0;
37
- const S = __importStar(require("effect/Schema"));
38
- const AST = __importStar(require("effect/SchemaAST"));
39
- const graphql_1 = require("graphql");
40
- /**
41
- * Check if a number AST node represents an integer
42
- */
43
- const isIntegerType = (ast) => {
44
- // Check for Refinement with integer filter
45
- if (ast._tag === "Refinement") {
46
- const refinement = ast;
47
- // S.Int uses a filter with a specific predicate
48
- // Check the annotations for the integer identifier
49
- const annotations = refinement.annotations;
50
- if (annotations) {
51
- // Check for identifier annotation
52
- const identifier = AST.getIdentifierAnnotation(refinement);
53
- if (identifier._tag === "Some" && identifier.value === "Int") {
54
- return true;
55
- }
56
- }
57
- // Recursively check the base type
58
- return isIntegerType(refinement.from);
59
- }
60
- return false;
61
- };
62
- /**
63
- * Convert an Effect Schema to a GraphQL output type
64
- */
65
- const toGraphQLType = (schema) => {
66
- const ast = schema.ast;
67
- // Handle primitives
68
- if (ast._tag === "StringKeyword")
69
- return graphql_1.GraphQLString;
70
- if (ast._tag === "NumberKeyword")
71
- return graphql_1.GraphQLFloat;
72
- if (ast._tag === "BooleanKeyword")
73
- return graphql_1.GraphQLBoolean;
74
- // Handle refinements (e.g., S.Int)
75
- if (ast._tag === "Refinement") {
76
- if (isIntegerType(ast)) {
77
- return graphql_1.GraphQLInt;
78
- }
79
- // For other refinements, use the base type
80
- return (0, exports.toGraphQLType)(S.make(ast.from));
81
- }
82
- // Handle literals
83
- if (ast._tag === "Literal") {
84
- if (typeof ast.literal === "string")
85
- return graphql_1.GraphQLString;
86
- if (typeof ast.literal === "number") {
87
- // Check if it's an integer literal
88
- return Number.isInteger(ast.literal) ? graphql_1.GraphQLInt : graphql_1.GraphQLFloat;
89
- }
90
- if (typeof ast.literal === "boolean")
91
- return graphql_1.GraphQLBoolean;
92
- }
93
- // Handle arrays - check for TupleType
94
- if (ast._tag === "TupleType") {
95
- const elements = ast.elements;
96
- if (elements.length > 0) {
97
- const elementSchema = S.make(elements[0].type);
98
- return new graphql_1.GraphQLList((0, exports.toGraphQLType)(elementSchema));
99
- }
100
- }
101
- // Handle structs/objects
102
- if (ast._tag === "TypeLiteral") {
103
- const fields = {};
104
- for (const field of ast.propertySignatures) {
105
- const fieldName = String(field.name);
106
- const fieldSchema = S.make(field.type);
107
- let fieldType = (0, exports.toGraphQLType)(fieldSchema);
108
- // Make non-optional fields non-null
109
- if (!field.isOptional) {
110
- fieldType = new graphql_1.GraphQLNonNull(fieldType);
111
- }
112
- fields[fieldName] = { type: fieldType };
113
- }
114
- // Generate a name from the schema or use a default
115
- const typeName = schema.annotations?.identifier || `Object_${Math.random().toString(36).slice(2, 11)}`;
116
- return new graphql_1.GraphQLObjectType({
117
- name: typeName,
118
- fields,
119
- });
120
- }
121
- // Handle transformations - use the "to" side
122
- if (ast._tag === "Transformation") {
123
- return (0, exports.toGraphQLType)(S.make(ast.to));
124
- }
125
- // Handle unions (use first type as fallback)
126
- if (ast._tag === "Union") {
127
- const types = ast.types;
128
- if (types.length > 0) {
129
- return (0, exports.toGraphQLType)(S.make(types[0]));
130
- }
131
- }
132
- // Handle Suspend (recursive/self-referential schemas)
133
- if (ast._tag === "Suspend") {
134
- const innerAst = ast.f();
135
- return (0, exports.toGraphQLType)(S.make(innerAst));
136
- }
137
- // Default fallback
138
- return graphql_1.GraphQLString;
139
- };
140
- exports.toGraphQLType = toGraphQLType;
141
- /**
142
- * Convert an Effect Schema to a GraphQL input type
143
- */
144
- const toGraphQLInputType = (schema) => {
145
- const ast = schema.ast;
146
- // Handle primitives
147
- if (ast._tag === "StringKeyword")
148
- return graphql_1.GraphQLString;
149
- if (ast._tag === "NumberKeyword")
150
- return graphql_1.GraphQLFloat;
151
- if (ast._tag === "BooleanKeyword")
152
- return graphql_1.GraphQLBoolean;
153
- // Handle refinements (e.g., S.Int)
154
- if (ast._tag === "Refinement") {
155
- if (isIntegerType(ast)) {
156
- return graphql_1.GraphQLInt;
157
- }
158
- // For other refinements, use the base type
159
- return (0, exports.toGraphQLInputType)(S.make(ast.from));
160
- }
161
- // Handle literals
162
- if (ast._tag === "Literal") {
163
- if (typeof ast.literal === "string")
164
- return graphql_1.GraphQLString;
165
- if (typeof ast.literal === "number") {
166
- // Check if it's an integer literal
167
- return Number.isInteger(ast.literal) ? graphql_1.GraphQLInt : graphql_1.GraphQLFloat;
168
- }
169
- if (typeof ast.literal === "boolean")
170
- return graphql_1.GraphQLBoolean;
171
- }
172
- // Handle arrays
173
- if (ast._tag === "TupleType") {
174
- const elements = ast.elements;
175
- if (elements.length > 0) {
176
- const elementSchema = S.make(elements[0].type);
177
- return new graphql_1.GraphQLList((0, exports.toGraphQLInputType)(elementSchema));
178
- }
179
- }
180
- // Handle structs/objects as input types
181
- if (ast._tag === "TypeLiteral") {
182
- const fields = {};
183
- for (const field of ast.propertySignatures) {
184
- const fieldName = String(field.name);
185
- const fieldSchema = S.make(field.type);
186
- let fieldType = (0, exports.toGraphQLInputType)(fieldSchema);
187
- // Make non-optional fields non-null
188
- if (!field.isOptional) {
189
- fieldType = new graphql_1.GraphQLNonNull(fieldType);
190
- }
191
- fields[fieldName] = { type: fieldType };
192
- }
193
- const typeName = schema.annotations?.identifier || `Input_${Math.random().toString(36).slice(2, 11)}`;
194
- return new graphql_1.GraphQLInputObjectType({
195
- name: typeName,
196
- fields,
197
- });
198
- }
199
- // Handle transformations - use the "from" side for input
200
- if (ast._tag === "Transformation") {
201
- return (0, exports.toGraphQLInputType)(S.make(ast.from));
202
- }
203
- // Handle unions (use first type as fallback)
204
- if (ast._tag === "Union") {
205
- const types = ast.types;
206
- if (types.length > 0) {
207
- return (0, exports.toGraphQLInputType)(S.make(types[0]));
208
- }
209
- }
210
- // Handle Suspend (recursive/self-referential schemas)
211
- if (ast._tag === "Suspend") {
212
- const innerAst = ast.f();
213
- return (0, exports.toGraphQLInputType)(S.make(innerAst));
214
- }
215
- // Default fallback
216
- return graphql_1.GraphQLString;
217
- };
218
- exports.toGraphQLInputType = toGraphQLInputType;
219
- /**
220
- * Create a GraphQL Object Type from an Effect Schema with a name
221
- * Optionally add computed/relational fields with resolvers
222
- */
223
- const toGraphQLObjectType = (name, schema, additionalFields) => {
224
- const ast = schema.ast;
225
- if (ast._tag === "TypeLiteral") {
226
- const fields = {};
227
- // Add fields from schema
228
- for (const field of ast.propertySignatures) {
229
- const fieldName = String(field.name);
230
- const fieldSchema = S.make(field.type);
231
- let fieldType = (0, exports.toGraphQLType)(fieldSchema);
232
- // Make non-optional fields non-null
233
- if (!field.isOptional) {
234
- fieldType = new graphql_1.GraphQLNonNull(fieldType);
235
- }
236
- fields[fieldName] = { type: fieldType };
237
- }
238
- // Add additional computed/relational fields
239
- if (additionalFields) {
240
- for (const [fieldName, fieldConfig] of Object.entries(additionalFields)) {
241
- fields[fieldName] = {
242
- type: fieldConfig.type,
243
- args: fieldConfig.args,
244
- description: fieldConfig.description,
245
- // Note: resolve will be set later when runtime is available
246
- resolve: fieldConfig.resolve,
247
- };
248
- }
249
- }
250
- return new graphql_1.GraphQLObjectType({
251
- name,
252
- fields,
253
- });
254
- }
255
- throw new Error(`Schema must be an object type to convert to GraphQLObjectType`);
256
- };
257
- exports.toGraphQLObjectType = toGraphQLObjectType;
258
- /**
259
- * Convert an Effect Schema to GraphQL arguments
260
- */
261
- const toGraphQLArgs = (schema) => {
262
- const ast = schema.ast;
263
- if (ast._tag === "TypeLiteral") {
264
- const args = {};
265
- for (const field of ast.propertySignatures) {
266
- const fieldName = String(field.name);
267
- const fieldSchema = S.make(field.type);
268
- let fieldType = (0, exports.toGraphQLInputType)(fieldSchema);
269
- // Make non-optional fields non-null
270
- if (!field.isOptional) {
271
- fieldType = new graphql_1.GraphQLNonNull(fieldType);
272
- }
273
- args[fieldName] = { type: fieldType };
274
- }
275
- return args;
276
- }
277
- throw new Error(`Schema must be an object type to convert to GraphQL arguments`);
278
- };
279
- exports.toGraphQLArgs = toGraphQLArgs;
280
- //# sourceMappingURL=schema-mapping.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-mapping.js","sourceRoot":"","sources":["../src/schema-mapping.ts"],"names":[],"mappings":"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"}
@@ -1,96 +0,0 @@
1
- import { Effect, Config } from "effect";
2
- import { DocumentNode, OperationDefinitionNode, GraphQLSchema } from "graphql";
3
- import type { CacheHint, CacheControlScope } from "../builder/types";
4
- /**
5
- * Map of type.field -> cache hint, or type -> cache hint for type-level hints
6
- */
7
- export type CacheHintMap = Map<string, CacheHint>;
8
- /**
9
- * Computed cache policy for a GraphQL response
10
- */
11
- export interface CachePolicy {
12
- /**
13
- * Maximum age in seconds the response can be cached.
14
- * This is the minimum maxAge of all resolved fields.
15
- * If 0, the response should not be cached.
16
- */
17
- readonly maxAge: number;
18
- /**
19
- * Cache scope - PUBLIC means CDN-cacheable, PRIVATE means browser-only.
20
- * If any field is PRIVATE, the entire response is PRIVATE.
21
- */
22
- readonly scope: CacheControlScope;
23
- }
24
- /**
25
- * Configuration for cache control
26
- */
27
- export interface CacheControlConfig {
28
- /**
29
- * Enable cache control header calculation.
30
- * @default true
31
- */
32
- readonly enabled?: boolean;
33
- /**
34
- * Default maxAge for root fields (Query, Mutation).
35
- * @default 0 (no caching)
36
- */
37
- readonly defaultMaxAge?: number;
38
- /**
39
- * Default scope for fields without explicit scope.
40
- * @default "PUBLIC"
41
- */
42
- readonly defaultScope?: CacheControlScope;
43
- /**
44
- * Whether to set HTTP Cache-Control headers on responses.
45
- * @default true
46
- */
47
- readonly calculateHttpHeaders?: boolean;
48
- }
49
- /**
50
- * Information provided to cache policy calculation
51
- */
52
- export interface CachePolicyAnalysisInfo {
53
- /** Parsed GraphQL document */
54
- readonly document: DocumentNode;
55
- /** The operation being executed */
56
- readonly operation: OperationDefinitionNode;
57
- /** The GraphQL schema */
58
- readonly schema: GraphQLSchema;
59
- /** Cache hints from the builder (type.field -> hint or type -> hint) */
60
- readonly cacheHints: CacheHintMap;
61
- /** Configuration options */
62
- readonly config: CacheControlConfig;
63
- }
64
- /**
65
- * Compute the cache policy for a GraphQL response based on the fields resolved.
66
- *
67
- * The policy is computed by walking the selection set and aggregating hints:
68
- * - maxAge: Use the minimum maxAge of all resolved fields
69
- * - scope: If any field is PRIVATE, the entire response is PRIVATE
70
- *
71
- * Default behaviors (matching Apollo):
72
- * - Root fields default to maxAge: 0 (unless configured otherwise)
73
- * - Object-returning fields default to maxAge: 0
74
- * - Scalar fields inherit their parent's maxAge
75
- * - Fields with inheritMaxAge: true inherit from parent
76
- */
77
- export declare const computeCachePolicy: (info: CachePolicyAnalysisInfo) => Effect.Effect<CachePolicy, never, never>;
78
- /**
79
- * Compute cache policy from a query string
80
- */
81
- export declare const computeCachePolicyFromQuery: (query: string, operationName: string | undefined, schema: GraphQLSchema, cacheHints: CacheHintMap, config?: CacheControlConfig) => Effect.Effect<CachePolicy, Error, never>;
82
- /**
83
- * Convert a cache policy to an HTTP Cache-Control header value
84
- */
85
- export declare const toCacheControlHeader: (policy: CachePolicy) => string;
86
- /**
87
- * Effect Config for loading cache control configuration from environment variables.
88
- *
89
- * Environment variables:
90
- * - GRAPHQL_CACHE_CONTROL_ENABLED: Enable cache control (default: true)
91
- * - GRAPHQL_CACHE_CONTROL_DEFAULT_MAX_AGE: Default maxAge for root fields (default: 0)
92
- * - GRAPHQL_CACHE_CONTROL_DEFAULT_SCOPE: Default scope (PUBLIC or PRIVATE, default: PUBLIC)
93
- * - GRAPHQL_CACHE_CONTROL_HTTP_HEADERS: Set HTTP headers (default: true)
94
- */
95
- export declare const CacheControlConfigFromEnv: Config.Config<CacheControlConfig>;
96
- //# sourceMappingURL=cache-control.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-control.d.ts","sourceRoot":"","sources":["../../src/server/cache-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EACL,YAAY,EACZ,uBAAuB,EAIvB,aAAa,EASd,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAMpE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAE1B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAE/B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAA;IAEzC;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,mCAAmC;IACnC,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAA;IAC3C,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CACpC;AAMD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,uBAAuB,KAC5B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAmCtC,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,eAAe,MAAM,GAAG,SAAS,EACjC,QAAQ,aAAa,EACrB,YAAY,YAAY,EACxB,SAAQ,kBAAuB,KAC9B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CA2CtC,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,WAAW,KAAG,MAU1D,CAAA;AAoWD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAUtE,CAAA"}