@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.
- package/.eslintcache +1 -1
- package/CHANGELOG.md +18 -2
- package/lib/benchmarks/index.js.map +2 -2
- package/lib/benchmarks/index.mjs.map +2 -2
- package/lib/collectFields.d.ts.map +1 -1
- package/lib/collectFields.js +6 -5
- package/lib/collectFields.js.map +2 -2
- package/lib/collectFields.mjs +6 -5
- package/lib/collectFields.mjs.map +2 -2
- package/lib/executeWithoutSchema.d.ts +1 -3
- package/lib/executeWithoutSchema.d.ts.map +1 -1
- package/lib/executeWithoutSchema.js +153 -69
- package/lib/executeWithoutSchema.js.map +2 -2
- package/lib/executeWithoutSchema.mjs +143 -71
- package/lib/executeWithoutSchema.mjs.map +2 -2
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +2 -2
- package/lib/index.mjs +10 -2
- package/lib/index.mjs.map +2 -2
- package/lib/schema/definition.d.ts +43 -33
- package/lib/schema/definition.d.ts.map +1 -1
- package/lib/schema/definition.js +284 -9
- package/lib/schema/definition.js.map +2 -2
- package/lib/schema/definition.mjs +284 -55
- package/lib/schema/definition.mjs.map +3 -3
- package/lib/schema/directives.d.ts.map +1 -1
- package/lib/schema/directives.js +3 -3
- package/lib/schema/directives.js.map +2 -2
- package/lib/schema/directives.mjs +4 -4
- package/lib/schema/directives.mjs.map +2 -2
- package/lib/schema/reference.d.ts +3 -1
- package/lib/schema/reference.d.ts.map +1 -1
- package/lib/schema/reference.js.map +2 -2
- package/lib/schema/reference.mjs.map +2 -2
- package/lib/schema/resolvers.d.ts +10 -4
- package/lib/schema/resolvers.d.ts.map +1 -1
- package/lib/schema/resolvers.js +92 -9
- package/lib/schema/resolvers.js.map +2 -2
- package/lib/schema/resolvers.mjs +99 -9
- package/lib/schema/resolvers.mjs.map +2 -2
- package/lib/types.d.ts +25 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utilities/coerceInputValue.d.ts +3 -3
- package/lib/utilities/coerceInputValue.d.ts.map +1 -1
- package/lib/utilities/coerceInputValue.js +17 -12
- package/lib/utilities/coerceInputValue.js.map +2 -2
- package/lib/utilities/coerceInputValue.mjs +22 -12
- package/lib/utilities/coerceInputValue.mjs.map +2 -2
- package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
- package/lib/utilities/decodeASTSchema.js +32 -40
- package/lib/utilities/decodeASTSchema.js.map +2 -2
- package/lib/utilities/decodeASTSchema.mjs +51 -49
- package/lib/utilities/decodeASTSchema.mjs.map +2 -2
- package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
- package/lib/utilities/encodeASTSchema.js +16 -20
- package/lib/utilities/encodeASTSchema.js.map +2 -2
- package/lib/utilities/encodeASTSchema.mjs +22 -21
- package/lib/utilities/encodeASTSchema.mjs.map +2 -2
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.d.ts.map +1 -1
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +20 -22
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +35 -29
- package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
- package/lib/utilities/mergeResolvers.js +1 -2
- package/lib/utilities/mergeResolvers.js.map +2 -2
- package/lib/utilities/mergeResolvers.mjs +1 -2
- package/lib/utilities/mergeResolvers.mjs.map +2 -2
- package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
- package/lib/utilities/mergeSchemaDefinitions.js +18 -28
- package/lib/utilities/mergeSchemaDefinitions.js.map +2 -2
- package/lib/utilities/mergeSchemaDefinitions.mjs +28 -34
- package/lib/utilities/mergeSchemaDefinitions.mjs.map +2 -2
- package/lib/utilities/valueFromAST.d.ts +3 -3
- package/lib/utilities/valueFromAST.d.ts.map +1 -1
- package/lib/utilities/valueFromAST.js +23 -10
- package/lib/utilities/valueFromAST.js.map +2 -2
- package/lib/utilities/valueFromAST.mjs +13 -10
- package/lib/utilities/valueFromAST.mjs.map +2 -2
- package/lib/values.d.ts +2 -2
- package/lib/values.d.ts.map +1 -1
- package/lib/values.js +14 -14
- package/lib/values.js.map +2 -2
- package/lib/values.mjs +21 -14
- package/lib/values.mjs.map +2 -2
- package/package.json +1 -1
- package/lib/schema/fragment.d.ts +0 -63
- package/lib/schema/fragment.d.ts.map +0 -1
- package/lib/schema/fragment.js +0 -295
- package/lib/schema/fragment.js.map +0 -7
- package/lib/schema/fragment.mjs +0 -292
- 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 {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA6B;AAC7B,wBAA2B;AAC3B,qBAAwB;AACxB,uBAA0B;AAC1B,8BAAiC;AACjC,0BAA6B;AAE7B,kBAAqC;AACrC,4BAA+B;AAC/B,4BAA+B;
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
74
|
+
schemaFragment,
|
|
68
75
|
onError,
|
|
69
76
|
itemPath
|
|
70
77
|
);
|
|
71
78
|
});
|
|
72
79
|
}
|
|
73
80
|
return [
|
|
74
|
-
coerceInputValueImpl(inputValue, itemType,
|
|
81
|
+
coerceInputValueImpl(inputValue, itemType, schemaFragment, onError, path)
|
|
75
82
|
];
|
|
76
83
|
}
|
|
77
|
-
const inputObjectType =
|
|
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 =
|
|
99
|
+
const fieldDefs = getInputObjectFields(inputObjectType);
|
|
90
100
|
for (const [fieldName, field] of Object.entries(fieldDefs)) {
|
|
91
101
|
const fieldValue = inputValue[fieldName];
|
|
92
|
-
const defaultValue =
|
|
93
|
-
const fieldTypeRef =
|
|
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
|
-
|
|
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 =
|
|
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 {
|
|
5
|
-
"mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAE7B,SAAS,SAAS,mBAAmB;AACrC,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;
|
|
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,
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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:
|
|
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(
|
|
88
|
-
interfaces: (
|
|
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(
|
|
99
|
-
interfaces: (
|
|
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:
|
|
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(
|
|
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 =
|
|
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
|
|
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
|
-
|
|
147
|
-
|
|
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) &&
|
|
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 =
|
|
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 =
|
|
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 =
|
|
237
|
-
const args =
|
|
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
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAgBO;AACP,
|
|
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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAgBO;AACP,wBA8BO;AACP,uBAOO;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,YAAI,0CAAuB,KAAK,GAAG;AACjC,kBAAY,KAAK,iBAAiB,QAAQ,CAAC;AAAA,IAC7C,eAAW,wCAAqB,KAAK,GAAG;AACtC,kBAAY,KAAK,eAAe,UAAU,KAAK,CAAC;AAAA,IAClD,eAAW,0CAAuB,KAAK,GAAG;AACxC,kBAAY,KAAK,iBAAiB,UAAU,OAAO,KAAK,CAAC;AAAA,IAC3D,eAAW,6CAA0B,KAAK,GAAG;AAC3C,kBAAY,KAAK,oBAAoB,UAAU,OAAO,KAAK,CAAC;AAAA,IAC9D,eAAW,yCAAsB,KAAK,GAAG;AACvC,kBAAY,KAAK,gBAAgB,UAAU,KAAK,CAAC;AAAA,IACnD,eAAW,+CAA4B,KAAK,GAAG;AAC7C,kBAAY,KAAK,sBAAsB,UAAU,OAAO,KAAK,CAAC;AAAA,IAChE;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,YAAQ,iCAAc,KAAK,EAAE,IAAI,CAAC,WAAW;AAAA,MAC3C,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,KAAK;AAAA,IACtB,EAAE;AAAA,EACJ;AACF;AAEA,SAAS,iBACP,UACA,OACA,OAC0B;AA/H5B;AAgIE,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,QAAQ;AAAA,IACvB,QAAQ,cAAa,4CAAgB,KAAK,MAArB,YAA0B,CAAC,GAAG,KAAK;AAAA,IACxD,gBAAY,2CAAwB,KAAK,EAAE,IAAI,CAAC,UAAU;AAAA,MACxD,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,iBAAa,6BAAU,KAAK,GAAG,KAAK;AAAA,IAC5C,gBAAY,8CAA2B,KAAK,EAAE,IAAI,CAAC,UAAU;AAAA,MAC3D,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,WAAO,uCAAoB,KAAK,EAAE,IAAI,CAAC,UAAU;AAAA,MAC/C,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,YAAQ,wCAAqB,KAAK,CAAC,EAAE;AAAA,MAAI,CAAC,CAAC,MAAM,KAAK,MACnE,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;AA3LvD;AA4LI,UAAM,OAAO,wBAAoB,yCAAsB,KAAK,CAAC;AAC7D,WAAO;AAAA,MACL,MAAM,oBAAK;AAAA,MACX,MAAM,SAAS,IAAI;AAAA,MACnB;AAAA,MACA,WAAW,iBAAgB,yCAAa,KAAK,MAAlB,YAAuB,CAAC,GAAG,KAAK;AAAA,IAC7D;AAAA,EACF,CAAC;AACH;AAEA,SAAS,iBACP,MACA,OACA,OAC0B;AAC1B,QAAM,wBAAoB,8CAA2B,KAAK;AAC1D,QAAM,OAAO,oBAAoB,iBAAiB;AAClD,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,IAAI;AAAA,IACnB;AAAA,IACA,cAAc,MAAM,QAAQ,KAAK,IAC7B;AAAA,UACE,wCAAqB,KAAK;AAAA,MAC1B;AAAA,MACA;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,SAAK,+CAA4B,OAAO;AAAA,MAC7D,mCAAmC,iBAAiB,mCAAU;AAAA,IAChE;AACA,UAAM,aAAS,wCAAqB,OAAO;AAC3C,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,mBAAe,8CAA2B,QAAQ;AACxD;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,WAAO,oCAAiB,KAAK;AACnC,QAAM,WAAO,8CAA2B,KAAK;AAC7C,SAAO;AAAA,IACL,MAAM,oBAAK;AAAA,IACX,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,OAAO,gBAAgB,MAAM,KAAK,IAAI,CAAC;AAAA;AAAA,IAElD,YAAY;AAAA,IACZ,WAAW,CAAC;AAAA,EACd;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,15 +3,25 @@ import {
|
|
|
3
3
|
Kind
|
|
4
4
|
} from "graphql";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
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
|
|
84
|
-
interfaces: (tuple
|
|
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
|
|
95
|
-
interfaces: (tuple
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
143
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
233
|
-
const args =
|
|
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: []
|