graphql 16.13.2 → 16.14.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/error/GraphQLError.d.ts +151 -15
- package/error/GraphQLError.js +143 -12
- package/error/GraphQLError.mjs +143 -12
- package/error/index.d.ts +6 -0
- package/error/index.mjs +6 -0
- package/error/locatedError.d.ts +20 -0
- package/error/locatedError.js +21 -0
- package/error/locatedError.mjs +20 -0
- package/error/syntaxError.d.ts +15 -0
- package/error/syntaxError.js +16 -0
- package/error/syntaxError.mjs +15 -0
- package/execution/collectFields.js +6 -0
- package/execution/collectFields.mjs +6 -0
- package/execution/execute.d.ts +211 -12
- package/execution/execute.js +214 -23
- package/execution/execute.mjs +213 -23
- package/execution/index.d.ts +6 -0
- package/execution/index.mjs +6 -0
- package/execution/mapAsyncIterator.d.ts +2 -0
- package/execution/mapAsyncIterator.js +2 -0
- package/execution/mapAsyncIterator.mjs +2 -0
- package/execution/subscribe.d.ts +195 -5
- package/execution/subscribe.js +154 -11
- package/execution/subscribe.mjs +153 -11
- package/execution/values.d.ts +167 -10
- package/execution/values.js +149 -5
- package/execution/values.mjs +148 -5
- package/graphql.d.ts +163 -41
- package/graphql.js +126 -4
- package/graphql.mjs +131 -41
- package/index.d.ts +12 -17
- package/index.mjs +13 -19
- package/jsutils/Maybe.d.ts +5 -1
- package/jsutils/ObjMap.d.ts +4 -0
- package/jsutils/Path.d.ts +30 -0
- package/jsutils/Path.js +29 -0
- package/jsutils/Path.mjs +29 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +1 -0
- package/jsutils/devAssert.mjs +1 -0
- package/jsutils/didYouMean.d.ts +4 -1
- package/jsutils/didYouMean.js +4 -1
- package/jsutils/didYouMean.mjs +4 -1
- package/jsutils/groupBy.d.ts +2 -0
- package/jsutils/groupBy.js +2 -0
- package/jsutils/groupBy.mjs +2 -0
- package/jsutils/identityFunc.d.ts +2 -0
- package/jsutils/identityFunc.js +2 -0
- package/jsutils/identityFunc.mjs +2 -0
- package/jsutils/inspect.d.ts +2 -0
- package/jsutils/inspect.js +2 -0
- package/jsutils/inspect.mjs +2 -0
- package/jsutils/instanceOf.d.ts +2 -0
- package/jsutils/instanceOf.js +2 -0
- package/jsutils/instanceOf.mjs +2 -0
- package/jsutils/invariant.d.ts +1 -0
- package/jsutils/invariant.js +1 -0
- package/jsutils/invariant.mjs +1 -0
- package/jsutils/isAsyncIterable.d.ts +2 -0
- package/jsutils/isAsyncIterable.js +2 -0
- package/jsutils/isAsyncIterable.mjs +2 -0
- package/jsutils/isIterableObject.d.ts +6 -5
- package/jsutils/isIterableObject.js +6 -5
- package/jsutils/isIterableObject.mjs +6 -5
- package/jsutils/isObjectLike.d.ts +2 -0
- package/jsutils/isObjectLike.js +2 -0
- package/jsutils/isObjectLike.mjs +2 -0
- package/jsutils/isPromise.d.ts +2 -0
- package/jsutils/isPromise.js +2 -0
- package/jsutils/isPromise.mjs +2 -0
- package/jsutils/keyMap.d.ts +7 -14
- package/jsutils/keyMap.js +7 -14
- package/jsutils/keyMap.mjs +7 -14
- package/jsutils/keyValMap.d.ts +9 -6
- package/jsutils/keyValMap.js +9 -6
- package/jsutils/keyValMap.mjs +9 -6
- package/jsutils/mapValue.d.ts +2 -0
- package/jsutils/mapValue.js +2 -0
- package/jsutils/mapValue.mjs +2 -0
- package/jsutils/memoize3.d.ts +2 -0
- package/jsutils/memoize3.js +2 -0
- package/jsutils/memoize3.mjs +2 -0
- package/jsutils/naturalCompare.d.ts +2 -0
- package/jsutils/naturalCompare.js +2 -0
- package/jsutils/naturalCompare.mjs +2 -0
- package/jsutils/printPathArray.d.ts +2 -0
- package/jsutils/printPathArray.js +2 -0
- package/jsutils/printPathArray.mjs +2 -0
- package/jsutils/promiseForObject.d.ts +2 -0
- package/jsutils/promiseForObject.js +2 -0
- package/jsutils/promiseForObject.mjs +2 -0
- package/jsutils/promiseReduce.d.ts +2 -0
- package/jsutils/promiseReduce.js +2 -0
- package/jsutils/promiseReduce.mjs +2 -0
- package/jsutils/suggestionList.d.ts +2 -0
- package/jsutils/suggestionList.js +4 -0
- package/jsutils/suggestionList.mjs +4 -0
- package/jsutils/toError.d.ts +2 -0
- package/jsutils/toError.js +2 -0
- package/jsutils/toError.mjs +2 -0
- package/jsutils/toObjMap.d.ts +1 -0
- package/jsutils/toObjMap.js +1 -0
- package/jsutils/toObjMap.mjs +1 -0
- package/language/ast.d.ts +422 -55
- package/language/ast.js +103 -39
- package/language/ast.mjs +103 -39
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +1 -3
- package/language/blockString.mjs +1 -3
- package/language/directiveLocation.d.ts +29 -8
- package/language/directiveLocation.js +10 -6
- package/language/directiveLocation.mjs +10 -6
- package/language/index.d.ts +7 -0
- package/language/index.mjs +6 -0
- package/language/kinds.d.ts +58 -18
- package/language/kinds.js +10 -6
- package/language/kinds.mjs +10 -6
- package/language/lexer.d.ts +47 -14
- package/language/lexer.js +71 -13
- package/language/lexer.mjs +70 -13
- package/language/location.d.ts +16 -3
- package/language/location.js +14 -3
- package/language/location.mjs +14 -3
- package/language/parser.d.ts +248 -11
- package/language/parser.js +257 -0
- package/language/parser.mjs +257 -3
- package/language/predicates.d.ts +169 -0
- package/language/predicates.js +173 -1
- package/language/predicates.mjs +185 -1
- package/language/printLocation.d.ts +28 -0
- package/language/printLocation.js +29 -0
- package/language/printLocation.mjs +28 -0
- package/language/printString.d.ts +2 -0
- package/language/printString.js +5 -1
- package/language/printString.mjs +5 -1
- package/language/printer.d.ts +12 -0
- package/language/printer.js +32 -1
- package/language/printer.mjs +31 -1
- package/language/schemaCoordinateLexer.d.ts +8 -6
- package/language/schemaCoordinateLexer.js +10 -6
- package/language/schemaCoordinateLexer.mjs +10 -6
- package/language/source.d.ts +28 -0
- package/language/source.js +32 -0
- package/language/source.mjs +31 -0
- package/language/tokenKind.d.ts +30 -3
- package/language/tokenKind.js +8 -3
- package/language/tokenKind.mjs +8 -3
- package/language/visitor.d.ts +200 -72
- package/language/visitor.js +122 -50
- package/language/visitor.mjs +122 -54
- package/package.json +1 -1
- package/subscription/index.d.ts +9 -3
- package/subscription/index.mjs +9 -3
- package/type/assertName.d.ts +18 -1
- package/type/assertName.js +19 -1
- package/type/assertName.mjs +18 -1
- package/type/definition.d.ts +2540 -79
- package/type/definition.js +2214 -61
- package/type/definition.mjs +2241 -60
- package/type/directives.d.ts +202 -19
- package/type/directives.js +206 -20
- package/type/directives.mjs +206 -20
- package/type/index.d.ts +6 -0
- package/type/index.mjs +6 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +57 -1
- package/type/introspection.mjs +65 -1
- package/type/scalars.d.ts +29 -2
- package/type/scalars.js +37 -2
- package/type/scalars.mjs +36 -2
- package/type/schema.d.ts +490 -28
- package/type/schema.js +484 -26
- package/type/schema.mjs +484 -26
- package/type/validate.d.ts +31 -0
- package/type/validate.js +32 -0
- package/type/validate.mjs +31 -0
- package/utilities/TypeInfo.d.ts +441 -1
- package/utilities/TypeInfo.js +444 -1
- package/utilities/TypeInfo.mjs +443 -1
- package/utilities/assertValidName.d.ts +27 -2
- package/utilities/assertValidName.js +28 -2
- package/utilities/assertValidName.mjs +27 -2
- package/utilities/astFromValue.d.ts +33 -3
- package/utilities/astFromValue.js +36 -3
- package/utilities/astFromValue.mjs +35 -3
- package/utilities/buildASTSchema.d.ts +65 -6
- package/utilities/buildASTSchema.js +69 -6
- package/utilities/buildASTSchema.mjs +69 -6
- package/utilities/buildClientSchema.d.ts +15 -0
- package/utilities/buildClientSchema.js +17 -0
- package/utilities/buildClientSchema.mjs +16 -0
- package/utilities/coerceInputValue.d.ts +46 -0
- package/utilities/coerceInputValue.js +47 -0
- package/utilities/coerceInputValue.mjs +46 -0
- package/utilities/concatAST.d.ts +12 -0
- package/utilities/concatAST.js +13 -0
- package/utilities/concatAST.mjs +12 -0
- package/utilities/extendSchema.d.ts +56 -3
- package/utilities/extendSchema.js +121 -6
- package/utilities/extendSchema.mjs +120 -6
- package/utilities/findBreakingChanges.d.ts +95 -0
- package/utilities/findBreakingChanges.js +68 -0
- package/utilities/findBreakingChanges.mjs +70 -0
- package/utilities/getIntrospectionQuery.d.ts +148 -0
- package/utilities/getIntrospectionQuery.js +72 -38
- package/utilities/getIntrospectionQuery.mjs +72 -38
- package/utilities/getOperationAST.d.ts +15 -0
- package/utilities/getOperationAST.js +16 -0
- package/utilities/getOperationAST.mjs +15 -0
- package/utilities/getOperationRootType.d.ts +18 -1
- package/utilities/getOperationRootType.js +19 -1
- package/utilities/getOperationRootType.mjs +18 -1
- package/utilities/index.d.ts +7 -0
- package/utilities/index.mjs +7 -0
- package/utilities/introspectionFromSchema.d.ts +54 -0
- package/utilities/introspectionFromSchema.js +56 -0
- package/utilities/introspectionFromSchema.mjs +55 -0
- package/utilities/lexicographicSortSchema.d.ts +35 -0
- package/utilities/lexicographicSortSchema.js +36 -0
- package/utilities/lexicographicSortSchema.mjs +35 -0
- package/utilities/printSchema.d.ts +63 -0
- package/utilities/printSchema.js +67 -0
- package/utilities/printSchema.mjs +68 -0
- package/utilities/resolveSchemaCoordinate.d.ts +62 -0
- package/utilities/resolveSchemaCoordinate.js +64 -0
- package/utilities/resolveSchemaCoordinate.mjs +63 -0
- package/utilities/separateOperations.d.ts +30 -0
- package/utilities/separateOperations.js +31 -0
- package/utilities/separateOperations.mjs +30 -0
- package/utilities/stripIgnoredCharacters.d.ts +13 -6
- package/utilities/stripIgnoredCharacters.js +16 -6
- package/utilities/stripIgnoredCharacters.mjs +15 -6
- package/utilities/typeComparators.d.ts +84 -0
- package/utilities/typeComparators.js +85 -0
- package/utilities/typeComparators.mjs +84 -0
- package/utilities/typeFromAST.d.ts +86 -0
- package/utilities/typeFromAST.js +3 -0
- package/utilities/typeFromAST.mjs +3 -0
- package/utilities/typedQueryDocumentNode.d.ts +4 -0
- package/utilities/valueFromAST.d.ts +38 -0
- package/utilities/valueFromAST.js +51 -2
- package/utilities/valueFromAST.mjs +50 -2
- package/utilities/valueFromASTUntyped.d.ts +15 -2
- package/utilities/valueFromASTUntyped.js +16 -2
- package/utilities/valueFromASTUntyped.mjs +15 -2
- package/validation/ValidationContext.d.ts +399 -0
- package/validation/ValidationContext.js +400 -0
- package/validation/ValidationContext.mjs +401 -0
- package/validation/index.d.ts +6 -0
- package/validation/index.mjs +6 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
- package/validation/rules/ExecutableDefinitionsRule.js +29 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +33 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +32 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +29 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +28 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
- package/validation/rules/KnownArgumentNamesRule.js +30 -3
- package/validation/rules/KnownArgumentNamesRule.mjs +29 -3
- package/validation/rules/KnownDirectivesRule.d.ts +28 -0
- package/validation/rules/KnownDirectivesRule.js +33 -0
- package/validation/rules/KnownDirectivesRule.mjs +32 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
- package/validation/rules/KnownFragmentNamesRule.js +29 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +28 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
- package/validation/rules/KnownTypeNamesRule.js +29 -0
- package/validation/rules/KnownTypeNamesRule.mjs +28 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
- package/validation/rules/LoneAnonymousOperationRule.js +29 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +28 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +22 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +21 -0
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
- package/validation/rules/MaxIntrospectionDepthRule.js +33 -0
- package/validation/rules/MaxIntrospectionDepthRule.mjs +34 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
- package/validation/rules/NoFragmentCyclesRule.js +29 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +28 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
- package/validation/rules/NoUndefinedVariablesRule.js +29 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +28 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
- package/validation/rules/NoUnusedFragmentsRule.js +29 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +28 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
- package/validation/rules/NoUnusedVariablesRule.js +30 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +29 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +45 -6
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +45 -6
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +37 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +36 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +22 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +21 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.js +30 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +29 -3
- package/validation/rules/ScalarLeafsRule.d.ts +28 -0
- package/validation/rules/ScalarLeafsRule.js +29 -0
- package/validation/rules/ScalarLeafsRule.mjs +28 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +33 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +34 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +33 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueArgumentNamesRule.js +29 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +28 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +22 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +21 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +41 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +40 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +22 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueFragmentNamesRule.js +29 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +28 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +33 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +32 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
- package/validation/rules/UniqueOperationNamesRule.js +29 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +28 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
- package/validation/rules/UniqueOperationTypesRule.js +22 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +21 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
- package/validation/rules/UniqueTypeNamesRule.js +22 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +21 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
- package/validation/rules/UniqueVariableNamesRule.js +29 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +31 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +30 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
- package/validation/rules/VariablesAreInputTypesRule.js +33 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +32 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +35 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs +34 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +42 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +41 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +29 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +28 -0
- package/validation/specifiedRules.d.ts +2 -3
- package/validation/specifiedRules.js +2 -3
- package/validation/specifiedRules.mjs +2 -3
- package/validation/validate.d.ts +70 -9
- package/validation/validate.js +63 -7
- package/validation/validate.mjs +63 -7
- package/version.d.ts +3 -6
- package/version.js +7 -9
- package/version.mjs +6 -9
|
@@ -25,8 +25,55 @@ var _GraphQLError = require('../error/GraphQLError.js');
|
|
|
25
25
|
|
|
26
26
|
var _definition = require('../type/definition.js');
|
|
27
27
|
|
|
28
|
+
/** @category Values */
|
|
29
|
+
|
|
28
30
|
/**
|
|
29
31
|
* Coerces a JavaScript value given a GraphQL Input Type.
|
|
32
|
+
* @param inputValue - JavaScript value to coerce.
|
|
33
|
+
* @param type - GraphQL input type to coerce the value against.
|
|
34
|
+
* @param onError - Callback invoked for each coercion error.
|
|
35
|
+
* @returns Coerced value, or undefined if coercion failed and errors were reported.
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* // Coerce runtime input values and throw on invalid input by default.
|
|
39
|
+
* import {
|
|
40
|
+
* GraphQLInputObjectType,
|
|
41
|
+
* GraphQLInt,
|
|
42
|
+
* GraphQLList,
|
|
43
|
+
* GraphQLNonNull,
|
|
44
|
+
* GraphQLString,
|
|
45
|
+
* } from 'graphql/type';
|
|
46
|
+
* import { coerceInputValue } from 'graphql/utilities';
|
|
47
|
+
*
|
|
48
|
+
* const ReviewInput = new GraphQLInputObjectType({
|
|
49
|
+
* name: 'ReviewInput',
|
|
50
|
+
* fields: {
|
|
51
|
+
* stars: { type: new GraphQLNonNull(GraphQLInt) },
|
|
52
|
+
* tags: { type: new GraphQLList(GraphQLString) },
|
|
53
|
+
* },
|
|
54
|
+
* });
|
|
55
|
+
*
|
|
56
|
+
* coerceInputValue({ stars: '5', tags: ['featured'] }, ReviewInput); // => { stars: 5, tags: ['featured'] }
|
|
57
|
+
* coerceInputValue({ stars: 'bad' }, ReviewInput); // throws an error
|
|
58
|
+
* ```
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* // This variant collects coercion errors with a custom onError callback.
|
|
62
|
+
* import { GraphQLInt, GraphQLNonNull } from 'graphql/type';
|
|
63
|
+
* import { coerceInputValue } from 'graphql/utilities';
|
|
64
|
+
*
|
|
65
|
+
* const errors = [];
|
|
66
|
+
* const value = coerceInputValue(
|
|
67
|
+
* null,
|
|
68
|
+
* new GraphQLNonNull(GraphQLInt),
|
|
69
|
+
* (path, invalidValue, error) => {
|
|
70
|
+
* errors.push({ path, invalidValue, message: error.message });
|
|
71
|
+
* },
|
|
72
|
+
* );
|
|
73
|
+
*
|
|
74
|
+
* value; // => undefined
|
|
75
|
+
* errors; // => [ { path: [], invalidValue: null, message: 'Expected non-nullable type "Int!" not to be null.' } ]
|
|
76
|
+
* ```
|
|
30
77
|
*/
|
|
31
78
|
function coerceInputValue(inputValue, type, onError = defaultOnError) {
|
|
32
79
|
return coerceInputValueImpl(inputValue, type, onError, undefined);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Values */
|
|
1
2
|
import { didYouMean } from '../jsutils/didYouMean.mjs';
|
|
2
3
|
import { inspect } from '../jsutils/inspect.mjs';
|
|
3
4
|
import { invariant } from '../jsutils/invariant.mjs';
|
|
@@ -16,6 +17,51 @@ import {
|
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* Coerces a JavaScript value given a GraphQL Input Type.
|
|
20
|
+
* @param inputValue - JavaScript value to coerce.
|
|
21
|
+
* @param type - GraphQL input type to coerce the value against.
|
|
22
|
+
* @param onError - Callback invoked for each coercion error.
|
|
23
|
+
* @returns Coerced value, or undefined if coercion failed and errors were reported.
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* // Coerce runtime input values and throw on invalid input by default.
|
|
27
|
+
* import {
|
|
28
|
+
* GraphQLInputObjectType,
|
|
29
|
+
* GraphQLInt,
|
|
30
|
+
* GraphQLList,
|
|
31
|
+
* GraphQLNonNull,
|
|
32
|
+
* GraphQLString,
|
|
33
|
+
* } from 'graphql/type';
|
|
34
|
+
* import { coerceInputValue } from 'graphql/utilities';
|
|
35
|
+
*
|
|
36
|
+
* const ReviewInput = new GraphQLInputObjectType({
|
|
37
|
+
* name: 'ReviewInput',
|
|
38
|
+
* fields: {
|
|
39
|
+
* stars: { type: new GraphQLNonNull(GraphQLInt) },
|
|
40
|
+
* tags: { type: new GraphQLList(GraphQLString) },
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* coerceInputValue({ stars: '5', tags: ['featured'] }, ReviewInput); // => { stars: 5, tags: ['featured'] }
|
|
45
|
+
* coerceInputValue({ stars: 'bad' }, ReviewInput); // throws an error
|
|
46
|
+
* ```
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* // This variant collects coercion errors with a custom onError callback.
|
|
50
|
+
* import { GraphQLInt, GraphQLNonNull } from 'graphql/type';
|
|
51
|
+
* import { coerceInputValue } from 'graphql/utilities';
|
|
52
|
+
*
|
|
53
|
+
* const errors = [];
|
|
54
|
+
* const value = coerceInputValue(
|
|
55
|
+
* null,
|
|
56
|
+
* new GraphQLNonNull(GraphQLInt),
|
|
57
|
+
* (path, invalidValue, error) => {
|
|
58
|
+
* errors.push({ path, invalidValue, message: error.message });
|
|
59
|
+
* },
|
|
60
|
+
* );
|
|
61
|
+
*
|
|
62
|
+
* value; // => undefined
|
|
63
|
+
* errors; // => [ { path: [], invalidValue: null, message: 'Expected non-nullable type "Int!" not to be null.' } ]
|
|
64
|
+
* ```
|
|
19
65
|
*/
|
|
20
66
|
export function coerceInputValue(inputValue, type, onError = defaultOnError) {
|
|
21
67
|
return coerceInputValueImpl(inputValue, type, onError, undefined);
|
package/utilities/concatAST.d.ts
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
/** @category AST Utilities */
|
|
1
2
|
import type { DocumentNode } from '../language/ast';
|
|
2
3
|
/**
|
|
3
4
|
* Provided a collection of ASTs, presumably each from different files,
|
|
4
5
|
* concatenate the ASTs together into batched AST, useful for validating many
|
|
5
6
|
* GraphQL source files which together represent one conceptual application.
|
|
7
|
+
* @param documents - Document ASTs to concatenate.
|
|
8
|
+
* @returns A document AST containing all definitions from the provided documents.
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { parse } from 'graphql/language';
|
|
12
|
+
* import { concatAST } from 'graphql/utilities';
|
|
13
|
+
*
|
|
14
|
+
* const document = concatAST([parse('type Query { a: String }'), parse('type User { id: ID }')]);
|
|
15
|
+
*
|
|
16
|
+
* document.definitions.length; // => 2
|
|
17
|
+
* ```
|
|
6
18
|
*/
|
|
7
19
|
export declare function concatAST(
|
|
8
20
|
documents: ReadonlyArray<DocumentNode>,
|
package/utilities/concatAST.js
CHANGED
|
@@ -7,10 +7,23 @@ exports.concatAST = concatAST;
|
|
|
7
7
|
|
|
8
8
|
var _kinds = require('../language/kinds.js');
|
|
9
9
|
|
|
10
|
+
/** @category AST Utilities */
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* Provided a collection of ASTs, presumably each from different files,
|
|
12
14
|
* concatenate the ASTs together into batched AST, useful for validating many
|
|
13
15
|
* GraphQL source files which together represent one conceptual application.
|
|
16
|
+
* @param documents - Document ASTs to concatenate.
|
|
17
|
+
* @returns A document AST containing all definitions from the provided documents.
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { parse } from 'graphql/language';
|
|
21
|
+
* import { concatAST } from 'graphql/utilities';
|
|
22
|
+
*
|
|
23
|
+
* const document = concatAST([parse('type Query { a: String }'), parse('type User { id: ID }')]);
|
|
24
|
+
*
|
|
25
|
+
* document.definitions.length; // => 2
|
|
26
|
+
* ```
|
|
14
27
|
*/
|
|
15
28
|
function concatAST(documents) {
|
|
16
29
|
const definitions = [];
|
package/utilities/concatAST.mjs
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
/** @category AST Utilities */
|
|
1
2
|
import { Kind } from '../language/kinds.mjs';
|
|
2
3
|
/**
|
|
3
4
|
* Provided a collection of ASTs, presumably each from different files,
|
|
4
5
|
* concatenate the ASTs together into batched AST, useful for validating many
|
|
5
6
|
* GraphQL source files which together represent one conceptual application.
|
|
7
|
+
* @param documents - Document ASTs to concatenate.
|
|
8
|
+
* @returns A document AST containing all definitions from the provided documents.
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { parse } from 'graphql/language';
|
|
12
|
+
* import { concatAST } from 'graphql/utilities';
|
|
13
|
+
*
|
|
14
|
+
* const document = concatAST([parse('type Query { a: String }'), parse('type User { id: ID }')]);
|
|
15
|
+
*
|
|
16
|
+
* document.definitions.length; // => 2
|
|
17
|
+
* ```
|
|
6
18
|
*/
|
|
7
19
|
|
|
8
20
|
export function concatAST(documents) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Schema Construction */
|
|
1
2
|
import type { DocumentNode } from '../language/ast';
|
|
2
3
|
import type {
|
|
3
4
|
GraphQLSchemaNormalizedConfig,
|
|
@@ -23,15 +24,67 @@ interface Options extends GraphQLSchemaValidationOptions {
|
|
|
23
24
|
*
|
|
24
25
|
* This algorithm copies the provided schema, applying extensions while
|
|
25
26
|
* producing the copy. The original schema remains unaltered.
|
|
27
|
+
* @param schema - GraphQL schema to use.
|
|
28
|
+
* @param documentAST - The parsed GraphQL document AST.
|
|
29
|
+
* @param options - Optional configuration for this operation.
|
|
30
|
+
* @returns A new schema with the extensions and definitions applied.
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* // Extend a schema with new fields and types.
|
|
34
|
+
* import { parse } from 'graphql/language';
|
|
35
|
+
* import { buildSchema, extendSchema } from 'graphql/utilities';
|
|
36
|
+
*
|
|
37
|
+
* const schema = buildSchema(`
|
|
38
|
+
* type Query {
|
|
39
|
+
* greeting: String
|
|
40
|
+
* }
|
|
41
|
+
* `);
|
|
42
|
+
* const extensionAST = parse(`
|
|
43
|
+
* extend type Query {
|
|
44
|
+
* farewell: String
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* type Review {
|
|
48
|
+
* body: String
|
|
49
|
+
* }
|
|
50
|
+
* `);
|
|
51
|
+
*
|
|
52
|
+
* const extendedSchema = extendSchema(schema, extensionAST);
|
|
53
|
+
*
|
|
54
|
+
* schema.getType('Review'); // => undefined
|
|
55
|
+
* extendedSchema.getType('Review')?.name; // => 'Review'
|
|
56
|
+
* Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']
|
|
57
|
+
* ```
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* // This variant bypasses validation for an otherwise invalid extension.
|
|
61
|
+
* import { parse } from 'graphql/language';
|
|
62
|
+
* import { buildSchema, extendSchema } from 'graphql/utilities';
|
|
63
|
+
*
|
|
64
|
+
* const schema = buildSchema(`
|
|
65
|
+
* type Query {
|
|
66
|
+
* greeting: String
|
|
67
|
+
* }
|
|
68
|
+
* `);
|
|
69
|
+
* const invalidExtension = parse(`
|
|
70
|
+
* extend type Missing {
|
|
71
|
+
* field: String
|
|
72
|
+
* }
|
|
73
|
+
* `);
|
|
74
|
+
*
|
|
75
|
+
* extendSchema(schema, invalidExtension); // throws an error
|
|
76
|
+
* extendSchema(schema, invalidExtension, {
|
|
77
|
+
* assumeValid: true,
|
|
78
|
+
* assumeValidSDL: true,
|
|
79
|
+
* }); // does not throw
|
|
80
|
+
* ```
|
|
26
81
|
*/
|
|
27
82
|
export declare function extendSchema(
|
|
28
83
|
schema: GraphQLSchema,
|
|
29
84
|
documentAST: DocumentNode,
|
|
30
85
|
options?: Options,
|
|
31
86
|
): GraphQLSchema;
|
|
32
|
-
/**
|
|
33
|
-
* @internal
|
|
34
|
-
*/
|
|
87
|
+
/** @internal */
|
|
35
88
|
export declare function extendSchemaImpl(
|
|
36
89
|
schemaConfig: GraphQLSchemaNormalizedConfig,
|
|
37
90
|
documentAST: DocumentNode,
|
|
@@ -36,6 +36,8 @@ var _values = require('../execution/values.js');
|
|
|
36
36
|
|
|
37
37
|
var _valueFromAST = require('./valueFromAST.js');
|
|
38
38
|
|
|
39
|
+
/** @category Schema Construction */
|
|
40
|
+
|
|
39
41
|
/**
|
|
40
42
|
* Produces a new schema given an existing schema and a document which may
|
|
41
43
|
* contain GraphQL type extensions and definitions. The original schema will
|
|
@@ -47,6 +49,60 @@ var _valueFromAST = require('./valueFromAST.js');
|
|
|
47
49
|
*
|
|
48
50
|
* This algorithm copies the provided schema, applying extensions while
|
|
49
51
|
* producing the copy. The original schema remains unaltered.
|
|
52
|
+
* @param schema - GraphQL schema to use.
|
|
53
|
+
* @param documentAST - The parsed GraphQL document AST.
|
|
54
|
+
* @param options - Optional configuration for this operation.
|
|
55
|
+
* @returns A new schema with the extensions and definitions applied.
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* // Extend a schema with new fields and types.
|
|
59
|
+
* import { parse } from 'graphql/language';
|
|
60
|
+
* import { buildSchema, extendSchema } from 'graphql/utilities';
|
|
61
|
+
*
|
|
62
|
+
* const schema = buildSchema(`
|
|
63
|
+
* type Query {
|
|
64
|
+
* greeting: String
|
|
65
|
+
* }
|
|
66
|
+
* `);
|
|
67
|
+
* const extensionAST = parse(`
|
|
68
|
+
* extend type Query {
|
|
69
|
+
* farewell: String
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* type Review {
|
|
73
|
+
* body: String
|
|
74
|
+
* }
|
|
75
|
+
* `);
|
|
76
|
+
*
|
|
77
|
+
* const extendedSchema = extendSchema(schema, extensionAST);
|
|
78
|
+
*
|
|
79
|
+
* schema.getType('Review'); // => undefined
|
|
80
|
+
* extendedSchema.getType('Review')?.name; // => 'Review'
|
|
81
|
+
* Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']
|
|
82
|
+
* ```
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* // This variant bypasses validation for an otherwise invalid extension.
|
|
86
|
+
* import { parse } from 'graphql/language';
|
|
87
|
+
* import { buildSchema, extendSchema } from 'graphql/utilities';
|
|
88
|
+
*
|
|
89
|
+
* const schema = buildSchema(`
|
|
90
|
+
* type Query {
|
|
91
|
+
* greeting: String
|
|
92
|
+
* }
|
|
93
|
+
* `);
|
|
94
|
+
* const invalidExtension = parse(`
|
|
95
|
+
* extend type Missing {
|
|
96
|
+
* field: String
|
|
97
|
+
* }
|
|
98
|
+
* `);
|
|
99
|
+
*
|
|
100
|
+
* extendSchema(schema, invalidExtension); // throws an error
|
|
101
|
+
* extendSchema(schema, invalidExtension, {
|
|
102
|
+
* assumeValid: true,
|
|
103
|
+
* assumeValidSDL: true,
|
|
104
|
+
* }); // does not throw
|
|
105
|
+
* ```
|
|
50
106
|
*/
|
|
51
107
|
function extendSchema(schema, documentAST, options) {
|
|
52
108
|
(0, _schema.assertSchema)(schema);
|
|
@@ -69,16 +125,15 @@ function extendSchema(schema, documentAST, options) {
|
|
|
69
125
|
? schema
|
|
70
126
|
: new _schema.GraphQLSchema(extendedConfig);
|
|
71
127
|
}
|
|
72
|
-
/**
|
|
73
|
-
* @internal
|
|
74
|
-
*/
|
|
128
|
+
/** @internal */
|
|
75
129
|
|
|
76
130
|
function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
77
131
|
var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;
|
|
78
132
|
|
|
79
133
|
// Collect the type definitions and extensions found in the document.
|
|
80
134
|
const typeDefs = [];
|
|
81
|
-
const typeExtensionsMap = Object.create(null);
|
|
135
|
+
const typeExtensionsMap = Object.create(null);
|
|
136
|
+
const directiveExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can
|
|
82
137
|
// have the same name. For example, a type named "skip".
|
|
83
138
|
|
|
84
139
|
const directiveDefs = [];
|
|
@@ -101,6 +156,14 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
101
156
|
: [def];
|
|
102
157
|
} else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {
|
|
103
158
|
directiveDefs.push(def);
|
|
159
|
+
} else if (def.kind === _kinds.Kind.DIRECTIVE_EXTENSION) {
|
|
160
|
+
const extendedDirectiveName = def.name.value;
|
|
161
|
+
const existingDirectiveExtensions =
|
|
162
|
+
directiveExtensionsMap[extendedDirectiveName];
|
|
163
|
+
directiveExtensionsMap[extendedDirectiveName] =
|
|
164
|
+
existingDirectiveExtensions
|
|
165
|
+
? existingDirectiveExtensions.concat([def])
|
|
166
|
+
: [def];
|
|
104
167
|
}
|
|
105
168
|
} // If this document contains no new types, extensions, or directives then
|
|
106
169
|
// return the same unmodified GraphQLSchema instance.
|
|
@@ -108,6 +171,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
108
171
|
if (
|
|
109
172
|
Object.keys(typeExtensionsMap).length === 0 &&
|
|
110
173
|
typeDefs.length === 0 &&
|
|
174
|
+
Object.keys(directiveExtensionsMap).length === 0 &&
|
|
111
175
|
directiveDefs.length === 0 &&
|
|
112
176
|
schemaExtensions.length === 0 &&
|
|
113
177
|
schemaDef == null
|
|
@@ -132,6 +196,12 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
132
196
|
: buildType(typeNode);
|
|
133
197
|
}
|
|
134
198
|
|
|
199
|
+
const directiveMap = Object.create(null);
|
|
200
|
+
|
|
201
|
+
for (const existingDirective of schemaConfig.directives) {
|
|
202
|
+
directiveMap[existingDirective.name] = extendDirective(existingDirective);
|
|
203
|
+
}
|
|
204
|
+
|
|
135
205
|
const operationTypes = {
|
|
136
206
|
// Get the extended root operation types.
|
|
137
207
|
query: schemaConfig.query && replaceNamedType(schemaConfig.query),
|
|
@@ -143,6 +213,8 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
143
213
|
...getOperationTypes(schemaExtensions),
|
|
144
214
|
}; // Then produce and return a Schema config with these types.
|
|
145
215
|
|
|
216
|
+
const directives = Object.values(directiveMap); // will be `Array<GraphQLDirective>`
|
|
217
|
+
|
|
146
218
|
return {
|
|
147
219
|
description:
|
|
148
220
|
(_schemaDef = schemaDef) === null || _schemaDef === void 0
|
|
@@ -154,7 +226,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
154
226
|
...operationTypes,
|
|
155
227
|
types: Object.values(typeMap),
|
|
156
228
|
directives: [
|
|
157
|
-
...
|
|
229
|
+
...directives.map(replaceDirective),
|
|
158
230
|
...directiveDefs.map(buildDirective),
|
|
159
231
|
],
|
|
160
232
|
extensions: Object.create(null),
|
|
@@ -413,6 +485,29 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
413
485
|
return opTypes;
|
|
414
486
|
}
|
|
415
487
|
|
|
488
|
+
function extendDirective(directive) {
|
|
489
|
+
var _directiveExtensionsM, _config$deprecationRe;
|
|
490
|
+
|
|
491
|
+
const config = directive.toConfig();
|
|
492
|
+
const extensions =
|
|
493
|
+
(_directiveExtensionsM = directiveExtensionsMap[config.name]) !== null &&
|
|
494
|
+
_directiveExtensionsM !== void 0
|
|
495
|
+
? _directiveExtensionsM
|
|
496
|
+
: [];
|
|
497
|
+
const deprecationReason =
|
|
498
|
+
(_config$deprecationRe = config.deprecationReason) !== null &&
|
|
499
|
+
_config$deprecationRe !== void 0
|
|
500
|
+
? _config$deprecationRe
|
|
501
|
+
: extensions
|
|
502
|
+
.map((ext) => getDeprecationReason(ext))
|
|
503
|
+
.find((reason) => reason != null);
|
|
504
|
+
return new _directives.GraphQLDirective({
|
|
505
|
+
...config,
|
|
506
|
+
deprecationReason,
|
|
507
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
|
|
416
511
|
function getNamedType(node) {
|
|
417
512
|
var _stdTypeMap$name2;
|
|
418
513
|
|
|
@@ -443,8 +538,20 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
443
538
|
}
|
|
444
539
|
|
|
445
540
|
function buildDirective(node) {
|
|
446
|
-
var _node$description;
|
|
541
|
+
var _directiveExtensionsM2, _getDeprecationReason, _node$description;
|
|
447
542
|
|
|
543
|
+
const extensions =
|
|
544
|
+
(_directiveExtensionsM2 = directiveExtensionsMap[node.name.value]) !==
|
|
545
|
+
null && _directiveExtensionsM2 !== void 0
|
|
546
|
+
? _directiveExtensionsM2
|
|
547
|
+
: [];
|
|
548
|
+
const deprecationReason =
|
|
549
|
+
(_getDeprecationReason = getDeprecationReason(node)) !== null &&
|
|
550
|
+
_getDeprecationReason !== void 0
|
|
551
|
+
? _getDeprecationReason
|
|
552
|
+
: extensions
|
|
553
|
+
.map((ext) => getDeprecationReason(ext))
|
|
554
|
+
.find((reason) => reason != null);
|
|
448
555
|
return new _directives.GraphQLDirective({
|
|
449
556
|
name: node.name.value,
|
|
450
557
|
description:
|
|
@@ -456,7 +563,9 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
|
456
563
|
locations: node.locations.map(({ value }) => value),
|
|
457
564
|
isRepeatable: node.repeatable,
|
|
458
565
|
args: buildArgumentMap(node.arguments),
|
|
566
|
+
deprecationReason,
|
|
459
567
|
astNode: node,
|
|
568
|
+
extensionASTNodes: extensions,
|
|
460
569
|
});
|
|
461
570
|
}
|
|
462
571
|
|
|
@@ -771,6 +880,8 @@ const stdTypeMap = (0, _keyMap.keyMap)(
|
|
|
771
880
|
/**
|
|
772
881
|
* Given a field or enum value node, returns the string value for the
|
|
773
882
|
* deprecation reason.
|
|
883
|
+
*
|
|
884
|
+
* @internal
|
|
774
885
|
*/
|
|
775
886
|
|
|
776
887
|
function getDeprecationReason(node) {
|
|
@@ -785,6 +896,8 @@ function getDeprecationReason(node) {
|
|
|
785
896
|
}
|
|
786
897
|
/**
|
|
787
898
|
* Given a scalar node, returns the string value for the specifiedByURL.
|
|
899
|
+
*
|
|
900
|
+
* @internal
|
|
788
901
|
*/
|
|
789
902
|
|
|
790
903
|
function getSpecifiedByURL(node) {
|
|
@@ -799,6 +912,8 @@ function getSpecifiedByURL(node) {
|
|
|
799
912
|
}
|
|
800
913
|
/**
|
|
801
914
|
* Given an input object node, returns if the node should be OneOf.
|
|
915
|
+
*
|
|
916
|
+
* @internal
|
|
802
917
|
*/
|
|
803
918
|
|
|
804
919
|
function isOneOf(node) {
|