@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.
Files changed (48) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +1 -9
  3. package/lib/executeWithoutSchema.d.ts.map +1 -1
  4. package/lib/executeWithoutSchema.js +41 -0
  5. package/lib/executeWithoutSchema.js.map +2 -2
  6. package/lib/executeWithoutSchema.mjs +41 -0
  7. package/lib/executeWithoutSchema.mjs.map +2 -2
  8. package/lib/schema/definition.d.ts +54 -19
  9. package/lib/schema/definition.d.ts.map +1 -1
  10. package/lib/schema/definition.js +127 -18
  11. package/lib/schema/definition.js.map +3 -3
  12. package/lib/schema/definition.mjs +109 -16
  13. package/lib/schema/definition.mjs.map +2 -2
  14. package/lib/schema/directives.d.ts.map +1 -1
  15. package/lib/schema/directives.js +9 -4
  16. package/lib/schema/directives.js.map +2 -2
  17. package/lib/schema/directives.mjs +10 -5
  18. package/lib/schema/directives.mjs.map +2 -2
  19. package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
  20. package/lib/utilities/decodeASTSchema.js +185 -33
  21. package/lib/utilities/decodeASTSchema.js.map +2 -2
  22. package/lib/utilities/decodeASTSchema.mjs +196 -36
  23. package/lib/utilities/decodeASTSchema.mjs.map +2 -2
  24. package/lib/utilities/encodeASTSchema.d.ts +5 -1
  25. package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
  26. package/lib/utilities/encodeASTSchema.js +171 -38
  27. package/lib/utilities/encodeASTSchema.js.map +2 -2
  28. package/lib/utilities/encodeASTSchema.mjs +171 -38
  29. package/lib/utilities/encodeASTSchema.mjs.map +2 -2
  30. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +1 -1
  31. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  32. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +2 -2
  33. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  34. package/lib/utilities/mergeSchemaDefinitions.d.ts +6 -2
  35. package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
  36. package/lib/utilities/mergeSchemaDefinitions.js +86 -5
  37. package/lib/utilities/mergeSchemaDefinitions.js.map +3 -3
  38. package/lib/utilities/mergeSchemaDefinitions.mjs +96 -7
  39. package/lib/utilities/mergeSchemaDefinitions.mjs.map +3 -3
  40. package/lib/utilities/subtractSchemaDefinitions.js +4 -4
  41. package/lib/utilities/subtractSchemaDefinitions.js.map +2 -2
  42. package/lib/utilities/subtractSchemaDefinitions.mjs +5 -5
  43. package/lib/utilities/subtractSchemaDefinitions.mjs.map +2 -2
  44. package/lib/values.js +2 -2
  45. package/lib/values.js.map +2 -2
  46. package/lib/values.mjs +4 -4
  47. package/lib/values.mjs.map +2 -2
  48. 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(definition.name.value, encodeInputObjectType(definition), true);
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(definition.name.value, encodeInterfaceType(definition), true);
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(_type) {
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 encodeInterfaceType(node) {
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)(fields);
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
- return !((_a = node.arguments) == null ? void 0 : _a.length) ? (0, import_reference.typeReferenceFromNode)(node.type) : [(0, import_reference.typeReferenceFromNode)(node.type), encodeArguments(node)];
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
- return [
148
- node.name.value,
149
- node.locations.map(
150
- (node2) => (0, import_definition.encodeDirectiveLocation)(node2.value)
151
- ),
152
- encodeArguments(node)
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": "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",
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": "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",
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(definition.name.value, encodeInputObjectType(definition), true);
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(definition.name.value, encodeInterfaceType(definition), true);
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(_type) {
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 encodeInterfaceType(node) {
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(fields);
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
- return !((_a = node.arguments) == null ? void 0 : _a.length) ? typeReferenceFromNode(node.type) : [typeReferenceFromNode(node.type), encodeArguments(node)];
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
- return [
134
- node.name.value,
135
- node.locations.map(
136
- (node2) => encodeDirectiveLocation(node2.value)
137
- ),
138
- encodeArguments(node)
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
  };