graphql 15.2.0 → 15.5.0
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/LICENSE +1 -1
- package/README.md +19 -10
- package/error/GraphQLError.js +8 -8
- package/error/GraphQLError.js.flow +2 -3
- package/error/GraphQLError.mjs +2 -2
- package/error/formatError.js +1 -1
- package/error/formatError.js.flow +0 -1
- package/error/index.js +4 -4
- package/error/index.js.flow +0 -1
- package/error/locatedError.d.ts +2 -2
- package/error/locatedError.js +10 -5
- package/error/locatedError.js.flow +10 -4
- package/error/locatedError.mjs +6 -4
- package/error/syntaxError.js +1 -1
- package/error/syntaxError.js.flow +0 -1
- package/execution/execute.d.ts +11 -15
- package/execution/execute.js +110 -110
- package/execution/execute.js.flow +132 -139
- package/execution/execute.mjs +92 -88
- package/execution/index.d.ts +1 -0
- package/execution/index.js +3 -3
- package/execution/index.js.flow +6 -2
- package/execution/values.js +11 -11
- package/execution/values.js.flow +0 -1
- package/graphql.js +5 -5
- package/graphql.js.flow +0 -1
- package/index.d.ts +2 -0
- package/index.js +9 -9
- package/index.js.flow +5 -2
- package/jsutils/ObjMap.js.flow +0 -1
- package/jsutils/Path.js.flow +0 -1
- package/jsutils/PromiseOrValue.js.flow +0 -1
- package/jsutils/defineInspect.js +2 -2
- package/jsutils/defineInspect.js.flow +0 -1
- package/jsutils/devAssert.js.flow +0 -1
- package/jsutils/didYouMean.js.flow +0 -1
- package/jsutils/identityFunc.js.flow +0 -1
- package/jsutils/inspect.js +1 -2
- package/jsutils/inspect.js.flow +10 -8
- package/jsutils/inspect.mjs +1 -1
- package/jsutils/instanceOf.js.flow +2 -3
- package/jsutils/invariant.js.flow +0 -1
- package/jsutils/isAsyncIterable.js +13 -0
- package/jsutils/isAsyncIterable.js.flow +14 -0
- package/jsutils/isAsyncIterable.mjs +10 -0
- package/jsutils/isObjectLike.js.flow +0 -1
- package/jsutils/isPromise.js.flow +0 -1
- package/jsutils/keyMap.js.flow +0 -1
- package/jsutils/keyValMap.js.flow +0 -1
- package/jsutils/mapValue.js +1 -1
- package/jsutils/mapValue.js.flow +0 -1
- package/jsutils/memoize3.js +2 -5
- package/jsutils/memoize3.js.flow +2 -5
- package/jsutils/memoize3.mjs +2 -5
- package/jsutils/naturalCompare.js +69 -0
- package/jsutils/naturalCompare.js.flow +59 -0
- package/jsutils/naturalCompare.mjs +61 -0
- package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
- package/jsutils/printPathArray.js.flow +0 -1
- package/jsutils/promiseForObject.js.flow +0 -1
- package/jsutils/promiseReduce.js +1 -1
- package/jsutils/promiseReduce.js.flow +0 -1
- package/jsutils/safeArrayFrom.js +73 -0
- package/jsutils/safeArrayFrom.js.flow +59 -0
- package/jsutils/safeArrayFrom.mjs +66 -0
- package/jsutils/suggestionList.js +5 -1
- package/jsutils/suggestionList.js.flow +3 -2
- package/jsutils/suggestionList.mjs +3 -1
- package/jsutils/toObjMap.js +1 -1
- package/jsutils/toObjMap.js.flow +0 -1
- package/language/ast.js +1 -1
- package/language/ast.js.flow +0 -1
- package/language/blockString.d.ts +1 -1
- package/language/blockString.js +53 -32
- package/language/blockString.js.flow +51 -36
- package/language/blockString.mjs +54 -33
- package/language/directiveLocation.js.flow +0 -1
- package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
- package/language/experimentalOnlineParser/grammar.js +987 -0
- package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
- package/language/experimentalOnlineParser/grammar.mjs +980 -0
- package/language/experimentalOnlineParser/index.d.ts +6 -0
- package/language/experimentalOnlineParser/index.js +31 -0
- package/language/experimentalOnlineParser/index.js.flow +7 -0
- package/language/experimentalOnlineParser/index.mjs +1 -0
- package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
- package/language/experimentalOnlineParser/onlineParser.js +604 -0
- package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
- package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
- package/language/index.js +12 -12
- package/language/index.js.flow +0 -1
- package/language/kinds.js.flow +0 -1
- package/language/lexer.js +242 -183
- package/language/lexer.js.flow +188 -184
- package/language/lexer.mjs +238 -179
- package/language/location.js.flow +0 -1
- package/language/parser.js +73 -68
- package/language/parser.js.flow +62 -57
- package/language/parser.mjs +64 -60
- package/language/predicates.js +1 -1
- package/language/predicates.js.flow +0 -1
- package/language/printLocation.js +1 -1
- package/language/printLocation.js.flow +0 -1
- package/language/printer.js +20 -13
- package/language/printer.js.flow +26 -25
- package/language/printer.mjs +18 -11
- package/language/source.d.ts +12 -6
- package/language/source.js +25 -9
- package/language/source.js.flow +26 -9
- package/language/source.mjs +19 -7
- package/language/tokenKind.js.flow +0 -1
- package/language/visitor.d.ts +3 -3
- package/language/visitor.js +5 -5
- package/language/visitor.js.flow +3 -4
- package/language/visitor.mjs +3 -3
- package/package.json +2 -3
- package/polyfills/arrayFrom.js +2 -2
- package/polyfills/arrayFrom.js.flow +1 -2
- package/polyfills/arrayFrom.mjs +1 -1
- package/polyfills/find.js +1 -1
- package/polyfills/find.js.flow +1 -2
- package/polyfills/find.mjs +1 -1
- package/polyfills/isFinite.js +1 -1
- package/polyfills/isFinite.js.flow +1 -2
- package/polyfills/isFinite.mjs +1 -1
- package/polyfills/isInteger.js +1 -1
- package/polyfills/isInteger.js.flow +1 -2
- package/polyfills/isInteger.mjs +1 -1
- package/polyfills/objectEntries.js +1 -1
- package/polyfills/objectEntries.js.flow +1 -2
- package/polyfills/objectEntries.mjs +1 -1
- package/polyfills/objectValues.js +1 -1
- package/polyfills/objectValues.js.flow +1 -2
- package/polyfills/objectValues.mjs +1 -1
- package/polyfills/symbols.js +3 -5
- package/polyfills/symbols.js.flow +9 -6
- package/polyfills/symbols.mjs +3 -5
- package/subscription/index.js +1 -1
- package/subscription/index.js.flow +0 -1
- package/subscription/mapAsyncIterator.js +2 -2
- package/subscription/mapAsyncIterator.js.flow +8 -9
- package/subscription/mapAsyncIterator.mjs +1 -1
- package/subscription/subscribe.js +61 -73
- package/subscription/subscribe.js.flow +71 -85
- package/subscription/subscribe.mjs +53 -65
- package/type/definition.d.ts +17 -9
- package/type/definition.js +37 -32
- package/type/definition.js.flow +93 -63
- package/type/definition.mjs +19 -14
- package/type/directives.js +17 -16
- package/type/directives.js.flow +20 -13
- package/type/directives.mjs +6 -5
- package/type/index.js +6 -6
- package/type/index.js.flow +0 -1
- package/type/introspection.js +86 -65
- package/type/introspection.js.flow +75 -43
- package/type/introspection.mjs +79 -58
- package/type/scalars.js +9 -9
- package/type/scalars.js.flow +1 -2
- package/type/scalars.mjs +1 -1
- package/type/schema.js +13 -13
- package/type/schema.js.flow +2 -3
- package/type/schema.mjs +1 -1
- package/type/validate.js +52 -19
- package/type/validate.js.flow +54 -8
- package/type/validate.mjs +43 -9
- package/utilities/TypeInfo.js +7 -7
- package/utilities/TypeInfo.js.flow +1 -2
- package/utilities/assertValidName.js +2 -2
- package/utilities/assertValidName.js.flow +0 -1
- package/utilities/astFromValue.js +14 -16
- package/utilities/astFromValue.js.flow +6 -7
- package/utilities/astFromValue.mjs +6 -7
- package/utilities/buildASTSchema.js +17 -27
- package/utilities/buildASTSchema.js.flow +5 -21
- package/utilities/buildASTSchema.mjs +11 -21
- package/utilities/buildClientSchema.js +16 -15
- package/utilities/buildClientSchema.js.flow +28 -12
- package/utilities/buildClientSchema.mjs +5 -4
- package/utilities/coerceInputValue.js +17 -18
- package/utilities/coerceInputValue.js.flow +12 -10
- package/utilities/coerceInputValue.mjs +7 -7
- package/utilities/concatAST.js +9 -8
- package/utilities/concatAST.js.flow +8 -8
- package/utilities/concatAST.mjs +9 -6
- package/utilities/extendSchema.js +26 -19
- package/utilities/extendSchema.js.flow +19 -7
- package/utilities/extendSchema.mjs +8 -1
- package/utilities/findBreakingChanges.js +15 -11
- package/utilities/findBreakingChanges.js.flow +6 -3
- package/utilities/findBreakingChanges.mjs +5 -2
- package/utilities/findDeprecatedUsages.js +2 -2
- package/utilities/findDeprecatedUsages.js.flow +0 -1
- package/utilities/getIntrospectionQuery.d.ts +6 -0
- package/utilities/getIntrospectionQuery.js +8 -2
- package/utilities/getIntrospectionQuery.js.flow +17 -5
- package/utilities/getIntrospectionQuery.mjs +8 -2
- package/utilities/getOperationAST.js +1 -1
- package/utilities/getOperationAST.js.flow +0 -1
- package/utilities/getOperationRootType.js +1 -1
- package/utilities/getOperationRootType.js.flow +0 -1
- package/utilities/index.d.ts +3 -0
- package/utilities/index.js +22 -22
- package/utilities/index.js.flow +0 -1
- package/utilities/introspectionFromSchema.js +7 -5
- package/utilities/introspectionFromSchema.js.flow +2 -1
- package/utilities/introspectionFromSchema.mjs +3 -1
- package/utilities/lexicographicSortSchema.js +13 -9
- package/utilities/lexicographicSortSchema.js.flow +21 -13
- package/utilities/lexicographicSortSchema.mjs +5 -2
- package/utilities/printSchema.js +15 -16
- package/utilities/printSchema.js.flow +23 -16
- package/utilities/printSchema.mjs +5 -6
- package/utilities/separateOperations.js +46 -42
- package/utilities/separateOperations.js.flow +46 -37
- package/utilities/separateOperations.mjs +44 -40
- package/utilities/stripIgnoredCharacters.js +6 -16
- package/utilities/stripIgnoredCharacters.js.flow +4 -13
- package/utilities/stripIgnoredCharacters.mjs +3 -10
- package/utilities/typeComparators.js +1 -1
- package/utilities/typeComparators.js.flow +0 -1
- package/utilities/typeFromAST.js +6 -6
- package/utilities/typeFromAST.js.flow +2 -3
- package/utilities/typeFromAST.mjs +2 -2
- package/utilities/typedQueryDocumentNode.d.ts +20 -0
- package/utilities/valueFromAST.js +6 -6
- package/utilities/valueFromAST.js.flow +4 -2
- package/utilities/valueFromASTUntyped.js +4 -4
- package/utilities/valueFromASTUntyped.js.flow +0 -1
- package/validation/ValidationContext.js +3 -3
- package/validation/ValidationContext.js.flow +3 -4
- package/validation/index.js +38 -38
- package/validation/index.js.flow +0 -1
- package/validation/rules/ExecutableDefinitions.js +1 -1
- package/validation/rules/ExecutableDefinitions.js.flow +0 -1
- package/validation/rules/ExecutableDefinitionsRule.js +3 -3
- package/validation/rules/ExecutableDefinitionsRule.js.flow +0 -1
- package/validation/rules/FieldsOnCorrectTypeRule.js +8 -6
- package/validation/rules/FieldsOnCorrectTypeRule.js.flow +2 -2
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +2 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
- package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +0 -1
- package/validation/rules/KnownArgumentNamesRule.js +5 -5
- package/validation/rules/KnownArgumentNamesRule.js.flow +1 -1
- package/validation/rules/KnownDirectivesRule.js +6 -6
- package/validation/rules/KnownDirectivesRule.js.flow +4 -3
- package/validation/rules/KnownFragmentNamesRule.js +1 -1
- package/validation/rules/KnownFragmentNamesRule.js.flow +0 -1
- package/validation/rules/KnownTypeNamesRule.js +6 -6
- package/validation/rules/KnownTypeNamesRule.js.flow +1 -2
- package/validation/rules/LoneAnonymousOperationRule.js +2 -2
- package/validation/rules/LoneAnonymousOperationRule.js.flow +0 -1
- package/validation/rules/LoneSchemaDefinition.js +1 -1
- package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
- package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.js.flow +0 -1
- package/validation/rules/NoFragmentCyclesRule.js +1 -1
- package/validation/rules/NoFragmentCyclesRule.js.flow +1 -2
- package/validation/rules/NoUndefinedVariablesRule.js +1 -1
- package/validation/rules/NoUndefinedVariablesRule.js.flow +0 -1
- package/validation/rules/NoUnusedFragmentsRule.js +1 -1
- package/validation/rules/NoUnusedFragmentsRule.js.flow +0 -1
- package/validation/rules/NoUnusedVariablesRule.js +1 -1
- package/validation/rules/NoUnusedVariablesRule.js.flow +0 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +14 -14
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
- package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
- package/validation/rules/PossibleFragmentSpreadsRule.js.flow +5 -2
- package/validation/rules/PossibleTypeExtensions.js +1 -1
- package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
- package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
- package/validation/rules/PossibleTypeExtensionsRule.js.flow +6 -4
- package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
- package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +4 -3
- package/validation/rules/ScalarLeafsRule.js +3 -3
- package/validation/rules/ScalarLeafsRule.js.flow +0 -1
- package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.js.flow +0 -1
- package/validation/rules/UniqueArgumentNamesRule.js +1 -1
- package/validation/rules/UniqueArgumentNamesRule.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNames.js +1 -1
- package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNamesRule.js +2 -2
- package/validation/rules/UniqueDirectiveNamesRule.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNamesRule.mjs +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
- package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +0 -1
- package/validation/rules/UniqueEnumValueNames.js +1 -1
- package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
- package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
- package/validation/rules/UniqueEnumValueNamesRule.js.flow +7 -2
- package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
- package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +13 -4
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
- package/validation/rules/UniqueFragmentNamesRule.js +1 -1
- package/validation/rules/UniqueFragmentNamesRule.js.flow +0 -1
- package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.js.flow +0 -1
- package/validation/rules/UniqueOperationNamesRule.js +1 -1
- package/validation/rules/UniqueOperationNamesRule.js.flow +0 -1
- package/validation/rules/UniqueOperationTypes.js +1 -1
- package/validation/rules/UniqueOperationTypes.js.flow +0 -1
- package/validation/rules/UniqueOperationTypesRule.js +1 -1
- package/validation/rules/UniqueOperationTypesRule.js.flow +7 -2
- package/validation/rules/UniqueTypeNames.js +1 -1
- package/validation/rules/UniqueTypeNames.js.flow +0 -1
- package/validation/rules/UniqueTypeNamesRule.js +2 -2
- package/validation/rules/UniqueTypeNamesRule.js.flow +0 -1
- package/validation/rules/UniqueTypeNamesRule.mjs +1 -1
- package/validation/rules/UniqueVariableNamesRule.js +1 -1
- package/validation/rules/UniqueVariableNamesRule.js.flow +0 -1
- package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
- package/validation/rules/ValuesOfCorrectTypeRule.js.flow +0 -1
- package/validation/rules/VariablesAreInputTypesRule.js +4 -4
- package/validation/rules/VariablesAreInputTypesRule.js.flow +0 -1
- package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
- package/validation/rules/VariablesInAllowedPositionRule.js.flow +0 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.js +47 -9
- package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +56 -13
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +43 -8
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +3 -3
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +0 -1
- package/validation/specifiedRules.js +33 -33
- package/validation/specifiedRules.js.flow +0 -1
- package/validation/validate.js +7 -7
- package/validation/validate.js.flow +4 -5
- package/version.js +2 -2
- package/version.js.flow +2 -3
- package/version.mjs +2 -2
- package/jsutils/isCollection.js +0 -47
- package/jsutils/isCollection.js.flow +0 -39
- package/jsutils/isCollection.mjs +0 -40
- package/polyfills/flatMap.js +0 -30
- package/polyfills/flatMap.js.flow +0 -28
- package/polyfills/flatMap.mjs +0 -23
package/type/validate.js.flow
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
|
|
3
2
|
import find from '../polyfills/find';
|
|
4
|
-
import flatMap from '../polyfills/flatMap';
|
|
5
3
|
import objectValues from '../polyfills/objectValues';
|
|
6
4
|
|
|
7
5
|
import inspect from '../jsutils/inspect';
|
|
@@ -12,6 +10,7 @@ import { locatedError } from '../error/locatedError';
|
|
|
12
10
|
import type {
|
|
13
11
|
ASTNode,
|
|
14
12
|
NamedTypeNode,
|
|
13
|
+
DirectiveNode,
|
|
15
14
|
OperationTypeNode,
|
|
16
15
|
} from '../language/ast';
|
|
17
16
|
|
|
@@ -27,8 +26,8 @@ import type {
|
|
|
27
26
|
GraphQLInputObjectType,
|
|
28
27
|
} from './definition';
|
|
29
28
|
import { assertSchema } from './schema';
|
|
30
|
-
import { isDirective } from './directives';
|
|
31
29
|
import { isIntrospectionType } from './introspection';
|
|
30
|
+
import { isDirective, GraphQLDeprecatedDirective } from './directives';
|
|
32
31
|
import {
|
|
33
32
|
isObjectType,
|
|
34
33
|
isInterfaceType,
|
|
@@ -40,6 +39,7 @@ import {
|
|
|
40
39
|
isInputType,
|
|
41
40
|
isOutputType,
|
|
42
41
|
isRequiredArgument,
|
|
42
|
+
isRequiredInputField,
|
|
43
43
|
} from './definition';
|
|
44
44
|
|
|
45
45
|
/**
|
|
@@ -110,7 +110,7 @@ class SchemaValidationContext {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
function validateRootTypes(context) {
|
|
113
|
+
function validateRootTypes(context: SchemaValidationContext): void {
|
|
114
114
|
const schema = context.schema;
|
|
115
115
|
const queryType = schema.getQueryType();
|
|
116
116
|
if (!queryType) {
|
|
@@ -185,6 +185,17 @@ function validateDirectives(context: SchemaValidationContext): void {
|
|
|
185
185
|
arg.astNode,
|
|
186
186
|
);
|
|
187
187
|
}
|
|
188
|
+
|
|
189
|
+
if (isRequiredArgument(arg) && arg.deprecationReason != null) {
|
|
190
|
+
context.reportError(
|
|
191
|
+
`Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,
|
|
192
|
+
[
|
|
193
|
+
getDeprecatedDirectiveNode(arg.astNode),
|
|
194
|
+
// istanbul ignore next (TODO need to write coverage tests)
|
|
195
|
+
arg.astNode?.type,
|
|
196
|
+
],
|
|
197
|
+
);
|
|
198
|
+
}
|
|
188
199
|
}
|
|
189
200
|
}
|
|
190
201
|
}
|
|
@@ -290,6 +301,17 @@ function validateFields(
|
|
|
290
301
|
arg.astNode?.type,
|
|
291
302
|
);
|
|
292
303
|
}
|
|
304
|
+
|
|
305
|
+
if (isRequiredArgument(arg) && arg.deprecationReason != null) {
|
|
306
|
+
context.reportError(
|
|
307
|
+
`Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,
|
|
308
|
+
[
|
|
309
|
+
getDeprecatedDirectiveNode(arg.astNode),
|
|
310
|
+
// istanbul ignore next (TODO need to write coverage tests)
|
|
311
|
+
arg.astNode?.type,
|
|
312
|
+
],
|
|
313
|
+
);
|
|
314
|
+
}
|
|
293
315
|
}
|
|
294
316
|
}
|
|
295
317
|
}
|
|
@@ -525,12 +547,23 @@ function validateInputFields(
|
|
|
525
547
|
field.astNode?.type,
|
|
526
548
|
);
|
|
527
549
|
}
|
|
550
|
+
|
|
551
|
+
if (isRequiredInputField(field) && field.deprecationReason != null) {
|
|
552
|
+
context.reportError(
|
|
553
|
+
`Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,
|
|
554
|
+
[
|
|
555
|
+
getDeprecatedDirectiveNode(field.astNode),
|
|
556
|
+
// istanbul ignore next (TODO need to write coverage tests)
|
|
557
|
+
field.astNode?.type,
|
|
558
|
+
],
|
|
559
|
+
);
|
|
560
|
+
}
|
|
528
561
|
}
|
|
529
562
|
}
|
|
530
563
|
|
|
531
564
|
function createInputObjectCircularRefsValidator(
|
|
532
565
|
context: SchemaValidationContext,
|
|
533
|
-
) {
|
|
566
|
+
): (GraphQLInputObjectType) => void {
|
|
534
567
|
// Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.
|
|
535
568
|
// Tracks already visited types to maintain O(N) and to ensure that cycles
|
|
536
569
|
// are not redundantly reported.
|
|
@@ -547,7 +580,7 @@ function createInputObjectCircularRefsValidator(
|
|
|
547
580
|
// This does a straight-forward DFS to find cycles.
|
|
548
581
|
// It does not terminate when a cycle was found but continues to explore
|
|
549
582
|
// the graph to find all possible cycles.
|
|
550
|
-
function detectCycleRecursive(inputObj: GraphQLInputObjectType) {
|
|
583
|
+
function detectCycleRecursive(inputObj: GraphQLInputObjectType): void {
|
|
551
584
|
if (visitedTypes[inputObj.name]) {
|
|
552
585
|
return;
|
|
553
586
|
}
|
|
@@ -601,8 +634,12 @@ function getAllSubNodes<T: ASTNode, K: ASTNode, L: ASTNode>(
|
|
|
601
634
|
object: SDLDefinedObject<T, K>,
|
|
602
635
|
getter: (T | K) => ?(L | $ReadOnlyArray<L>),
|
|
603
636
|
): $ReadOnlyArray<L> {
|
|
604
|
-
|
|
605
|
-
|
|
637
|
+
let subNodes = [];
|
|
638
|
+
for (const node of getAllNodes(object)) {
|
|
639
|
+
// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
|
|
640
|
+
subNodes = subNodes.concat(getter(node) ?? []);
|
|
641
|
+
}
|
|
642
|
+
return subNodes;
|
|
606
643
|
}
|
|
607
644
|
|
|
608
645
|
function getAllImplementsInterfaceNodes(
|
|
@@ -622,3 +659,12 @@ function getUnionMemberTypeNodes(
|
|
|
622
659
|
(typeNode) => typeNode.name.value === typeName,
|
|
623
660
|
);
|
|
624
661
|
}
|
|
662
|
+
|
|
663
|
+
function getDeprecatedDirectiveNode(
|
|
664
|
+
definitionNode: ?{ +directives?: $ReadOnlyArray<DirectiveNode>, ... },
|
|
665
|
+
): ?DirectiveNode {
|
|
666
|
+
// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
|
|
667
|
+
return definitionNode?.directives?.find(
|
|
668
|
+
(node) => node.name.value === GraphQLDeprecatedDirective.name,
|
|
669
|
+
);
|
|
670
|
+
}
|
package/type/validate.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import find from "../polyfills/find.mjs";
|
|
2
|
-
import flatMap from "../polyfills/flatMap.mjs";
|
|
3
2
|
import objectValues from "../polyfills/objectValues.mjs";
|
|
4
3
|
import inspect from "../jsutils/inspect.mjs";
|
|
5
4
|
import { GraphQLError } from "../error/GraphQLError.mjs";
|
|
@@ -7,9 +6,9 @@ import { locatedError } from "../error/locatedError.mjs";
|
|
|
7
6
|
import { isValidNameError } from "../utilities/assertValidName.mjs";
|
|
8
7
|
import { isEqualType, isTypeSubTypeOf } from "../utilities/typeComparators.mjs";
|
|
9
8
|
import { assertSchema } from "./schema.mjs";
|
|
10
|
-
import { isDirective } from "./directives.mjs";
|
|
11
9
|
import { isIntrospectionType } from "./introspection.mjs";
|
|
12
|
-
import {
|
|
10
|
+
import { isDirective, GraphQLDeprecatedDirective } from "./directives.mjs";
|
|
11
|
+
import { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isNonNullType, isInputType, isOutputType, isRequiredArgument, isRequiredInputField } from "./definition.mjs";
|
|
13
12
|
/**
|
|
14
13
|
* Implements the "Type Validation" sub-sections of the specification's
|
|
15
14
|
* "Type System" section.
|
|
@@ -144,6 +143,13 @@ function validateDirectives(context) {
|
|
|
144
143
|
if (!isInputType(arg.type)) {
|
|
145
144
|
context.reportError("The type of @".concat(directive.name, "(").concat(arg.name, ":) must be Input Type ") + "but got: ".concat(inspect(arg.type), "."), arg.astNode);
|
|
146
145
|
}
|
|
146
|
+
|
|
147
|
+
if (isRequiredArgument(arg) && arg.deprecationReason != null) {
|
|
148
|
+
var _arg$astNode;
|
|
149
|
+
|
|
150
|
+
context.reportError("Required argument @".concat(directive.name, "(").concat(arg.name, ":) cannot be deprecated."), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)
|
|
151
|
+
(_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type]);
|
|
152
|
+
}
|
|
147
153
|
}
|
|
148
154
|
}
|
|
149
155
|
}
|
|
@@ -226,9 +232,16 @@ function validateFields(context, type) {
|
|
|
226
232
|
validateName(context, arg); // Ensure the type is an input type
|
|
227
233
|
|
|
228
234
|
if (!isInputType(arg.type)) {
|
|
229
|
-
var _arg$
|
|
235
|
+
var _arg$astNode2;
|
|
230
236
|
|
|
231
|
-
context.reportError("The type of ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) must be Input ") + "Type but got: ".concat(inspect(arg.type), "."), (_arg$
|
|
237
|
+
context.reportError("The type of ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) must be Input ") + "Type but got: ".concat(inspect(arg.type), "."), (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 ? void 0 : _arg$astNode2.type);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
if (isRequiredArgument(arg) && arg.deprecationReason != null) {
|
|
241
|
+
var _arg$astNode3;
|
|
242
|
+
|
|
243
|
+
context.reportError("Required argument ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) cannot be deprecated."), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)
|
|
244
|
+
(_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 ? void 0 : _arg$astNode3.type]);
|
|
232
245
|
}
|
|
233
246
|
}
|
|
234
247
|
}
|
|
@@ -409,6 +422,13 @@ function validateInputFields(context, inputObj) {
|
|
|
409
422
|
|
|
410
423
|
context.reportError("The type of ".concat(inputObj.name, ".").concat(field.name, " must be Input Type ") + "but got: ".concat(inspect(field.type), "."), (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 ? void 0 : _field$astNode2.type);
|
|
411
424
|
}
|
|
425
|
+
|
|
426
|
+
if (isRequiredInputField(field) && field.deprecationReason != null) {
|
|
427
|
+
var _field$astNode3;
|
|
428
|
+
|
|
429
|
+
context.reportError("Required input field ".concat(inputObj.name, ".").concat(field.name, " cannot be deprecated."), [getDeprecatedDirectiveNode(field.astNode), // istanbul ignore next (TODO need to write coverage tests)
|
|
430
|
+
(_field$astNode3 = field.astNode) === null || _field$astNode3 === void 0 ? void 0 : _field$astNode3.type]);
|
|
431
|
+
}
|
|
412
432
|
}
|
|
413
433
|
}
|
|
414
434
|
|
|
@@ -469,12 +489,17 @@ function getAllNodes(object) {
|
|
|
469
489
|
}
|
|
470
490
|
|
|
471
491
|
function getAllSubNodes(object, getter) {
|
|
472
|
-
|
|
473
|
-
|
|
492
|
+
var subNodes = [];
|
|
493
|
+
|
|
494
|
+
for (var _i32 = 0, _getAllNodes2 = getAllNodes(object); _i32 < _getAllNodes2.length; _i32++) {
|
|
474
495
|
var _getter;
|
|
475
496
|
|
|
476
|
-
|
|
477
|
-
|
|
497
|
+
var node = _getAllNodes2[_i32];
|
|
498
|
+
// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
|
|
499
|
+
subNodes = subNodes.concat((_getter = getter(node)) !== null && _getter !== void 0 ? _getter : []);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return subNodes;
|
|
478
503
|
}
|
|
479
504
|
|
|
480
505
|
function getAllImplementsInterfaceNodes(type, iface) {
|
|
@@ -492,3 +517,12 @@ function getUnionMemberTypeNodes(union, typeName) {
|
|
|
492
517
|
return typeNode.name.value === typeName;
|
|
493
518
|
});
|
|
494
519
|
}
|
|
520
|
+
|
|
521
|
+
function getDeprecatedDirectiveNode(definitionNode) {
|
|
522
|
+
var _definitionNode$direc;
|
|
523
|
+
|
|
524
|
+
// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
|
|
525
|
+
return definitionNode === null || definitionNode === void 0 ? void 0 : (_definitionNode$direc = definitionNode.directives) === null || _definitionNode$direc === void 0 ? void 0 : _definitionNode$direc.find(function (node) {
|
|
526
|
+
return node.name.value === GraphQLDeprecatedDirective.name;
|
|
527
|
+
});
|
|
528
|
+
}
|
package/utilities/TypeInfo.js
CHANGED
|
@@ -6,19 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.visitWithTypeInfo = visitWithTypeInfo;
|
|
7
7
|
exports.TypeInfo = void 0;
|
|
8
8
|
|
|
9
|
-
var _find = _interopRequireDefault(require("../polyfills/find"));
|
|
9
|
+
var _find = _interopRequireDefault(require("../polyfills/find.js"));
|
|
10
10
|
|
|
11
|
-
var _kinds = require("../language/kinds");
|
|
11
|
+
var _kinds = require("../language/kinds.js");
|
|
12
12
|
|
|
13
|
-
var _ast = require("../language/ast");
|
|
13
|
+
var _ast = require("../language/ast.js");
|
|
14
14
|
|
|
15
|
-
var _visitor = require("../language/visitor");
|
|
15
|
+
var _visitor = require("../language/visitor.js");
|
|
16
16
|
|
|
17
|
-
var _definition = require("../type/definition");
|
|
17
|
+
var _definition = require("../type/definition.js");
|
|
18
18
|
|
|
19
|
-
var _introspection = require("../type/introspection");
|
|
19
|
+
var _introspection = require("../type/introspection.js");
|
|
20
20
|
|
|
21
|
-
var _typeFromAST = require("./typeFromAST");
|
|
21
|
+
var _typeFromAST = require("./typeFromAST.js");
|
|
22
22
|
|
|
23
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
24
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
|
|
3
2
|
import find from '../polyfills/find';
|
|
4
3
|
|
|
5
4
|
import type { Visitor } from '../language/visitor';
|
|
@@ -66,7 +65,7 @@ export class TypeInfo {
|
|
|
66
65
|
// Initial type may be provided in rare cases to facilitate traversals
|
|
67
66
|
// beginning somewhere other than documents.
|
|
68
67
|
initialType?: GraphQLType,
|
|
69
|
-
)
|
|
68
|
+
) {
|
|
70
69
|
this._schema = schema;
|
|
71
70
|
this._typeStack = [];
|
|
72
71
|
this._parentTypeStack = [];
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.assertValidName = assertValidName;
|
|
7
7
|
exports.isValidNameError = isValidNameError;
|
|
8
8
|
|
|
9
|
-
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
|
|
9
|
+
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
|
|
10
10
|
|
|
11
|
-
var _GraphQLError = require("../error/GraphQLError");
|
|
11
|
+
var _GraphQLError = require("../error/GraphQLError.js");
|
|
12
12
|
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
14
|
|
|
@@ -5,25 +5,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.astFromValue = astFromValue;
|
|
7
7
|
|
|
8
|
-
var _isFinite = _interopRequireDefault(require("../polyfills/isFinite"));
|
|
8
|
+
var _isFinite = _interopRequireDefault(require("../polyfills/isFinite.js"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectValues3 = _interopRequireDefault(require("../polyfills/objectValues.js"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _safeArrayFrom = _interopRequireDefault(require("../jsutils/safeArrayFrom.js"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _kinds = require("../language/kinds.js");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _scalars = require("../type/scalars.js");
|
|
23
23
|
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
var _definition = require("../type/definition");
|
|
24
|
+
var _definition = require("../type/definition.js");
|
|
27
25
|
|
|
28
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
27
|
|
|
@@ -75,13 +73,13 @@ function astFromValue(value, type) {
|
|
|
75
73
|
|
|
76
74
|
if ((0, _definition.isListType)(type)) {
|
|
77
75
|
var itemType = type.ofType;
|
|
76
|
+
var items = (0, _safeArrayFrom.default)(value);
|
|
78
77
|
|
|
79
|
-
if (
|
|
80
|
-
var valuesNodes = [];
|
|
81
|
-
// and it's required to first convert iteratable into array
|
|
78
|
+
if (items != null) {
|
|
79
|
+
var valuesNodes = [];
|
|
82
80
|
|
|
83
|
-
for (var _i2 = 0
|
|
84
|
-
var item =
|
|
81
|
+
for (var _i2 = 0; _i2 < items.length; _i2++) {
|
|
82
|
+
var item = items[_i2];
|
|
85
83
|
var itemNode = astFromValue(item, itemType);
|
|
86
84
|
|
|
87
85
|
if (itemNode != null) {
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
|
|
3
2
|
import isFinite from '../polyfills/isFinite';
|
|
4
|
-
import arrayFrom from '../polyfills/arrayFrom';
|
|
5
3
|
import objectValues from '../polyfills/objectValues';
|
|
6
4
|
|
|
7
5
|
import inspect from '../jsutils/inspect';
|
|
8
6
|
import invariant from '../jsutils/invariant';
|
|
9
7
|
import isObjectLike from '../jsutils/isObjectLike';
|
|
10
|
-
import
|
|
8
|
+
import safeArrayFrom from '../jsutils/safeArrayFrom';
|
|
11
9
|
|
|
12
10
|
import type { ValueNode } from '../language/ast';
|
|
13
11
|
import { Kind } from '../language/kinds';
|
|
@@ -66,11 +64,11 @@ export function astFromValue(value: mixed, type: GraphQLInputType): ?ValueNode {
|
|
|
66
64
|
// the value is not an array, convert the value using the list's item type.
|
|
67
65
|
if (isListType(type)) {
|
|
68
66
|
const itemType = type.ofType;
|
|
69
|
-
|
|
67
|
+
|
|
68
|
+
const items = safeArrayFrom(value);
|
|
69
|
+
if (items != null) {
|
|
70
70
|
const valuesNodes = [];
|
|
71
|
-
|
|
72
|
-
// and it's required to first convert iteratable into array
|
|
73
|
-
for (const item of arrayFrom(value)) {
|
|
71
|
+
for (const item of items) {
|
|
74
72
|
const itemNode = astFromValue(item, itemType);
|
|
75
73
|
if (itemNode != null) {
|
|
76
74
|
valuesNodes.push(itemNode);
|
|
@@ -78,6 +76,7 @@ export function astFromValue(value: mixed, type: GraphQLInputType): ?ValueNode {
|
|
|
78
76
|
}
|
|
79
77
|
return { kind: Kind.LIST, values: valuesNodes };
|
|
80
78
|
}
|
|
79
|
+
|
|
81
80
|
return astFromValue(value, itemType);
|
|
82
81
|
}
|
|
83
82
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import isFinite from "../polyfills/isFinite.mjs";
|
|
2
|
-
import arrayFrom from "../polyfills/arrayFrom.mjs";
|
|
3
2
|
import objectValues from "../polyfills/objectValues.mjs";
|
|
4
3
|
import inspect from "../jsutils/inspect.mjs";
|
|
5
4
|
import invariant from "../jsutils/invariant.mjs";
|
|
6
5
|
import isObjectLike from "../jsutils/isObjectLike.mjs";
|
|
7
|
-
import
|
|
6
|
+
import safeArrayFrom from "../jsutils/safeArrayFrom.mjs";
|
|
8
7
|
import { Kind } from "../language/kinds.mjs";
|
|
9
8
|
import { GraphQLID } from "../type/scalars.mjs";
|
|
10
9
|
import { isLeafType, isEnumType, isInputObjectType, isListType, isNonNullType } from "../type/definition.mjs";
|
|
@@ -57,13 +56,13 @@ export function astFromValue(value, type) {
|
|
|
57
56
|
|
|
58
57
|
if (isListType(type)) {
|
|
59
58
|
var itemType = type.ofType;
|
|
59
|
+
var items = safeArrayFrom(value);
|
|
60
60
|
|
|
61
|
-
if (
|
|
62
|
-
var valuesNodes = [];
|
|
63
|
-
// and it's required to first convert iteratable into array
|
|
61
|
+
if (items != null) {
|
|
62
|
+
var valuesNodes = [];
|
|
64
63
|
|
|
65
|
-
for (var _i2 = 0
|
|
66
|
-
var item =
|
|
64
|
+
for (var _i2 = 0; _i2 < items.length; _i2++) {
|
|
65
|
+
var item = items[_i2];
|
|
67
66
|
var itemNode = astFromValue(item, itemType);
|
|
68
67
|
|
|
69
68
|
if (itemNode != null) {
|
|
@@ -6,19 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.buildASTSchema = buildASTSchema;
|
|
7
7
|
exports.buildSchema = buildSchema;
|
|
8
8
|
|
|
9
|
-
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
|
|
9
|
+
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
|
|
10
10
|
|
|
11
|
-
var _kinds = require("../language/kinds");
|
|
11
|
+
var _kinds = require("../language/kinds.js");
|
|
12
12
|
|
|
13
|
-
var _parser = require("../language/parser");
|
|
13
|
+
var _parser = require("../language/parser.js");
|
|
14
14
|
|
|
15
|
-
var _validate = require("../validation/validate");
|
|
15
|
+
var _validate = require("../validation/validate.js");
|
|
16
16
|
|
|
17
|
-
var _schema = require("../type/schema");
|
|
17
|
+
var _schema = require("../type/schema.js");
|
|
18
18
|
|
|
19
|
-
var _directives = require("../type/directives");
|
|
19
|
+
var _directives = require("../type/directives.js");
|
|
20
20
|
|
|
21
|
-
var _extendSchema = require("./extendSchema");
|
|
21
|
+
var _extendSchema = require("./extendSchema.js");
|
|
22
22
|
|
|
23
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
24
|
|
|
@@ -80,28 +80,18 @@ function buildASTSchema(documentAST, options) {
|
|
|
80
80
|
|
|
81
81
|
var directives = config.directives; // If specified directives were not explicitly declared, add them.
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
})) {
|
|
86
|
-
directives.push(_directives.GraphQLSkipDirective);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (!directives.some(function (directive) {
|
|
90
|
-
return directive.name === 'include';
|
|
91
|
-
})) {
|
|
92
|
-
directives.push(_directives.GraphQLIncludeDirective);
|
|
93
|
-
}
|
|
83
|
+
var _loop = function _loop(_i4) {
|
|
84
|
+
var stdDirective = _directives.specifiedDirectives[_i4];
|
|
94
85
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
if (directives.every(function (directive) {
|
|
87
|
+
return directive.name !== stdDirective.name;
|
|
88
|
+
})) {
|
|
89
|
+
directives.push(stdDirective);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
100
92
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
})) {
|
|
104
|
-
directives.push(_directives.GraphQLSpecifiedByDirective);
|
|
93
|
+
for (var _i4 = 0; _i4 < _directives.specifiedDirectives.length; _i4++) {
|
|
94
|
+
_loop(_i4);
|
|
105
95
|
}
|
|
106
96
|
|
|
107
97
|
return new _schema.GraphQLSchema(config);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
|
|
3
2
|
import devAssert from '../jsutils/devAssert';
|
|
4
3
|
|
|
5
4
|
import type { Source } from '../language/source';
|
|
@@ -12,12 +11,7 @@ import { assertValidSDL } from '../validation/validate';
|
|
|
12
11
|
|
|
13
12
|
import type { GraphQLSchemaValidationOptions } from '../type/schema';
|
|
14
13
|
import { GraphQLSchema } from '../type/schema';
|
|
15
|
-
import {
|
|
16
|
-
GraphQLSkipDirective,
|
|
17
|
-
GraphQLIncludeDirective,
|
|
18
|
-
GraphQLDeprecatedDirective,
|
|
19
|
-
GraphQLSpecifiedByDirective,
|
|
20
|
-
} from '../type/directives';
|
|
14
|
+
import { specifiedDirectives } from '../type/directives';
|
|
21
15
|
|
|
22
16
|
import { extendSchemaImpl } from './extendSchema';
|
|
23
17
|
|
|
@@ -102,20 +96,10 @@ export function buildASTSchema(
|
|
|
102
96
|
|
|
103
97
|
const { directives } = config;
|
|
104
98
|
// If specified directives were not explicitly declared, add them.
|
|
105
|
-
|
|
106
|
-
directives.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (!directives.some((directive) => directive.name === 'include')) {
|
|
110
|
-
directives.push(GraphQLIncludeDirective);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (!directives.some((directive) => directive.name === 'deprecated')) {
|
|
114
|
-
directives.push(GraphQLDeprecatedDirective);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
if (!directives.some((directive) => directive.name === 'specifiedBy')) {
|
|
118
|
-
directives.push(GraphQLSpecifiedByDirective);
|
|
99
|
+
for (const stdDirective of specifiedDirectives) {
|
|
100
|
+
if (directives.every((directive) => directive.name !== stdDirective.name)) {
|
|
101
|
+
directives.push(stdDirective);
|
|
102
|
+
}
|
|
119
103
|
}
|
|
120
104
|
|
|
121
105
|
return new GraphQLSchema(config);
|
|
@@ -3,7 +3,7 @@ import { Kind } from "../language/kinds.mjs";
|
|
|
3
3
|
import { parse } from "../language/parser.mjs";
|
|
4
4
|
import { assertValidSDL } from "../validation/validate.mjs";
|
|
5
5
|
import { GraphQLSchema } from "../type/schema.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { specifiedDirectives } from "../type/directives.mjs";
|
|
7
7
|
import { extendSchemaImpl } from "./extendSchema.mjs";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -64,28 +64,18 @@ export function buildASTSchema(documentAST, options) {
|
|
|
64
64
|
|
|
65
65
|
var directives = config.directives; // If specified directives were not explicitly declared, add them.
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
})) {
|
|
70
|
-
directives.push(GraphQLSkipDirective);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (!directives.some(function (directive) {
|
|
74
|
-
return directive.name === 'include';
|
|
75
|
-
})) {
|
|
76
|
-
directives.push(GraphQLIncludeDirective);
|
|
77
|
-
}
|
|
67
|
+
var _loop = function _loop(_i4) {
|
|
68
|
+
var stdDirective = specifiedDirectives[_i4];
|
|
78
69
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
70
|
+
if (directives.every(function (directive) {
|
|
71
|
+
return directive.name !== stdDirective.name;
|
|
72
|
+
})) {
|
|
73
|
+
directives.push(stdDirective);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
84
76
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
})) {
|
|
88
|
-
directives.push(GraphQLSpecifiedByDirective);
|
|
77
|
+
for (var _i4 = 0; _i4 < specifiedDirectives.length; _i4++) {
|
|
78
|
+
_loop(_i4);
|
|
89
79
|
}
|
|
90
80
|
|
|
91
81
|
return new GraphQLSchema(config);
|
|
@@ -5,29 +5,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.buildClientSchema = buildClientSchema;
|
|
7
7
|
|
|
8
|
-
var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
|
|
8
|
+
var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
|
|
9
9
|
|
|
10
|
-
var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
|
|
10
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
|
|
11
11
|
|
|
12
|
-
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
|
|
12
|
+
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
|
|
13
13
|
|
|
14
|
-
var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap"));
|
|
14
|
+
var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
|
|
15
15
|
|
|
16
|
-
var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
|
|
16
|
+
var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
|
|
17
17
|
|
|
18
|
-
var _parser = require("../language/parser");
|
|
18
|
+
var _parser = require("../language/parser.js");
|
|
19
19
|
|
|
20
|
-
var _schema = require("../type/schema");
|
|
20
|
+
var _schema = require("../type/schema.js");
|
|
21
21
|
|
|
22
|
-
var _directives = require("../type/directives");
|
|
22
|
+
var _directives = require("../type/directives.js");
|
|
23
23
|
|
|
24
|
-
var _scalars = require("../type/scalars");
|
|
24
|
+
var _scalars = require("../type/scalars.js");
|
|
25
25
|
|
|
26
|
-
var _introspection = require("../type/introspection");
|
|
26
|
+
var _introspection = require("../type/introspection.js");
|
|
27
27
|
|
|
28
|
-
var _definition = require("../type/definition");
|
|
28
|
+
var _definition = require("../type/definition.js");
|
|
29
29
|
|
|
30
|
-
var _valueFromAST = require("./valueFromAST");
|
|
30
|
+
var _valueFromAST = require("./valueFromAST.js");
|
|
31
31
|
|
|
32
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
33
|
|
|
@@ -89,7 +89,7 @@ function buildClientSchema(introspection, options) {
|
|
|
89
89
|
throw new Error('Decorated type deeper than introspection query.');
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
return
|
|
92
|
+
return new _definition.GraphQLList(getType(itemRef));
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
if (typeRef.kind === _introspection.TypeKind.NON_NULL) {
|
|
@@ -100,7 +100,7 @@ function buildClientSchema(introspection, options) {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
var nullableType = getType(nullableRef);
|
|
103
|
-
return
|
|
103
|
+
return new _definition.GraphQLNonNull((0, _definition.assertNullableType)(nullableType));
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
return getNamedType(typeRef);
|
|
@@ -307,7 +307,8 @@ function buildClientSchema(introspection, options) {
|
|
|
307
307
|
return {
|
|
308
308
|
description: inputValueIntrospection.description,
|
|
309
309
|
type: type,
|
|
310
|
-
defaultValue: defaultValue
|
|
310
|
+
defaultValue: defaultValue,
|
|
311
|
+
deprecationReason: inputValueIntrospection.deprecationReason
|
|
311
312
|
};
|
|
312
313
|
}
|
|
313
314
|
|