graphql 14.0.0 → 14.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/error/GraphQLError.js +1 -1
- package/error/GraphQLError.js.flow +3 -3
- package/error/GraphQLError.mjs +1 -1
- package/error/formatError.js +1 -1
- package/error/formatError.mjs +1 -1
- package/error/index.mjs +1 -1
- package/error/locatedError.js +1 -1
- package/error/locatedError.mjs +1 -1
- package/error/printError.js +1 -1
- package/error/printError.mjs +1 -1
- package/error/syntaxError.js +1 -1
- package/error/syntaxError.mjs +1 -1
- package/execution/execute.js +4 -4
- package/execution/execute.js.flow +4 -6
- package/execution/execute.mjs +5 -5
- package/execution/index.mjs +1 -1
- package/execution/values.js +4 -4
- package/execution/values.js.flow +3 -3
- package/execution/values.mjs +3 -3
- package/graphql.js +1 -1
- package/graphql.mjs +1 -1
- package/index.js +12 -0
- package/index.js.flow +4 -0
- package/index.mjs +4 -4
- package/jsutils/dedent.js +2 -2
- package/jsutils/dedent.js.flow +1 -1
- package/jsutils/dedent.mjs +2 -2
- package/jsutils/defineToJSON.js +17 -6
- package/jsutils/defineToJSON.js.flow +14 -5
- package/jsutils/defineToJSON.mjs +14 -6
- package/jsutils/defineToStringTag.js +5 -5
- package/jsutils/defineToStringTag.js.flow +3 -3
- package/jsutils/defineToStringTag.mjs +4 -4
- package/jsutils/inspect.js +46 -12
- package/jsutils/inspect.js.flow +42 -15
- package/jsutils/inspect.mjs +45 -5
- package/jsutils/instanceOf.js +1 -1
- package/jsutils/instanceOf.mjs +1 -1
- package/jsutils/invariant.js +1 -1
- package/jsutils/invariant.mjs +1 -1
- package/jsutils/isInvalid.js +1 -1
- package/jsutils/isInvalid.mjs +1 -1
- package/jsutils/isNullish.js +1 -1
- package/jsutils/isNullish.mjs +1 -1
- package/jsutils/isPromise.js +1 -1
- package/jsutils/isPromise.mjs +1 -1
- package/jsutils/keyMap.js +1 -1
- package/jsutils/keyMap.mjs +1 -1
- package/jsutils/keyValMap.js +1 -1
- package/jsutils/keyValMap.mjs +1 -1
- package/jsutils/mapValue.js +54 -0
- package/jsutils/mapValue.js.flow +27 -0
- package/jsutils/mapValue.mjs +44 -0
- package/jsutils/memoize3.js +1 -1
- package/jsutils/memoize3.mjs +1 -1
- package/jsutils/nodejsCustomInspectSymbol.js +18 -0
- package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
- package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
- package/jsutils/orList.js +17 -4
- package/jsutils/orList.js.flow +13 -7
- package/jsutils/orList.mjs +14 -4
- package/jsutils/promiseForObject.js +1 -1
- package/jsutils/promiseForObject.mjs +1 -1
- package/jsutils/promiseReduce.js +1 -1
- package/jsutils/promiseReduce.mjs +1 -1
- package/jsutils/quotedOrList.js +1 -1
- package/jsutils/quotedOrList.mjs +1 -1
- package/jsutils/suggestionList.js +1 -1
- package/jsutils/suggestionList.mjs +1 -1
- package/language/blockStringValue.js +2 -2
- package/language/blockStringValue.js.flow +1 -1
- package/language/blockStringValue.mjs +2 -2
- package/language/directiveLocation.js +1 -1
- package/language/directiveLocation.mjs +1 -1
- package/language/index.mjs +1 -1
- package/language/kinds.js +1 -1
- package/language/kinds.mjs +1 -1
- package/language/lexer.js +29 -13
- package/language/lexer.js.flow +34 -20
- package/language/lexer.mjs +28 -13
- package/language/location.js +1 -1
- package/language/location.mjs +1 -1
- package/language/parser.js +31 -38
- package/language/parser.js.flow +32 -48
- package/language/parser.mjs +30 -38
- package/language/predicates.js +1 -1
- package/language/predicates.mjs +1 -1
- package/language/printer.js +13 -7
- package/language/printer.js.flow +19 -9
- package/language/printer.mjs +13 -7
- package/language/source.js +8 -7
- package/language/source.mjs +1 -9
- package/language/visitor.js +11 -20
- package/language/visitor.js.flow +4 -5
- package/language/visitor.mjs +8 -20
- package/package.json +10 -3
- package/polyfills/find.js +31 -0
- package/polyfills/find.js.flow +29 -0
- package/polyfills/find.mjs +23 -0
- package/{jsutils → polyfills}/isFinite.js +1 -1
- package/{jsutils → polyfills}/isFinite.js.flow +0 -0
- package/{jsutils → polyfills}/isFinite.mjs +1 -1
- package/{jsutils → polyfills}/isInteger.js +1 -1
- package/{jsutils → polyfills}/isInteger.js.flow +0 -0
- package/{jsutils → polyfills}/isInteger.mjs +1 -1
- package/polyfills/objectEntries.js +26 -0
- package/polyfills/objectEntries.js.flow +19 -0
- package/polyfills/objectEntries.mjs +18 -0
- package/{jsutils → polyfills}/objectValues.js +1 -1
- package/{jsutils → polyfills}/objectValues.js.flow +1 -1
- package/{jsutils → polyfills}/objectValues.mjs +1 -1
- package/subscription/asyncIteratorReject.mjs +1 -1
- package/subscription/index.mjs +1 -1
- package/subscription/mapAsyncIterator.mjs +1 -1
- package/subscription/subscribe.js +1 -1
- package/subscription/subscribe.js.flow +1 -1
- package/subscription/subscribe.mjs +2 -2
- package/type/definition.js +31 -130
- package/type/definition.js.flow +35 -47
- package/type/definition.mjs +30 -131
- package/type/directives.js +25 -29
- package/type/directives.js.flow +24 -20
- package/type/directives.mjs +22 -30
- package/type/index.js +12 -0
- package/type/index.js.flow +4 -0
- package/type/index.mjs +5 -3
- package/type/introspection.js +3 -3
- package/type/introspection.js.flow +1 -1
- package/type/introspection.mjs +2 -2
- package/type/scalars.js +45 -34
- package/type/scalars.js.flow +40 -26
- package/type/scalars.mjs +44 -26
- package/type/schema.js +82 -87
- package/type/schema.js.flow +17 -9
- package/type/schema.mjs +79 -86
- package/type/validate.js +168 -175
- package/type/validate.js.flow +8 -49
- package/type/validate.mjs +159 -175
- package/utilities/TypeInfo.js +10 -23
- package/utilities/TypeInfo.js.flow +1 -1
- package/utilities/TypeInfo.mjs +2 -24
- package/utilities/assertValidName.js +1 -1
- package/utilities/assertValidName.mjs +1 -1
- package/utilities/astFromValue.js +2 -2
- package/utilities/astFromValue.js.flow +1 -1
- package/utilities/astFromValue.mjs +2 -2
- package/utilities/buildASTSchema.js +169 -152
- package/utilities/buildASTSchema.js.flow +117 -113
- package/utilities/buildASTSchema.mjs +160 -152
- package/utilities/buildClientSchema.js +24 -14
- package/utilities/buildClientSchema.js.flow +24 -14
- package/utilities/buildClientSchema.mjs +23 -14
- package/utilities/coerceValue.js +38 -19
- package/utilities/coerceValue.js.flow +41 -47
- package/utilities/coerceValue.mjs +38 -20
- package/utilities/concatAST.js +1 -1
- package/utilities/concatAST.mjs +1 -1
- package/utilities/extendSchema.js +228 -312
- package/utilities/extendSchema.js.flow +27 -152
- package/utilities/extendSchema.mjs +229 -312
- package/utilities/findBreakingChanges.js +7 -5
- package/utilities/findBreakingChanges.js.flow +3 -2
- package/utilities/findBreakingChanges.mjs +6 -5
- package/utilities/findDeprecatedUsages.js +1 -1
- package/utilities/findDeprecatedUsages.mjs +1 -1
- package/utilities/getOperationAST.js +1 -1
- package/utilities/getOperationAST.mjs +1 -1
- package/utilities/getOperationRootType.js +1 -1
- package/utilities/getOperationRootType.mjs +1 -1
- package/utilities/index.mjs +1 -1
- package/utilities/introspectionFromSchema.js +1 -1
- package/utilities/introspectionFromSchema.mjs +1 -1
- package/utilities/introspectionQuery.js +1 -1
- package/utilities/introspectionQuery.mjs +1 -1
- package/utilities/isValidJSValue.js +1 -1
- package/utilities/isValidJSValue.mjs +1 -1
- package/utilities/isValidLiteralValue.js +1 -1
- package/utilities/isValidLiteralValue.mjs +1 -1
- package/utilities/lexicographicSortSchema.js +2 -2
- package/utilities/lexicographicSortSchema.js.flow +1 -1
- package/utilities/lexicographicSortSchema.mjs +2 -2
- package/utilities/schemaPrinter.js +3 -3
- package/utilities/schemaPrinter.js.flow +1 -1
- package/utilities/schemaPrinter.mjs +2 -2
- package/utilities/separateOperations.js +1 -1
- package/utilities/separateOperations.mjs +1 -1
- package/utilities/typeComparators.js +1 -1
- package/utilities/typeComparators.mjs +1 -1
- package/utilities/typeFromAST.js +1 -1
- package/utilities/typeFromAST.mjs +1 -1
- package/utilities/valueFromAST.js +3 -3
- package/utilities/valueFromAST.js.flow +1 -1
- package/utilities/valueFromAST.mjs +2 -2
- package/utilities/valueFromASTUntyped.js +1 -1
- package/utilities/valueFromASTUntyped.mjs +1 -1
- package/validation/ValidationContext.js +57 -82
- package/validation/ValidationContext.js.flow +52 -49
- package/validation/ValidationContext.mjs +52 -77
- package/validation/index.js.flow +1 -0
- package/validation/index.mjs +1 -1
- package/validation/rules/ExecutableDefinitions.js +1 -1
- package/validation/rules/ExecutableDefinitions.js.flow +1 -1
- package/validation/rules/ExecutableDefinitions.mjs +1 -1
- package/validation/rules/FieldsOnCorrectType.js +1 -1
- package/validation/rules/FieldsOnCorrectType.mjs +1 -1
- package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
- package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
- package/validation/rules/KnownArgumentNames.mjs +1 -1
- package/validation/rules/KnownDirectives.js +1 -1
- package/validation/rules/KnownDirectives.mjs +1 -1
- package/validation/rules/KnownFragmentNames.js +1 -1
- package/validation/rules/KnownFragmentNames.mjs +1 -1
- package/validation/rules/KnownTypeNames.js +59 -21
- package/validation/rules/KnownTypeNames.js.flow +54 -20
- package/validation/rules/KnownTypeNames.mjs +56 -21
- package/validation/rules/LoneAnonymousOperation.js +1 -1
- package/validation/rules/LoneAnonymousOperation.mjs +1 -1
- package/validation/rules/LoneSchemaDefinition.js +1 -1
- package/validation/rules/LoneSchemaDefinition.mjs +1 -1
- package/validation/rules/NoFragmentCycles.js +1 -1
- package/validation/rules/NoFragmentCycles.js.flow +2 -2
- package/validation/rules/NoFragmentCycles.mjs +1 -1
- package/validation/rules/NoUndefinedVariables.js +1 -1
- package/validation/rules/NoUndefinedVariables.mjs +1 -1
- package/validation/rules/NoUnusedFragments.js +1 -1
- package/validation/rules/NoUnusedFragments.js.flow +2 -2
- package/validation/rules/NoUnusedFragments.mjs +1 -1
- package/validation/rules/NoUnusedVariables.js +1 -1
- package/validation/rules/NoUnusedVariables.mjs +1 -1
- package/validation/rules/OverlappingFieldsCanBeMerged.js +57 -33
- package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +5 -6
- package/validation/rules/OverlappingFieldsCanBeMerged.mjs +48 -33
- package/validation/rules/PossibleFragmentSpreads.js +1 -1
- package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
- package/validation/rules/PossibleTypeExtensions.js +158 -0
- package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
- package/validation/rules/PossibleTypeExtensions.mjs +146 -0
- package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
- package/validation/rules/ScalarLeafs.js +1 -1
- package/validation/rules/ScalarLeafs.mjs +1 -1
- package/validation/rules/SingleFieldSubscriptions.js +1 -1
- package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
- package/validation/rules/UniqueArgumentNames.js +1 -1
- package/validation/rules/UniqueArgumentNames.mjs +1 -1
- package/validation/rules/UniqueDirectiveNames.js +55 -0
- package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
- package/validation/rules/UniqueDirectiveNames.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
- package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
- package/validation/rules/UniqueEnumValueNames.js +94 -0
- package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
- package/validation/rules/UniqueEnumValueNames.mjs +81 -0
- package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
- package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
- package/validation/rules/UniqueFragmentNames.js +1 -1
- package/validation/rules/UniqueFragmentNames.mjs +1 -1
- package/validation/rules/UniqueInputFieldNames.js +1 -1
- package/validation/rules/UniqueInputFieldNames.mjs +1 -1
- package/validation/rules/UniqueOperationNames.js +1 -1
- package/validation/rules/UniqueOperationNames.mjs +1 -1
- package/validation/rules/UniqueOperationTypes.js +85 -0
- package/validation/rules/UniqueOperationTypes.js.flow +76 -0
- package/validation/rules/UniqueOperationTypes.mjs +73 -0
- package/validation/rules/UniqueTypeNames.js +62 -0
- package/validation/rules/UniqueTypeNames.js.flow +67 -0
- package/validation/rules/UniqueTypeNames.mjs +50 -0
- package/validation/rules/UniqueVariableNames.js +1 -1
- package/validation/rules/UniqueVariableNames.mjs +1 -1
- package/validation/rules/ValuesOfCorrectType.js +29 -13
- package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
- package/validation/rules/ValuesOfCorrectType.mjs +28 -13
- package/validation/rules/VariablesAreInputTypes.js +1 -1
- package/validation/rules/VariablesAreInputTypes.mjs +1 -1
- package/validation/rules/VariablesInAllowedPosition.js +4 -4
- package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
- package/validation/specifiedRules.js +14 -2
- package/validation/specifiedRules.js.flow +13 -0
- package/validation/specifiedRules.mjs +8 -2
- package/validation/validate.js +1 -1
- package/validation/validate.mjs +1 -1
- package/jsutils/find.js +0 -22
- package/jsutils/find.js.flow +0 -19
- package/jsutils/find.mjs +0 -15
|
@@ -7,14 +7,13 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import objectValues from '../polyfills/objectValues';
|
|
10
11
|
import invariant from '../jsutils/invariant';
|
|
11
|
-
import
|
|
12
|
+
import mapValue from '../jsutils/mapValue';
|
|
12
13
|
import keyValMap from '../jsutils/keyValMap';
|
|
13
|
-
import objectValues from '../jsutils/objectValues';
|
|
14
14
|
import { ASTDefinitionBuilder } from './buildASTSchema';
|
|
15
15
|
import { assertValidSDLExtension } from '../validation/validate';
|
|
16
|
-
import {
|
|
17
|
-
import { isSchema, GraphQLSchema } from '../type/schema';
|
|
16
|
+
import { assertSchema, GraphQLSchema } from '../type/schema';
|
|
18
17
|
import { isIntrospectionType } from '../type/introspection';
|
|
19
18
|
import { isSpecifiedScalarType } from '../type/scalars';
|
|
20
19
|
|
|
@@ -105,7 +104,7 @@ export function extendSchema(
|
|
|
105
104
|
documentAST: DocumentNode,
|
|
106
105
|
options?: Options,
|
|
107
106
|
): GraphQLSchema {
|
|
108
|
-
|
|
107
|
+
assertSchema(schema);
|
|
109
108
|
|
|
110
109
|
invariant(
|
|
111
110
|
documentAST && documentAST.kind === Kind.DOCUMENT,
|
|
@@ -128,52 +127,21 @@ export function extendSchema(
|
|
|
128
127
|
// Schema extensions are collected which may add additional operation types.
|
|
129
128
|
const schemaExtensions: Array<SchemaExtensionNode> = [];
|
|
130
129
|
|
|
131
|
-
for (
|
|
132
|
-
const def = documentAST.definitions[i];
|
|
130
|
+
for (const def of documentAST.definitions) {
|
|
133
131
|
if (def.kind === Kind.SCHEMA_DEFINITION) {
|
|
134
132
|
schemaDef = def;
|
|
135
133
|
} else if (def.kind === Kind.SCHEMA_EXTENSION) {
|
|
136
134
|
schemaExtensions.push(def);
|
|
137
135
|
} else if (isTypeDefinitionNode(def)) {
|
|
138
|
-
// Sanity check that none of the defined types conflict with the
|
|
139
|
-
// schema's existing types.
|
|
140
136
|
const typeName = def.name.value;
|
|
141
|
-
if (schema.getType(typeName)) {
|
|
142
|
-
throw new GraphQLError(
|
|
143
|
-
`Type "${typeName}" already exists in the schema. It cannot also ` +
|
|
144
|
-
'be defined in this type definition.',
|
|
145
|
-
[def],
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
137
|
typeDefinitionMap[typeName] = def;
|
|
149
138
|
} else if (isTypeExtensionNode(def)) {
|
|
150
|
-
// Sanity check that this type extension exists within the
|
|
151
|
-
// schema's existing types.
|
|
152
139
|
const extendedTypeName = def.name.value;
|
|
153
|
-
const existingType = schema.getType(extendedTypeName);
|
|
154
|
-
if (!existingType) {
|
|
155
|
-
throw new GraphQLError(
|
|
156
|
-
`Cannot extend type "${extendedTypeName}" because it does not ` +
|
|
157
|
-
'exist in the existing schema.',
|
|
158
|
-
[def],
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
checkExtensionNode(existingType, def);
|
|
162
|
-
|
|
163
140
|
const existingTypeExtensions = typeExtensionsMap[extendedTypeName];
|
|
164
141
|
typeExtensionsMap[extendedTypeName] = existingTypeExtensions
|
|
165
142
|
? existingTypeExtensions.concat([def])
|
|
166
143
|
: [def];
|
|
167
144
|
} else if (def.kind === Kind.DIRECTIVE_DEFINITION) {
|
|
168
|
-
const directiveName = def.name.value;
|
|
169
|
-
const existingDirective = schema.getDirective(directiveName);
|
|
170
|
-
if (existingDirective) {
|
|
171
|
-
throw new GraphQLError(
|
|
172
|
-
`Directive "${directiveName}" already exists in the schema. It ` +
|
|
173
|
-
'cannot be redefined.',
|
|
174
|
-
[def],
|
|
175
|
-
);
|
|
176
|
-
}
|
|
177
145
|
directiveDefinitions.push(def);
|
|
178
146
|
}
|
|
179
147
|
}
|
|
@@ -193,18 +161,11 @@ export function extendSchema(
|
|
|
193
161
|
const astBuilder = new ASTDefinitionBuilder(
|
|
194
162
|
typeDefinitionMap,
|
|
195
163
|
options,
|
|
196
|
-
|
|
197
|
-
const typeName = typeRef.name.value;
|
|
164
|
+
typeName => {
|
|
198
165
|
const existingType = schema.getType(typeName);
|
|
199
|
-
|
|
200
|
-
return extendNamedType(existingType);
|
|
201
|
-
}
|
|
166
|
+
invariant(existingType, `Unknown type: "${typeName}".`);
|
|
202
167
|
|
|
203
|
-
|
|
204
|
-
`Unknown type: "${typeName}". Ensure that this type exists ` +
|
|
205
|
-
'either in the original schema, or is added in a type definition.',
|
|
206
|
-
[typeRef],
|
|
207
|
-
);
|
|
168
|
+
return extendNamedType(existingType);
|
|
208
169
|
},
|
|
209
170
|
);
|
|
210
171
|
|
|
@@ -219,9 +180,6 @@ export function extendSchema(
|
|
|
219
180
|
|
|
220
181
|
if (schemaDef) {
|
|
221
182
|
for (const { operation, type } of schemaDef.operationTypes) {
|
|
222
|
-
if (operationTypes[operation]) {
|
|
223
|
-
throw new Error(`Must provide only one ${operation} type in schema.`);
|
|
224
|
-
}
|
|
225
183
|
// Note: While this could make early assertions to get the correctly
|
|
226
184
|
// typed values, that would throw immediately while type system
|
|
227
185
|
// validation with validateSchema() will produce more actionable results.
|
|
@@ -232,9 +190,6 @@ export function extendSchema(
|
|
|
232
190
|
for (const schemaExtension of schemaExtensions) {
|
|
233
191
|
if (schemaExtension.operationTypes) {
|
|
234
192
|
for (const { operation, type } of schemaExtension.operationTypes) {
|
|
235
|
-
if (operationTypes[operation]) {
|
|
236
|
-
throw new Error(`Must provide only one ${operation} type in schema.`);
|
|
237
|
-
}
|
|
238
193
|
// Note: While this could make early assertions to get the correctly
|
|
239
194
|
// typed values, that would throw immediately while type system
|
|
240
195
|
// validation with validateSchema() will produce more actionable results.
|
|
@@ -342,32 +297,19 @@ export function extendSchema(
|
|
|
342
297
|
}
|
|
343
298
|
|
|
344
299
|
function extendInputFieldMap(type: GraphQLInputObjectType) {
|
|
345
|
-
const newFieldMap =
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
type: extendType(field.type),
|
|
352
|
-
defaultValue: field.defaultValue,
|
|
353
|
-
astNode: field.astNode,
|
|
354
|
-
};
|
|
355
|
-
}
|
|
300
|
+
const newFieldMap = mapValue(type.getFields(), field => ({
|
|
301
|
+
description: field.description,
|
|
302
|
+
type: extendType(field.type),
|
|
303
|
+
defaultValue: field.defaultValue,
|
|
304
|
+
astNode: field.astNode,
|
|
305
|
+
}));
|
|
356
306
|
|
|
357
307
|
// If there are any extensions to the fields, apply those here.
|
|
358
308
|
const extensions = typeExtensionsMap[type.name];
|
|
359
309
|
if (extensions) {
|
|
360
310
|
for (const extension of extensions) {
|
|
361
311
|
for (const field of extension.fields) {
|
|
362
|
-
|
|
363
|
-
if (oldFieldMap[fieldName]) {
|
|
364
|
-
throw new GraphQLError(
|
|
365
|
-
`Field "${type.name}.${fieldName}" already exists in the ` +
|
|
366
|
-
'schema. It cannot also be defined in this type extension.',
|
|
367
|
-
[field],
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
newFieldMap[fieldName] = astBuilder.buildInputField(field);
|
|
312
|
+
newFieldMap[field.name.value] = astBuilder.buildInputField(field);
|
|
371
313
|
}
|
|
372
314
|
}
|
|
373
315
|
}
|
|
@@ -393,11 +335,8 @@ export function extendSchema(
|
|
|
393
335
|
|
|
394
336
|
function extendValueMap(type: GraphQLEnumType) {
|
|
395
337
|
const newValueMap = Object.create(null);
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
const value = oldValueMap[valueName];
|
|
399
|
-
newValueMap[valueName] = {
|
|
400
|
-
name: value.name,
|
|
338
|
+
for (const value of type.getValues()) {
|
|
339
|
+
newValueMap[value.name] = {
|
|
401
340
|
description: value.description,
|
|
402
341
|
value: value.value,
|
|
403
342
|
deprecationReason: value.deprecationReason,
|
|
@@ -410,15 +349,7 @@ export function extendSchema(
|
|
|
410
349
|
if (extensions) {
|
|
411
350
|
for (const extension of extensions) {
|
|
412
351
|
for (const value of extension.values) {
|
|
413
|
-
|
|
414
|
-
if (oldValueMap[valueName]) {
|
|
415
|
-
throw new GraphQLError(
|
|
416
|
-
`Enum value "${type.name}.${valueName}" already exists in the ` +
|
|
417
|
-
'schema. It cannot also be defined in this type extension.',
|
|
418
|
-
[value],
|
|
419
|
-
);
|
|
420
|
-
}
|
|
421
|
-
newValueMap[valueName] = astBuilder.buildEnumValue(value);
|
|
352
|
+
newValueMap[value.name.value] = astBuilder.buildEnumValue(value);
|
|
422
353
|
}
|
|
423
354
|
}
|
|
424
355
|
}
|
|
@@ -555,34 +486,21 @@ export function extendSchema(
|
|
|
555
486
|
}
|
|
556
487
|
|
|
557
488
|
function extendFieldMap(type: GraphQLObjectType | GraphQLInterfaceType) {
|
|
558
|
-
const newFieldMap =
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
args: extendArgs(field.args),
|
|
567
|
-
astNode: field.astNode,
|
|
568
|
-
resolve: field.resolve,
|
|
569
|
-
};
|
|
570
|
-
}
|
|
489
|
+
const newFieldMap = mapValue(type.getFields(), field => ({
|
|
490
|
+
description: field.description,
|
|
491
|
+
deprecationReason: field.deprecationReason,
|
|
492
|
+
type: extendType(field.type),
|
|
493
|
+
args: extendArgs(field.args),
|
|
494
|
+
astNode: field.astNode,
|
|
495
|
+
resolve: field.resolve,
|
|
496
|
+
}));
|
|
571
497
|
|
|
572
498
|
// If there are any extensions to the fields, apply those here.
|
|
573
499
|
const extensions = typeExtensionsMap[type.name];
|
|
574
500
|
if (extensions) {
|
|
575
501
|
for (const extension of extensions) {
|
|
576
502
|
for (const field of extension.fields) {
|
|
577
|
-
|
|
578
|
-
if (oldFieldMap[fieldName]) {
|
|
579
|
-
throw new GraphQLError(
|
|
580
|
-
`Field "${type.name}.${fieldName}" already exists in the ` +
|
|
581
|
-
'schema. It cannot also be defined in this type extension.',
|
|
582
|
-
[field],
|
|
583
|
-
);
|
|
584
|
-
}
|
|
585
|
-
newFieldMap[fieldName] = astBuilder.buildField(field);
|
|
503
|
+
newFieldMap[field.name.value] = astBuilder.buildField(field);
|
|
586
504
|
}
|
|
587
505
|
}
|
|
588
506
|
}
|
|
@@ -600,46 +518,3 @@ export function extendSchema(
|
|
|
600
518
|
return extendNamedType(typeDef);
|
|
601
519
|
}
|
|
602
520
|
}
|
|
603
|
-
|
|
604
|
-
function checkExtensionNode(type, node) {
|
|
605
|
-
switch (node.kind) {
|
|
606
|
-
case Kind.OBJECT_TYPE_EXTENSION:
|
|
607
|
-
if (!isObjectType(type)) {
|
|
608
|
-
throw new GraphQLError(
|
|
609
|
-
`Cannot extend non-object type "${type.name}".`,
|
|
610
|
-
[node],
|
|
611
|
-
);
|
|
612
|
-
}
|
|
613
|
-
break;
|
|
614
|
-
case Kind.INTERFACE_TYPE_EXTENSION:
|
|
615
|
-
if (!isInterfaceType(type)) {
|
|
616
|
-
throw new GraphQLError(
|
|
617
|
-
`Cannot extend non-interface type "${type.name}".`,
|
|
618
|
-
[node],
|
|
619
|
-
);
|
|
620
|
-
}
|
|
621
|
-
break;
|
|
622
|
-
case Kind.ENUM_TYPE_EXTENSION:
|
|
623
|
-
if (!isEnumType(type)) {
|
|
624
|
-
throw new GraphQLError(`Cannot extend non-enum type "${type.name}".`, [
|
|
625
|
-
node,
|
|
626
|
-
]);
|
|
627
|
-
}
|
|
628
|
-
break;
|
|
629
|
-
case Kind.UNION_TYPE_EXTENSION:
|
|
630
|
-
if (!isUnionType(type)) {
|
|
631
|
-
throw new GraphQLError(`Cannot extend non-union type "${type.name}".`, [
|
|
632
|
-
node,
|
|
633
|
-
]);
|
|
634
|
-
}
|
|
635
|
-
break;
|
|
636
|
-
case Kind.INPUT_OBJECT_TYPE_EXTENSION:
|
|
637
|
-
if (!isInputObjectType(type)) {
|
|
638
|
-
throw new GraphQLError(
|
|
639
|
-
`Cannot extend non-input object type "${type.name}".`,
|
|
640
|
-
[node],
|
|
641
|
-
);
|
|
642
|
-
}
|
|
643
|
-
break;
|
|
644
|
-
}
|
|
645
|
-
}
|