@graphitation/supermassive 3.15.3 → 3.16.1-canary.1
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/.eslintcache +1 -1
- package/CHANGELOG.md +1 -9
- package/lib/executeWithoutSchema.d.ts.map +1 -1
- package/lib/executeWithoutSchema.js +41 -0
- package/lib/executeWithoutSchema.js.map +2 -2
- package/lib/executeWithoutSchema.mjs +41 -0
- package/lib/executeWithoutSchema.mjs.map +2 -2
- package/lib/schema/definition.d.ts +54 -19
- package/lib/schema/definition.d.ts.map +1 -1
- package/lib/schema/definition.js +127 -18
- package/lib/schema/definition.js.map +3 -3
- package/lib/schema/definition.mjs +109 -16
- package/lib/schema/definition.mjs.map +2 -2
- package/lib/schema/directives.d.ts.map +1 -1
- package/lib/schema/directives.js +9 -4
- package/lib/schema/directives.js.map +2 -2
- package/lib/schema/directives.mjs +10 -5
- package/lib/schema/directives.mjs.map +2 -2
- package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
- package/lib/utilities/decodeASTSchema.js +185 -33
- package/lib/utilities/decodeASTSchema.js.map +2 -2
- package/lib/utilities/decodeASTSchema.mjs +196 -36
- package/lib/utilities/decodeASTSchema.mjs.map +2 -2
- package/lib/utilities/encodeASTSchema.d.ts +5 -1
- package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
- package/lib/utilities/encodeASTSchema.js +171 -38
- package/lib/utilities/encodeASTSchema.js.map +2 -2
- package/lib/utilities/encodeASTSchema.mjs +171 -38
- package/lib/utilities/encodeASTSchema.mjs.map +2 -2
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +1 -1
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +2 -2
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
- package/lib/utilities/mergeSchemaDefinitions.d.ts +6 -2
- package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
- package/lib/utilities/mergeSchemaDefinitions.js +86 -5
- package/lib/utilities/mergeSchemaDefinitions.js.map +3 -3
- package/lib/utilities/mergeSchemaDefinitions.mjs +96 -7
- package/lib/utilities/mergeSchemaDefinitions.mjs.map +3 -3
- package/lib/utilities/subtractSchemaDefinitions.js +4 -4
- package/lib/utilities/subtractSchemaDefinitions.js.map +2 -2
- package/lib/utilities/subtractSchemaDefinitions.mjs +5 -5
- package/lib/utilities/subtractSchemaDefinitions.mjs.map +2 -2
- package/lib/values.js +2 -2
- package/lib/values.js.map +2 -2
- package/lib/values.mjs +4 -4
- package/lib/values.mjs.map +2 -2
- package/package.json +1 -1
|
@@ -24,39 +24,47 @@ module.exports = __toCommonJS(encodeASTSchema_exports);
|
|
|
24
24
|
var import_definition = require("../schema/definition");
|
|
25
25
|
var import_reference = require("../schema/reference");
|
|
26
26
|
var import_valueFromASTUntyped = require("./valueFromASTUntyped");
|
|
27
|
-
function encodeASTSchema(schemaFragment) {
|
|
27
|
+
function encodeASTSchema(schemaFragment, options) {
|
|
28
28
|
const fragments = [{ types: {} }];
|
|
29
29
|
const add = (name, def, extension = false) => addTypeDefinition(fragments, name, def, extension);
|
|
30
30
|
for (const definition of schemaFragment.definitions) {
|
|
31
31
|
if (definition.kind === "ObjectTypeDefinition") {
|
|
32
|
-
add(definition.name.value, encodeObjectType(definition));
|
|
32
|
+
add(definition.name.value, encodeObjectType(definition, options));
|
|
33
33
|
} else if (definition.kind === "InputObjectTypeDefinition") {
|
|
34
|
-
add(definition.name.value, encodeInputObjectType(definition));
|
|
34
|
+
add(definition.name.value, encodeInputObjectType(definition, options));
|
|
35
35
|
} else if (definition.kind === "EnumTypeDefinition") {
|
|
36
|
-
add(definition.name.value, encodeEnumType(definition));
|
|
36
|
+
add(definition.name.value, encodeEnumType(definition, options));
|
|
37
37
|
} else if (definition.kind === "UnionTypeDefinition") {
|
|
38
|
-
add(definition.name.value, encodeUnionType(definition));
|
|
38
|
+
add(definition.name.value, encodeUnionType(definition, options));
|
|
39
39
|
} else if (definition.kind === "InterfaceTypeDefinition") {
|
|
40
|
-
add(definition.name.value, encodeInterfaceType(definition));
|
|
40
|
+
add(definition.name.value, encodeInterfaceType(definition, options));
|
|
41
41
|
} else if (definition.kind === "ScalarTypeDefinition") {
|
|
42
|
-
add(definition.name.value, encodeScalarType(definition));
|
|
42
|
+
add(definition.name.value, encodeScalarType(definition, options));
|
|
43
43
|
} else if (definition.kind === "ObjectTypeExtension") {
|
|
44
|
-
add(definition.name.value, encodeObjectType(definition), true);
|
|
44
|
+
add(definition.name.value, encodeObjectType(definition, options), true);
|
|
45
45
|
} else if (definition.kind === "InputObjectTypeExtension") {
|
|
46
|
-
add(
|
|
46
|
+
add(
|
|
47
|
+
definition.name.value,
|
|
48
|
+
encodeInputObjectType(definition, options),
|
|
49
|
+
true
|
|
50
|
+
);
|
|
47
51
|
} else if (definition.kind === "EnumTypeExtension") {
|
|
48
|
-
add(definition.name.value, encodeEnumType(definition), true);
|
|
52
|
+
add(definition.name.value, encodeEnumType(definition, options), true);
|
|
49
53
|
} else if (definition.kind === "UnionTypeExtension") {
|
|
50
|
-
add(definition.name.value, encodeUnionType(definition), true);
|
|
54
|
+
add(definition.name.value, encodeUnionType(definition, options), true);
|
|
51
55
|
} else if (definition.kind === "InterfaceTypeExtension") {
|
|
52
|
-
add(
|
|
56
|
+
add(
|
|
57
|
+
definition.name.value,
|
|
58
|
+
encodeInterfaceType(definition, options),
|
|
59
|
+
true
|
|
60
|
+
);
|
|
53
61
|
} else if (definition.kind === "ScalarTypeExtension") {
|
|
54
|
-
add(definition.name.value, encodeScalarType(definition), true);
|
|
62
|
+
add(definition.name.value, encodeScalarType(definition, options), true);
|
|
55
63
|
} else if (definition.kind === "DirectiveDefinition") {
|
|
56
64
|
if (!fragments[0].directives) {
|
|
57
65
|
fragments[0].directives = [];
|
|
58
66
|
}
|
|
59
|
-
fragments[0].directives.push(encodeDirective(definition));
|
|
67
|
+
fragments[0].directives.push(encodeDirective(definition, options));
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
return fragments;
|
|
@@ -75,54 +83,90 @@ function addTypeDefinition(fragments, typeName, typeDef, isExtension = false) {
|
|
|
75
83
|
const newFragment = { types: { [typeName]: typeDef } };
|
|
76
84
|
fragments.push(newFragment);
|
|
77
85
|
}
|
|
78
|
-
function encodeScalarType(
|
|
79
|
-
return (0, import_definition.createScalarTypeDefinition)();
|
|
86
|
+
function encodeScalarType(type, options) {
|
|
87
|
+
return (0, import_definition.createScalarTypeDefinition)(getTypeDefinitionMetadata(type, options));
|
|
80
88
|
}
|
|
81
|
-
function encodeEnumType(node) {
|
|
89
|
+
function encodeEnumType(node, options) {
|
|
82
90
|
var _a;
|
|
83
91
|
return (0, import_definition.createEnumTypeDefinition)(
|
|
84
|
-
((_a = node.values) != null ? _a : []).map((value) => value.name.value)
|
|
92
|
+
((_a = node.values) != null ? _a : []).map((value) => value.name.value),
|
|
93
|
+
getEnumTypeDefinitionMetadata(node, options)
|
|
85
94
|
);
|
|
86
95
|
}
|
|
87
|
-
function encodeObjectType(node) {
|
|
96
|
+
function encodeObjectType(node, options) {
|
|
88
97
|
var _a, _b;
|
|
89
98
|
const fields = /* @__PURE__ */ Object.create(null);
|
|
90
99
|
for (const field of (_a = node.fields) != null ? _a : []) {
|
|
91
|
-
fields[field.name.value] = encodeField(field);
|
|
100
|
+
fields[field.name.value] = encodeField(field, options);
|
|
92
101
|
}
|
|
93
102
|
return (0, import_definition.createObjectTypeDefinition)(
|
|
94
103
|
fields,
|
|
95
|
-
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value)
|
|
104
|
+
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value),
|
|
105
|
+
getTypeDefinitionMetadata(node, options)
|
|
96
106
|
);
|
|
97
107
|
}
|
|
98
|
-
function
|
|
108
|
+
function encodeDirectiveTuple(directive) {
|
|
109
|
+
var _a;
|
|
110
|
+
if (!directive) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const name = directive.name.value;
|
|
114
|
+
const args = /* @__PURE__ */ Object.create(null);
|
|
115
|
+
for (const argument of (_a = directive.arguments) != null ? _a : []) {
|
|
116
|
+
args[argument.name.value] = (0, import_valueFromASTUntyped.valueFromASTUntyped)(argument.value);
|
|
117
|
+
}
|
|
118
|
+
if (Object.keys(args).length) {
|
|
119
|
+
return [name, args];
|
|
120
|
+
}
|
|
121
|
+
return [name];
|
|
122
|
+
}
|
|
123
|
+
function encodeInterfaceType(node, options) {
|
|
99
124
|
var _a, _b;
|
|
100
125
|
const fields = /* @__PURE__ */ Object.create(null);
|
|
101
126
|
for (const field of (_a = node.fields) != null ? _a : []) {
|
|
102
|
-
fields[field.name.value] = encodeField(field);
|
|
127
|
+
fields[field.name.value] = encodeField(field, options);
|
|
103
128
|
}
|
|
104
129
|
return (0, import_definition.createInterfaceTypeDefinition)(
|
|
105
130
|
fields,
|
|
106
|
-
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value)
|
|
131
|
+
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value),
|
|
132
|
+
getTypeDefinitionMetadata(node, options)
|
|
107
133
|
);
|
|
108
134
|
}
|
|
109
|
-
function encodeUnionType(node) {
|
|
135
|
+
function encodeUnionType(node, options) {
|
|
110
136
|
var _a;
|
|
111
137
|
return (0, import_definition.createUnionTypeDefinition)(
|
|
112
|
-
((_a = node.types) != null ? _a : []).map((type) => type.name.value)
|
|
138
|
+
((_a = node.types) != null ? _a : []).map((type) => type.name.value),
|
|
139
|
+
getTypeDefinitionMetadata(node, options)
|
|
113
140
|
);
|
|
114
141
|
}
|
|
115
|
-
function encodeInputObjectType(node) {
|
|
142
|
+
function encodeInputObjectType(node, options) {
|
|
116
143
|
var _a;
|
|
117
144
|
const fields = /* @__PURE__ */ Object.create(null);
|
|
118
145
|
for (const field of (_a = node.fields) != null ? _a : []) {
|
|
119
146
|
fields[field.name.value] = encodeInputValue(field);
|
|
120
147
|
}
|
|
121
|
-
return (0, import_definition.createInputObjectTypeDefinition)(
|
|
148
|
+
return (0, import_definition.createInputObjectTypeDefinition)(
|
|
149
|
+
fields,
|
|
150
|
+
getTypeDefinitionMetadata(node, options)
|
|
151
|
+
);
|
|
122
152
|
}
|
|
123
|
-
function encodeField(node) {
|
|
153
|
+
function encodeField(node, options) {
|
|
124
154
|
var _a;
|
|
125
|
-
|
|
155
|
+
const fieldMetadata = getTypeDefinitionMetadata(node, options);
|
|
156
|
+
if (!((_a = node.arguments) == null ? void 0 : _a.length)) {
|
|
157
|
+
if (fieldMetadata) {
|
|
158
|
+
return [(0, import_reference.typeReferenceFromNode)(node.type), void 0, fieldMetadata];
|
|
159
|
+
}
|
|
160
|
+
return (0, import_reference.typeReferenceFromNode)(node.type);
|
|
161
|
+
}
|
|
162
|
+
if (fieldMetadata) {
|
|
163
|
+
return [
|
|
164
|
+
(0, import_reference.typeReferenceFromNode)(node.type),
|
|
165
|
+
encodeArguments(node),
|
|
166
|
+
fieldMetadata
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
return [(0, import_reference.typeReferenceFromNode)(node.type), encodeArguments(node)];
|
|
126
170
|
}
|
|
127
171
|
function encodeArguments(node) {
|
|
128
172
|
var _a;
|
|
@@ -141,17 +185,39 @@ function encodeInputValue(node) {
|
|
|
141
185
|
(0, import_valueFromASTUntyped.valueFromASTUntyped)(node.defaultValue)
|
|
142
186
|
];
|
|
143
187
|
}
|
|
144
|
-
function encodeDirective(node) {
|
|
188
|
+
function encodeDirective(node, options) {
|
|
145
189
|
var _a;
|
|
190
|
+
const directiveDefinitionMetadata = getDirectiveDefinitionMetadata(node, options);
|
|
146
191
|
if ((_a = node.arguments) == null ? void 0 : _a.length) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
192
|
+
if (directiveDefinitionMetadata) {
|
|
193
|
+
return [
|
|
194
|
+
node.name.value,
|
|
195
|
+
node.locations.map(
|
|
196
|
+
(node2) => (0, import_definition.encodeDirectiveLocation)(node2.value)
|
|
197
|
+
),
|
|
198
|
+
encodeArguments(node),
|
|
199
|
+
directiveDefinitionMetadata
|
|
200
|
+
];
|
|
201
|
+
} else {
|
|
202
|
+
return [
|
|
203
|
+
node.name.value,
|
|
204
|
+
node.locations.map(
|
|
205
|
+
(node2) => (0, import_definition.encodeDirectiveLocation)(node2.value)
|
|
206
|
+
),
|
|
207
|
+
encodeArguments(node)
|
|
208
|
+
];
|
|
209
|
+
}
|
|
154
210
|
} else {
|
|
211
|
+
if (directiveDefinitionMetadata) {
|
|
212
|
+
[
|
|
213
|
+
node.name.value,
|
|
214
|
+
node.locations.map(
|
|
215
|
+
(node2) => (0, import_definition.encodeDirectiveLocation)(node2.value)
|
|
216
|
+
),
|
|
217
|
+
void 0,
|
|
218
|
+
directiveDefinitionMetadata
|
|
219
|
+
];
|
|
220
|
+
}
|
|
155
221
|
return [
|
|
156
222
|
node.name.value,
|
|
157
223
|
node.locations.map(
|
|
@@ -160,3 +226,70 @@ function encodeDirective(node) {
|
|
|
160
226
|
];
|
|
161
227
|
}
|
|
162
228
|
}
|
|
229
|
+
function getDirectiveDefinitionMetadata(node, options) {
|
|
230
|
+
let metadata;
|
|
231
|
+
const { includeDescriptions } = options || {};
|
|
232
|
+
if (includeDescriptions && node.description) {
|
|
233
|
+
metadata != null ? metadata : metadata = {};
|
|
234
|
+
metadata.description = {
|
|
235
|
+
block: node.description.block,
|
|
236
|
+
value: node.description.value
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
if (node.repeatable) {
|
|
240
|
+
metadata != null ? metadata : metadata = {};
|
|
241
|
+
metadata.repeatable = node.repeatable;
|
|
242
|
+
}
|
|
243
|
+
return metadata;
|
|
244
|
+
}
|
|
245
|
+
function getEnumTypeDefinitionMetadata(node, options) {
|
|
246
|
+
var _a, _b, _c, _d, _e, _f;
|
|
247
|
+
const { includeDirectives, includeDescriptions } = options || {};
|
|
248
|
+
let valuesMetadadata;
|
|
249
|
+
if (includeDirectives || includeDescriptions) {
|
|
250
|
+
for (const value of (node == null ? void 0 : node.values) || []) {
|
|
251
|
+
if (((_a = value.directives) == null ? void 0 : _a.length) || value.description) {
|
|
252
|
+
if (includeDirectives && ((_b = value.directives) == null ? void 0 : _b.length)) {
|
|
253
|
+
valuesMetadadata != null ? valuesMetadadata : valuesMetadadata = {};
|
|
254
|
+
(_d = valuesMetadadata[_c = value.name.value]) != null ? _d : valuesMetadadata[_c] = {};
|
|
255
|
+
valuesMetadadata[value.name.value]["directives"] = value.directives.map(encodeDirectiveTuple).filter((directive) => !!directive);
|
|
256
|
+
}
|
|
257
|
+
if (includeDescriptions && value.description) {
|
|
258
|
+
valuesMetadadata != null ? valuesMetadadata : valuesMetadadata = {};
|
|
259
|
+
(_f = valuesMetadadata[_e = value.name.value]) != null ? _f : valuesMetadadata[_e] = {};
|
|
260
|
+
valuesMetadadata[value.name.value]["description"] = {
|
|
261
|
+
block: value.description.block,
|
|
262
|
+
value: value.description.value
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const enumTypeMetadata = getTypeDefinitionMetadata(node, options);
|
|
269
|
+
if (enumTypeMetadata || valuesMetadadata) {
|
|
270
|
+
return {
|
|
271
|
+
...getTypeDefinitionMetadata(node, options),
|
|
272
|
+
...valuesMetadadata && { values: valuesMetadadata }
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function getTypeDefinitionMetadata(node, options) {
|
|
277
|
+
var _a;
|
|
278
|
+
let metadata;
|
|
279
|
+
const { includeDirectives, includeDescriptions } = options || {};
|
|
280
|
+
if (includeDirectives && ((_a = node.directives) == null ? void 0 : _a.length)) {
|
|
281
|
+
const directives = node.directives.map(encodeDirectiveTuple).filter((directive) => !!directive);
|
|
282
|
+
if (directives.length) {
|
|
283
|
+
metadata != null ? metadata : metadata = {};
|
|
284
|
+
metadata.directives = directives;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (includeDescriptions && node.description) {
|
|
288
|
+
metadata != null ? metadata : metadata = {};
|
|
289
|
+
metadata.description = {
|
|
290
|
+
block: node.description.block,
|
|
291
|
+
value: node.description.value
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return metadata;
|
|
295
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utilities/encodeASTSchema.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n DirectiveLocationEnum,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n encodeDirectiveLocation,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n if (node.arguments?.length) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n DirectiveLocationEnum,\n DirectiveNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n encodeDirectiveLocation,\n DirectiveTuple,\n TypeDefinitionMetadata,\n DirectiveDefinitionMetadata,\n EnumTypeDefinitionMetadata,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport type EncodeASTSchemaOptions = {\n includeDirectives?: boolean;\n includeDescriptions?: boolean;\n};\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n options?: EncodeASTSchemaOptions,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition, options));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition, options));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition, options));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition, options));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition, options));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition, options));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition, options), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(\n definition.name.value,\n encodeInputObjectType(definition, options),\n true,\n );\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition, options), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition, options), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(\n definition.name.value,\n encodeInterfaceType(definition, options),\n true,\n );\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition, options), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition, options));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition(getTypeDefinitionMetadata(type, options));\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n getEnumTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field, options);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeDirectiveTuple(\n directive?: DirectiveNode,\n): DirectiveTuple | undefined {\n if (!directive) {\n return;\n }\n\n const name = directive.name.value;\n const args = Object.create(null);\n for (const argument of directive.arguments ?? []) {\n args[argument.name.value] = valueFromASTUntyped(argument.value);\n }\n\n if (Object.keys(args).length) {\n return [name, args];\n }\n return [name];\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field, options);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n\n return createInputObjectTypeDefinition(\n fields,\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n options?: EncodeASTSchemaOptions,\n): TypeReference | FieldDefinitionTuple {\n const fieldMetadata: TypeDefinitionMetadata | undefined =\n getTypeDefinitionMetadata(node, options);\n\n if (!node.arguments?.length) {\n if (fieldMetadata) {\n return [typeReferenceFromNode(node.type), undefined, fieldMetadata];\n }\n\n return typeReferenceFromNode(node.type);\n }\n\n if (fieldMetadata) {\n return [\n typeReferenceFromNode(node.type),\n encodeArguments(node),\n fieldMetadata,\n ];\n }\n return [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n options?: EncodeASTSchemaOptions,\n): DirectiveDefinitionTuple {\n const directiveDefinitionMetadata: DirectiveDefinitionMetadata | undefined =\n getDirectiveDefinitionMetadata(node, options);\n\n if (node.arguments?.length) {\n if (directiveDefinitionMetadata) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n directiveDefinitionMetadata,\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n }\n } else {\n if (directiveDefinitionMetadata) {\n [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n undefined,\n directiveDefinitionMetadata,\n ];\n }\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n\nfunction getDirectiveDefinitionMetadata<T>(\n node: T & {\n repeatable?: boolean;\n description?: { value: string; block?: boolean };\n },\n options?: EncodeASTSchemaOptions,\n) {\n let metadata: undefined | DirectiveDefinitionMetadata;\n const { includeDescriptions } = options || {};\n\n if (includeDescriptions && node.description) {\n metadata ??= {};\n metadata.description = {\n block: node.description.block,\n value: node.description.value,\n };\n }\n\n if (node.repeatable) {\n metadata ??= {};\n metadata.repeatable = node.repeatable;\n }\n\n return metadata;\n}\n\nfunction getEnumTypeDefinitionMetadata(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): EnumTypeDefinitionMetadata | undefined {\n const { includeDirectives, includeDescriptions } = options || {};\n let valuesMetadadata: Record<string, TypeDefinitionMetadata> | undefined;\n\n if (includeDirectives || includeDescriptions) {\n for (const value of node?.values || []) {\n if (value.directives?.length || value.description) {\n if (includeDirectives && value.directives?.length) {\n valuesMetadadata ??= {};\n valuesMetadadata[value.name.value] ??= {};\n valuesMetadadata[value.name.value][\"directives\"] = value.directives\n .map(encodeDirectiveTuple)\n .filter<DirectiveTuple>((directive) => !!directive);\n }\n\n if (includeDescriptions && value.description) {\n valuesMetadadata ??= {};\n valuesMetadadata[value.name.value] ??= {};\n valuesMetadadata[value.name.value][\"description\"] = {\n block: value.description.block,\n value: value.description.value,\n };\n }\n }\n }\n }\n const enumTypeMetadata = getTypeDefinitionMetadata(node, options);\n if (enumTypeMetadata || valuesMetadadata) {\n return {\n ...getTypeDefinitionMetadata(node, options),\n ...(valuesMetadadata && { values: valuesMetadadata }),\n };\n }\n}\n\nfunction getTypeDefinitionMetadata<T>(\n node: T & {\n directives?: readonly DirectiveNode[];\n description?: { value: string; block?: boolean };\n },\n options?: EncodeASTSchemaOptions,\n): TypeDefinitionMetadata | undefined {\n let metadata: undefined | TypeDefinitionMetadata;\n const { includeDirectives, includeDescriptions } = options || {};\n\n if (includeDirectives && node.directives?.length) {\n const directives = node.directives\n .map(encodeDirectiveTuple)\n .filter<DirectiveTuple>((directive) => !!directive);\n\n if (directives.length) {\n metadata ??= {};\n metadata.directives = directives;\n }\n }\n\n if (includeDescriptions && node.description) {\n metadata ??= {};\n metadata.description = {\n block: node.description.block,\n value: node.description.value,\n };\n }\n\n return metadata;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBA,wBAwBO;AACP,uBAAqD;AACrD,iCAAoC;AAO7B,SAAS,gBACd,gBACA,SACqB;AACrB,QAAM,YAAiC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;AACrD,QAAM,MAAM,CAAC,MAAc,KAA0B,YAAY,UAC/D,kBAAkB,WAAW,MAAM,KAAK,SAAS;AAEnD,aAAW,cAAc,eAAe,aAAa;AACnD,QAAI,WAAW,SAAS,wBAAwB;AAC9C,UAAI,WAAW,KAAK,OAAO,iBAAiB,YAAY,OAAO,CAAC;AAAA,IAClE,WAAW,WAAW,SAAS,6BAA6B;AAC1D,UAAI,WAAW,KAAK,OAAO,sBAAsB,YAAY,OAAO,CAAC;AAAA,IACvE,WAAW,WAAW,SAAS,sBAAsB;AACnD,UAAI,WAAW,KAAK,OAAO,eAAe,YAAY,OAAO,CAAC;AAAA,IAChE,WAAW,WAAW,SAAS,uBAAuB;AACpD,UAAI,WAAW,KAAK,OAAO,gBAAgB,YAAY,OAAO,CAAC;AAAA,IACjE,WAAW,WAAW,SAAS,2BAA2B;AACxD,UAAI,WAAW,KAAK,OAAO,oBAAoB,YAAY,OAAO,CAAC;AAAA,IACrE,WAAW,WAAW,SAAS,wBAAwB;AACrD,UAAI,WAAW,KAAK,OAAO,iBAAiB,YAAY,OAAO,CAAC;AAAA,IAClE,WAAW,WAAW,SAAS,uBAAuB;AACpD,UAAI,WAAW,KAAK,OAAO,iBAAiB,YAAY,OAAO,GAAG,IAAI;AAAA,IACxE,WAAW,WAAW,SAAS,4BAA4B;AACzD;AAAA,QACE,WAAW,KAAK;AAAA,QAChB,sBAAsB,YAAY,OAAO;AAAA,QACzC;AAAA,MACF;AAAA,IACF,WAAW,WAAW,SAAS,qBAAqB;AAClD,UAAI,WAAW,KAAK,OAAO,eAAe,YAAY,OAAO,GAAG,IAAI;AAAA,IACtE,WAAW,WAAW,SAAS,sBAAsB;AACnD,UAAI,WAAW,KAAK,OAAO,gBAAgB,YAAY,OAAO,GAAG,IAAI;AAAA,IACvE,WAAW,WAAW,SAAS,0BAA0B;AACvD;AAAA,QACE,WAAW,KAAK;AAAA,QAChB,oBAAoB,YAAY,OAAO;AAAA,QACvC;AAAA,MACF;AAAA,IACF,WAAW,WAAW,SAAS,uBAAuB;AACpD,UAAI,WAAW,KAAK,OAAO,iBAAiB,YAAY,OAAO,GAAG,IAAI;AAAA,IACxE,WAAW,WAAW,SAAS,uBAAuB;AACpD,UAAI,CAAC,UAAU,CAAC,EAAE,YAAY;AAC5B,kBAAU,CAAC,EAAE,aAAa,CAAC;AAAA,MAC7B;AACA,gBAAU,CAAC,EAAE,WAAW,KAAK,gBAAgB,YAAY,OAAO,CAAC;AAAA,IACnE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,kBACP,WACA,UACA,SACA,cAAc,OACd;AACA,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,QAAI,MAAM,KAAK,aAAa;AAG1B;AAAA,IACF;AACA,UAAM,WAAW,UAAU,CAAC;AAC5B,QAAI,CAAC,SAAS,MAAM,QAAQ,GAAG;AAC7B,eAAS,MAAM,QAAQ,IAAI;AAC3B;AAAA,IACF;AAAA,EACF;AACA,QAAM,cAAc,EAAE,OAAO,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE;AACrD,YAAU,KAAK,WAAW;AAC5B;AAEA,SAAS,iBACP,MACA,SAC2B;AAC3B,aAAO,8CAA2B,0BAA0B,MAAM,OAAO,CAAC;AAC5E;AAEA,SAAS,eACP,MACA,SACyB;AAxI3B;AAyIE,aAAO;AAAA,MACJ,UAAK,WAAL,YAAe,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,KAAK,KAAK;AAAA,IACnD,8BAA8B,MAAM,OAAO;AAAA,EAC7C;AACF;AAEA,SAAS,iBACP,MACA,SAC2B;AAlJ7B;AAmJE,QAAM,SAAS,uBAAO,OAAO,IAAI;AACjC,aAAW,UAAS,UAAK,WAAL,YAAe,CAAC,GAAG;AACrC,WAAO,MAAM,KAAK,KAAK,IAAI,YAAY,OAAO,OAAO;AAAA,EACvD;AACA,aAAO;AAAA,IACL;AAAA,KACA,UAAK,eAAL,mBAAiB,IAAI,CAAC,UAAU,MAAM,KAAK;AAAA,IAC3C,0BAA0B,MAAM,OAAO;AAAA,EACzC;AACF;AAEA,SAAS,qBACP,WAC4B;AAhK9B;AAiKE,MAAI,CAAC,WAAW;AACd;AAAA,EACF;AAEA,QAAM,OAAO,UAAU,KAAK;AAC5B,QAAM,OAAO,uBAAO,OAAO,IAAI;AAC/B,aAAW,aAAY,eAAU,cAAV,YAAuB,CAAC,GAAG;AAChD,SAAK,SAAS,KAAK,KAAK,QAAI,gDAAoB,SAAS,KAAK;AAAA,EAChE;AAEA,MAAI,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC5B,WAAO,CAAC,MAAM,IAAI;AAAA,EACpB;AACA,SAAO,CAAC,IAAI;AACd;AAEA,SAAS,oBACP,MACA,SAC8B;AApLhC;AAqLE,QAAM,SAAS,uBAAO,OAAO,IAAI;AACjC,aAAW,UAAS,UAAK,WAAL,YAAe,CAAC,GAAG;AACrC,WAAO,MAAM,KAAK,KAAK,IAAI,YAAY,OAAO,OAAO;AAAA,EACvD;AACA,aAAO;AAAA,IACL;AAAA,KACA,UAAK,eAAL,mBAAiB,IAAI,CAAC,UAAU,MAAM,KAAK;AAAA,IAC3C,0BAA0B,MAAM,OAAO;AAAA,EACzC;AACF;AAEA,SAAS,gBACP,MACA,SAC0B;AAnM5B;AAoME,aAAO;AAAA,MACJ,UAAK,UAAL,YAAc,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,KAAK;AAAA,IAChD,0BAA0B,MAAM,OAAO;AAAA,EACzC;AACF;AAEA,SAAS,sBACP,MACA,SACgC;AA7MlC;AA8ME,QAAM,SAAS,uBAAO,OAAO,IAAI;AACjC,aAAW,UAAS,UAAK,WAAL,YAAe,CAAC,GAAG;AACrC,WAAO,MAAM,KAAK,KAAK,IAAI,iBAAiB,KAAK;AAAA,EACnD;AAEA,aAAO;AAAA,IACL;AAAA,IACA,0BAA0B,MAAM,OAAO;AAAA,EACzC;AACF;AAEA,SAAS,YACP,MACA,SACsC;AA5NxC;AA6NE,QAAM,gBACJ,0BAA0B,MAAM,OAAO;AAEzC,MAAI,GAAC,UAAK,cAAL,mBAAgB,SAAQ;AAC3B,QAAI,eAAe;AACjB,aAAO,KAAC,wCAAsB,KAAK,IAAI,GAAG,QAAW,aAAa;AAAA,IACpE;AAEA,eAAO,wCAAsB,KAAK,IAAI;AAAA,EACxC;AAEA,MAAI,eAAe;AACjB,WAAO;AAAA,UACL,wCAAsB,KAAK,IAAI;AAAA,MAC/B,gBAAgB,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACA,SAAO,KAAC,wCAAsB,KAAK,IAAI,GAAG,gBAAgB,IAAI,CAAC;AACjE;AAEA,SAAS,gBACP,MAC4B;AApP9B;AAqPE,QAAM,OAAO,uBAAO,OAAO,IAAI;AAC/B,aAAW,aAAY,UAAK,cAAL,YAAkB,CAAC,GAAG;AAC3C,SAAK,SAAS,KAAK,KAAK,IAAI,iBAAiB,QAAQ;AAAA,EACvD;AACA,SAAO;AACT;AAEA,SAAS,iBACP,MAC2C;AAC3C,MAAI,CAAC,KAAK,cAAc;AACtB,eAAO,wCAAsB,KAAK,IAAI;AAAA,EACxC;AACA,SAAO;AAAA,QACL,wCAAsB,KAAK,IAAI;AAAA,QAC/B,gDAAoB,KAAK,YAAY;AAAA,EACvC;AACF;AAEA,SAAS,gBACP,MACA,SAC0B;AA3Q5B;AA4QE,QAAM,8BACJ,+BAA+B,MAAM,OAAO;AAE9C,OAAI,UAAK,cAAL,mBAAgB,QAAQ;AAC1B,QAAI,6BAA6B;AAC/B,aAAO;AAAA,QACL,KAAK,KAAK;AAAA,QACV,KAAK,UAAU;AAAA,UAAI,CAACA,cAClB,2CAAwBA,MAAK,KAA8B;AAAA,QAC7D;AAAA,QACA,gBAAgB,IAAI;AAAA,QACpB;AAAA,MACF;AAAA,IACF,OAAO;AACL,aAAO;AAAA,QACL,KAAK,KAAK;AAAA,QACV,KAAK,UAAU;AAAA,UAAI,CAACA,cAClB,2CAAwBA,MAAK,KAA8B;AAAA,QAC7D;AAAA,QACA,gBAAgB,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,6BAA6B;AAC/B;AAAA,QACE,KAAK,KAAK;AAAA,QACV,KAAK,UAAU;AAAA,UAAI,CAACA,cAClB,2CAAwBA,MAAK,KAA8B;AAAA,QAC7D;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,KAAK,KAAK;AAAA,MACV,KAAK,UAAU;AAAA,QAAI,CAACA,cAClB,2CAAwBA,MAAK,KAA8B;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,+BACP,MAIA,SACA;AACA,MAAI;AACJ,QAAM,EAAE,oBAAoB,IAAI,WAAW,CAAC;AAE5C,MAAI,uBAAuB,KAAK,aAAa;AAC3C,6CAAa,CAAC;AACd,aAAS,cAAc;AAAA,MACrB,OAAO,KAAK,YAAY;AAAA,MACxB,OAAO,KAAK,YAAY;AAAA,IAC1B;AAAA,EACF;AAEA,MAAI,KAAK,YAAY;AACnB,6CAAa,CAAC;AACd,aAAS,aAAa,KAAK;AAAA,EAC7B;AAEA,SAAO;AACT;AAEA,SAAS,8BACP,MACA,SACwC;AAnV1C;AAoVE,QAAM,EAAE,mBAAmB,oBAAoB,IAAI,WAAW,CAAC;AAC/D,MAAI;AAEJ,MAAI,qBAAqB,qBAAqB;AAC5C,eAAW,UAAS,6BAAM,WAAU,CAAC,GAAG;AACtC,YAAI,WAAM,eAAN,mBAAkB,WAAU,MAAM,aAAa;AACjD,YAAI,uBAAqB,WAAM,eAAN,mBAAkB,SAAQ;AACjD,2EAAqB,CAAC;AACtB,sCAAiB,MAAM,KAAK,WAA5B,mCAAuC,CAAC;AACxC,2BAAiB,MAAM,KAAK,KAAK,EAAE,YAAY,IAAI,MAAM,WACtD,IAAI,oBAAoB,EACxB,OAAuB,CAAC,cAAc,CAAC,CAAC,SAAS;AAAA,QACtD;AAEA,YAAI,uBAAuB,MAAM,aAAa;AAC5C,2EAAqB,CAAC;AACtB,sCAAiB,MAAM,KAAK,WAA5B,mCAAuC,CAAC;AACxC,2BAAiB,MAAM,KAAK,KAAK,EAAE,aAAa,IAAI;AAAA,YAClD,OAAO,MAAM,YAAY;AAAA,YACzB,OAAO,MAAM,YAAY;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,mBAAmB,0BAA0B,MAAM,OAAO;AAChE,MAAI,oBAAoB,kBAAkB;AACxC,WAAO;AAAA,MACL,GAAG,0BAA0B,MAAM,OAAO;AAAA,MAC1C,GAAI,oBAAoB,EAAE,QAAQ,iBAAiB;AAAA,IACrD;AAAA,EACF;AACF;AAEA,SAAS,0BACP,MAIA,SACoC;AA5XtC;AA6XE,MAAI;AACJ,QAAM,EAAE,mBAAmB,oBAAoB,IAAI,WAAW,CAAC;AAE/D,MAAI,uBAAqB,UAAK,eAAL,mBAAiB,SAAQ;AAChD,UAAM,aAAa,KAAK,WACrB,IAAI,oBAAoB,EACxB,OAAuB,CAAC,cAAc,CAAC,CAAC,SAAS;AAEpD,QAAI,WAAW,QAAQ;AACrB,+CAAa,CAAC;AACd,eAAS,aAAa;AAAA,IACxB;AAAA,EACF;AAEA,MAAI,uBAAuB,KAAK,aAAa;AAC3C,6CAAa,CAAC;AACd,aAAS,cAAc;AAAA,MACrB,OAAO,KAAK,YAAY;AAAA,MACxB,OAAO,KAAK,YAAY;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": ["node"]
|
|
7
7
|
}
|
|
@@ -10,39 +10,47 @@ import {
|
|
|
10
10
|
} from "../schema/definition.mjs";
|
|
11
11
|
import { typeReferenceFromNode } from "../schema/reference.mjs";
|
|
12
12
|
import { valueFromASTUntyped } from "./valueFromASTUntyped.mjs";
|
|
13
|
-
function encodeASTSchema(schemaFragment) {
|
|
13
|
+
function encodeASTSchema(schemaFragment, options) {
|
|
14
14
|
const fragments = [{ types: {} }];
|
|
15
15
|
const add = (name, def, extension = false) => addTypeDefinition(fragments, name, def, extension);
|
|
16
16
|
for (const definition of schemaFragment.definitions) {
|
|
17
17
|
if (definition.kind === "ObjectTypeDefinition") {
|
|
18
|
-
add(definition.name.value, encodeObjectType(definition));
|
|
18
|
+
add(definition.name.value, encodeObjectType(definition, options));
|
|
19
19
|
} else if (definition.kind === "InputObjectTypeDefinition") {
|
|
20
|
-
add(definition.name.value, encodeInputObjectType(definition));
|
|
20
|
+
add(definition.name.value, encodeInputObjectType(definition, options));
|
|
21
21
|
} else if (definition.kind === "EnumTypeDefinition") {
|
|
22
|
-
add(definition.name.value, encodeEnumType(definition));
|
|
22
|
+
add(definition.name.value, encodeEnumType(definition, options));
|
|
23
23
|
} else if (definition.kind === "UnionTypeDefinition") {
|
|
24
|
-
add(definition.name.value, encodeUnionType(definition));
|
|
24
|
+
add(definition.name.value, encodeUnionType(definition, options));
|
|
25
25
|
} else if (definition.kind === "InterfaceTypeDefinition") {
|
|
26
|
-
add(definition.name.value, encodeInterfaceType(definition));
|
|
26
|
+
add(definition.name.value, encodeInterfaceType(definition, options));
|
|
27
27
|
} else if (definition.kind === "ScalarTypeDefinition") {
|
|
28
|
-
add(definition.name.value, encodeScalarType(definition));
|
|
28
|
+
add(definition.name.value, encodeScalarType(definition, options));
|
|
29
29
|
} else if (definition.kind === "ObjectTypeExtension") {
|
|
30
|
-
add(definition.name.value, encodeObjectType(definition), true);
|
|
30
|
+
add(definition.name.value, encodeObjectType(definition, options), true);
|
|
31
31
|
} else if (definition.kind === "InputObjectTypeExtension") {
|
|
32
|
-
add(
|
|
32
|
+
add(
|
|
33
|
+
definition.name.value,
|
|
34
|
+
encodeInputObjectType(definition, options),
|
|
35
|
+
true
|
|
36
|
+
);
|
|
33
37
|
} else if (definition.kind === "EnumTypeExtension") {
|
|
34
|
-
add(definition.name.value, encodeEnumType(definition), true);
|
|
38
|
+
add(definition.name.value, encodeEnumType(definition, options), true);
|
|
35
39
|
} else if (definition.kind === "UnionTypeExtension") {
|
|
36
|
-
add(definition.name.value, encodeUnionType(definition), true);
|
|
40
|
+
add(definition.name.value, encodeUnionType(definition, options), true);
|
|
37
41
|
} else if (definition.kind === "InterfaceTypeExtension") {
|
|
38
|
-
add(
|
|
42
|
+
add(
|
|
43
|
+
definition.name.value,
|
|
44
|
+
encodeInterfaceType(definition, options),
|
|
45
|
+
true
|
|
46
|
+
);
|
|
39
47
|
} else if (definition.kind === "ScalarTypeExtension") {
|
|
40
|
-
add(definition.name.value, encodeScalarType(definition), true);
|
|
48
|
+
add(definition.name.value, encodeScalarType(definition, options), true);
|
|
41
49
|
} else if (definition.kind === "DirectiveDefinition") {
|
|
42
50
|
if (!fragments[0].directives) {
|
|
43
51
|
fragments[0].directives = [];
|
|
44
52
|
}
|
|
45
|
-
fragments[0].directives.push(encodeDirective(definition));
|
|
53
|
+
fragments[0].directives.push(encodeDirective(definition, options));
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
return fragments;
|
|
@@ -61,54 +69,90 @@ function addTypeDefinition(fragments, typeName, typeDef, isExtension = false) {
|
|
|
61
69
|
const newFragment = { types: { [typeName]: typeDef } };
|
|
62
70
|
fragments.push(newFragment);
|
|
63
71
|
}
|
|
64
|
-
function encodeScalarType(
|
|
65
|
-
return createScalarTypeDefinition();
|
|
72
|
+
function encodeScalarType(type, options) {
|
|
73
|
+
return createScalarTypeDefinition(getTypeDefinitionMetadata(type, options));
|
|
66
74
|
}
|
|
67
|
-
function encodeEnumType(node) {
|
|
75
|
+
function encodeEnumType(node, options) {
|
|
68
76
|
var _a;
|
|
69
77
|
return createEnumTypeDefinition(
|
|
70
|
-
((_a = node.values) != null ? _a : []).map((value) => value.name.value)
|
|
78
|
+
((_a = node.values) != null ? _a : []).map((value) => value.name.value),
|
|
79
|
+
getEnumTypeDefinitionMetadata(node, options)
|
|
71
80
|
);
|
|
72
81
|
}
|
|
73
|
-
function encodeObjectType(node) {
|
|
82
|
+
function encodeObjectType(node, options) {
|
|
74
83
|
var _a, _b;
|
|
75
84
|
const fields = /* @__PURE__ */ Object.create(null);
|
|
76
85
|
for (const field of (_a = node.fields) != null ? _a : []) {
|
|
77
|
-
fields[field.name.value] = encodeField(field);
|
|
86
|
+
fields[field.name.value] = encodeField(field, options);
|
|
78
87
|
}
|
|
79
88
|
return createObjectTypeDefinition(
|
|
80
89
|
fields,
|
|
81
|
-
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value)
|
|
90
|
+
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value),
|
|
91
|
+
getTypeDefinitionMetadata(node, options)
|
|
82
92
|
);
|
|
83
93
|
}
|
|
84
|
-
function
|
|
94
|
+
function encodeDirectiveTuple(directive) {
|
|
95
|
+
var _a;
|
|
96
|
+
if (!directive) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const name = directive.name.value;
|
|
100
|
+
const args = /* @__PURE__ */ Object.create(null);
|
|
101
|
+
for (const argument of (_a = directive.arguments) != null ? _a : []) {
|
|
102
|
+
args[argument.name.value] = valueFromASTUntyped(argument.value);
|
|
103
|
+
}
|
|
104
|
+
if (Object.keys(args).length) {
|
|
105
|
+
return [name, args];
|
|
106
|
+
}
|
|
107
|
+
return [name];
|
|
108
|
+
}
|
|
109
|
+
function encodeInterfaceType(node, options) {
|
|
85
110
|
var _a, _b;
|
|
86
111
|
const fields = /* @__PURE__ */ Object.create(null);
|
|
87
112
|
for (const field of (_a = node.fields) != null ? _a : []) {
|
|
88
|
-
fields[field.name.value] = encodeField(field);
|
|
113
|
+
fields[field.name.value] = encodeField(field, options);
|
|
89
114
|
}
|
|
90
115
|
return createInterfaceTypeDefinition(
|
|
91
116
|
fields,
|
|
92
|
-
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value)
|
|
117
|
+
(_b = node.interfaces) == null ? void 0 : _b.map((iface) => iface.name.value),
|
|
118
|
+
getTypeDefinitionMetadata(node, options)
|
|
93
119
|
);
|
|
94
120
|
}
|
|
95
|
-
function encodeUnionType(node) {
|
|
121
|
+
function encodeUnionType(node, options) {
|
|
96
122
|
var _a;
|
|
97
123
|
return createUnionTypeDefinition(
|
|
98
|
-
((_a = node.types) != null ? _a : []).map((type) => type.name.value)
|
|
124
|
+
((_a = node.types) != null ? _a : []).map((type) => type.name.value),
|
|
125
|
+
getTypeDefinitionMetadata(node, options)
|
|
99
126
|
);
|
|
100
127
|
}
|
|
101
|
-
function encodeInputObjectType(node) {
|
|
128
|
+
function encodeInputObjectType(node, options) {
|
|
102
129
|
var _a;
|
|
103
130
|
const fields = /* @__PURE__ */ Object.create(null);
|
|
104
131
|
for (const field of (_a = node.fields) != null ? _a : []) {
|
|
105
132
|
fields[field.name.value] = encodeInputValue(field);
|
|
106
133
|
}
|
|
107
|
-
return createInputObjectTypeDefinition(
|
|
134
|
+
return createInputObjectTypeDefinition(
|
|
135
|
+
fields,
|
|
136
|
+
getTypeDefinitionMetadata(node, options)
|
|
137
|
+
);
|
|
108
138
|
}
|
|
109
|
-
function encodeField(node) {
|
|
139
|
+
function encodeField(node, options) {
|
|
110
140
|
var _a;
|
|
111
|
-
|
|
141
|
+
const fieldMetadata = getTypeDefinitionMetadata(node, options);
|
|
142
|
+
if (!((_a = node.arguments) == null ? void 0 : _a.length)) {
|
|
143
|
+
if (fieldMetadata) {
|
|
144
|
+
return [typeReferenceFromNode(node.type), void 0, fieldMetadata];
|
|
145
|
+
}
|
|
146
|
+
return typeReferenceFromNode(node.type);
|
|
147
|
+
}
|
|
148
|
+
if (fieldMetadata) {
|
|
149
|
+
return [
|
|
150
|
+
typeReferenceFromNode(node.type),
|
|
151
|
+
encodeArguments(node),
|
|
152
|
+
fieldMetadata
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
return [typeReferenceFromNode(node.type), encodeArguments(node)];
|
|
112
156
|
}
|
|
113
157
|
function encodeArguments(node) {
|
|
114
158
|
var _a;
|
|
@@ -127,17 +171,39 @@ function encodeInputValue(node) {
|
|
|
127
171
|
valueFromASTUntyped(node.defaultValue)
|
|
128
172
|
];
|
|
129
173
|
}
|
|
130
|
-
function encodeDirective(node) {
|
|
174
|
+
function encodeDirective(node, options) {
|
|
131
175
|
var _a;
|
|
176
|
+
const directiveDefinitionMetadata = getDirectiveDefinitionMetadata(node, options);
|
|
132
177
|
if ((_a = node.arguments) == null ? void 0 : _a.length) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
178
|
+
if (directiveDefinitionMetadata) {
|
|
179
|
+
return [
|
|
180
|
+
node.name.value,
|
|
181
|
+
node.locations.map(
|
|
182
|
+
(node2) => encodeDirectiveLocation(node2.value)
|
|
183
|
+
),
|
|
184
|
+
encodeArguments(node),
|
|
185
|
+
directiveDefinitionMetadata
|
|
186
|
+
];
|
|
187
|
+
} else {
|
|
188
|
+
return [
|
|
189
|
+
node.name.value,
|
|
190
|
+
node.locations.map(
|
|
191
|
+
(node2) => encodeDirectiveLocation(node2.value)
|
|
192
|
+
),
|
|
193
|
+
encodeArguments(node)
|
|
194
|
+
];
|
|
195
|
+
}
|
|
140
196
|
} else {
|
|
197
|
+
if (directiveDefinitionMetadata) {
|
|
198
|
+
[
|
|
199
|
+
node.name.value,
|
|
200
|
+
node.locations.map(
|
|
201
|
+
(node2) => encodeDirectiveLocation(node2.value)
|
|
202
|
+
),
|
|
203
|
+
void 0,
|
|
204
|
+
directiveDefinitionMetadata
|
|
205
|
+
];
|
|
206
|
+
}
|
|
141
207
|
return [
|
|
142
208
|
node.name.value,
|
|
143
209
|
node.locations.map(
|
|
@@ -146,6 +212,73 @@ function encodeDirective(node) {
|
|
|
146
212
|
];
|
|
147
213
|
}
|
|
148
214
|
}
|
|
215
|
+
function getDirectiveDefinitionMetadata(node, options) {
|
|
216
|
+
let metadata;
|
|
217
|
+
const { includeDescriptions } = options || {};
|
|
218
|
+
if (includeDescriptions && node.description) {
|
|
219
|
+
metadata != null ? metadata : metadata = {};
|
|
220
|
+
metadata.description = {
|
|
221
|
+
block: node.description.block,
|
|
222
|
+
value: node.description.value
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
if (node.repeatable) {
|
|
226
|
+
metadata != null ? metadata : metadata = {};
|
|
227
|
+
metadata.repeatable = node.repeatable;
|
|
228
|
+
}
|
|
229
|
+
return metadata;
|
|
230
|
+
}
|
|
231
|
+
function getEnumTypeDefinitionMetadata(node, options) {
|
|
232
|
+
var _a, _b, _c, _d, _e, _f;
|
|
233
|
+
const { includeDirectives, includeDescriptions } = options || {};
|
|
234
|
+
let valuesMetadadata;
|
|
235
|
+
if (includeDirectives || includeDescriptions) {
|
|
236
|
+
for (const value of (node == null ? void 0 : node.values) || []) {
|
|
237
|
+
if (((_a = value.directives) == null ? void 0 : _a.length) || value.description) {
|
|
238
|
+
if (includeDirectives && ((_b = value.directives) == null ? void 0 : _b.length)) {
|
|
239
|
+
valuesMetadadata != null ? valuesMetadadata : valuesMetadadata = {};
|
|
240
|
+
(_d = valuesMetadadata[_c = value.name.value]) != null ? _d : valuesMetadadata[_c] = {};
|
|
241
|
+
valuesMetadadata[value.name.value]["directives"] = value.directives.map(encodeDirectiveTuple).filter((directive) => !!directive);
|
|
242
|
+
}
|
|
243
|
+
if (includeDescriptions && value.description) {
|
|
244
|
+
valuesMetadadata != null ? valuesMetadadata : valuesMetadadata = {};
|
|
245
|
+
(_f = valuesMetadadata[_e = value.name.value]) != null ? _f : valuesMetadadata[_e] = {};
|
|
246
|
+
valuesMetadadata[value.name.value]["description"] = {
|
|
247
|
+
block: value.description.block,
|
|
248
|
+
value: value.description.value
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const enumTypeMetadata = getTypeDefinitionMetadata(node, options);
|
|
255
|
+
if (enumTypeMetadata || valuesMetadadata) {
|
|
256
|
+
return {
|
|
257
|
+
...getTypeDefinitionMetadata(node, options),
|
|
258
|
+
...valuesMetadadata && { values: valuesMetadadata }
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
function getTypeDefinitionMetadata(node, options) {
|
|
263
|
+
var _a;
|
|
264
|
+
let metadata;
|
|
265
|
+
const { includeDirectives, includeDescriptions } = options || {};
|
|
266
|
+
if (includeDirectives && ((_a = node.directives) == null ? void 0 : _a.length)) {
|
|
267
|
+
const directives = node.directives.map(encodeDirectiveTuple).filter((directive) => !!directive);
|
|
268
|
+
if (directives.length) {
|
|
269
|
+
metadata != null ? metadata : metadata = {};
|
|
270
|
+
metadata.directives = directives;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (includeDescriptions && node.description) {
|
|
274
|
+
metadata != null ? metadata : metadata = {};
|
|
275
|
+
metadata.description = {
|
|
276
|
+
block: node.description.block,
|
|
277
|
+
value: node.description.value
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
return metadata;
|
|
281
|
+
}
|
|
149
282
|
export {
|
|
150
283
|
encodeASTSchema
|
|
151
284
|
};
|