graphql 16.14.0 → 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 +11 -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 +412 -54
- package/language/ast.js +95 -38
- package/language/ast.mjs +95 -38
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +1 -3
- package/language/blockString.mjs +1 -3
- package/language/directiveLocation.d.ts +28 -8
- package/language/directiveLocation.js +9 -6
- package/language/directiveLocation.mjs +9 -6
- package/language/index.d.ts +6 -0
- package/language/index.mjs +6 -0
- package/language/kinds.d.ts +57 -18
- package/language/kinds.js +9 -6
- package/language/kinds.mjs +9 -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 +236 -13
- package/language/parser.js +224 -0
- package/language/parser.mjs +224 -3
- package/language/predicates.d.ts +169 -0
- package/language/predicates.js +170 -0
- package/language/predicates.mjs +180 -0
- 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 +19 -0
- package/language/printer.mjs +18 -0
- 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 +193 -18
- package/type/directives.js +196 -19
- package/type/directives.mjs +196 -19
- package/type/index.d.ts +6 -0
- package/type/index.mjs +6 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +33 -0
- package/type/introspection.mjs +41 -0
- 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 +65 -6
- package/utilities/buildASTSchema.mjs +65 -6
- package/utilities/buildClientSchema.d.ts +15 -0
- package/utilities/buildClientSchema.js +16 -0
- package/utilities/buildClientSchema.mjs +15 -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 +63 -3
- package/utilities/extendSchema.mjs +62 -3
- package/utilities/findBreakingChanges.d.ts +95 -0
- package/utilities/findBreakingChanges.js +68 -0
- package/utilities/findBreakingChanges.mjs +70 -0
- package/utilities/getIntrospectionQuery.d.ts +132 -0
- package/utilities/getIntrospectionQuery.js +41 -0
- package/utilities/getIntrospectionQuery.mjs +41 -0
- 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 +55 -0
- package/utilities/introspectionFromSchema.mjs +54 -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 +66 -0
- package/utilities/printSchema.mjs +67 -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 +39 -0
- package/utilities/valueFromAST.mjs +38 -0
- 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 +29 -0
- package/validation/rules/KnownDirectivesRule.mjs +28 -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 +29 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +28 -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 +6 -8
- package/version.mjs +5 -8
package/execution/values.js
CHANGED
|
@@ -27,14 +27,82 @@ var _typeFromAST = require('../utilities/typeFromAST.js');
|
|
|
27
27
|
|
|
28
28
|
var _valueFromAST = require('../utilities/valueFromAST.js');
|
|
29
29
|
|
|
30
|
+
/** @category Values */
|
|
31
|
+
|
|
30
32
|
/**
|
|
31
33
|
* Prepares an object map of variableValues of the correct type based on the
|
|
32
34
|
* provided variable definitions and arbitrary input. If the input cannot be
|
|
33
|
-
* parsed to match the variable definitions,
|
|
35
|
+
* parsed to match the variable definitions, GraphQLError values are returned.
|
|
34
36
|
*
|
|
35
|
-
* Note:
|
|
37
|
+
* Note: Returned value is a plain Object with a prototype, since it is
|
|
36
38
|
* exposed to user code. Care should be taken to not pull values from the
|
|
37
39
|
* Object prototype.
|
|
40
|
+
* @param schema - GraphQL schema to use.
|
|
41
|
+
* @param varDefNodes - The variable definition AST nodes to coerce.
|
|
42
|
+
* @param inputs - The runtime variable values keyed by variable name.
|
|
43
|
+
* @param options - Optional variable coercion options, including error limits.
|
|
44
|
+
* @returns Coerced variable values, or request errors.
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* // Coerce provided variables and apply operation defaults.
|
|
48
|
+
* import { parse } from 'graphql/language';
|
|
49
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
50
|
+
* import { getVariableValues } from 'graphql/execution';
|
|
51
|
+
*
|
|
52
|
+
* const schema = buildSchema(`
|
|
53
|
+
* type Query {
|
|
54
|
+
* reviews(stars: Int!, limit: Int = 10): [String]
|
|
55
|
+
* }
|
|
56
|
+
* `);
|
|
57
|
+
* const document = parse(`
|
|
58
|
+
* query ($stars: Int!, $limit: Int = 10) {
|
|
59
|
+
* reviews(stars: $stars, limit: $limit)
|
|
60
|
+
* }
|
|
61
|
+
* `);
|
|
62
|
+
* const operation = document.definitions[0];
|
|
63
|
+
*
|
|
64
|
+
* const result = getVariableValues(
|
|
65
|
+
* schema,
|
|
66
|
+
* operation.variableDefinitions,
|
|
67
|
+
* { stars: '5' },
|
|
68
|
+
* );
|
|
69
|
+
*
|
|
70
|
+
* result; // => { coerced: { stars: 5, limit: 10 } }
|
|
71
|
+
* ```
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* // This variant uses maxErrors to cap reported coercion errors.
|
|
75
|
+
* import { parse } from 'graphql/language';
|
|
76
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
77
|
+
* import { getVariableValues } from 'graphql/execution';
|
|
78
|
+
*
|
|
79
|
+
* const schema = buildSchema(`
|
|
80
|
+
* input ReviewInput {
|
|
81
|
+
* stars: Int!
|
|
82
|
+
* }
|
|
83
|
+
*
|
|
84
|
+
* type Query {
|
|
85
|
+
* review(input: ReviewInput!): String
|
|
86
|
+
* }
|
|
87
|
+
* `);
|
|
88
|
+
* const document = parse(`
|
|
89
|
+
* query ($first: ReviewInput!, $second: ReviewInput!) {
|
|
90
|
+
* first: review(input: $first)
|
|
91
|
+
* second: review(input: $second)
|
|
92
|
+
* }
|
|
93
|
+
* `);
|
|
94
|
+
* const operation = document.definitions[0];
|
|
95
|
+
*
|
|
96
|
+
* const result = getVariableValues(
|
|
97
|
+
* schema,
|
|
98
|
+
* operation.variableDefinitions,
|
|
99
|
+
* { first: { stars: 'bad' }, second: { stars: 'also bad' } },
|
|
100
|
+
* { maxErrors: 1 },
|
|
101
|
+
* );
|
|
102
|
+
*
|
|
103
|
+
* result.errors.length; // => 2
|
|
104
|
+
* result.errors[1].message; // matches /error limit reached/
|
|
105
|
+
* ```
|
|
38
106
|
*/
|
|
39
107
|
function getVariableValues(schema, varDefNodes, inputs, options) {
|
|
40
108
|
const errors = [];
|
|
@@ -159,9 +227,50 @@ function coerceVariableValues(schema, varDefNodes, inputs, onError) {
|
|
|
159
227
|
* Prepares an object map of argument values given a list of argument
|
|
160
228
|
* definitions and list of argument AST nodes.
|
|
161
229
|
*
|
|
162
|
-
* Note:
|
|
230
|
+
* Note: Returned value is a plain Object with a prototype, since it is
|
|
163
231
|
* exposed to user code. Care should be taken to not pull values from the
|
|
164
232
|
* Object prototype.
|
|
233
|
+
* @param def - The field or directive definition whose arguments should be coerced.
|
|
234
|
+
* @param node - The AST node to inspect.
|
|
235
|
+
* @param variableValues - The runtime variable values keyed by variable name.
|
|
236
|
+
* @returns Coerced argument values keyed by argument name.
|
|
237
|
+
* @example
|
|
238
|
+
* ```ts
|
|
239
|
+
* // Read literal argument values and defaults.
|
|
240
|
+
* import { parse } from 'graphql/language';
|
|
241
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
242
|
+
* import { getArgumentValues } from 'graphql/execution';
|
|
243
|
+
*
|
|
244
|
+
* const schema = buildSchema(`
|
|
245
|
+
* type Query {
|
|
246
|
+
* reviews(stars: Int!, limit: Int = 10): [String]
|
|
247
|
+
* }
|
|
248
|
+
* `);
|
|
249
|
+
* const fieldDef = schema.getQueryType().getFields().reviews;
|
|
250
|
+
* const document = parse('{ reviews(stars: 5) }');
|
|
251
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
252
|
+
*
|
|
253
|
+
* getArgumentValues(fieldDef, fieldNode); // => { stars: 5, limit: 10 }
|
|
254
|
+
* ```
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* // This variant resolves argument values from operation variables.
|
|
258
|
+
* import { parse } from 'graphql/language';
|
|
259
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
260
|
+
* import { getArgumentValues } from 'graphql/execution';
|
|
261
|
+
*
|
|
262
|
+
* const schema = buildSchema(`
|
|
263
|
+
* type Query {
|
|
264
|
+
* reviews(stars: Int!): [String]
|
|
265
|
+
* }
|
|
266
|
+
* `);
|
|
267
|
+
* const fieldDef = schema.getQueryType().getFields().reviews;
|
|
268
|
+
* const document = parse('query ($stars: Int!) { reviews(stars: $stars) }');
|
|
269
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
270
|
+
*
|
|
271
|
+
* getArgumentValues(fieldDef, fieldNode, { stars: 5 }); // => { stars: 5 }
|
|
272
|
+
* getArgumentValues(fieldDef, fieldNode, {}); // throws an error
|
|
273
|
+
* ```
|
|
165
274
|
*/
|
|
166
275
|
|
|
167
276
|
function getArgumentValues(def, node, variableValues) {
|
|
@@ -268,6 +377,11 @@ function getArgumentValues(def, node, variableValues) {
|
|
|
268
377
|
|
|
269
378
|
return { ...coercedValues };
|
|
270
379
|
}
|
|
380
|
+
/**
|
|
381
|
+
* AST node shape accepted by getDirectiveValues.
|
|
382
|
+
* @internal
|
|
383
|
+
*/
|
|
384
|
+
|
|
271
385
|
/**
|
|
272
386
|
* Prepares an object map of argument values given a directive definition
|
|
273
387
|
* and a AST node which may contain directives. Optionally also accepts a map
|
|
@@ -275,11 +389,41 @@ function getArgumentValues(def, node, variableValues) {
|
|
|
275
389
|
*
|
|
276
390
|
* If the directive does not exist on the node, returns undefined.
|
|
277
391
|
*
|
|
278
|
-
* Note:
|
|
392
|
+
* Note: Returned value is a plain Object with a prototype, since it is
|
|
279
393
|
* exposed to user code. Care should be taken to not pull values from the
|
|
280
394
|
* Object prototype.
|
|
395
|
+
* @param directiveDef - The directive definition whose arguments should be coerced.
|
|
396
|
+
* @param node - The AST node to inspect.
|
|
397
|
+
* @param variableValues - The runtime variable values keyed by variable name.
|
|
398
|
+
* @returns Coerced directive argument values keyed by argument name.
|
|
399
|
+
* @example
|
|
400
|
+
* ```ts
|
|
401
|
+
* // Read literal directive arguments from a node.
|
|
402
|
+
* import { parse } from 'graphql/language';
|
|
403
|
+
* import { GraphQLSkipDirective } from 'graphql/type';
|
|
404
|
+
* import { getDirectiveValues } from 'graphql/execution';
|
|
405
|
+
*
|
|
406
|
+
* const document = parse('{ name @skip(if: true) }');
|
|
407
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
408
|
+
*
|
|
409
|
+
* getDirectiveValues(GraphQLSkipDirective, fieldNode); // => { if: true }
|
|
410
|
+
* ```
|
|
411
|
+
* @example
|
|
412
|
+
* ```ts
|
|
413
|
+
* // This variant resolves directive arguments from variables and handles absent directives.
|
|
414
|
+
* import { parse } from 'graphql/language';
|
|
415
|
+
* import { GraphQLIncludeDirective } from 'graphql/type';
|
|
416
|
+
* import { getDirectiveValues } from 'graphql/execution';
|
|
417
|
+
*
|
|
418
|
+
* const document = parse('query ($includeName: Boolean!) { name @include(if: $includeName) }');
|
|
419
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
420
|
+
*
|
|
421
|
+
* getDirectiveValues(GraphQLIncludeDirective, fieldNode, {
|
|
422
|
+
* includeName: false,
|
|
423
|
+
* }); // => { if: false }
|
|
424
|
+
* getDirectiveValues(GraphQLIncludeDirective, { directives: [] }); // => undefined
|
|
425
|
+
* ```
|
|
281
426
|
*/
|
|
282
|
-
|
|
283
427
|
function getDirectiveValues(directiveDef, node, variableValues) {
|
|
284
428
|
var _node$directives;
|
|
285
429
|
|
package/execution/values.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Values */
|
|
1
2
|
import { inspect } from '../jsutils/inspect.mjs';
|
|
2
3
|
import { keyMap } from '../jsutils/keyMap.mjs';
|
|
3
4
|
import { printPathArray } from '../jsutils/printPathArray.mjs';
|
|
@@ -12,11 +13,77 @@ import { valueFromAST } from '../utilities/valueFromAST.mjs';
|
|
|
12
13
|
/**
|
|
13
14
|
* Prepares an object map of variableValues of the correct type based on the
|
|
14
15
|
* provided variable definitions and arbitrary input. If the input cannot be
|
|
15
|
-
* parsed to match the variable definitions,
|
|
16
|
+
* parsed to match the variable definitions, GraphQLError values are returned.
|
|
16
17
|
*
|
|
17
|
-
* Note:
|
|
18
|
+
* Note: Returned value is a plain Object with a prototype, since it is
|
|
18
19
|
* exposed to user code. Care should be taken to not pull values from the
|
|
19
20
|
* Object prototype.
|
|
21
|
+
* @param schema - GraphQL schema to use.
|
|
22
|
+
* @param varDefNodes - The variable definition AST nodes to coerce.
|
|
23
|
+
* @param inputs - The runtime variable values keyed by variable name.
|
|
24
|
+
* @param options - Optional variable coercion options, including error limits.
|
|
25
|
+
* @returns Coerced variable values, or request errors.
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* // Coerce provided variables and apply operation defaults.
|
|
29
|
+
* import { parse } from 'graphql/language';
|
|
30
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
31
|
+
* import { getVariableValues } from 'graphql/execution';
|
|
32
|
+
*
|
|
33
|
+
* const schema = buildSchema(`
|
|
34
|
+
* type Query {
|
|
35
|
+
* reviews(stars: Int!, limit: Int = 10): [String]
|
|
36
|
+
* }
|
|
37
|
+
* `);
|
|
38
|
+
* const document = parse(`
|
|
39
|
+
* query ($stars: Int!, $limit: Int = 10) {
|
|
40
|
+
* reviews(stars: $stars, limit: $limit)
|
|
41
|
+
* }
|
|
42
|
+
* `);
|
|
43
|
+
* const operation = document.definitions[0];
|
|
44
|
+
*
|
|
45
|
+
* const result = getVariableValues(
|
|
46
|
+
* schema,
|
|
47
|
+
* operation.variableDefinitions,
|
|
48
|
+
* { stars: '5' },
|
|
49
|
+
* );
|
|
50
|
+
*
|
|
51
|
+
* result; // => { coerced: { stars: 5, limit: 10 } }
|
|
52
|
+
* ```
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* // This variant uses maxErrors to cap reported coercion errors.
|
|
56
|
+
* import { parse } from 'graphql/language';
|
|
57
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
58
|
+
* import { getVariableValues } from 'graphql/execution';
|
|
59
|
+
*
|
|
60
|
+
* const schema = buildSchema(`
|
|
61
|
+
* input ReviewInput {
|
|
62
|
+
* stars: Int!
|
|
63
|
+
* }
|
|
64
|
+
*
|
|
65
|
+
* type Query {
|
|
66
|
+
* review(input: ReviewInput!): String
|
|
67
|
+
* }
|
|
68
|
+
* `);
|
|
69
|
+
* const document = parse(`
|
|
70
|
+
* query ($first: ReviewInput!, $second: ReviewInput!) {
|
|
71
|
+
* first: review(input: $first)
|
|
72
|
+
* second: review(input: $second)
|
|
73
|
+
* }
|
|
74
|
+
* `);
|
|
75
|
+
* const operation = document.definitions[0];
|
|
76
|
+
*
|
|
77
|
+
* const result = getVariableValues(
|
|
78
|
+
* schema,
|
|
79
|
+
* operation.variableDefinitions,
|
|
80
|
+
* { first: { stars: 'bad' }, second: { stars: 'also bad' } },
|
|
81
|
+
* { maxErrors: 1 },
|
|
82
|
+
* );
|
|
83
|
+
*
|
|
84
|
+
* result.errors.length; // => 2
|
|
85
|
+
* result.errors[1].message; // matches /error limit reached/
|
|
86
|
+
* ```
|
|
20
87
|
*/
|
|
21
88
|
export function getVariableValues(schema, varDefNodes, inputs, options) {
|
|
22
89
|
const errors = [];
|
|
@@ -135,9 +202,50 @@ function coerceVariableValues(schema, varDefNodes, inputs, onError) {
|
|
|
135
202
|
* Prepares an object map of argument values given a list of argument
|
|
136
203
|
* definitions and list of argument AST nodes.
|
|
137
204
|
*
|
|
138
|
-
* Note:
|
|
205
|
+
* Note: Returned value is a plain Object with a prototype, since it is
|
|
139
206
|
* exposed to user code. Care should be taken to not pull values from the
|
|
140
207
|
* Object prototype.
|
|
208
|
+
* @param def - The field or directive definition whose arguments should be coerced.
|
|
209
|
+
* @param node - The AST node to inspect.
|
|
210
|
+
* @param variableValues - The runtime variable values keyed by variable name.
|
|
211
|
+
* @returns Coerced argument values keyed by argument name.
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* // Read literal argument values and defaults.
|
|
215
|
+
* import { parse } from 'graphql/language';
|
|
216
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
217
|
+
* import { getArgumentValues } from 'graphql/execution';
|
|
218
|
+
*
|
|
219
|
+
* const schema = buildSchema(`
|
|
220
|
+
* type Query {
|
|
221
|
+
* reviews(stars: Int!, limit: Int = 10): [String]
|
|
222
|
+
* }
|
|
223
|
+
* `);
|
|
224
|
+
* const fieldDef = schema.getQueryType().getFields().reviews;
|
|
225
|
+
* const document = parse('{ reviews(stars: 5) }');
|
|
226
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
227
|
+
*
|
|
228
|
+
* getArgumentValues(fieldDef, fieldNode); // => { stars: 5, limit: 10 }
|
|
229
|
+
* ```
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* // This variant resolves argument values from operation variables.
|
|
233
|
+
* import { parse } from 'graphql/language';
|
|
234
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
235
|
+
* import { getArgumentValues } from 'graphql/execution';
|
|
236
|
+
*
|
|
237
|
+
* const schema = buildSchema(`
|
|
238
|
+
* type Query {
|
|
239
|
+
* reviews(stars: Int!): [String]
|
|
240
|
+
* }
|
|
241
|
+
* `);
|
|
242
|
+
* const fieldDef = schema.getQueryType().getFields().reviews;
|
|
243
|
+
* const document = parse('query ($stars: Int!) { reviews(stars: $stars) }');
|
|
244
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
245
|
+
*
|
|
246
|
+
* getArgumentValues(fieldDef, fieldNode, { stars: 5 }); // => { stars: 5 }
|
|
247
|
+
* getArgumentValues(fieldDef, fieldNode, {}); // throws an error
|
|
248
|
+
* ```
|
|
141
249
|
*/
|
|
142
250
|
|
|
143
251
|
export function getArgumentValues(def, node, variableValues) {
|
|
@@ -231,6 +339,11 @@ export function getArgumentValues(def, node, variableValues) {
|
|
|
231
339
|
|
|
232
340
|
return { ...coercedValues };
|
|
233
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* AST node shape accepted by getDirectiveValues.
|
|
344
|
+
* @internal
|
|
345
|
+
*/
|
|
346
|
+
|
|
234
347
|
/**
|
|
235
348
|
* Prepares an object map of argument values given a directive definition
|
|
236
349
|
* and a AST node which may contain directives. Optionally also accepts a map
|
|
@@ -238,11 +351,41 @@ export function getArgumentValues(def, node, variableValues) {
|
|
|
238
351
|
*
|
|
239
352
|
* If the directive does not exist on the node, returns undefined.
|
|
240
353
|
*
|
|
241
|
-
* Note:
|
|
354
|
+
* Note: Returned value is a plain Object with a prototype, since it is
|
|
242
355
|
* exposed to user code. Care should be taken to not pull values from the
|
|
243
356
|
* Object prototype.
|
|
357
|
+
* @param directiveDef - The directive definition whose arguments should be coerced.
|
|
358
|
+
* @param node - The AST node to inspect.
|
|
359
|
+
* @param variableValues - The runtime variable values keyed by variable name.
|
|
360
|
+
* @returns Coerced directive argument values keyed by argument name.
|
|
361
|
+
* @example
|
|
362
|
+
* ```ts
|
|
363
|
+
* // Read literal directive arguments from a node.
|
|
364
|
+
* import { parse } from 'graphql/language';
|
|
365
|
+
* import { GraphQLSkipDirective } from 'graphql/type';
|
|
366
|
+
* import { getDirectiveValues } from 'graphql/execution';
|
|
367
|
+
*
|
|
368
|
+
* const document = parse('{ name @skip(if: true) }');
|
|
369
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
370
|
+
*
|
|
371
|
+
* getDirectiveValues(GraphQLSkipDirective, fieldNode); // => { if: true }
|
|
372
|
+
* ```
|
|
373
|
+
* @example
|
|
374
|
+
* ```ts
|
|
375
|
+
* // This variant resolves directive arguments from variables and handles absent directives.
|
|
376
|
+
* import { parse } from 'graphql/language';
|
|
377
|
+
* import { GraphQLIncludeDirective } from 'graphql/type';
|
|
378
|
+
* import { getDirectiveValues } from 'graphql/execution';
|
|
379
|
+
*
|
|
380
|
+
* const document = parse('query ($includeName: Boolean!) { name @include(if: $includeName) }');
|
|
381
|
+
* const fieldNode = document.definitions[0].selectionSet.selections[0];
|
|
382
|
+
*
|
|
383
|
+
* getDirectiveValues(GraphQLIncludeDirective, fieldNode, {
|
|
384
|
+
* includeName: false,
|
|
385
|
+
* }); // => { if: false }
|
|
386
|
+
* getDirectiveValues(GraphQLIncludeDirective, { directives: [] }); // => undefined
|
|
387
|
+
* ```
|
|
244
388
|
*/
|
|
245
|
-
|
|
246
389
|
export function getDirectiveValues(directiveDef, node, variableValues) {
|
|
247
390
|
var _node$directives;
|
|
248
391
|
|
package/graphql.d.ts
CHANGED
|
@@ -7,61 +7,183 @@ import type {
|
|
|
7
7
|
import type { GraphQLSchema } from './type/schema';
|
|
8
8
|
import type { ExecutionResult } from './execution/execute';
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* may wish to separate the validation and execution phases to a static time
|
|
16
|
-
* tooling step, and a server runtime step.
|
|
17
|
-
*
|
|
18
|
-
* Accepts either an object with named arguments, or individual arguments:
|
|
19
|
-
*
|
|
20
|
-
* schema:
|
|
21
|
-
* The GraphQL type system to use when validating and executing a query.
|
|
22
|
-
* source:
|
|
23
|
-
* A GraphQL language formatted string representing the requested operation.
|
|
24
|
-
* rootValue:
|
|
25
|
-
* The value provided as the first argument to resolver functions on the top
|
|
26
|
-
* level type (e.g. the query object type).
|
|
27
|
-
* contextValue:
|
|
28
|
-
* The context value is provided as an argument to resolver functions after
|
|
29
|
-
* field arguments. It is used to pass shared information useful at any point
|
|
30
|
-
* during executing this query, for example the currently logged in user and
|
|
31
|
-
* connections to databases or other services.
|
|
32
|
-
* variableValues:
|
|
33
|
-
* A mapping of variable name to runtime value to use for all variables
|
|
34
|
-
* defined in the requestString.
|
|
35
|
-
* operationName:
|
|
36
|
-
* The name of the operation to use if requestString contains multiple
|
|
37
|
-
* possible operations. Can be omitted if requestString contains only
|
|
38
|
-
* one operation.
|
|
39
|
-
* fieldResolver:
|
|
40
|
-
* A resolver function to use when one is not provided by the schema.
|
|
41
|
-
* If not provided, the default field resolver is used (which looks for a
|
|
42
|
-
* value or method on the source value with the field's name).
|
|
43
|
-
* typeResolver:
|
|
44
|
-
* A type resolver function to use when none is provided by the schema.
|
|
45
|
-
* If not provided, the default type resolver is used (which looks for a
|
|
46
|
-
* `__typename` field or alternatively calls the `isTypeOf` method).
|
|
10
|
+
* Describes the input object accepted by `graphql` and `graphqlSync`.
|
|
11
|
+
*
|
|
12
|
+
* These arguments describe the full parse, validate, and execute lifecycle for
|
|
13
|
+
* a GraphQL request.
|
|
14
|
+
* @category Request Pipeline
|
|
47
15
|
*/
|
|
48
16
|
export interface GraphQLArgs {
|
|
17
|
+
/** The GraphQL type system to use when validating and executing a query. */
|
|
49
18
|
schema: GraphQLSchema;
|
|
19
|
+
/**
|
|
20
|
+
* A GraphQL language-formatted string or source object representing the
|
|
21
|
+
* requested operation.
|
|
22
|
+
*/
|
|
50
23
|
source: string | Source;
|
|
24
|
+
/**
|
|
25
|
+
* The value provided as the first argument to resolver functions on the top
|
|
26
|
+
* level type, such as the query object type.
|
|
27
|
+
*/
|
|
51
28
|
rootValue?: unknown;
|
|
29
|
+
/**
|
|
30
|
+
* Application context value passed to every resolver.
|
|
31
|
+
*
|
|
32
|
+
* Use this for shared request data such as the currently logged in user and
|
|
33
|
+
* connections to databases or other services.
|
|
34
|
+
*/
|
|
52
35
|
contextValue?: unknown;
|
|
36
|
+
/** A mapping of variable name to runtime value for variables defined by the operation. */
|
|
53
37
|
variableValues?: Maybe<{
|
|
54
38
|
readonly [variable: string]: unknown;
|
|
55
39
|
}>;
|
|
40
|
+
/**
|
|
41
|
+
* The operation to execute when the source contains multiple possible
|
|
42
|
+
* operations. This can be omitted when the source contains only one operation.
|
|
43
|
+
*/
|
|
56
44
|
operationName?: Maybe<string>;
|
|
45
|
+
/**
|
|
46
|
+
* A resolver function to use when one is not provided by the schema.
|
|
47
|
+
*
|
|
48
|
+
* If not provided, the default field resolver is used, which looks for a value
|
|
49
|
+
* or method on the source value with the field's name.
|
|
50
|
+
*/
|
|
57
51
|
fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>;
|
|
52
|
+
/**
|
|
53
|
+
* A type resolver function to use when none is provided by the schema.
|
|
54
|
+
*
|
|
55
|
+
* If not provided, the default type resolver is used, which looks for a
|
|
56
|
+
* `__typename` field or alternatively calls the `isTypeOf` method.
|
|
57
|
+
*/
|
|
58
58
|
typeResolver?: Maybe<GraphQLTypeResolver<any, any>>;
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Parses, validates, and executes a GraphQL document against a schema.
|
|
62
|
+
*
|
|
63
|
+
* This is the primary entry point for fulfilling GraphQL operations. Use this
|
|
64
|
+
* when you want a single-call request lifecycle that returns a promise in all
|
|
65
|
+
* cases.
|
|
66
|
+
*
|
|
67
|
+
* More sophisticated GraphQL servers, such as those which persist queries, may
|
|
68
|
+
* wish to separate the validation and execution phases to a static-time tooling
|
|
69
|
+
* step and a server runtime step.
|
|
70
|
+
* @param args - Request execution arguments, including schema and source.
|
|
71
|
+
* @returns A promise that resolves to an execution result or validation errors.
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* // Execute a complete asynchronous request with variables.
|
|
75
|
+
* import { graphql, buildSchema } from 'graphql';
|
|
76
|
+
*
|
|
77
|
+
* const schema = buildSchema(`
|
|
78
|
+
* type Query {
|
|
79
|
+
* greeting(name: String!): String
|
|
80
|
+
* }
|
|
81
|
+
* `);
|
|
82
|
+
*
|
|
83
|
+
* const result = await graphql({
|
|
84
|
+
* schema,
|
|
85
|
+
* source: 'query SayHello($name: String!) { greeting(name: $name) }',
|
|
86
|
+
* rootValue: {
|
|
87
|
+
* greeting: ({ name }) => `Hello, ${name}!`,
|
|
88
|
+
* },
|
|
89
|
+
* variableValues: { name: 'Ada' },
|
|
90
|
+
* operationName: 'SayHello',
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* result; // => { data: { greeting: 'Hello, Ada!' } }
|
|
94
|
+
* ```
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* // This variant supplies context plus custom field and type resolvers.
|
|
98
|
+
* import { graphql, buildSchema } from 'graphql';
|
|
99
|
+
*
|
|
100
|
+
* const schema = buildSchema(`
|
|
101
|
+
* interface Named {
|
|
102
|
+
* name: String!
|
|
103
|
+
* }
|
|
104
|
+
*
|
|
105
|
+
* type User implements Named {
|
|
106
|
+
* name: String!
|
|
107
|
+
* }
|
|
108
|
+
*
|
|
109
|
+
* type Query {
|
|
110
|
+
* viewer: Named
|
|
111
|
+
* }
|
|
112
|
+
* `);
|
|
113
|
+
*
|
|
114
|
+
* const result = await graphql({
|
|
115
|
+
* schema,
|
|
116
|
+
* source: '{ viewer { __typename name } }',
|
|
117
|
+
* rootValue: { viewer: { kind: 'user', name: 'Ada' } },
|
|
118
|
+
* contextValue: { locale: 'en' },
|
|
119
|
+
* fieldResolver: (source, _args, context, info) => {
|
|
120
|
+
* context.locale; // => 'en'
|
|
121
|
+
* return source[info.fieldName];
|
|
122
|
+
* },
|
|
123
|
+
* typeResolver: (value) => {
|
|
124
|
+
* return value.kind === 'user' ? 'User' : undefined;
|
|
125
|
+
* },
|
|
126
|
+
* });
|
|
127
|
+
*
|
|
128
|
+
* result; // => { data: { viewer: { __typename: 'User', name: 'Ada' } } }
|
|
129
|
+
* ```
|
|
130
|
+
* @category Request Pipeline
|
|
131
|
+
*/
|
|
60
132
|
export declare function graphql(args: GraphQLArgs): Promise<ExecutionResult>;
|
|
61
133
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* that all field resolvers are also synchronous.
|
|
134
|
+
* Parses, validates, and executes a GraphQL document synchronously.
|
|
135
|
+
*
|
|
136
|
+
* This function guarantees that execution completes synchronously, or throws an
|
|
137
|
+
* error, assuming that all field resolvers are also synchronous. It throws when
|
|
138
|
+
* any resolver returns a promise.
|
|
139
|
+
* @param args - Request execution arguments, including schema and source.
|
|
140
|
+
* @returns Completed execution output, or request errors if parsing or
|
|
141
|
+
* validation fails.
|
|
142
|
+
* @example
|
|
143
|
+
* ```ts
|
|
144
|
+
* // Execute a complete synchronous request with variables.
|
|
145
|
+
* import { graphqlSync, buildSchema } from 'graphql';
|
|
146
|
+
*
|
|
147
|
+
* const schema = buildSchema(`
|
|
148
|
+
* type Query {
|
|
149
|
+
* greeting(name: String!): String
|
|
150
|
+
* }
|
|
151
|
+
* `);
|
|
152
|
+
*
|
|
153
|
+
* const result = graphqlSync({
|
|
154
|
+
* schema,
|
|
155
|
+
* source: 'query SayHello($name: String!) { greeting(name: $name) }',
|
|
156
|
+
* rootValue: {
|
|
157
|
+
* greeting: ({ name }) => `Hello, ${name}!`,
|
|
158
|
+
* },
|
|
159
|
+
* variableValues: { name: 'Ada' },
|
|
160
|
+
* operationName: 'SayHello',
|
|
161
|
+
* });
|
|
162
|
+
*
|
|
163
|
+
* result; // => { data: { greeting: 'Hello, Ada!' } }
|
|
164
|
+
* ```
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* // This variant uses a synchronous custom field resolver and context.
|
|
168
|
+
* import { graphqlSync, buildSchema } from 'graphql';
|
|
169
|
+
*
|
|
170
|
+
* const schema = buildSchema(`
|
|
171
|
+
* type Query {
|
|
172
|
+
* greeting: String
|
|
173
|
+
* }
|
|
174
|
+
* `);
|
|
175
|
+
*
|
|
176
|
+
* const result = graphqlSync({
|
|
177
|
+
* schema,
|
|
178
|
+
* source: '{ greeting }',
|
|
179
|
+
* fieldResolver: (_source, _args, contextValue) => {
|
|
180
|
+
* return contextValue.defaultGreeting;
|
|
181
|
+
* },
|
|
182
|
+
* contextValue: { defaultGreeting: 'Hello' },
|
|
183
|
+
* });
|
|
184
|
+
*
|
|
185
|
+
* result; // => { data: { greeting: 'Hello' } }
|
|
186
|
+
* ```
|
|
187
|
+
* @category Request Pipeline
|
|
66
188
|
*/
|
|
67
189
|
export declare function graphqlSync(args: GraphQLArgs): ExecutionResult;
|