@graphitation/supermassive 3.0.0-alpha.5 → 3.0.0-alpha.7

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 (94) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/lib/benchmarks/index.js.map +2 -2
  4. package/lib/benchmarks/index.mjs.map +2 -2
  5. package/lib/collectFields.d.ts.map +1 -1
  6. package/lib/collectFields.js +6 -5
  7. package/lib/collectFields.js.map +2 -2
  8. package/lib/collectFields.mjs +6 -5
  9. package/lib/collectFields.mjs.map +2 -2
  10. package/lib/executeWithoutSchema.d.ts +1 -3
  11. package/lib/executeWithoutSchema.d.ts.map +1 -1
  12. package/lib/executeWithoutSchema.js +153 -69
  13. package/lib/executeWithoutSchema.js.map +2 -2
  14. package/lib/executeWithoutSchema.mjs +143 -71
  15. package/lib/executeWithoutSchema.mjs.map +2 -2
  16. package/lib/index.d.ts +4 -4
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +5 -1
  19. package/lib/index.js.map +2 -2
  20. package/lib/index.mjs +10 -2
  21. package/lib/index.mjs.map +2 -2
  22. package/lib/schema/definition.d.ts +43 -33
  23. package/lib/schema/definition.d.ts.map +1 -1
  24. package/lib/schema/definition.js +284 -9
  25. package/lib/schema/definition.js.map +2 -2
  26. package/lib/schema/definition.mjs +284 -55
  27. package/lib/schema/definition.mjs.map +3 -3
  28. package/lib/schema/directives.d.ts.map +1 -1
  29. package/lib/schema/directives.js +3 -3
  30. package/lib/schema/directives.js.map +2 -2
  31. package/lib/schema/directives.mjs +4 -4
  32. package/lib/schema/directives.mjs.map +2 -2
  33. package/lib/schema/reference.d.ts +3 -1
  34. package/lib/schema/reference.d.ts.map +1 -1
  35. package/lib/schema/reference.js.map +2 -2
  36. package/lib/schema/reference.mjs.map +2 -2
  37. package/lib/schema/resolvers.d.ts +10 -4
  38. package/lib/schema/resolvers.d.ts.map +1 -1
  39. package/lib/schema/resolvers.js +92 -9
  40. package/lib/schema/resolvers.js.map +2 -2
  41. package/lib/schema/resolvers.mjs +99 -9
  42. package/lib/schema/resolvers.mjs.map +2 -2
  43. package/lib/types.d.ts +25 -2
  44. package/lib/types.d.ts.map +1 -1
  45. package/lib/types.js.map +1 -1
  46. package/lib/utilities/coerceInputValue.d.ts +3 -3
  47. package/lib/utilities/coerceInputValue.d.ts.map +1 -1
  48. package/lib/utilities/coerceInputValue.js +17 -12
  49. package/lib/utilities/coerceInputValue.js.map +2 -2
  50. package/lib/utilities/coerceInputValue.mjs +22 -12
  51. package/lib/utilities/coerceInputValue.mjs.map +2 -2
  52. package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
  53. package/lib/utilities/decodeASTSchema.js +32 -40
  54. package/lib/utilities/decodeASTSchema.js.map +2 -2
  55. package/lib/utilities/decodeASTSchema.mjs +51 -49
  56. package/lib/utilities/decodeASTSchema.mjs.map +2 -2
  57. package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
  58. package/lib/utilities/encodeASTSchema.js +16 -20
  59. package/lib/utilities/encodeASTSchema.js.map +2 -2
  60. package/lib/utilities/encodeASTSchema.mjs +22 -21
  61. package/lib/utilities/encodeASTSchema.mjs.map +2 -2
  62. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.d.ts.map +1 -1
  63. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +20 -22
  64. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  65. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +35 -29
  66. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  67. package/lib/utilities/mergeResolvers.js +1 -2
  68. package/lib/utilities/mergeResolvers.js.map +2 -2
  69. package/lib/utilities/mergeResolvers.mjs +1 -2
  70. package/lib/utilities/mergeResolvers.mjs.map +2 -2
  71. package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
  72. package/lib/utilities/mergeSchemaDefinitions.js +18 -28
  73. package/lib/utilities/mergeSchemaDefinitions.js.map +2 -2
  74. package/lib/utilities/mergeSchemaDefinitions.mjs +28 -34
  75. package/lib/utilities/mergeSchemaDefinitions.mjs.map +2 -2
  76. package/lib/utilities/valueFromAST.d.ts +3 -3
  77. package/lib/utilities/valueFromAST.d.ts.map +1 -1
  78. package/lib/utilities/valueFromAST.js +23 -10
  79. package/lib/utilities/valueFromAST.js.map +2 -2
  80. package/lib/utilities/valueFromAST.mjs +13 -10
  81. package/lib/utilities/valueFromAST.mjs.map +2 -2
  82. package/lib/values.d.ts +2 -2
  83. package/lib/values.d.ts.map +1 -1
  84. package/lib/values.js +14 -14
  85. package/lib/values.js.map +2 -2
  86. package/lib/values.mjs +21 -14
  87. package/lib/values.mjs.map +2 -2
  88. package/package.json +1 -1
  89. package/lib/schema/fragment.d.ts +0 -63
  90. package/lib/schema/fragment.d.ts.map +0 -1
  91. package/lib/schema/fragment.js +0 -295
  92. package/lib/schema/fragment.js.map +0 -7
  93. package/lib/schema/fragment.mjs +0 -292
  94. package/lib/schema/fragment.mjs.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/coerceInputValue.ts"],
4
- "sourcesContent": ["import { GraphQLError } from \"graphql\";\nimport { didYouMean } from \"../jsutils/didYouMean\";\nimport { inspect } from \"../jsutils/inspect\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { isIterableObject } from \"../jsutils/isIterableObject\";\nimport { isObjectLike } from \"../jsutils/isObjectLike\";\nimport type { Path } from \"../jsutils/Path\";\nimport { addPath, pathToArray } from \"../jsutils/Path\";\nimport { printPathArray } from \"../jsutils/printPathArray\";\nimport { suggestionList } from \"../jsutils/suggestionList\";\nimport { TypeReference } from \"../schema/definition\";\nimport { PartialSchema } from \"../schema/fragment\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\n\ntype OnErrorCB = (\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n) => void;\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaTypes: PartialSchema,\n onError: OnErrorCB = defaultOnError,\n): unknown {\n return coerceInputValueImpl(\n inputValue,\n typeRef,\n schemaTypes,\n onError,\n undefined,\n );\n}\n\nfunction defaultOnError(\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n): void {\n let errorPrefix = \"Invalid value \" + inspect(invalidValue);\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n error.message = errorPrefix + \": \" + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaTypes: PartialSchema,\n onError: OnErrorCB,\n path: Path | undefined,\n): unknown {\n if (isNonNullType(typeRef)) {\n if (inputValue != null) {\n return coerceInputValueImpl(\n inputValue,\n unwrap(typeRef),\n schemaTypes,\n onError,\n path,\n );\n }\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspectTypeReference(\n typeRef,\n )}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemType = unwrap(typeRef);\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(\n itemValue,\n itemType,\n schemaTypes,\n onError,\n itemPath,\n );\n });\n }\n // Lists accept a non-list value as a list of one.\n return [\n coerceInputValueImpl(inputValue, itemType, schemaTypes, onError, path),\n ];\n }\n\n const inputObjectType = schemaTypes.getInputObjectType(typeRef);\n if (inputObjectType) {\n const typeName = inspectTypeReference(typeRef);\n if (!isObjectLike(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${typeRef}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue: Record<string, unknown> = {};\n const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);\n\n for (const [fieldName, field] of Object.entries(fieldDefs)) {\n const fieldValue = inputValue[fieldName];\n const defaultValue = schemaTypes.getInputDefaultValue(field);\n const fieldTypeRef = schemaTypes.getTypeReference(field);\n\n if (fieldValue === undefined) {\n if (defaultValue !== undefined) {\n coercedValue[fieldName] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n const typeStr = inspectTypeReference(fieldTypeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n continue;\n }\n\n coercedValue[fieldName] = coerceInputValueImpl(\n fieldValue,\n fieldTypeRef,\n schemaTypes,\n onError,\n addPath(path, fieldName, typeName),\n );\n }\n\n // Ensure every provided field is defined.\n for (const fieldName of Object.keys(inputValue)) {\n if (fieldDefs[fieldName] == null) {\n const suggestions = suggestionList(fieldName, Object.keys(fieldDefs));\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${typeName}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n return coercedValue;\n }\n\n const leafType = schemaTypes.getLeafTypeResolver(typeRef);\n if (leafType) {\n let parseResult;\n\n // Scalars and Enums determine if an input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n try {\n parseResult = leafType.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n const typeName = inspectTypeReference(typeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected type \"${typeName}\". ` + (error as Error).message,\n {\n originalError: error as Error,\n },\n ),\n );\n }\n return;\n }\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${inspectTypeReference(typeRef)}\".`),\n );\n }\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { GraphQLError } from \"graphql\";\nimport { didYouMean } from \"../jsutils/didYouMean\";\nimport { inspect } from \"../jsutils/inspect\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { isIterableObject } from \"../jsutils/isIterableObject\";\nimport { isObjectLike } from \"../jsutils/isObjectLike\";\nimport type { Path } from \"../jsutils/Path\";\nimport { addPath, pathToArray } from \"../jsutils/Path\";\nimport { printPathArray } from \"../jsutils/printPathArray\";\nimport { suggestionList } from \"../jsutils/suggestionList\";\nimport {\n TypeReference,\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\nimport { SchemaFragment } from \"../types\";\nimport {\n getInputDefaultValue,\n getInputObjectFields,\n getInputObjectType,\n getInputValueTypeReference,\n} from \"../schema/definition\";\nimport { getLeafTypeResolver } from \"../schema/resolvers\";\n\ntype OnErrorCB = (\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n) => void;\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaFragment: SchemaFragment,\n onError: OnErrorCB = defaultOnError,\n): unknown {\n return coerceInputValueImpl(\n inputValue,\n typeRef,\n schemaFragment,\n onError,\n undefined,\n );\n}\n\nfunction defaultOnError(\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n): void {\n let errorPrefix = \"Invalid value \" + inspect(invalidValue);\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n error.message = errorPrefix + \": \" + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaFragment: SchemaFragment,\n onError: OnErrorCB,\n path: Path | undefined,\n): unknown {\n if (isNonNullType(typeRef)) {\n if (inputValue != null) {\n return coerceInputValueImpl(\n inputValue,\n unwrap(typeRef),\n schemaFragment,\n onError,\n path,\n );\n }\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspectTypeReference(\n typeRef,\n )}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemType = unwrap(typeRef);\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(\n itemValue,\n itemType,\n schemaFragment,\n onError,\n itemPath,\n );\n });\n }\n // Lists accept a non-list value as a list of one.\n return [\n coerceInputValueImpl(inputValue, itemType, schemaFragment, onError, path),\n ];\n }\n\n const inputObjectType = getInputObjectType(\n schemaFragment.definitions,\n typeRef,\n );\n if (inputObjectType) {\n const typeName = inspectTypeReference(typeRef);\n if (!isObjectLike(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${typeRef}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue: Record<string, unknown> = {};\n const fieldDefs = getInputObjectFields(inputObjectType);\n\n for (const [fieldName, field] of Object.entries(fieldDefs)) {\n const fieldValue = inputValue[fieldName];\n const defaultValue = getInputDefaultValue(field);\n const fieldTypeRef = getInputValueTypeReference(field);\n\n if (fieldValue === undefined) {\n if (defaultValue !== undefined) {\n coercedValue[fieldName] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n const typeStr = inspectTypeReference(fieldTypeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n continue;\n }\n\n coercedValue[fieldName] = coerceInputValueImpl(\n fieldValue,\n fieldTypeRef,\n schemaFragment,\n onError,\n addPath(path, fieldName, typeName),\n );\n }\n\n // Ensure every provided field is defined.\n for (const fieldName of Object.keys(inputValue)) {\n if (fieldDefs[fieldName] == null) {\n const suggestions = suggestionList(fieldName, Object.keys(fieldDefs));\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${typeName}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n return coercedValue;\n }\n\n const leafType = getLeafTypeResolver(schemaFragment, typeRef);\n if (leafType) {\n let parseResult;\n\n // Scalars and Enums determine if an input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n try {\n parseResult = leafType.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n const typeName = inspectTypeReference(typeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected type \"${typeName}\". ` + (error as Error).message,\n {\n originalError: error as Error,\n },\n ),\n );\n }\n return;\n }\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${inspectTypeReference(typeRef)}\".`),\n );\n }\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -14,11 +14,18 @@ import {
14
14
  isNonNullType,
15
15
  unwrap
16
16
  } from "../schema/reference.mjs";
17
- function coerceInputValue(inputValue, typeRef, schemaTypes, onError = defaultOnError) {
17
+ import {
18
+ getInputDefaultValue,
19
+ getInputObjectFields,
20
+ getInputObjectType,
21
+ getInputValueTypeReference
22
+ } from "../schema/definition.mjs";
23
+ import { getLeafTypeResolver } from "../schema/resolvers.mjs";
24
+ function coerceInputValue(inputValue, typeRef, schemaFragment, onError = defaultOnError) {
18
25
  return coerceInputValueImpl(
19
26
  inputValue,
20
27
  typeRef,
21
- schemaTypes,
28
+ schemaFragment,
22
29
  onError,
23
30
  void 0
24
31
  );
@@ -31,13 +38,13 @@ function defaultOnError(path, invalidValue, error) {
31
38
  error.message = errorPrefix + ": " + error.message;
32
39
  throw error;
33
40
  }
34
- function coerceInputValueImpl(inputValue, typeRef, schemaTypes, onError, path) {
41
+ function coerceInputValueImpl(inputValue, typeRef, schemaFragment, onError, path) {
35
42
  if (isNonNullType(typeRef)) {
36
43
  if (inputValue != null) {
37
44
  return coerceInputValueImpl(
38
45
  inputValue,
39
46
  unwrap(typeRef),
40
- schemaTypes,
47
+ schemaFragment,
41
48
  onError,
42
49
  path
43
50
  );
@@ -64,17 +71,20 @@ function coerceInputValueImpl(inputValue, typeRef, schemaTypes, onError, path) {
64
71
  return coerceInputValueImpl(
65
72
  itemValue,
66
73
  itemType,
67
- schemaTypes,
74
+ schemaFragment,
68
75
  onError,
69
76
  itemPath
70
77
  );
71
78
  });
72
79
  }
73
80
  return [
74
- coerceInputValueImpl(inputValue, itemType, schemaTypes, onError, path)
81
+ coerceInputValueImpl(inputValue, itemType, schemaFragment, onError, path)
75
82
  ];
76
83
  }
77
- const inputObjectType = schemaTypes.getInputObjectType(typeRef);
84
+ const inputObjectType = getInputObjectType(
85
+ schemaFragment.definitions,
86
+ typeRef
87
+ );
78
88
  if (inputObjectType) {
79
89
  const typeName = inspectTypeReference(typeRef);
80
90
  if (!isObjectLike(inputValue)) {
@@ -86,11 +96,11 @@ function coerceInputValueImpl(inputValue, typeRef, schemaTypes, onError, path) {
86
96
  return;
87
97
  }
88
98
  const coercedValue = {};
89
- const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);
99
+ const fieldDefs = getInputObjectFields(inputObjectType);
90
100
  for (const [fieldName, field] of Object.entries(fieldDefs)) {
91
101
  const fieldValue = inputValue[fieldName];
92
- const defaultValue = schemaTypes.getInputDefaultValue(field);
93
- const fieldTypeRef = schemaTypes.getTypeReference(field);
102
+ const defaultValue = getInputDefaultValue(field);
103
+ const fieldTypeRef = getInputValueTypeReference(field);
94
104
  if (fieldValue === void 0) {
95
105
  if (defaultValue !== void 0) {
96
106
  coercedValue[fieldName] = defaultValue;
@@ -109,7 +119,7 @@ function coerceInputValueImpl(inputValue, typeRef, schemaTypes, onError, path) {
109
119
  coercedValue[fieldName] = coerceInputValueImpl(
110
120
  fieldValue,
111
121
  fieldTypeRef,
112
- schemaTypes,
122
+ schemaFragment,
113
123
  onError,
114
124
  addPath(path, fieldName, typeName)
115
125
  );
@@ -128,7 +138,7 @@ function coerceInputValueImpl(inputValue, typeRef, schemaTypes, onError, path) {
128
138
  }
129
139
  return coercedValue;
130
140
  }
131
- const leafType = schemaTypes.getLeafTypeResolver(typeRef);
141
+ const leafType = getLeafTypeResolver(schemaFragment, typeRef);
132
142
  if (leafType) {
133
143
  let parseResult;
134
144
  try {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/coerceInputValue.ts"],
4
- "sourcesContent": ["import { GraphQLError } from \"graphql\";\nimport { didYouMean } from \"../jsutils/didYouMean\";\nimport { inspect } from \"../jsutils/inspect\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { isIterableObject } from \"../jsutils/isIterableObject\";\nimport { isObjectLike } from \"../jsutils/isObjectLike\";\nimport type { Path } from \"../jsutils/Path\";\nimport { addPath, pathToArray } from \"../jsutils/Path\";\nimport { printPathArray } from \"../jsutils/printPathArray\";\nimport { suggestionList } from \"../jsutils/suggestionList\";\nimport { TypeReference } from \"../schema/definition\";\nimport { PartialSchema } from \"../schema/fragment\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\n\ntype OnErrorCB = (\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n) => void;\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaTypes: PartialSchema,\n onError: OnErrorCB = defaultOnError,\n): unknown {\n return coerceInputValueImpl(\n inputValue,\n typeRef,\n schemaTypes,\n onError,\n undefined,\n );\n}\n\nfunction defaultOnError(\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n): void {\n let errorPrefix = \"Invalid value \" + inspect(invalidValue);\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n error.message = errorPrefix + \": \" + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaTypes: PartialSchema,\n onError: OnErrorCB,\n path: Path | undefined,\n): unknown {\n if (isNonNullType(typeRef)) {\n if (inputValue != null) {\n return coerceInputValueImpl(\n inputValue,\n unwrap(typeRef),\n schemaTypes,\n onError,\n path,\n );\n }\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspectTypeReference(\n typeRef,\n )}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemType = unwrap(typeRef);\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(\n itemValue,\n itemType,\n schemaTypes,\n onError,\n itemPath,\n );\n });\n }\n // Lists accept a non-list value as a list of one.\n return [\n coerceInputValueImpl(inputValue, itemType, schemaTypes, onError, path),\n ];\n }\n\n const inputObjectType = schemaTypes.getInputObjectType(typeRef);\n if (inputObjectType) {\n const typeName = inspectTypeReference(typeRef);\n if (!isObjectLike(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${typeRef}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue: Record<string, unknown> = {};\n const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);\n\n for (const [fieldName, field] of Object.entries(fieldDefs)) {\n const fieldValue = inputValue[fieldName];\n const defaultValue = schemaTypes.getInputDefaultValue(field);\n const fieldTypeRef = schemaTypes.getTypeReference(field);\n\n if (fieldValue === undefined) {\n if (defaultValue !== undefined) {\n coercedValue[fieldName] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n const typeStr = inspectTypeReference(fieldTypeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n continue;\n }\n\n coercedValue[fieldName] = coerceInputValueImpl(\n fieldValue,\n fieldTypeRef,\n schemaTypes,\n onError,\n addPath(path, fieldName, typeName),\n );\n }\n\n // Ensure every provided field is defined.\n for (const fieldName of Object.keys(inputValue)) {\n if (fieldDefs[fieldName] == null) {\n const suggestions = suggestionList(fieldName, Object.keys(fieldDefs));\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${typeName}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n return coercedValue;\n }\n\n const leafType = schemaTypes.getLeafTypeResolver(typeRef);\n if (leafType) {\n let parseResult;\n\n // Scalars and Enums determine if an input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n try {\n parseResult = leafType.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n const typeName = inspectTypeReference(typeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected type \"${typeName}\". ` + (error as Error).message,\n {\n originalError: error as Error,\n },\n ),\n );\n }\n return;\n }\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${inspectTypeReference(typeRef)}\".`),\n );\n }\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { GraphQLError } from \"graphql\";\nimport { didYouMean } from \"../jsutils/didYouMean\";\nimport { inspect } from \"../jsutils/inspect\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { isIterableObject } from \"../jsutils/isIterableObject\";\nimport { isObjectLike } from \"../jsutils/isObjectLike\";\nimport type { Path } from \"../jsutils/Path\";\nimport { addPath, pathToArray } from \"../jsutils/Path\";\nimport { printPathArray } from \"../jsutils/printPathArray\";\nimport { suggestionList } from \"../jsutils/suggestionList\";\nimport {\n TypeReference,\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\nimport { SchemaFragment } from \"../types\";\nimport {\n getInputDefaultValue,\n getInputObjectFields,\n getInputObjectType,\n getInputValueTypeReference,\n} from \"../schema/definition\";\nimport { getLeafTypeResolver } from \"../schema/resolvers\";\n\ntype OnErrorCB = (\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n) => void;\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaFragment: SchemaFragment,\n onError: OnErrorCB = defaultOnError,\n): unknown {\n return coerceInputValueImpl(\n inputValue,\n typeRef,\n schemaFragment,\n onError,\n undefined,\n );\n}\n\nfunction defaultOnError(\n path: ReadonlyArray<string | number>,\n invalidValue: unknown,\n error: GraphQLError,\n): void {\n let errorPrefix = \"Invalid value \" + inspect(invalidValue);\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n error.message = errorPrefix + \": \" + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(\n inputValue: unknown,\n typeRef: TypeReference,\n schemaFragment: SchemaFragment,\n onError: OnErrorCB,\n path: Path | undefined,\n): unknown {\n if (isNonNullType(typeRef)) {\n if (inputValue != null) {\n return coerceInputValueImpl(\n inputValue,\n unwrap(typeRef),\n schemaFragment,\n onError,\n path,\n );\n }\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspectTypeReference(\n typeRef,\n )}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemType = unwrap(typeRef);\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(\n itemValue,\n itemType,\n schemaFragment,\n onError,\n itemPath,\n );\n });\n }\n // Lists accept a non-list value as a list of one.\n return [\n coerceInputValueImpl(inputValue, itemType, schemaFragment, onError, path),\n ];\n }\n\n const inputObjectType = getInputObjectType(\n schemaFragment.definitions,\n typeRef,\n );\n if (inputObjectType) {\n const typeName = inspectTypeReference(typeRef);\n if (!isObjectLike(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${typeRef}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue: Record<string, unknown> = {};\n const fieldDefs = getInputObjectFields(inputObjectType);\n\n for (const [fieldName, field] of Object.entries(fieldDefs)) {\n const fieldValue = inputValue[fieldName];\n const defaultValue = getInputDefaultValue(field);\n const fieldTypeRef = getInputValueTypeReference(field);\n\n if (fieldValue === undefined) {\n if (defaultValue !== undefined) {\n coercedValue[fieldName] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n const typeStr = inspectTypeReference(fieldTypeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n continue;\n }\n\n coercedValue[fieldName] = coerceInputValueImpl(\n fieldValue,\n fieldTypeRef,\n schemaFragment,\n onError,\n addPath(path, fieldName, typeName),\n );\n }\n\n // Ensure every provided field is defined.\n for (const fieldName of Object.keys(inputValue)) {\n if (fieldDefs[fieldName] == null) {\n const suggestions = suggestionList(fieldName, Object.keys(fieldDefs));\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${typeName}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n return coercedValue;\n }\n\n const leafType = getLeafTypeResolver(schemaFragment, typeRef);\n if (leafType) {\n let parseResult;\n\n // Scalars and Enums determine if an input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n try {\n parseResult = leafType.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n const typeName = inspectTypeReference(typeRef);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected type \"${typeName}\". ` + (error as Error).message,\n {\n originalError: error as Error,\n },\n ),\n );\n }\n return;\n }\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${inspectTypeReference(typeRef)}\".`),\n );\n }\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/decodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAcb,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,iBAAiB,EAkBlB,MAAM,sBAAsB,CAAC;AAY9B;;GAEG;AACH,wBAAgB,eAAe,CAC7B,sBAAsB,EAAE,iBAAiB,EAAE,GAC1C,YAAY,CAsCd"}
1
+ {"version":3,"file":"decodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/decodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAcb,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,iBAAiB,EA4BlB,MAAM,sBAAsB,CAAC;AAa9B;;GAEG;AACH,wBAAgB,eAAe,CAC7B,sBAAsB,EAAE,iBAAiB,EAAE,GAC1C,YAAY,CA+Bd"}
@@ -35,25 +35,18 @@ function decodeASTSchema(encodedSchemaFragments) {
35
35
  const directives = encodedSchemaFragments[0].directives;
36
36
  for (const typeName in types) {
37
37
  const tuple = types[typeName];
38
- switch (tuple[0]) {
39
- case import_definition.TypeKind.SCALAR:
40
- definitions.push(decodeScalarType(typeName));
41
- break;
42
- case import_definition.TypeKind.ENUM:
43
- definitions.push(decodeEnumType(typeName, tuple));
44
- break;
45
- case import_definition.TypeKind.OBJECT:
46
- definitions.push(decodeObjectType(typeName, tuple, types));
47
- break;
48
- case import_definition.TypeKind.INTERFACE:
49
- definitions.push(decodeInterfaceType(typeName, tuple, types));
50
- break;
51
- case import_definition.TypeKind.UNION:
52
- definitions.push(decodeUnionType(typeName, tuple));
53
- break;
54
- case import_definition.TypeKind.INPUT:
55
- definitions.push(decodeInputObjectType(typeName, tuple, types));
56
- break;
38
+ if ((0, import_definition.isScalarTypeDefinition)(tuple)) {
39
+ definitions.push(decodeScalarType(typeName));
40
+ } else if ((0, import_definition.isEnumTypeDefinition)(tuple)) {
41
+ definitions.push(decodeEnumType(typeName, tuple));
42
+ } else if ((0, import_definition.isObjectTypeDefinition)(tuple)) {
43
+ definitions.push(decodeObjectType(typeName, tuple, types));
44
+ } else if ((0, import_definition.isInterfaceTypeDefinition)(tuple)) {
45
+ definitions.push(decodeInterfaceType(typeName, tuple, types));
46
+ } else if ((0, import_definition.isUnionTypeDefinition)(tuple)) {
47
+ definitions.push(decodeUnionType(typeName, tuple));
48
+ } else if ((0, import_definition.isInputObjectTypeDefinition)(tuple)) {
49
+ definitions.push(decodeInputObjectType(typeName, tuple, types));
57
50
  }
58
51
  }
59
52
  for (const directive of directives != null ? directives : []) {
@@ -74,18 +67,19 @@ function decodeEnumType(typeName, tuple) {
74
67
  return {
75
68
  kind: import_graphql.Kind.ENUM_TYPE_DEFINITION,
76
69
  name: nameNode(typeName),
77
- values: tuple[import_definition.EnumKeys.values].map((value) => ({
70
+ values: (0, import_definition.getEnumValues)(tuple).map((value) => ({
78
71
  kind: import_graphql.Kind.ENUM_VALUE_DEFINITION,
79
72
  name: nameNode(value)
80
73
  }))
81
74
  };
82
75
  }
83
76
  function decodeObjectType(typeName, tuple, types) {
77
+ var _a;
84
78
  return {
85
79
  kind: import_graphql.Kind.OBJECT_TYPE_DEFINITION,
86
80
  name: nameNode(typeName),
87
- fields: decodeFields(tuple[import_definition.ObjectKeys.fields], types),
88
- interfaces: (tuple[import_definition.ObjectKeys.interfaces] || []).map((name) => ({
81
+ fields: decodeFields((_a = (0, import_definition.getObjectFields)(tuple)) != null ? _a : {}, types),
82
+ interfaces: (0, import_definition.getObjectTypeInterfaces)(tuple).map((name) => ({
89
83
  kind: import_graphql.Kind.NAMED_TYPE,
90
84
  name: nameNode(name)
91
85
  }))
@@ -95,8 +89,8 @@ function decodeInterfaceType(typeName, tuple, types) {
95
89
  return {
96
90
  kind: import_graphql.Kind.INTERFACE_TYPE_DEFINITION,
97
91
  name: nameNode(typeName),
98
- fields: decodeFields(tuple[import_definition.InterfaceKeys.fields], types),
99
- interfaces: (tuple[import_definition.InterfaceKeys.interfaces] || []).map((name) => ({
92
+ fields: decodeFields((0, import_definition.getFields)(tuple), types),
93
+ interfaces: (0, import_definition.getInterfaceTypeInterfaces)(tuple).map((name) => ({
100
94
  kind: import_graphql.Kind.NAMED_TYPE,
101
95
  name: nameNode(name)
102
96
  }))
@@ -106,7 +100,7 @@ function decodeUnionType(typeName, tuple) {
106
100
  return {
107
101
  kind: import_graphql.Kind.UNION_TYPE_DEFINITION,
108
102
  name: nameNode(typeName),
109
- types: tuple[import_definition.UnionKeys.types].map((name) => ({
103
+ types: (0, import_definition.getUnionTypeMembers)(tuple).map((name) => ({
110
104
  kind: import_graphql.Kind.NAMED_TYPE,
111
105
  name: nameNode(name)
112
106
  }))
@@ -116,7 +110,7 @@ function decodeInputObjectType(typeName, tuple, types) {
116
110
  return {
117
111
  kind: import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION,
118
112
  name: nameNode(typeName),
119
- fields: Object.entries(tuple[import_definition.InputObjectKeys.fields]).map(
113
+ fields: Object.entries((0, import_definition.getInputObjectFields)(tuple)).map(
120
114
  ([name, value]) => decodeInputValue(name, value, types)
121
115
  )
122
116
  };
@@ -124,27 +118,25 @@ function decodeInputObjectType(typeName, tuple, types) {
124
118
  function decodeFields(fields, types) {
125
119
  return Object.entries(fields).map(([name, value]) => {
126
120
  var _a;
127
- const type = Array.isArray(value) ? decodeTypeReference(value[import_definition.FieldKeys.type]) : decodeTypeReference(value);
121
+ const type = decodeTypeReference((0, import_definition.getFieldTypeReference)(value));
128
122
  return {
129
123
  kind: import_graphql.Kind.FIELD_DEFINITION,
130
124
  name: nameNode(name),
131
125
  type,
132
- arguments: decodeArguments(
133
- Array.isArray(value) ? (_a = value[import_definition.FieldKeys.arguments]) != null ? _a : {} : {},
134
- types
135
- )
126
+ arguments: decodeArguments((_a = (0, import_definition.getFieldArgs)(value)) != null ? _a : {}, types)
136
127
  };
137
128
  });
138
129
  }
139
130
  function decodeInputValue(name, value, types) {
140
- const type = Array.isArray(value) ? decodeTypeReference(value[import_definition.InputValueKeys.type]) : decodeTypeReference(value);
131
+ const inputValueTypeRef = (0, import_definition.getInputValueTypeReference)(value);
132
+ const type = decodeTypeReference(inputValueTypeRef);
141
133
  return {
142
134
  kind: import_graphql.Kind.INPUT_VALUE_DEFINITION,
143
135
  name: nameNode(name),
144
136
  type,
145
137
  defaultValue: Array.isArray(value) ? valueToConstValueNode(
146
- value[import_definition.InputValueKeys.defaultValue],
147
- value[import_definition.InputValueKeys.type],
138
+ (0, import_definition.getInputDefaultValue)(value),
139
+ inputValueTypeRef,
148
140
  types
149
141
  ) : void 0
150
142
  };
@@ -176,15 +168,15 @@ function valueToConstValueNode(jsValue, typeRef, types) {
176
168
  if (typeof jsValue === "object") {
177
169
  const typeDef = types[typeName];
178
170
  (0, import_invariant.invariant)(
179
- Array.isArray(typeDef) && typeDef[0] === import_definition.TypeKind.INPUT,
171
+ Array.isArray(typeDef) && (0, import_definition.isInputObjectTypeDefinition)(typeDef),
180
172
  `Expecting input object type for ${typeName}, got ${typeDef == null ? void 0 : typeDef[0]}`
181
173
  );
182
- const fields = typeDef[import_definition.InputObjectKeys.fields];
174
+ const fields = (0, import_definition.getInputObjectFields)(typeDef);
183
175
  return {
184
176
  kind: import_graphql.Kind.OBJECT,
185
177
  fields: Object.entries(jsValue).map(([name, value]) => {
186
178
  const fieldDef = fields[name];
187
- const fieldTypeRef = Array.isArray(fieldDef) ? fieldDef[import_definition.FieldKeys.type] : fieldDef;
179
+ const fieldTypeRef = (0, import_definition.getInputValueTypeReference)(fieldDef);
188
180
  (0, import_invariant.invariant)(
189
181
  fieldTypeRef !== void 0,
190
182
  `Could not find field definition for ${typeName}.${name}`
@@ -233,12 +225,12 @@ function decodeTypeReference(ref) {
233
225
  };
234
226
  }
235
227
  function decodeDirective(tuple, types) {
236
- const name = tuple[import_definition.DirectiveKeys.name];
237
- const args = tuple[import_definition.DirectiveKeys.arguments] ? decodeArguments(tuple[import_definition.DirectiveKeys.arguments], types) : [];
228
+ const name = (0, import_definition.getDirectiveName)(tuple);
229
+ const args = (0, import_definition.getDirectiveDefinitionArgs)(tuple);
238
230
  return {
239
231
  kind: import_graphql.Kind.DIRECTIVE_DEFINITION,
240
232
  name: nameNode(name),
241
- arguments: args,
233
+ arguments: args ? decodeArguments(args, types) : [],
242
234
  // TODO? locations and repeatable are irrelevant for execution
243
235
  repeatable: false,
244
236
  locations: []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/decodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n DirectiveKeys,\n SchemaDefinitions,\n EnumKeys,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n FieldKeys,\n InputObjectKeys,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueKeys,\n InterfaceKeys,\n InterfaceTypeDefinitionTuple,\n ObjectKeys,\n ObjectTypeDefinitionTuple,\n TypeDefinitionsRecord,\n TypeKind,\n TypeReference,\n UnionKeys,\n UnionTypeDefinitionTuple,\n} from \"../schema/definition\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n typeNameFromReference,\n unwrap,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { ConstValueNode } from \"graphql/language/ast\";\nimport { inspect } from \"../jsutils/inspect\";\n\n/**\n * Converts encoded schema to standard AST representation of the same schema\n */\nexport function decodeASTSchema(\n encodedSchemaFragments: SchemaDefinitions[],\n): DocumentNode {\n if (encodedSchemaFragments.length !== 1) {\n // TODO:\n throw new Error(\"decodeSchema does not support decoding extensions yet\");\n }\n const definitions = [];\n const types = encodedSchemaFragments[0].types;\n const directives = encodedSchemaFragments[0].directives;\n\n for (const typeName in types) {\n const tuple = types[typeName];\n switch (tuple[0]) {\n case TypeKind.SCALAR:\n definitions.push(decodeScalarType(typeName));\n break;\n case TypeKind.ENUM:\n definitions.push(decodeEnumType(typeName, tuple));\n break;\n case TypeKind.OBJECT:\n definitions.push(decodeObjectType(typeName, tuple, types));\n break;\n case TypeKind.INTERFACE:\n definitions.push(decodeInterfaceType(typeName, tuple, types));\n break;\n case TypeKind.UNION:\n definitions.push(decodeUnionType(typeName, tuple));\n break;\n case TypeKind.INPUT:\n definitions.push(decodeInputObjectType(typeName, tuple, types));\n break;\n }\n }\n\n for (const directive of directives ?? []) {\n definitions.push(decodeDirective(directive, types));\n }\n\n return { kind: Kind.DOCUMENT, definitions };\n}\n\nfunction nameNode(value: string): NameNode {\n return { kind: Kind.NAME, value };\n}\n\nfunction decodeScalarType(typeName: string): ScalarTypeDefinitionNode {\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n name: nameNode(typeName),\n };\n}\n\nfunction decodeEnumType(\n typeName: string,\n tuple: EnumTypeDefinitionTuple,\n): EnumTypeDefinitionNode {\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n name: nameNode(typeName),\n values: tuple[EnumKeys.values].map((value) => ({\n kind: Kind.ENUM_VALUE_DEFINITION,\n name: nameNode(value),\n })),\n };\n}\n\nfunction decodeObjectType(\n typeName: string,\n tuple: ObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): ObjectTypeDefinitionNode {\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(tuple[ObjectKeys.fields], types),\n interfaces: (tuple[ObjectKeys.interfaces] || []).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInterfaceType(\n typeName: string,\n tuple: InterfaceTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InterfaceTypeDefinitionNode {\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(tuple[InterfaceKeys.fields], types),\n interfaces: (tuple[InterfaceKeys.interfaces] || []).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeUnionType(\n typeName: string,\n tuple: UnionTypeDefinitionTuple,\n): UnionTypeDefinitionNode {\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n name: nameNode(typeName),\n types: tuple[UnionKeys.types].map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInputObjectType(\n typeName: string,\n tuple: InputObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InputObjectTypeDefinitionNode {\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: Object.entries(tuple[InputObjectKeys.fields]).map(([name, value]) =>\n decodeInputValue(name, value, types),\n ),\n };\n}\n\nfunction decodeFields(\n fields: Record<string, FieldDefinition>,\n types: TypeDefinitionsRecord,\n): FieldDefinitionNode[] {\n return Object.entries(fields).map(([name, value]) => {\n const type = Array.isArray(value)\n ? decodeTypeReference(value[FieldKeys.type])\n : decodeTypeReference(value);\n return {\n kind: Kind.FIELD_DEFINITION,\n name: nameNode(name),\n type,\n arguments: decodeArguments(\n Array.isArray(value) ? value[FieldKeys.arguments] ?? {} : {},\n types,\n ),\n };\n });\n}\n\nfunction decodeInputValue(\n name: string,\n value: InputValueDefinition,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode {\n const type = Array.isArray(value)\n ? decodeTypeReference(value[InputValueKeys.type])\n : decodeTypeReference(value);\n\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n name: nameNode(name),\n type,\n defaultValue: Array.isArray(value)\n ? valueToConstValueNode(\n value[InputValueKeys.defaultValue],\n value[InputValueKeys.type],\n types,\n )\n : undefined,\n };\n}\n\nfunction valueToConstValueNode(\n jsValue: unknown,\n typeRef: TypeReference,\n types: TypeDefinitionsRecord,\n): ConstValueNode {\n const typeName = typeNameFromReference(typeRef);\n if (typeof jsValue === \"string\") {\n return typeName === \"String\"\n ? { kind: Kind.STRING, value: jsValue }\n : { kind: Kind.ENUM, value: jsValue };\n }\n if (jsValue === null) {\n invariant(!isNonNullType(typeRef), \"Expecting nullable type\");\n return { kind: Kind.NULL };\n }\n if (Number.isInteger(jsValue)) {\n return { kind: Kind.INT, value: String(jsValue) };\n }\n if (typeof jsValue === \"number\") {\n return { kind: Kind.FLOAT, value: String(jsValue) };\n }\n if (Array.isArray(jsValue)) {\n invariant(isListType(typeRef), \"Expecting list type\");\n return {\n kind: Kind.LIST,\n values: jsValue.map((item) =>\n valueToConstValueNode(item, unwrap(typeRef), types),\n ),\n };\n }\n if (typeof jsValue === \"object\") {\n const typeDef = types[typeName];\n invariant(\n Array.isArray(typeDef) && typeDef[0] === TypeKind.INPUT,\n `Expecting input object type for ${typeName}, got ${typeDef?.[0]}`,\n );\n const fields = typeDef[InputObjectKeys.fields];\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(jsValue).map(([name, value]) => {\n const fieldDef = fields[name];\n const fieldTypeRef = Array.isArray(fieldDef)\n ? fieldDef[FieldKeys.type]\n : fieldDef;\n invariant(\n fieldTypeRef !== undefined,\n `Could not find field definition for ${typeName}.${name}`,\n );\n return {\n kind: Kind.OBJECT_FIELD,\n name: nameNode(name),\n value: valueToConstValueNode(value, fieldTypeRef, types),\n };\n }),\n };\n }\n invariant(\n false,\n `Unexpected value for type ${inspectTypeReference(typeRef)}: ${inspect(\n jsValue,\n )}`,\n );\n}\n\nfunction decodeArguments(\n args: Record<string, InputValueDefinition>,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode[] {\n return Object.entries(args).map(([name, value]) =>\n decodeInputValue(name, value, types),\n );\n}\n\nfunction decodeTypeReference(\n ref: TypeReference,\n): NamedTypeNode | ListTypeNode | NonNullTypeNode {\n if (isListType(ref)) {\n return {\n kind: Kind.LIST_TYPE,\n type: decodeTypeReference(unwrap(ref)),\n };\n }\n if (isNonNullType(ref)) {\n const unwrappedType = decodeTypeReference(unwrap(ref));\n invariant(\n unwrappedType.kind !== Kind.NON_NULL_TYPE,\n \"Non-null modifier cannot be nested\",\n );\n return {\n kind: Kind.NON_NULL_TYPE,\n type: unwrappedType,\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: nameNode(typeNameFromReference(ref)),\n };\n}\n\nfunction decodeDirective(\n tuple: DirectiveDefinitionTuple,\n types: TypeDefinitionsRecord,\n): DirectiveDefinitionNode {\n const name = tuple[DirectiveKeys.name];\n const args = tuple[DirectiveKeys.arguments]\n ? decodeArguments(tuple[DirectiveKeys.arguments], types)\n : [];\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n name: nameNode(name),\n arguments: args,\n // TODO? locations and repeatable are irrelevant for execution\n repeatable: false,\n locations: [],\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAgBO;AACP,wBAqBO;AACP,uBAMO;AACP,uBAA0B;AAE1B,qBAAwB;AAKjB,SAAS,gBACd,wBACc;AACd,MAAI,uBAAuB,WAAW,GAAG;AAEvC,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AACA,QAAM,cAAc,CAAC;AACrB,QAAM,QAAQ,uBAAuB,CAAC,EAAE;AACxC,QAAM,aAAa,uBAAuB,CAAC,EAAE;AAE7C,aAAW,YAAY,OAAO;AAC5B,UAAM,QAAQ,MAAM,QAAQ;AAC5B,YAAQ,MAAM,CAAC,GAAG;AAAA,MAChB,KAAK,2BAAS;AACZ,oBAAY,KAAK,iBAAiB,QAAQ,CAAC;AAC3C;AAAA,MACF,KAAK,2BAAS;AACZ,oBAAY,KAAK,eAAe,UAAU,KAAK,CAAC;AAChD;AAAA,MACF,KAAK,2BAAS;AACZ,oBAAY,KAAK,iBAAiB,UAAU,OAAO,KAAK,CAAC;AACzD;AAAA,MACF,KAAK,2BAAS;AACZ,oBAAY,KAAK,oBAAoB,UAAU,OAAO,KAAK,CAAC;AAC5D;AAAA,MACF,KAAK,2BAAS;AACZ,oBAAY,KAAK,gBAAgB,UAAU,KAAK,CAAC;AACjD;AAAA,MACF,KAAK,2BAAS;AACZ,oBAAY,KAAK,sBAAsB,UAAU,OAAO,KAAK,CAAC;AAC9D;AAAA,IACJ;AAAA,EACF;AAEA,aAAW,aAAa,kCAAc,CAAC,GAAG;AACxC,gBAAY,KAAK,gBAAgB,WAAW,KAAK,CAAC;AAAA,EACpD;AAEA,SAAO,EAAE,MAAM,oBAAK,UAAU,YAAY;AAC5C;AAEA,SAAS,SAAS,OAAyB;AACzC,SAAO,EAAE,MAAM,oBAAK,MAAM,MAAM;AAClC;AAEA,SAAS,iBAAiB,UAA4C;AACpE,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,EACzB;AACF;AAEA,SAAS,eACP,UACA,OACwB;AACxB,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,IACvB,QAAQ,MAAM,2BAAS,MAAM,EAAE,IAAI,CAAC,WAAW;AAAA,MAC7C,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,KAAK;AAAA,IACtB,EAAE;AAAA,EACJ;AACF;AAEA,SAAS,iBACP,UACA,OACA,OAC0B;AAC1B,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,IACvB,QAAQ,aAAa,MAAM,6BAAW,MAAM,GAAG,KAAK;AAAA,IACpD,aAAa,MAAM,6BAAW,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU;AAAA,MAC9D,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ;AACF;AAEA,SAAS,oBACP,UACA,OACA,OAC6B;AAC7B,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,IACvB,QAAQ,aAAa,MAAM,gCAAc,MAAM,GAAG,KAAK;AAAA,IACvD,aAAa,MAAM,gCAAc,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU;AAAA,MACjE,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ;AACF;AAEA,SAAS,gBACP,UACA,OACyB;AACzB,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,IACvB,OAAO,MAAM,4BAAU,KAAK,EAAE,IAAI,CAAC,UAAU;AAAA,MAC3C,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ;AACF;AAEA,SAAS,sBACP,UACA,OACA,OAC+B;AAC/B,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,IACvB,QAAQ,OAAO,QAAQ,MAAM,kCAAgB,MAAM,CAAC,EAAE;AAAA,MAAI,CAAC,CAAC,MAAM,KAAK,MACrE,iBAAiB,MAAM,OAAO,KAAK;AAAA,IACrC;AAAA,EACF;AACF;AAEA,SAAS,aACP,QACA,OACuB;AACvB,SAAO,OAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AAxLvD;AAyLI,UAAM,OAAO,MAAM,QAAQ,KAAK,IAC5B,oBAAoB,MAAM,4BAAU,IAAI,CAAC,IACzC,oBAAoB,KAAK;AAC7B,WAAO;AAAA,MACL,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,IAAI;AAAA,MACnB;AAAA,MACA,WAAW;AAAA,QACT,MAAM,QAAQ,KAAK,KAAI,WAAM,4BAAU,SAAS,MAAzB,YAA8B,CAAC,IAAI,CAAC;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,iBACP,MACA,OACA,OAC0B;AAC1B,QAAM,OAAO,MAAM,QAAQ,KAAK,IAC5B,oBAAoB,MAAM,iCAAe,IAAI,CAAC,IAC9C,oBAAoB,KAAK;AAE7B,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,IAAI;AAAA,IACnB;AAAA,IACA,cAAc,MAAM,QAAQ,KAAK,IAC7B;AAAA,MACE,MAAM,iCAAe,YAAY;AAAA,MACjC,MAAM,iCAAe,IAAI;AAAA,MACzB;AAAA,IACF,IACA;AAAA,EACN;AACF;AAEA,SAAS,sBACP,SACA,SACA,OACgB;AAChB,QAAM,eAAW,wCAAsB,OAAO;AAC9C,MAAI,OAAO,YAAY,UAAU;AAC/B,WAAO,aAAa,WAChB,EAAE,MAAM,oBAAK,QAAQ,OAAO,QAAQ,IACpC,EAAE,MAAM,oBAAK,MAAM,OAAO,QAAQ;AAAA,EACxC;AACA,MAAI,YAAY,MAAM;AACpB,oCAAU,KAAC,gCAAc,OAAO,GAAG,yBAAyB;AAC5D,WAAO,EAAE,MAAM,oBAAK,KAAK;AAAA,EAC3B;AACA,MAAI,OAAO,UAAU,OAAO,GAAG;AAC7B,WAAO,EAAE,MAAM,oBAAK,KAAK,OAAO,OAAO,OAAO,EAAE;AAAA,EAClD;AACA,MAAI,OAAO,YAAY,UAAU;AAC/B,WAAO,EAAE,MAAM,oBAAK,OAAO,OAAO,OAAO,OAAO,EAAE;AAAA,EACpD;AACA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,wCAAU,6BAAW,OAAO,GAAG,qBAAqB;AACpD,WAAO;AAAA,MACL,MAAM,oBAAK;AAAA,MACX,QAAQ,QAAQ;AAAA,QAAI,CAAC,SACnB,sBAAsB,UAAM,yBAAO,OAAO,GAAG,KAAK;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,YAAY,UAAU;AAC/B,UAAM,UAAU,MAAM,QAAQ;AAC9B;AAAA,MACE,MAAM,QAAQ,OAAO,KAAK,QAAQ,CAAC,MAAM,2BAAS;AAAA,MAClD,mCAAmC,iBAAiB,mCAAU;AAAA,IAChE;AACA,UAAM,SAAS,QAAQ,kCAAgB,MAAM;AAC7C,WAAO;AAAA,MACL,MAAM,oBAAK;AAAA,MACX,QAAQ,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AACrD,cAAM,WAAW,OAAO,IAAI;AAC5B,cAAM,eAAe,MAAM,QAAQ,QAAQ,IACvC,SAAS,4BAAU,IAAI,IACvB;AACJ;AAAA,UACE,iBAAiB;AAAA,UACjB,uCAAuC,YAAY;AAAA,QACrD;AACA,eAAO;AAAA,UACL,MAAM,oBAAK;AAAA,UACX,MAAM,SAAS,IAAI;AAAA,UACnB,OAAO,sBAAsB,OAAO,cAAc,KAAK;AAAA,QACzD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA,iCAA6B,uCAAqB,OAAO,UAAM;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,gBACP,MACA,OAC4B;AAC5B,SAAO,OAAO,QAAQ,IAAI,EAAE;AAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAC3C,iBAAiB,MAAM,OAAO,KAAK;AAAA,EACrC;AACF;AAEA,SAAS,oBACP,KACgD;AAChD,UAAI,6BAAW,GAAG,GAAG;AACnB,WAAO;AAAA,MACL,MAAM,oBAAK;AAAA,MACX,MAAM,wBAAoB,yBAAO,GAAG,CAAC;AAAA,IACvC;AAAA,EACF;AACA,UAAI,gCAAc,GAAG,GAAG;AACtB,UAAM,gBAAgB,wBAAoB,yBAAO,GAAG,CAAC;AACrD;AAAA,MACE,cAAc,SAAS,oBAAK;AAAA,MAC5B;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM,oBAAK;AAAA,MACX,MAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,aAAS,wCAAsB,GAAG,CAAC;AAAA,EAC3C;AACF;AAEA,SAAS,gBACP,OACA,OACyB;AACzB,QAAM,OAAO,MAAM,gCAAc,IAAI;AACrC,QAAM,OAAO,MAAM,gCAAc,SAAS,IACtC,gBAAgB,MAAM,gCAAc,SAAS,GAAG,KAAK,IACrD,CAAC;AACL,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW;AAAA;AAAA,IAEX,YAAY;AAAA,IACZ,WAAW,CAAC;AAAA,EACd;AACF;",
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n SchemaDefinitions,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n TypeDefinitionsRecord,\n UnionTypeDefinitionTuple,\n isScalarTypeDefinition,\n isEnumTypeDefinition,\n isObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isUnionTypeDefinition,\n isInputObjectTypeDefinition,\n getEnumValues,\n getObjectFields,\n getObjectTypeInterfaces,\n getFields,\n getInterfaceTypeInterfaces,\n getUnionTypeMembers,\n getInputObjectFields,\n getFieldTypeReference,\n getFieldArgs,\n getInputValueTypeReference,\n getInputDefaultValue,\n getDirectiveName,\n getDirectiveDefinitionArgs,\n} from \"../schema/definition\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n typeNameFromReference,\n TypeReference,\n unwrap,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { ConstValueNode } from \"graphql/language/ast\";\nimport { inspect } from \"../jsutils/inspect\";\n\n/**\n * Converts encoded schema to standard AST representation of the same schema\n */\nexport function decodeASTSchema(\n encodedSchemaFragments: SchemaDefinitions[],\n): DocumentNode {\n if (encodedSchemaFragments.length !== 1) {\n // TODO:\n throw new Error(\"decodeSchema does not support decoding extensions yet\");\n }\n const definitions = [];\n const types = encodedSchemaFragments[0].types;\n const directives = encodedSchemaFragments[0].directives;\n\n for (const typeName in types) {\n const tuple = types[typeName];\n if (isScalarTypeDefinition(tuple)) {\n definitions.push(decodeScalarType(typeName));\n } else if (isEnumTypeDefinition(tuple)) {\n definitions.push(decodeEnumType(typeName, tuple));\n } else if (isObjectTypeDefinition(tuple)) {\n definitions.push(decodeObjectType(typeName, tuple, types));\n } else if (isInterfaceTypeDefinition(tuple)) {\n definitions.push(decodeInterfaceType(typeName, tuple, types));\n } else if (isUnionTypeDefinition(tuple)) {\n definitions.push(decodeUnionType(typeName, tuple));\n } else if (isInputObjectTypeDefinition(tuple)) {\n definitions.push(decodeInputObjectType(typeName, tuple, types));\n }\n }\n\n for (const directive of directives ?? []) {\n definitions.push(decodeDirective(directive, types));\n }\n\n return { kind: Kind.DOCUMENT, definitions };\n}\n\nfunction nameNode(value: string): NameNode {\n return { kind: Kind.NAME, value };\n}\n\nfunction decodeScalarType(typeName: string): ScalarTypeDefinitionNode {\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n name: nameNode(typeName),\n };\n}\n\nfunction decodeEnumType(\n typeName: string,\n tuple: EnumTypeDefinitionTuple,\n): EnumTypeDefinitionNode {\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n name: nameNode(typeName),\n values: getEnumValues(tuple).map((value) => ({\n kind: Kind.ENUM_VALUE_DEFINITION,\n name: nameNode(value),\n })),\n };\n}\n\nfunction decodeObjectType(\n typeName: string,\n tuple: ObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): ObjectTypeDefinitionNode {\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getObjectFields(tuple) ?? {}, types),\n interfaces: getObjectTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInterfaceType(\n typeName: string,\n tuple: InterfaceTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InterfaceTypeDefinitionNode {\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getFields(tuple), types),\n interfaces: getInterfaceTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeUnionType(\n typeName: string,\n tuple: UnionTypeDefinitionTuple,\n): UnionTypeDefinitionNode {\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n name: nameNode(typeName),\n types: getUnionTypeMembers(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInputObjectType(\n typeName: string,\n tuple: InputObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InputObjectTypeDefinitionNode {\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: Object.entries(getInputObjectFields(tuple)).map(([name, value]) =>\n decodeInputValue(name, value, types),\n ),\n };\n}\n\nfunction decodeFields(\n fields: Record<string, FieldDefinition>,\n types: TypeDefinitionsRecord,\n): FieldDefinitionNode[] {\n return Object.entries(fields).map(([name, value]) => {\n const type = decodeTypeReference(getFieldTypeReference(value));\n return {\n kind: Kind.FIELD_DEFINITION,\n name: nameNode(name),\n type,\n arguments: decodeArguments(getFieldArgs(value) ?? {}, types),\n };\n });\n}\n\nfunction decodeInputValue(\n name: string,\n value: InputValueDefinition,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode {\n const inputValueTypeRef = getInputValueTypeReference(value);\n const type = decodeTypeReference(inputValueTypeRef);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n name: nameNode(name),\n type,\n defaultValue: Array.isArray(value)\n ? valueToConstValueNode(\n getInputDefaultValue(value),\n inputValueTypeRef,\n types,\n )\n : undefined,\n };\n}\n\nfunction valueToConstValueNode(\n jsValue: unknown,\n typeRef: TypeReference,\n types: TypeDefinitionsRecord,\n): ConstValueNode {\n const typeName = typeNameFromReference(typeRef);\n if (typeof jsValue === \"string\") {\n return typeName === \"String\"\n ? { kind: Kind.STRING, value: jsValue }\n : { kind: Kind.ENUM, value: jsValue };\n }\n if (jsValue === null) {\n invariant(!isNonNullType(typeRef), \"Expecting nullable type\");\n return { kind: Kind.NULL };\n }\n if (Number.isInteger(jsValue)) {\n return { kind: Kind.INT, value: String(jsValue) };\n }\n if (typeof jsValue === \"number\") {\n return { kind: Kind.FLOAT, value: String(jsValue) };\n }\n if (Array.isArray(jsValue)) {\n invariant(isListType(typeRef), \"Expecting list type\");\n return {\n kind: Kind.LIST,\n values: jsValue.map((item) =>\n valueToConstValueNode(item, unwrap(typeRef), types),\n ),\n };\n }\n if (typeof jsValue === \"object\") {\n const typeDef = types[typeName];\n invariant(\n Array.isArray(typeDef) && isInputObjectTypeDefinition(typeDef),\n `Expecting input object type for ${typeName}, got ${typeDef?.[0]}`,\n );\n const fields = getInputObjectFields(typeDef);\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(jsValue).map(([name, value]) => {\n const fieldDef = fields[name];\n const fieldTypeRef = getInputValueTypeReference(fieldDef);\n invariant(\n fieldTypeRef !== undefined,\n `Could not find field definition for ${typeName}.${name}`,\n );\n return {\n kind: Kind.OBJECT_FIELD,\n name: nameNode(name),\n value: valueToConstValueNode(value, fieldTypeRef, types),\n };\n }),\n };\n }\n invariant(\n false,\n `Unexpected value for type ${inspectTypeReference(typeRef)}: ${inspect(\n jsValue,\n )}`,\n );\n}\n\nfunction decodeArguments(\n args: Record<string, InputValueDefinition>,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode[] {\n return Object.entries(args).map(([name, value]) =>\n decodeInputValue(name, value, types),\n );\n}\n\nfunction decodeTypeReference(\n ref: TypeReference,\n): NamedTypeNode | ListTypeNode | NonNullTypeNode {\n if (isListType(ref)) {\n return {\n kind: Kind.LIST_TYPE,\n type: decodeTypeReference(unwrap(ref)),\n };\n }\n if (isNonNullType(ref)) {\n const unwrappedType = decodeTypeReference(unwrap(ref));\n invariant(\n unwrappedType.kind !== Kind.NON_NULL_TYPE,\n \"Non-null modifier cannot be nested\",\n );\n return {\n kind: Kind.NON_NULL_TYPE,\n type: unwrappedType,\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: nameNode(typeNameFromReference(ref)),\n };\n}\n\nfunction decodeDirective(\n tuple: DirectiveDefinitionTuple,\n types: TypeDefinitionsRecord,\n): DirectiveDefinitionNode {\n const name = getDirectiveName(tuple);\n const args = getDirectiveDefinitionArgs(tuple);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n name: nameNode(name),\n arguments: args ? decodeArguments(args, types) : [],\n // TODO? locations and repeatable are irrelevant for execution\n repeatable: false,\n locations: [],\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -3,15 +3,25 @@ import {
3
3
  Kind
4
4
  } from "graphql";
5
5
  import {
6
- DirectiveKeys,
7
- EnumKeys,
8
- FieldKeys,
9
- InputObjectKeys,
10
- InputValueKeys,
11
- InterfaceKeys,
12
- ObjectKeys,
13
- TypeKind,
14
- UnionKeys
6
+ isScalarTypeDefinition,
7
+ isEnumTypeDefinition,
8
+ isObjectTypeDefinition,
9
+ isInterfaceTypeDefinition,
10
+ isUnionTypeDefinition,
11
+ isInputObjectTypeDefinition,
12
+ getEnumValues,
13
+ getObjectFields,
14
+ getObjectTypeInterfaces,
15
+ getFields,
16
+ getInterfaceTypeInterfaces,
17
+ getUnionTypeMembers,
18
+ getInputObjectFields,
19
+ getFieldTypeReference,
20
+ getFieldArgs,
21
+ getInputValueTypeReference,
22
+ getInputDefaultValue,
23
+ getDirectiveName,
24
+ getDirectiveDefinitionArgs
15
25
  } from "../schema/definition.mjs";
16
26
  import {
17
27
  inspectTypeReference,
@@ -31,25 +41,18 @@ function decodeASTSchema(encodedSchemaFragments) {
31
41
  const directives = encodedSchemaFragments[0].directives;
32
42
  for (const typeName in types) {
33
43
  const tuple = types[typeName];
34
- switch (tuple[0]) {
35
- case TypeKind.SCALAR:
36
- definitions.push(decodeScalarType(typeName));
37
- break;
38
- case TypeKind.ENUM:
39
- definitions.push(decodeEnumType(typeName, tuple));
40
- break;
41
- case TypeKind.OBJECT:
42
- definitions.push(decodeObjectType(typeName, tuple, types));
43
- break;
44
- case TypeKind.INTERFACE:
45
- definitions.push(decodeInterfaceType(typeName, tuple, types));
46
- break;
47
- case TypeKind.UNION:
48
- definitions.push(decodeUnionType(typeName, tuple));
49
- break;
50
- case TypeKind.INPUT:
51
- definitions.push(decodeInputObjectType(typeName, tuple, types));
52
- break;
44
+ if (isScalarTypeDefinition(tuple)) {
45
+ definitions.push(decodeScalarType(typeName));
46
+ } else if (isEnumTypeDefinition(tuple)) {
47
+ definitions.push(decodeEnumType(typeName, tuple));
48
+ } else if (isObjectTypeDefinition(tuple)) {
49
+ definitions.push(decodeObjectType(typeName, tuple, types));
50
+ } else if (isInterfaceTypeDefinition(tuple)) {
51
+ definitions.push(decodeInterfaceType(typeName, tuple, types));
52
+ } else if (isUnionTypeDefinition(tuple)) {
53
+ definitions.push(decodeUnionType(typeName, tuple));
54
+ } else if (isInputObjectTypeDefinition(tuple)) {
55
+ definitions.push(decodeInputObjectType(typeName, tuple, types));
53
56
  }
54
57
  }
55
58
  for (const directive of directives != null ? directives : []) {
@@ -70,18 +73,19 @@ function decodeEnumType(typeName, tuple) {
70
73
  return {
71
74
  kind: Kind.ENUM_TYPE_DEFINITION,
72
75
  name: nameNode(typeName),
73
- values: tuple[EnumKeys.values].map((value) => ({
76
+ values: getEnumValues(tuple).map((value) => ({
74
77
  kind: Kind.ENUM_VALUE_DEFINITION,
75
78
  name: nameNode(value)
76
79
  }))
77
80
  };
78
81
  }
79
82
  function decodeObjectType(typeName, tuple, types) {
83
+ var _a;
80
84
  return {
81
85
  kind: Kind.OBJECT_TYPE_DEFINITION,
82
86
  name: nameNode(typeName),
83
- fields: decodeFields(tuple[ObjectKeys.fields], types),
84
- interfaces: (tuple[ObjectKeys.interfaces] || []).map((name) => ({
87
+ fields: decodeFields((_a = getObjectFields(tuple)) != null ? _a : {}, types),
88
+ interfaces: getObjectTypeInterfaces(tuple).map((name) => ({
85
89
  kind: Kind.NAMED_TYPE,
86
90
  name: nameNode(name)
87
91
  }))
@@ -91,8 +95,8 @@ function decodeInterfaceType(typeName, tuple, types) {
91
95
  return {
92
96
  kind: Kind.INTERFACE_TYPE_DEFINITION,
93
97
  name: nameNode(typeName),
94
- fields: decodeFields(tuple[InterfaceKeys.fields], types),
95
- interfaces: (tuple[InterfaceKeys.interfaces] || []).map((name) => ({
98
+ fields: decodeFields(getFields(tuple), types),
99
+ interfaces: getInterfaceTypeInterfaces(tuple).map((name) => ({
96
100
  kind: Kind.NAMED_TYPE,
97
101
  name: nameNode(name)
98
102
  }))
@@ -102,7 +106,7 @@ function decodeUnionType(typeName, tuple) {
102
106
  return {
103
107
  kind: Kind.UNION_TYPE_DEFINITION,
104
108
  name: nameNode(typeName),
105
- types: tuple[UnionKeys.types].map((name) => ({
109
+ types: getUnionTypeMembers(tuple).map((name) => ({
106
110
  kind: Kind.NAMED_TYPE,
107
111
  name: nameNode(name)
108
112
  }))
@@ -112,7 +116,7 @@ function decodeInputObjectType(typeName, tuple, types) {
112
116
  return {
113
117
  kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
114
118
  name: nameNode(typeName),
115
- fields: Object.entries(tuple[InputObjectKeys.fields]).map(
119
+ fields: Object.entries(getInputObjectFields(tuple)).map(
116
120
  ([name, value]) => decodeInputValue(name, value, types)
117
121
  )
118
122
  };
@@ -120,27 +124,25 @@ function decodeInputObjectType(typeName, tuple, types) {
120
124
  function decodeFields(fields, types) {
121
125
  return Object.entries(fields).map(([name, value]) => {
122
126
  var _a;
123
- const type = Array.isArray(value) ? decodeTypeReference(value[FieldKeys.type]) : decodeTypeReference(value);
127
+ const type = decodeTypeReference(getFieldTypeReference(value));
124
128
  return {
125
129
  kind: Kind.FIELD_DEFINITION,
126
130
  name: nameNode(name),
127
131
  type,
128
- arguments: decodeArguments(
129
- Array.isArray(value) ? (_a = value[FieldKeys.arguments]) != null ? _a : {} : {},
130
- types
131
- )
132
+ arguments: decodeArguments((_a = getFieldArgs(value)) != null ? _a : {}, types)
132
133
  };
133
134
  });
134
135
  }
135
136
  function decodeInputValue(name, value, types) {
136
- const type = Array.isArray(value) ? decodeTypeReference(value[InputValueKeys.type]) : decodeTypeReference(value);
137
+ const inputValueTypeRef = getInputValueTypeReference(value);
138
+ const type = decodeTypeReference(inputValueTypeRef);
137
139
  return {
138
140
  kind: Kind.INPUT_VALUE_DEFINITION,
139
141
  name: nameNode(name),
140
142
  type,
141
143
  defaultValue: Array.isArray(value) ? valueToConstValueNode(
142
- value[InputValueKeys.defaultValue],
143
- value[InputValueKeys.type],
144
+ getInputDefaultValue(value),
145
+ inputValueTypeRef,
144
146
  types
145
147
  ) : void 0
146
148
  };
@@ -172,15 +174,15 @@ function valueToConstValueNode(jsValue, typeRef, types) {
172
174
  if (typeof jsValue === "object") {
173
175
  const typeDef = types[typeName];
174
176
  invariant(
175
- Array.isArray(typeDef) && typeDef[0] === TypeKind.INPUT,
177
+ Array.isArray(typeDef) && isInputObjectTypeDefinition(typeDef),
176
178
  `Expecting input object type for ${typeName}, got ${typeDef == null ? void 0 : typeDef[0]}`
177
179
  );
178
- const fields = typeDef[InputObjectKeys.fields];
180
+ const fields = getInputObjectFields(typeDef);
179
181
  return {
180
182
  kind: Kind.OBJECT,
181
183
  fields: Object.entries(jsValue).map(([name, value]) => {
182
184
  const fieldDef = fields[name];
183
- const fieldTypeRef = Array.isArray(fieldDef) ? fieldDef[FieldKeys.type] : fieldDef;
185
+ const fieldTypeRef = getInputValueTypeReference(fieldDef);
184
186
  invariant(
185
187
  fieldTypeRef !== void 0,
186
188
  `Could not find field definition for ${typeName}.${name}`
@@ -229,12 +231,12 @@ function decodeTypeReference(ref) {
229
231
  };
230
232
  }
231
233
  function decodeDirective(tuple, types) {
232
- const name = tuple[DirectiveKeys.name];
233
- const args = tuple[DirectiveKeys.arguments] ? decodeArguments(tuple[DirectiveKeys.arguments], types) : [];
234
+ const name = getDirectiveName(tuple);
235
+ const args = getDirectiveDefinitionArgs(tuple);
234
236
  return {
235
237
  kind: Kind.DIRECTIVE_DEFINITION,
236
238
  name: nameNode(name),
237
- arguments: args,
239
+ arguments: args ? decodeArguments(args, types) : [],
238
240
  // TODO? locations and repeatable are irrelevant for execution
239
241
  repeatable: false,
240
242
  locations: []