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