@graphitation/supermassive 2.6.1 → 3.0.0-alpha.3

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 (206) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +17 -1
  3. package/lib/__testUtils__/execute.d.ts +13 -0
  4. package/lib/__testUtils__/execute.d.ts.map +1 -0
  5. package/lib/__testUtils__/execute.js +196 -0
  6. package/lib/__testUtils__/execute.js.map +7 -0
  7. package/lib/__testUtils__/execute.mjs +174 -0
  8. package/lib/__testUtils__/execute.mjs.map +7 -0
  9. package/lib/benchmarks/index.js +11 -20
  10. package/lib/benchmarks/index.js.map +3 -3
  11. package/lib/benchmarks/index.mjs +12 -23
  12. package/lib/benchmarks/index.mjs.map +2 -2
  13. package/lib/benchmarks/swapi-schema/index.d.ts +4 -2
  14. package/lib/benchmarks/swapi-schema/index.d.ts.map +1 -1
  15. package/lib/benchmarks/swapi-schema/index.js +8 -2
  16. package/lib/benchmarks/swapi-schema/index.js.map +2 -2
  17. package/lib/benchmarks/swapi-schema/index.mjs +8 -2
  18. package/lib/benchmarks/swapi-schema/index.mjs.map +2 -2
  19. package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts +7 -0
  20. package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts.map +1 -0
  21. package/lib/benchmarks/swapi-schema/makeExecutableSchema.js +916 -0
  22. package/lib/benchmarks/swapi-schema/makeExecutableSchema.js.map +7 -0
  23. package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs +903 -0
  24. package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs.map +7 -0
  25. package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
  26. package/lib/benchmarks/swapi-schema/resolvers.js +53 -17
  27. package/lib/benchmarks/swapi-schema/resolvers.js.map +2 -2
  28. package/lib/benchmarks/swapi-schema/resolvers.mjs +54 -18
  29. package/lib/benchmarks/swapi-schema/resolvers.mjs.map +2 -2
  30. package/lib/collectFields.d.ts +27 -10
  31. package/lib/collectFields.d.ts.map +1 -1
  32. package/lib/collectFields.js +146 -80
  33. package/lib/collectFields.js.map +3 -3
  34. package/lib/collectFields.mjs +143 -81
  35. package/lib/collectFields.mjs.map +2 -2
  36. package/lib/executeWithSchema.d.ts +1 -1
  37. package/lib/executeWithSchema.d.ts.map +1 -1
  38. package/lib/executeWithSchema.js +7 -13
  39. package/lib/executeWithSchema.js.map +2 -2
  40. package/lib/executeWithSchema.mjs +9 -20
  41. package/lib/executeWithSchema.mjs.map +2 -2
  42. package/lib/executeWithoutSchema.d.ts +53 -16
  43. package/lib/executeWithoutSchema.d.ts.map +1 -1
  44. package/lib/executeWithoutSchema.js +1076 -274
  45. package/lib/executeWithoutSchema.js.map +3 -3
  46. package/lib/executeWithoutSchema.mjs +1092 -281
  47. package/lib/executeWithoutSchema.mjs.map +3 -3
  48. package/lib/index.d.ts +3 -9
  49. package/lib/index.d.ts.map +1 -1
  50. package/lib/index.js +3 -7
  51. package/lib/index.js.map +2 -2
  52. package/lib/index.mjs +3 -10
  53. package/lib/index.mjs.map +2 -2
  54. package/lib/jsutils/AccumulatorMap.d.ts +8 -0
  55. package/lib/jsutils/AccumulatorMap.d.ts.map +1 -0
  56. package/lib/jsutils/AccumulatorMap.js +36 -0
  57. package/lib/jsutils/AccumulatorMap.js.map +7 -0
  58. package/lib/jsutils/AccumulatorMap.mjs +17 -0
  59. package/lib/jsutils/AccumulatorMap.mjs.map +7 -0
  60. package/lib/jsutils/didYouMean.d.ts +1 -2
  61. package/lib/jsutils/didYouMean.d.ts.map +1 -1
  62. package/lib/jsutils/didYouMean.js.map +2 -2
  63. package/lib/jsutils/didYouMean.mjs.map +2 -2
  64. package/lib/jsutils/instanceOf.js.map +2 -2
  65. package/lib/jsutils/instanceOf.mjs.map +2 -2
  66. package/lib/schema/definition.d.ts +95 -0
  67. package/lib/schema/definition.d.ts.map +1 -0
  68. package/lib/schema/definition.js +77 -0
  69. package/lib/schema/definition.js.map +7 -0
  70. package/lib/schema/definition.mjs +58 -0
  71. package/lib/schema/definition.mjs.map +7 -0
  72. package/lib/schema/directives.d.ts +41 -0
  73. package/lib/schema/directives.d.ts.map +1 -0
  74. package/lib/schema/directives.js +82 -0
  75. package/lib/schema/directives.js.map +7 -0
  76. package/lib/schema/directives.mjs +65 -0
  77. package/lib/schema/directives.mjs.map +7 -0
  78. package/lib/schema/fragment.d.ts +41 -0
  79. package/lib/schema/fragment.d.ts.map +1 -0
  80. package/lib/schema/fragment.js +270 -0
  81. package/lib/schema/fragment.js.map +7 -0
  82. package/lib/schema/fragment.mjs +267 -0
  83. package/lib/schema/fragment.mjs.map +7 -0
  84. package/lib/schema/reference.d.ts +12 -0
  85. package/lib/schema/reference.d.ts.map +1 -0
  86. package/lib/schema/reference.js +137 -0
  87. package/lib/schema/reference.js.map +7 -0
  88. package/lib/schema/reference.mjs +118 -0
  89. package/lib/schema/reference.mjs.map +7 -0
  90. package/lib/schema/resolvers.d.ts +9 -0
  91. package/lib/schema/resolvers.d.ts.map +1 -0
  92. package/lib/schema/resolvers.js +47 -0
  93. package/lib/schema/resolvers.js.map +7 -0
  94. package/lib/schema/resolvers.mjs +35 -0
  95. package/lib/schema/resolvers.mjs.map +7 -0
  96. package/lib/subscribeWithSchema.d.ts +3 -2
  97. package/lib/subscribeWithSchema.d.ts.map +1 -1
  98. package/lib/subscribeWithSchema.js +7 -13
  99. package/lib/subscribeWithSchema.js.map +2 -2
  100. package/lib/subscribeWithSchema.mjs +9 -20
  101. package/lib/subscribeWithSchema.mjs.map +2 -2
  102. package/lib/subscribeWithoutSchema.d.ts +3 -35
  103. package/lib/subscribeWithoutSchema.d.ts.map +1 -1
  104. package/lib/subscribeWithoutSchema.js +1 -163
  105. package/lib/subscribeWithoutSchema.js.map +2 -2
  106. package/lib/subscribeWithoutSchema.mjs +2 -175
  107. package/lib/subscribeWithoutSchema.mjs.map +2 -2
  108. package/lib/types.d.ts +71 -29
  109. package/lib/types.d.ts.map +1 -1
  110. package/lib/types.js +14 -0
  111. package/lib/types.js.map +2 -2
  112. package/lib/types.mjs +11 -0
  113. package/lib/types.mjs.map +3 -3
  114. package/lib/utilities/addMinimalViableSchemaToRequestDocument.d.ts +9 -0
  115. package/lib/utilities/addMinimalViableSchemaToRequestDocument.d.ts.map +1 -0
  116. package/lib/utilities/addMinimalViableSchemaToRequestDocument.js +303 -0
  117. package/lib/utilities/addMinimalViableSchemaToRequestDocument.js.map +7 -0
  118. package/lib/utilities/addMinimalViableSchemaToRequestDocument.mjs +317 -0
  119. package/lib/utilities/addMinimalViableSchemaToRequestDocument.mjs.map +7 -0
  120. package/lib/utilities/annotateDocumentGraphQLTransform.d.ts +3 -0
  121. package/lib/utilities/annotateDocumentGraphQLTransform.d.ts.map +1 -0
  122. package/lib/utilities/annotateDocumentGraphQLTransform.js +34 -0
  123. package/lib/utilities/annotateDocumentGraphQLTransform.js.map +7 -0
  124. package/lib/utilities/annotateDocumentGraphQLTransform.mjs +17 -0
  125. package/lib/utilities/annotateDocumentGraphQLTransform.mjs.map +7 -0
  126. package/lib/utilities/coerceInputValue.d.ts +10 -0
  127. package/lib/utilities/coerceInputValue.d.ts.map +1 -0
  128. package/lib/utilities/coerceInputValue.js +181 -0
  129. package/lib/utilities/coerceInputValue.js.map +7 -0
  130. package/lib/utilities/coerceInputValue.mjs +167 -0
  131. package/lib/utilities/coerceInputValue.mjs.map +7 -0
  132. package/lib/utilities/decodeASTSchema.d.ts +7 -0
  133. package/lib/utilities/decodeASTSchema.d.ts.map +1 -0
  134. package/lib/utilities/decodeASTSchema.js +243 -0
  135. package/lib/utilities/decodeASTSchema.js.map +7 -0
  136. package/lib/utilities/decodeASTSchema.mjs +242 -0
  137. package/lib/utilities/decodeASTSchema.mjs.map +7 -0
  138. package/lib/utilities/encodeASTSchema.d.ts +4 -0
  139. package/lib/utilities/encodeASTSchema.d.ts.map +1 -0
  140. package/lib/utilities/encodeASTSchema.js +122 -0
  141. package/lib/utilities/encodeASTSchema.js.map +7 -0
  142. package/lib/utilities/encodeASTSchema.mjs +105 -0
  143. package/lib/utilities/encodeASTSchema.mjs.map +7 -0
  144. package/lib/utilities/getSchemaFragment.d.ts +4 -0
  145. package/lib/utilities/getSchemaFragment.d.ts.map +1 -0
  146. package/lib/utilities/getSchemaFragment.js +38 -0
  147. package/lib/utilities/getSchemaFragment.js.map +7 -0
  148. package/lib/utilities/getSchemaFragment.mjs +22 -0
  149. package/lib/utilities/getSchemaFragment.mjs.map +7 -0
  150. package/lib/utilities/makeReadableErrorPath.d.ts +3 -0
  151. package/lib/utilities/makeReadableErrorPath.d.ts.map +1 -0
  152. package/lib/utilities/makeReadableErrorPath.js +47 -0
  153. package/lib/utilities/makeReadableErrorPath.js.map +7 -0
  154. package/lib/utilities/makeReadableErrorPath.mjs +28 -0
  155. package/lib/utilities/makeReadableErrorPath.mjs.map +7 -0
  156. package/lib/utilities/mergeDefinitions.d.ts +8 -0
  157. package/lib/utilities/mergeDefinitions.d.ts.map +1 -0
  158. package/lib/utilities/mergeDefinitions.js +126 -0
  159. package/lib/utilities/mergeDefinitions.js.map +7 -0
  160. package/lib/utilities/mergeDefinitions.mjs +114 -0
  161. package/lib/utilities/mergeDefinitions.mjs.map +7 -0
  162. package/lib/utilities/mergeResolvers.d.ts +1 -1
  163. package/lib/utilities/mergeResolvers.d.ts.map +1 -1
  164. package/lib/utilities/mergeResolvers.js.map +2 -2
  165. package/lib/utilities/mergeResolvers.mjs.map +2 -2
  166. package/lib/utilities/typeNameFromAST.d.ts +1 -1
  167. package/lib/utilities/typeNameFromAST.d.ts.map +1 -1
  168. package/lib/utilities/typeNameFromAST.js.map +2 -2
  169. package/lib/utilities/typeNameFromAST.mjs.map +2 -2
  170. package/lib/utilities/valueFromAST.d.ts +27 -0
  171. package/lib/utilities/valueFromAST.d.ts.map +1 -0
  172. package/lib/utilities/valueFromAST.js +139 -0
  173. package/lib/utilities/valueFromAST.js.map +7 -0
  174. package/lib/utilities/valueFromAST.mjs +125 -0
  175. package/lib/utilities/valueFromAST.mjs.map +7 -0
  176. package/lib/utilities/valueFromASTUntyped.d.ts +21 -0
  177. package/lib/utilities/valueFromASTUntyped.d.ts.map +1 -0
  178. package/lib/utilities/valueFromASTUntyped.js +51 -0
  179. package/lib/utilities/valueFromASTUntyped.js.map +7 -0
  180. package/lib/utilities/valueFromASTUntyped.mjs +32 -0
  181. package/lib/utilities/valueFromASTUntyped.mjs.map +7 -0
  182. package/lib/values.d.ts +8 -13
  183. package/lib/values.d.ts.map +1 -1
  184. package/lib/values.js +83 -75
  185. package/lib/values.js.map +2 -2
  186. package/lib/values.mjs +85 -83
  187. package/lib/values.mjs.map +2 -2
  188. package/package.json +8 -9
  189. package/lib/definition.d.ts +0 -7
  190. package/lib/definition.d.ts.map +0 -1
  191. package/lib/definition.js +0 -59
  192. package/lib/definition.js.map +0 -7
  193. package/lib/definition.mjs +0 -40
  194. package/lib/definition.mjs.map +0 -7
  195. package/lib/directives.d.ts +0 -79
  196. package/lib/directives.d.ts.map +0 -1
  197. package/lib/directives.js +0 -160
  198. package/lib/directives.js.map +0 -7
  199. package/lib/directives.mjs +0 -146
  200. package/lib/directives.mjs.map +0 -7
  201. package/lib/extractImplicitTypesRuntime.d.ts +0 -4
  202. package/lib/extractImplicitTypesRuntime.d.ts.map +0 -1
  203. package/lib/extractImplicitTypesRuntime.js +0 -123
  204. package/lib/extractImplicitTypesRuntime.js.map +0 -7
  205. package/lib/extractImplicitTypesRuntime.mjs +0 -114
  206. package/lib/extractImplicitTypesRuntime.mjs.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 { SchemaFragment } 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: SchemaFragment,\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: 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 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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",
6
+ "names": []
7
+ }
@@ -0,0 +1,167 @@
1
+ // src/utilities/coerceInputValue.ts
2
+ import { GraphQLError } from "graphql";
3
+ import { didYouMean } from "../jsutils/didYouMean.mjs";
4
+ import { inspect } from "../jsutils/inspect.mjs";
5
+ import { invariant } from "../jsutils/invariant.mjs";
6
+ import { isIterableObject } from "../jsutils/isIterableObject.mjs";
7
+ import { isObjectLike } from "../jsutils/isObjectLike.mjs";
8
+ import { addPath, pathToArray } from "../jsutils/Path.mjs";
9
+ import { printPathArray } from "../jsutils/printPathArray.mjs";
10
+ import { suggestionList } from "../jsutils/suggestionList.mjs";
11
+ import {
12
+ inspectTypeReference,
13
+ isListType,
14
+ isNonNullType,
15
+ unwrap
16
+ } from "../schema/reference.mjs";
17
+ function coerceInputValue(inputValue, typeRef, schemaTypes, onError = defaultOnError) {
18
+ return coerceInputValueImpl(
19
+ inputValue,
20
+ typeRef,
21
+ schemaTypes,
22
+ onError,
23
+ void 0
24
+ );
25
+ }
26
+ function defaultOnError(path, invalidValue, error) {
27
+ let errorPrefix = "Invalid value " + inspect(invalidValue);
28
+ if (path.length > 0) {
29
+ errorPrefix += ` at "value${printPathArray(path)}"`;
30
+ }
31
+ error.message = errorPrefix + ": " + error.message;
32
+ throw error;
33
+ }
34
+ function coerceInputValueImpl(inputValue, typeRef, schemaTypes, onError, path) {
35
+ if (isNonNullType(typeRef)) {
36
+ if (inputValue != null) {
37
+ return coerceInputValueImpl(
38
+ inputValue,
39
+ unwrap(typeRef),
40
+ schemaTypes,
41
+ onError,
42
+ path
43
+ );
44
+ }
45
+ onError(
46
+ pathToArray(path),
47
+ inputValue,
48
+ new GraphQLError(
49
+ `Expected non-nullable type "${inspectTypeReference(
50
+ typeRef
51
+ )}" not to be null.`
52
+ )
53
+ );
54
+ return;
55
+ }
56
+ if (inputValue == null) {
57
+ return null;
58
+ }
59
+ if (isListType(typeRef)) {
60
+ const itemType = unwrap(typeRef);
61
+ if (isIterableObject(inputValue)) {
62
+ return Array.from(inputValue, (itemValue, index) => {
63
+ const itemPath = addPath(path, index, void 0);
64
+ return coerceInputValueImpl(
65
+ itemValue,
66
+ itemType,
67
+ schemaTypes,
68
+ onError,
69
+ itemPath
70
+ );
71
+ });
72
+ }
73
+ return [
74
+ coerceInputValueImpl(inputValue, itemType, schemaTypes, onError, path)
75
+ ];
76
+ }
77
+ const inputObjectType = schemaTypes.getInputObjectType(typeRef);
78
+ if (inputObjectType) {
79
+ const typeName = inspectTypeReference(typeRef);
80
+ if (!isObjectLike(inputValue)) {
81
+ onError(
82
+ pathToArray(path),
83
+ inputValue,
84
+ new GraphQLError(`Expected type "${typeRef}" to be an object.`)
85
+ );
86
+ return;
87
+ }
88
+ const coercedValue = {};
89
+ const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);
90
+ for (const [fieldName, field] of Object.entries(fieldDefs)) {
91
+ const fieldValue = inputValue[fieldName];
92
+ const defaultValue = schemaTypes.getInputDefaultValue(field);
93
+ const fieldTypeRef = schemaTypes.getTypeReference(field);
94
+ if (fieldValue === void 0) {
95
+ if (defaultValue !== void 0) {
96
+ coercedValue[fieldName] = defaultValue;
97
+ } else if (isNonNullType(fieldTypeRef)) {
98
+ const typeStr = inspectTypeReference(fieldTypeRef);
99
+ onError(
100
+ pathToArray(path),
101
+ inputValue,
102
+ new GraphQLError(
103
+ `Field "${fieldName}" of required type "${typeStr}" was not provided.`
104
+ )
105
+ );
106
+ }
107
+ continue;
108
+ }
109
+ coercedValue[fieldName] = coerceInputValueImpl(
110
+ fieldValue,
111
+ fieldTypeRef,
112
+ schemaTypes,
113
+ onError,
114
+ addPath(path, fieldName, typeName)
115
+ );
116
+ }
117
+ for (const fieldName of Object.keys(inputValue)) {
118
+ if (fieldDefs[fieldName] == null) {
119
+ const suggestions = suggestionList(fieldName, Object.keys(fieldDefs));
120
+ onError(
121
+ pathToArray(path),
122
+ inputValue,
123
+ new GraphQLError(
124
+ `Field "${fieldName}" is not defined by type "${typeName}".` + didYouMean(suggestions)
125
+ )
126
+ );
127
+ }
128
+ }
129
+ return coercedValue;
130
+ }
131
+ const leafType = schemaTypes.getLeafTypeResolver(typeRef);
132
+ if (leafType) {
133
+ let parseResult;
134
+ try {
135
+ parseResult = leafType.parseValue(inputValue);
136
+ } catch (error) {
137
+ if (error instanceof GraphQLError) {
138
+ onError(pathToArray(path), inputValue, error);
139
+ } else {
140
+ const typeName = inspectTypeReference(typeRef);
141
+ onError(
142
+ pathToArray(path),
143
+ inputValue,
144
+ new GraphQLError(
145
+ `Expected type "${typeName}". ` + error.message,
146
+ {
147
+ originalError: error
148
+ }
149
+ )
150
+ );
151
+ }
152
+ return;
153
+ }
154
+ if (parseResult === void 0) {
155
+ onError(
156
+ pathToArray(path),
157
+ inputValue,
158
+ new GraphQLError(`Expected type "${inspectTypeReference(typeRef)}".`)
159
+ );
160
+ }
161
+ return parseResult;
162
+ }
163
+ invariant(false, "Unexpected input type: " + inspectTypeReference(typeRef));
164
+ }
165
+ export {
166
+ coerceInputValue
167
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 { SchemaFragment } 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: SchemaFragment,\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: 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 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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",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ import { DocumentNode } from "graphql";
2
+ import { SchemaFragmentDefinitions } from "../schema/definition";
3
+ /**
4
+ * Converts encoded schema to standard AST representation of the same schema
5
+ */
6
+ export declare function decodeSchema(encodedSchema: SchemaFragmentDefinitions): DocumentNode;
7
+ //# sourceMappingURL=decodeASTSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/decodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAcb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAGL,yBAAyB,EAkB1B,MAAM,sBAAsB,CAAC;AAY9B;;GAEG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,yBAAyB,GACvC,YAAY,CAiCd"}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var decodeASTSchema_exports = {};
20
+ __export(decodeASTSchema_exports, {
21
+ decodeSchema: () => decodeSchema
22
+ });
23
+ module.exports = __toCommonJS(decodeASTSchema_exports);
24
+ var import_graphql = require("graphql");
25
+ var import_definition = require("../schema/definition");
26
+ var import_reference = require("../schema/reference");
27
+ var import_invariant = require("../jsutils/invariant");
28
+ var import_inspect = require("../jsutils/inspect");
29
+ function decodeSchema(encodedSchema) {
30
+ var _a;
31
+ const definitions = [];
32
+ const types = encodedSchema.types;
33
+ for (const typeName in types) {
34
+ const tuple = types[typeName];
35
+ switch (tuple[0]) {
36
+ case import_definition.TypeKind.SCALAR:
37
+ definitions.push(decodeScalarType(typeName));
38
+ break;
39
+ case import_definition.TypeKind.ENUM:
40
+ definitions.push(decodeEnumType(typeName, tuple));
41
+ break;
42
+ case import_definition.TypeKind.OBJECT:
43
+ definitions.push(decodeObjectType(typeName, tuple, types));
44
+ break;
45
+ case import_definition.TypeKind.INTERFACE:
46
+ definitions.push(decodeInterfaceType(typeName, tuple, types));
47
+ break;
48
+ case import_definition.TypeKind.UNION:
49
+ definitions.push(decodeUnionType(typeName, tuple));
50
+ break;
51
+ case import_definition.TypeKind.INPUT:
52
+ definitions.push(decodeInputObjectType(typeName, tuple, types));
53
+ break;
54
+ }
55
+ }
56
+ for (const directive of (_a = encodedSchema.directives) != null ? _a : []) {
57
+ definitions.push(decodeDirective(directive, types));
58
+ }
59
+ return { kind: import_graphql.Kind.DOCUMENT, definitions };
60
+ }
61
+ function nameNode(value) {
62
+ return { kind: import_graphql.Kind.NAME, value };
63
+ }
64
+ function decodeScalarType(typeName) {
65
+ return {
66
+ kind: import_graphql.Kind.SCALAR_TYPE_DEFINITION,
67
+ name: nameNode(typeName)
68
+ };
69
+ }
70
+ function decodeEnumType(typeName, tuple) {
71
+ return {
72
+ kind: import_graphql.Kind.ENUM_TYPE_DEFINITION,
73
+ name: nameNode(typeName),
74
+ values: tuple[import_definition.EnumKeys.values].map((value) => ({
75
+ kind: import_graphql.Kind.ENUM_VALUE_DEFINITION,
76
+ name: nameNode(value)
77
+ }))
78
+ };
79
+ }
80
+ function decodeObjectType(typeName, tuple, types) {
81
+ return {
82
+ kind: import_graphql.Kind.OBJECT_TYPE_DEFINITION,
83
+ name: nameNode(typeName),
84
+ fields: decodeFields(tuple[import_definition.ObjectKeys.fields], types),
85
+ interfaces: (tuple[import_definition.ObjectKeys.interfaces] || []).map((name) => ({
86
+ kind: import_graphql.Kind.NAMED_TYPE,
87
+ name: nameNode(name)
88
+ }))
89
+ };
90
+ }
91
+ function decodeInterfaceType(typeName, tuple, types) {
92
+ return {
93
+ kind: import_graphql.Kind.INTERFACE_TYPE_DEFINITION,
94
+ name: nameNode(typeName),
95
+ fields: decodeFields(tuple[import_definition.InterfaceKeys.fields], types),
96
+ interfaces: (tuple[import_definition.InterfaceKeys.interfaces] || []).map((name) => ({
97
+ kind: import_graphql.Kind.NAMED_TYPE,
98
+ name: nameNode(name)
99
+ }))
100
+ };
101
+ }
102
+ function decodeUnionType(typeName, tuple) {
103
+ return {
104
+ kind: import_graphql.Kind.UNION_TYPE_DEFINITION,
105
+ name: nameNode(typeName),
106
+ types: tuple[import_definition.UnionKeys.types].map((name) => ({
107
+ kind: import_graphql.Kind.NAMED_TYPE,
108
+ name: nameNode(name)
109
+ }))
110
+ };
111
+ }
112
+ function decodeInputObjectType(typeName, tuple, types) {
113
+ return {
114
+ kind: import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION,
115
+ name: nameNode(typeName),
116
+ fields: Object.entries(tuple[import_definition.InputObjectKeys.fields]).map(
117
+ ([name, value]) => decodeInputValue(name, value, types)
118
+ )
119
+ };
120
+ }
121
+ function decodeFields(fields, types) {
122
+ return Object.entries(fields).map(([name, value]) => {
123
+ var _a;
124
+ const type = Array.isArray(value) ? decodeTypeReference(value[import_definition.FieldKeys.type]) : decodeTypeReference(value);
125
+ return {
126
+ kind: import_graphql.Kind.FIELD_DEFINITION,
127
+ name: nameNode(name),
128
+ type,
129
+ arguments: decodeArguments(
130
+ Array.isArray(value) ? (_a = value[import_definition.FieldKeys.arguments]) != null ? _a : {} : {},
131
+ types
132
+ )
133
+ };
134
+ });
135
+ }
136
+ function decodeInputValue(name, value, types) {
137
+ const type = Array.isArray(value) ? decodeTypeReference(value[import_definition.InputValueKeys.type]) : decodeTypeReference(value);
138
+ return {
139
+ kind: import_graphql.Kind.INPUT_VALUE_DEFINITION,
140
+ name: nameNode(name),
141
+ type,
142
+ defaultValue: Array.isArray(value) ? valueToConstValueNode(
143
+ value[import_definition.InputValueKeys.defaultValue],
144
+ value[import_definition.InputValueKeys.type],
145
+ types
146
+ ) : void 0
147
+ };
148
+ }
149
+ function valueToConstValueNode(jsValue, typeRef, types) {
150
+ const typeName = (0, import_reference.typeNameFromReference)(typeRef);
151
+ if (typeof jsValue === "string") {
152
+ return typeName === "String" ? { kind: import_graphql.Kind.STRING, value: jsValue } : { kind: import_graphql.Kind.ENUM, value: jsValue };
153
+ }
154
+ if (jsValue === null) {
155
+ (0, import_invariant.invariant)(!(0, import_reference.isNonNullType)(typeRef), "Expecting nullable type");
156
+ return { kind: import_graphql.Kind.NULL };
157
+ }
158
+ if (Number.isInteger(jsValue)) {
159
+ return { kind: import_graphql.Kind.INT, value: String(jsValue) };
160
+ }
161
+ if (typeof jsValue === "number") {
162
+ return { kind: import_graphql.Kind.FLOAT, value: String(jsValue) };
163
+ }
164
+ if (Array.isArray(jsValue)) {
165
+ (0, import_invariant.invariant)((0, import_reference.isListType)(typeRef), "Expecting list type");
166
+ return {
167
+ kind: import_graphql.Kind.LIST,
168
+ values: jsValue.map(
169
+ (item) => valueToConstValueNode(item, (0, import_reference.unwrap)(typeRef), types)
170
+ )
171
+ };
172
+ }
173
+ if (typeof jsValue === "object") {
174
+ const typeDef = types[typeName];
175
+ (0, import_invariant.invariant)(
176
+ Array.isArray(typeDef) && typeDef[0] === import_definition.TypeKind.INPUT,
177
+ `Expecting input object type for ${typeName}, got ${typeDef == null ? void 0 : typeDef[0]}`
178
+ );
179
+ const fields = typeDef[import_definition.InputObjectKeys.fields];
180
+ return {
181
+ kind: import_graphql.Kind.OBJECT,
182
+ fields: Object.entries(jsValue).map(([name, value]) => {
183
+ const fieldDef = fields[name];
184
+ const fieldTypeRef = Array.isArray(fieldDef) ? fieldDef[import_definition.FieldKeys.type] : fieldDef;
185
+ (0, import_invariant.invariant)(
186
+ fieldTypeRef !== void 0,
187
+ `Could not find field definition for ${typeName}.${name}`
188
+ );
189
+ return {
190
+ kind: import_graphql.Kind.OBJECT_FIELD,
191
+ name: nameNode(name),
192
+ value: valueToConstValueNode(value, fieldTypeRef, types)
193
+ };
194
+ })
195
+ };
196
+ }
197
+ (0, import_invariant.invariant)(
198
+ false,
199
+ `Unexpected value for type ${(0, import_reference.inspectTypeReference)(typeRef)}: ${(0, import_inspect.inspect)(
200
+ jsValue
201
+ )}`
202
+ );
203
+ }
204
+ function decodeArguments(args, types) {
205
+ return Object.entries(args).map(
206
+ ([name, value]) => decodeInputValue(name, value, types)
207
+ );
208
+ }
209
+ function decodeTypeReference(ref) {
210
+ if ((0, import_reference.isListType)(ref)) {
211
+ return {
212
+ kind: import_graphql.Kind.LIST_TYPE,
213
+ type: decodeTypeReference((0, import_reference.unwrap)(ref))
214
+ };
215
+ }
216
+ if ((0, import_reference.isNonNullType)(ref)) {
217
+ const unwrappedType = decodeTypeReference((0, import_reference.unwrap)(ref));
218
+ (0, import_invariant.invariant)(
219
+ unwrappedType.kind !== import_graphql.Kind.NON_NULL_TYPE,
220
+ "Non-null modifier cannot be nested"
221
+ );
222
+ return {
223
+ kind: import_graphql.Kind.NON_NULL_TYPE,
224
+ type: unwrappedType
225
+ };
226
+ }
227
+ return {
228
+ kind: import_graphql.Kind.NAMED_TYPE,
229
+ name: nameNode((0, import_reference.typeNameFromReference)(ref))
230
+ };
231
+ }
232
+ function decodeDirective(tuple, types) {
233
+ const name = tuple[import_definition.DirectiveKeys.name];
234
+ const args = tuple[import_definition.DirectiveKeys.arguments] ? decodeArguments(tuple[import_definition.DirectiveKeys.arguments], types) : [];
235
+ return {
236
+ kind: import_graphql.Kind.DIRECTIVE_DEFINITION,
237
+ name: nameNode(name),
238
+ arguments: args,
239
+ // TODO? locations and repeatable are irrelevant for execution
240
+ repeatable: false,
241
+ locations: []
242
+ };
243
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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\";\n\nimport {\n DirectiveDefinitionTuple,\n DirectiveKeys,\n SchemaFragmentDefinitions,\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 decodeSchema(\n encodedSchema: SchemaFragmentDefinitions,\n): DocumentNode {\n const definitions = [];\n const types = encodedSchema.types;\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 encodedSchema.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": "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",
6
+ "names": []
7
+ }