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/type/schema.js
CHANGED
|
@@ -25,12 +25,49 @@ var _directives = require('./directives.js');
|
|
|
25
25
|
|
|
26
26
|
var _introspection = require('./introspection.js');
|
|
27
27
|
|
|
28
|
+
/** @category Schema */
|
|
29
|
+
|
|
28
30
|
/**
|
|
29
31
|
* Test if the given value is a GraphQL schema.
|
|
32
|
+
* @param schema - Value to inspect.
|
|
33
|
+
* @returns True when the value is a GraphQLSchema.
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
37
|
+
* import { GraphQLString, isSchema } from 'graphql/type';
|
|
38
|
+
*
|
|
39
|
+
* const schema = buildSchema(`
|
|
40
|
+
* type Query {
|
|
41
|
+
* greeting: String
|
|
42
|
+
* }
|
|
43
|
+
* `);
|
|
44
|
+
*
|
|
45
|
+
* isSchema(schema); // => true
|
|
46
|
+
* isSchema(GraphQLString); // => false
|
|
47
|
+
* ```
|
|
30
48
|
*/
|
|
31
49
|
function isSchema(schema) {
|
|
32
50
|
return (0, _instanceOf.instanceOf)(schema, GraphQLSchema);
|
|
33
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Returns the value as a GraphQLSchema, or throws if it is not a schema.
|
|
54
|
+
* @param schema - GraphQL schema to use.
|
|
55
|
+
* @returns The value typed as a GraphQLSchema.
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
59
|
+
* import { assertSchema, GraphQLString } from 'graphql/type';
|
|
60
|
+
*
|
|
61
|
+
* const schema = buildSchema(`
|
|
62
|
+
* type Query {
|
|
63
|
+
* greeting: String
|
|
64
|
+
* }
|
|
65
|
+
* `);
|
|
66
|
+
*
|
|
67
|
+
* assertSchema(schema); // => schema
|
|
68
|
+
* assertSchema(GraphQLString); // throws an error
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
34
71
|
|
|
35
72
|
function assertSchema(schema) {
|
|
36
73
|
if (!isSchema(schema)) {
|
|
@@ -43,7 +80,6 @@ function assertSchema(schema) {
|
|
|
43
80
|
}
|
|
44
81
|
/**
|
|
45
82
|
* Custom extensions
|
|
46
|
-
*
|
|
47
83
|
* @remarks
|
|
48
84
|
* Use a unique identifier name for your extension, for example the name of
|
|
49
85
|
* your library or project. Do not use a shortened identifier as this increases
|
|
@@ -57,70 +93,190 @@ function assertSchema(schema) {
|
|
|
57
93
|
* A Schema is created by supplying the root types of each type of operation,
|
|
58
94
|
* query and mutation (optional). A schema definition is then supplied to the
|
|
59
95
|
* validator and executor.
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* const MyAppQueryRootType = new GraphQLObjectType({
|
|
99
|
+
* name: 'Query',
|
|
100
|
+
* fields: {
|
|
101
|
+
* greeting: { type: GraphQLString },
|
|
102
|
+
* },
|
|
103
|
+
* });
|
|
60
104
|
*
|
|
61
|
-
*
|
|
105
|
+
* const MyAppMutationRootType = new GraphQLObjectType({
|
|
106
|
+
* name: 'Mutation',
|
|
107
|
+
* fields: {
|
|
108
|
+
* setGreeting: { type: GraphQLString },
|
|
109
|
+
* },
|
|
110
|
+
* });
|
|
62
111
|
*
|
|
63
|
-
* ```ts
|
|
64
112
|
* const MyAppSchema = new GraphQLSchema({
|
|
65
113
|
* query: MyAppQueryRootType,
|
|
66
114
|
* mutation: MyAppMutationRootType,
|
|
67
|
-
* })
|
|
115
|
+
* });
|
|
68
116
|
* ```
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* Example:
|
|
117
|
+
* @example
|
|
118
|
+
* When the schema is constructed, by default only the types that are reachable
|
|
119
|
+
* by traversing the root types are included, other types must be explicitly
|
|
120
|
+
* referenced.
|
|
75
121
|
*
|
|
76
122
|
* ```ts
|
|
77
123
|
* const characterInterface = new GraphQLInterfaceType({
|
|
78
124
|
* name: 'Character',
|
|
79
|
-
*
|
|
125
|
+
* fields: {
|
|
126
|
+
* name: { type: GraphQLString },
|
|
127
|
+
* },
|
|
80
128
|
* });
|
|
81
129
|
*
|
|
82
130
|
* const humanType = new GraphQLObjectType({
|
|
83
131
|
* name: 'Human',
|
|
84
132
|
* interfaces: [characterInterface],
|
|
85
|
-
*
|
|
133
|
+
* fields: {
|
|
134
|
+
* name: { type: GraphQLString },
|
|
135
|
+
* },
|
|
86
136
|
* });
|
|
87
137
|
*
|
|
88
138
|
* const droidType = new GraphQLObjectType({
|
|
89
139
|
* name: 'Droid',
|
|
90
140
|
* interfaces: [characterInterface],
|
|
91
|
-
*
|
|
141
|
+
* fields: {
|
|
142
|
+
* name: { type: GraphQLString },
|
|
143
|
+
* },
|
|
92
144
|
* });
|
|
93
145
|
*
|
|
94
146
|
* const schema = new GraphQLSchema({
|
|
95
147
|
* query: new GraphQLObjectType({
|
|
96
148
|
* name: 'Query',
|
|
97
149
|
* fields: {
|
|
98
|
-
* hero: { type: characterInterface
|
|
99
|
-
* }
|
|
150
|
+
* hero: { type: characterInterface },
|
|
151
|
+
* },
|
|
100
152
|
* }),
|
|
101
|
-
* ...
|
|
102
153
|
* // Since this schema references only the `Character` interface it's
|
|
103
154
|
* // necessary to explicitly list the types that implement it if
|
|
104
155
|
* // you want them to be included in the final schema.
|
|
105
156
|
* types: [humanType, droidType],
|
|
106
|
-
* })
|
|
157
|
+
* });
|
|
107
158
|
* ```
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
159
|
+
* @example
|
|
160
|
+
* If an array of `directives` are provided to GraphQLSchema, that will be the
|
|
161
|
+
* exact list of directives represented and allowed. If `directives` is not
|
|
111
162
|
* provided then a default set of the specified directives (e.g. `@include` and
|
|
112
|
-
* `@skip`) will be used. If you wish to provide *additional* directives to
|
|
113
|
-
* specified directives, you must explicitly declare them.
|
|
163
|
+
* `@skip`) will be used. If you wish to provide *additional* directives to
|
|
164
|
+
* these specified directives, you must explicitly declare them.
|
|
114
165
|
*
|
|
115
166
|
* ```ts
|
|
116
167
|
* const MyAppSchema = new GraphQLSchema({
|
|
117
|
-
*
|
|
118
|
-
* directives: specifiedDirectives.concat([
|
|
119
|
-
* })
|
|
168
|
+
* query: MyAppQueryRootType,
|
|
169
|
+
* directives: specifiedDirectives.concat([myCustomDirective]),
|
|
170
|
+
* });
|
|
120
171
|
* ```
|
|
121
172
|
*/
|
|
122
173
|
class GraphQLSchema {
|
|
123
|
-
|
|
174
|
+
/** Human-readable description for this schema element, if provided. */
|
|
175
|
+
|
|
176
|
+
/** Extension fields to include in the formatted result. */
|
|
177
|
+
|
|
178
|
+
/** AST node from which this schema element was built, if available. */
|
|
179
|
+
|
|
180
|
+
/** AST extension nodes applied to this schema element. */
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Cached schema validation errors, if validation has already run.
|
|
184
|
+
* @internal
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Creates a GraphQLSchema instance.
|
|
189
|
+
* @param config - Configuration describing this object.
|
|
190
|
+
* @example
|
|
191
|
+
* ```ts
|
|
192
|
+
* // Create a schema with the required query root.
|
|
193
|
+
* import {
|
|
194
|
+
* GraphQLObjectType,
|
|
195
|
+
* GraphQLSchema,
|
|
196
|
+
* GraphQLString,
|
|
197
|
+
* } from 'graphql/type';
|
|
198
|
+
*
|
|
199
|
+
* const Query = new GraphQLObjectType({
|
|
200
|
+
* name: 'Query',
|
|
201
|
+
* fields: {
|
|
202
|
+
* greeting: {
|
|
203
|
+
* type: GraphQLString,
|
|
204
|
+
* resolve: () => 'Hello',
|
|
205
|
+
* },
|
|
206
|
+
* },
|
|
207
|
+
* });
|
|
208
|
+
*
|
|
209
|
+
* const schema = new GraphQLSchema({
|
|
210
|
+
* description: 'The application schema.',
|
|
211
|
+
* query: Query,
|
|
212
|
+
* });
|
|
213
|
+
*
|
|
214
|
+
* schema.getQueryType(); // => Query
|
|
215
|
+
* schema.description; // => 'The application schema.'
|
|
216
|
+
* ```
|
|
217
|
+
* @example
|
|
218
|
+
* ```ts
|
|
219
|
+
* // This variant configures every schema option, including directives and extensions.
|
|
220
|
+
* import { DirectiveLocation, parse } from 'graphql/language';
|
|
221
|
+
* import {
|
|
222
|
+
* GraphQLBoolean,
|
|
223
|
+
* GraphQLDirective,
|
|
224
|
+
* GraphQLObjectType,
|
|
225
|
+
* GraphQLSchema,
|
|
226
|
+
* GraphQLString,
|
|
227
|
+
* } from 'graphql/type';
|
|
228
|
+
*
|
|
229
|
+
* const Query = new GraphQLObjectType({
|
|
230
|
+
* name: 'Query',
|
|
231
|
+
* fields: { greeting: { type: GraphQLString } },
|
|
232
|
+
* });
|
|
233
|
+
* const Mutation = new GraphQLObjectType({
|
|
234
|
+
* name: 'Mutation',
|
|
235
|
+
* fields: { setGreeting: { type: GraphQLString } },
|
|
236
|
+
* });
|
|
237
|
+
* const Subscription = new GraphQLObjectType({
|
|
238
|
+
* name: 'Subscription',
|
|
239
|
+
* fields: { greetingChanged: { type: GraphQLString } },
|
|
240
|
+
* });
|
|
241
|
+
* const AuditEvent = new GraphQLObjectType({
|
|
242
|
+
* name: 'AuditEvent',
|
|
243
|
+
* fields: { message: { type: GraphQLString } },
|
|
244
|
+
* });
|
|
245
|
+
* const authDirective = new GraphQLDirective({
|
|
246
|
+
* name: 'auth',
|
|
247
|
+
* locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
248
|
+
* args: { required: { type: GraphQLBoolean } },
|
|
249
|
+
* });
|
|
250
|
+
* const schemaDocument = parse(`
|
|
251
|
+
* schema {
|
|
252
|
+
* query: Query
|
|
253
|
+
* mutation: Mutation
|
|
254
|
+
* subscription: Subscription
|
|
255
|
+
* }
|
|
256
|
+
*
|
|
257
|
+
* extend schema @auth
|
|
258
|
+
* `);
|
|
259
|
+
*
|
|
260
|
+
* const schema = new GraphQLSchema({
|
|
261
|
+
* description: 'Operations exposed by the application.',
|
|
262
|
+
* query: Query,
|
|
263
|
+
* mutation: Mutation,
|
|
264
|
+
* subscription: Subscription,
|
|
265
|
+
* types: [AuditEvent],
|
|
266
|
+
* directives: [authDirective],
|
|
267
|
+
* extensions: { owner: 'platform' },
|
|
268
|
+
* astNode: schemaDocument.definitions[0],
|
|
269
|
+
* extensionASTNodes: [ schemaDocument.definitions[1] ],
|
|
270
|
+
* assumeValid: true,
|
|
271
|
+
* });
|
|
272
|
+
*
|
|
273
|
+
* schema.getMutationType(); // => Mutation
|
|
274
|
+
* schema.getSubscriptionType(); // => Subscription
|
|
275
|
+
* schema.getType('AuditEvent'); // => AuditEvent
|
|
276
|
+
* schema.getDirective('auth'); // => authDirective
|
|
277
|
+
* schema.extensions; // => { owner: 'platform' }
|
|
278
|
+
* ```
|
|
279
|
+
*/
|
|
124
280
|
constructor(config) {
|
|
125
281
|
var _config$extensionASTN, _config$directives;
|
|
126
282
|
|
|
@@ -258,22 +414,106 @@ class GraphQLSchema {
|
|
|
258
414
|
}
|
|
259
415
|
}
|
|
260
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Returns the value used by `Object.prototype.toString`.
|
|
419
|
+
* @returns The built-in string tag for this object.
|
|
420
|
+
*/
|
|
261
421
|
|
|
262
422
|
get [Symbol.toStringTag]() {
|
|
263
423
|
return 'GraphQLSchema';
|
|
264
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* Returns the root object type for query operations.
|
|
427
|
+
* @returns The query root type, if this schema defines one.
|
|
428
|
+
* @example
|
|
429
|
+
* ```ts
|
|
430
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
431
|
+
*
|
|
432
|
+
* const schema = buildSchema(`
|
|
433
|
+
* type Query {
|
|
434
|
+
* greeting: String
|
|
435
|
+
* }
|
|
436
|
+
* `);
|
|
437
|
+
*
|
|
438
|
+
* schema.getQueryType()?.name; // => 'Query'
|
|
439
|
+
* ```
|
|
440
|
+
*/
|
|
265
441
|
|
|
266
442
|
getQueryType() {
|
|
267
443
|
return this._queryType;
|
|
268
444
|
}
|
|
445
|
+
/**
|
|
446
|
+
* Returns the root object type for mutation operations.
|
|
447
|
+
* @returns The mutation root type, if this schema defines one.
|
|
448
|
+
* @example
|
|
449
|
+
* ```ts
|
|
450
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
451
|
+
*
|
|
452
|
+
* const schema = buildSchema(`
|
|
453
|
+
* type Query {
|
|
454
|
+
* greeting: String
|
|
455
|
+
* }
|
|
456
|
+
*
|
|
457
|
+
* type Mutation {
|
|
458
|
+
* setGreeting(value: String!): String
|
|
459
|
+
* }
|
|
460
|
+
* `);
|
|
461
|
+
*
|
|
462
|
+
* schema.getMutationType()?.name; // => 'Mutation'
|
|
463
|
+
* ```
|
|
464
|
+
*/
|
|
269
465
|
|
|
270
466
|
getMutationType() {
|
|
271
467
|
return this._mutationType;
|
|
272
468
|
}
|
|
469
|
+
/**
|
|
470
|
+
* Returns the root object type for subscription operations.
|
|
471
|
+
* @returns The subscription root type, if this schema defines one.
|
|
472
|
+
* @example
|
|
473
|
+
* ```ts
|
|
474
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
475
|
+
*
|
|
476
|
+
* const schema = buildSchema(`
|
|
477
|
+
* type Query {
|
|
478
|
+
* greeting: String
|
|
479
|
+
* }
|
|
480
|
+
*
|
|
481
|
+
* type Subscription {
|
|
482
|
+
* greetings: String
|
|
483
|
+
* }
|
|
484
|
+
* `);
|
|
485
|
+
*
|
|
486
|
+
* schema.getSubscriptionType()?.name; // => 'Subscription'
|
|
487
|
+
* ```
|
|
488
|
+
*/
|
|
273
489
|
|
|
274
490
|
getSubscriptionType() {
|
|
275
491
|
return this._subscriptionType;
|
|
276
492
|
}
|
|
493
|
+
/**
|
|
494
|
+
* Returns the root object type for the requested operation kind.
|
|
495
|
+
* @param operation - Operation kind to resolve.
|
|
496
|
+
* @returns The root object type for the operation kind, if this schema defines one.
|
|
497
|
+
* @example
|
|
498
|
+
* ```ts
|
|
499
|
+
* import { OperationTypeNode } from 'graphql/language';
|
|
500
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
501
|
+
*
|
|
502
|
+
* const schema = buildSchema(`
|
|
503
|
+
* type Query {
|
|
504
|
+
* greeting: String
|
|
505
|
+
* }
|
|
506
|
+
*
|
|
507
|
+
* type Mutation {
|
|
508
|
+
* setGreeting(value: String!): String
|
|
509
|
+
* }
|
|
510
|
+
* `);
|
|
511
|
+
*
|
|
512
|
+
* schema.getRootType(OperationTypeNode.QUERY)?.name; // => 'Query'
|
|
513
|
+
* schema.getRootType(OperationTypeNode.MUTATION)?.name; // => 'Mutation'
|
|
514
|
+
* schema.getRootType(OperationTypeNode.SUBSCRIPTION); // => undefined
|
|
515
|
+
* ```
|
|
516
|
+
*/
|
|
277
517
|
|
|
278
518
|
getRootType(operation) {
|
|
279
519
|
switch (operation) {
|
|
@@ -287,20 +527,139 @@ class GraphQLSchema {
|
|
|
287
527
|
return this.getSubscriptionType();
|
|
288
528
|
}
|
|
289
529
|
}
|
|
530
|
+
/**
|
|
531
|
+
* Returns all named types known to this schema.
|
|
532
|
+
* @returns A map of schema types keyed by type name.
|
|
533
|
+
* @example
|
|
534
|
+
* ```ts
|
|
535
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
536
|
+
*
|
|
537
|
+
* const schema = buildSchema(`
|
|
538
|
+
* type User {
|
|
539
|
+
* name: String
|
|
540
|
+
* }
|
|
541
|
+
*
|
|
542
|
+
* type Query {
|
|
543
|
+
* viewer: User
|
|
544
|
+
* }
|
|
545
|
+
* `);
|
|
546
|
+
*
|
|
547
|
+
* const typeMap = schema.getTypeMap();
|
|
548
|
+
*
|
|
549
|
+
* typeMap.User.name; // => 'User'
|
|
550
|
+
* typeMap.Query.name; // => 'Query'
|
|
551
|
+
* typeMap.String.name; // => 'String'
|
|
552
|
+
* ```
|
|
553
|
+
*/
|
|
290
554
|
|
|
291
555
|
getTypeMap() {
|
|
292
556
|
return this._typeMap;
|
|
293
557
|
}
|
|
558
|
+
/**
|
|
559
|
+
* Returns the named type with the provided name.
|
|
560
|
+
* @param name - The GraphQL name to look up.
|
|
561
|
+
* @returns The named schema type, if one exists.
|
|
562
|
+
* @example
|
|
563
|
+
* ```ts
|
|
564
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
565
|
+
*
|
|
566
|
+
* const schema = buildSchema(`
|
|
567
|
+
* type User {
|
|
568
|
+
* name: String
|
|
569
|
+
* }
|
|
570
|
+
*
|
|
571
|
+
* type Query {
|
|
572
|
+
* viewer: User
|
|
573
|
+
* }
|
|
574
|
+
* `);
|
|
575
|
+
*
|
|
576
|
+
* schema.getType('User')?.toString(); // => 'User'
|
|
577
|
+
* schema.getType('Missing'); // => undefined
|
|
578
|
+
* ```
|
|
579
|
+
*/
|
|
294
580
|
|
|
295
581
|
getType(name) {
|
|
296
582
|
return this.getTypeMap()[name];
|
|
297
583
|
}
|
|
584
|
+
/**
|
|
585
|
+
* Returns object types that may be returned for an abstract type.
|
|
586
|
+
* @param abstractType - Interface or union type to inspect.
|
|
587
|
+
* @returns Object types that may satisfy the abstract type.
|
|
588
|
+
* @example
|
|
589
|
+
* ```ts
|
|
590
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
591
|
+
* import { assertInterfaceType, assertUnionType } from 'graphql/type';
|
|
592
|
+
*
|
|
593
|
+
* const schema = buildSchema(`
|
|
594
|
+
* interface Node {
|
|
595
|
+
* id: ID!
|
|
596
|
+
* }
|
|
597
|
+
*
|
|
598
|
+
* type User implements Node {
|
|
599
|
+
* id: ID!
|
|
600
|
+
* }
|
|
601
|
+
*
|
|
602
|
+
* type Organization implements Node {
|
|
603
|
+
* id: ID!
|
|
604
|
+
* }
|
|
605
|
+
*
|
|
606
|
+
* union SearchResult = User | Organization
|
|
607
|
+
*
|
|
608
|
+
* type Query {
|
|
609
|
+
* node: Node
|
|
610
|
+
* search: [SearchResult]
|
|
611
|
+
* }
|
|
612
|
+
* `);
|
|
613
|
+
*
|
|
614
|
+
* const Node = assertInterfaceType(schema.getType('Node'));
|
|
615
|
+
* const SearchResult = assertUnionType(schema.getType('SearchResult'));
|
|
616
|
+
*
|
|
617
|
+
* schema.getPossibleTypes(Node).map((type) => type.name); // => ['User', 'Organization']
|
|
618
|
+
* schema.getPossibleTypes(SearchResult).map((type) => type.name); // => ['User', 'Organization']
|
|
619
|
+
* ```
|
|
620
|
+
*/
|
|
298
621
|
|
|
299
622
|
getPossibleTypes(abstractType) {
|
|
300
623
|
return (0, _definition.isUnionType)(abstractType)
|
|
301
624
|
? abstractType.getTypes()
|
|
302
625
|
: this.getImplementations(abstractType).objects;
|
|
303
626
|
}
|
|
627
|
+
/**
|
|
628
|
+
* Returns objects and interfaces that implement an interface type.
|
|
629
|
+
* @param interfaceType - Interface type to inspect.
|
|
630
|
+
* @returns Object and interface implementations of the interface.
|
|
631
|
+
* @example
|
|
632
|
+
* ```ts
|
|
633
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
634
|
+
* import { assertInterfaceType } from 'graphql/type';
|
|
635
|
+
*
|
|
636
|
+
* const schema = buildSchema(`
|
|
637
|
+
* interface Resource {
|
|
638
|
+
* url: String!
|
|
639
|
+
* }
|
|
640
|
+
*
|
|
641
|
+
* interface Image implements Resource {
|
|
642
|
+
* url: String!
|
|
643
|
+
* width: Int
|
|
644
|
+
* }
|
|
645
|
+
*
|
|
646
|
+
* type Photo implements Resource & Image {
|
|
647
|
+
* url: String!
|
|
648
|
+
* width: Int
|
|
649
|
+
* }
|
|
650
|
+
*
|
|
651
|
+
* type Query {
|
|
652
|
+
* resource: Resource
|
|
653
|
+
* }
|
|
654
|
+
* `);
|
|
655
|
+
*
|
|
656
|
+
* const Resource = assertInterfaceType(schema.getType('Resource'));
|
|
657
|
+
* const implementations = schema.getImplementations(Resource);
|
|
658
|
+
*
|
|
659
|
+
* implementations.interfaces.map((type) => type.name); // => ['Image']
|
|
660
|
+
* implementations.objects.map((type) => type.name); // => ['Photo']
|
|
661
|
+
* ```
|
|
662
|
+
*/
|
|
304
663
|
|
|
305
664
|
getImplementations(interfaceType) {
|
|
306
665
|
const implementations = this._implementationsMap[interfaceType.name];
|
|
@@ -311,6 +670,43 @@ class GraphQLSchema {
|
|
|
311
670
|
interfaces: [],
|
|
312
671
|
};
|
|
313
672
|
}
|
|
673
|
+
/**
|
|
674
|
+
* Returns whether one type is a possible runtime subtype of an abstract type.
|
|
675
|
+
* @param abstractType - Interface or union type to inspect.
|
|
676
|
+
* @param maybeSubType - Object or interface type to test as a possible subtype.
|
|
677
|
+
* @returns True when the subtype may satisfy the abstract type.
|
|
678
|
+
* @example
|
|
679
|
+
* ```ts
|
|
680
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
681
|
+
* import { assertInterfaceType, assertObjectType } from 'graphql/type';
|
|
682
|
+
*
|
|
683
|
+
* const schema = buildSchema(`
|
|
684
|
+
* interface Node {
|
|
685
|
+
* id: ID!
|
|
686
|
+
* }
|
|
687
|
+
*
|
|
688
|
+
* type User implements Node {
|
|
689
|
+
* id: ID!
|
|
690
|
+
* }
|
|
691
|
+
*
|
|
692
|
+
* type Review {
|
|
693
|
+
* body: String
|
|
694
|
+
* }
|
|
695
|
+
*
|
|
696
|
+
* type Query {
|
|
697
|
+
* node: Node
|
|
698
|
+
* review: Review
|
|
699
|
+
* }
|
|
700
|
+
* `);
|
|
701
|
+
*
|
|
702
|
+
* const Node = assertInterfaceType(schema.getType('Node'));
|
|
703
|
+
* const User = assertObjectType(schema.getType('User'));
|
|
704
|
+
* const Review = assertObjectType(schema.getType('Review'));
|
|
705
|
+
*
|
|
706
|
+
* schema.isSubType(Node, User); // => true
|
|
707
|
+
* schema.isSubType(Node, Review); // => false
|
|
708
|
+
* ```
|
|
709
|
+
*/
|
|
314
710
|
|
|
315
711
|
isSubType(abstractType, maybeSubType) {
|
|
316
712
|
let map = this._subTypeMap[abstractType.name];
|
|
@@ -339,14 +735,76 @@ class GraphQLSchema {
|
|
|
339
735
|
|
|
340
736
|
return map[maybeSubType.name] !== undefined;
|
|
341
737
|
}
|
|
738
|
+
/**
|
|
739
|
+
* Returns directives available in this schema.
|
|
740
|
+
* @returns Directives available in this schema.
|
|
741
|
+
* @example
|
|
742
|
+
* ```ts
|
|
743
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
744
|
+
*
|
|
745
|
+
* const schema = buildSchema(`
|
|
746
|
+
* directive @upper on FIELD_DEFINITION
|
|
747
|
+
*
|
|
748
|
+
* type Query {
|
|
749
|
+
* greeting: String @upper
|
|
750
|
+
* }
|
|
751
|
+
* `);
|
|
752
|
+
*
|
|
753
|
+
* schema.getDirectives().map((directive) => directive.name); // => ['include', 'skip', 'deprecated', 'specifiedBy', 'oneOf', 'upper']
|
|
754
|
+
* ```
|
|
755
|
+
*/
|
|
342
756
|
|
|
343
757
|
getDirectives() {
|
|
344
758
|
return this._directives;
|
|
345
759
|
}
|
|
760
|
+
/**
|
|
761
|
+
* Returns the current directive definition.
|
|
762
|
+
* @param name - The GraphQL name to look up.
|
|
763
|
+
* @returns The current directive definition, if known.
|
|
764
|
+
* @example
|
|
765
|
+
* ```ts
|
|
766
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
767
|
+
*
|
|
768
|
+
* const schema = buildSchema(`
|
|
769
|
+
* directive @upper on FIELD_DEFINITION
|
|
770
|
+
*
|
|
771
|
+
* type Query {
|
|
772
|
+
* greeting: String @upper
|
|
773
|
+
* }
|
|
774
|
+
* `);
|
|
775
|
+
*
|
|
776
|
+
* schema.getDirective('upper')?.name; // => 'upper'
|
|
777
|
+
* schema.getDirective('missing'); // => undefined
|
|
778
|
+
* ```
|
|
779
|
+
*/
|
|
346
780
|
|
|
347
781
|
getDirective(name) {
|
|
348
782
|
return this.getDirectives().find((directive) => directive.name === name);
|
|
349
783
|
}
|
|
784
|
+
/**
|
|
785
|
+
* Returns a normalized configuration object for this object.
|
|
786
|
+
*
|
|
787
|
+
* The returned config preserves the original `assumeValid` flag so the schema
|
|
788
|
+
* can be recreated with the same validation behavior.
|
|
789
|
+
* @returns A configuration object that can be used to recreate this object.
|
|
790
|
+
* @example
|
|
791
|
+
* ```ts
|
|
792
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
793
|
+
* import { GraphQLSchema } from 'graphql/type';
|
|
794
|
+
*
|
|
795
|
+
* const schema = buildSchema(`
|
|
796
|
+
* type Query {
|
|
797
|
+
* greeting: String
|
|
798
|
+
* }
|
|
799
|
+
* `);
|
|
800
|
+
*
|
|
801
|
+
* const config = schema.toConfig();
|
|
802
|
+
* const schemaCopy = new GraphQLSchema(config);
|
|
803
|
+
*
|
|
804
|
+
* config.query?.name; // => 'Query'
|
|
805
|
+
* schemaCopy.getQueryType()?.name; // => 'Query'
|
|
806
|
+
* ```
|
|
807
|
+
*/
|
|
350
808
|
|
|
351
809
|
toConfig() {
|
|
352
810
|
return {
|