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
|
@@ -17,6 +17,8 @@ var _introspection = require('../../type/introspection.js');
|
|
|
17
17
|
|
|
18
18
|
var _scalars = require('../../type/scalars.js');
|
|
19
19
|
|
|
20
|
+
/** @category Validation Rules */
|
|
21
|
+
|
|
20
22
|
/**
|
|
21
23
|
* Known type names
|
|
22
24
|
*
|
|
@@ -24,6 +26,33 @@ var _scalars = require('../../type/scalars.js');
|
|
|
24
26
|
* variable definitions and fragment conditions) are defined by the type schema.
|
|
25
27
|
*
|
|
26
28
|
* See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
|
|
29
|
+
* @param context - The validation context used while checking the document.
|
|
30
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
34
|
+
* import { KnownTypeNamesRule } from 'graphql/validation';
|
|
35
|
+
*
|
|
36
|
+
* const schema = buildSchema(`
|
|
37
|
+
* type Query {
|
|
38
|
+
* name: String
|
|
39
|
+
* }
|
|
40
|
+
* `);
|
|
41
|
+
*
|
|
42
|
+
* const invalidDocument = parse(`
|
|
43
|
+
* fragment Bad on Missing { name }
|
|
44
|
+
* `);
|
|
45
|
+
* const invalidErrors = validate(schema, invalidDocument, [KnownTypeNamesRule]);
|
|
46
|
+
*
|
|
47
|
+
* invalidErrors.length; // => 1
|
|
48
|
+
*
|
|
49
|
+
* const validDocument = parse(`
|
|
50
|
+
* fragment Good on Query { name }
|
|
51
|
+
* `);
|
|
52
|
+
* const validErrors = validate(schema, validDocument, [KnownTypeNamesRule]);
|
|
53
|
+
*
|
|
54
|
+
* validErrors; // => []
|
|
55
|
+
* ```
|
|
27
56
|
*/
|
|
28
57
|
function KnownTypeNamesRule(context) {
|
|
29
58
|
const schema = context.getSchema();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { didYouMean } from '../../jsutils/didYouMean.mjs';
|
|
2
3
|
import { suggestionList } from '../../jsutils/suggestionList.mjs';
|
|
3
4
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
@@ -16,6 +17,33 @@ import { specifiedScalarTypes } from '../../type/scalars.mjs';
|
|
|
16
17
|
* variable definitions and fragment conditions) are defined by the type schema.
|
|
17
18
|
*
|
|
18
19
|
* See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
|
|
20
|
+
* @param context - The validation context used while checking the document.
|
|
21
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
25
|
+
* import { KnownTypeNamesRule } from 'graphql/validation';
|
|
26
|
+
*
|
|
27
|
+
* const schema = buildSchema(`
|
|
28
|
+
* type Query {
|
|
29
|
+
* name: String
|
|
30
|
+
* }
|
|
31
|
+
* `);
|
|
32
|
+
*
|
|
33
|
+
* const invalidDocument = parse(`
|
|
34
|
+
* fragment Bad on Missing { name }
|
|
35
|
+
* `);
|
|
36
|
+
* const invalidErrors = validate(schema, invalidDocument, [KnownTypeNamesRule]);
|
|
37
|
+
*
|
|
38
|
+
* invalidErrors.length; // => 1
|
|
39
|
+
*
|
|
40
|
+
* const validDocument = parse(`
|
|
41
|
+
* fragment Good on Query { name }
|
|
42
|
+
* `);
|
|
43
|
+
* const validErrors = validate(schema, validDocument, [KnownTypeNamesRule]);
|
|
44
|
+
*
|
|
45
|
+
* validErrors; // => []
|
|
46
|
+
* ```
|
|
19
47
|
*/
|
|
20
48
|
export function KnownTypeNamesRule(context) {
|
|
21
49
|
const schema = context.getSchema();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../language/visitor';
|
|
2
3
|
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
4
|
/**
|
|
@@ -7,6 +8,33 @@ import type { ASTValidationContext } from '../ValidationContext';
|
|
|
7
8
|
* (the query short-hand) that it contains only that one operation definition.
|
|
8
9
|
*
|
|
9
10
|
* See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
|
|
11
|
+
* @param context - The validation context used while checking the document.
|
|
12
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
16
|
+
* import { LoneAnonymousOperationRule } from 'graphql/validation';
|
|
17
|
+
*
|
|
18
|
+
* const schema = buildSchema(`
|
|
19
|
+
* type Query {
|
|
20
|
+
* name: String
|
|
21
|
+
* }
|
|
22
|
+
* `);
|
|
23
|
+
*
|
|
24
|
+
* const invalidDocument = parse(`
|
|
25
|
+
* query { name } query Other { name }
|
|
26
|
+
* `);
|
|
27
|
+
* const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule]);
|
|
28
|
+
*
|
|
29
|
+
* invalidErrors.length; // => 1
|
|
30
|
+
*
|
|
31
|
+
* const validDocument = parse(`
|
|
32
|
+
* { name }
|
|
33
|
+
* `);
|
|
34
|
+
* const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule]);
|
|
35
|
+
*
|
|
36
|
+
* validErrors; // => []
|
|
37
|
+
* ```
|
|
10
38
|
*/
|
|
11
39
|
export declare function LoneAnonymousOperationRule(
|
|
12
40
|
context: ASTValidationContext,
|
|
@@ -9,6 +9,8 @@ var _GraphQLError = require('../../error/GraphQLError.js');
|
|
|
9
9
|
|
|
10
10
|
var _kinds = require('../../language/kinds.js');
|
|
11
11
|
|
|
12
|
+
/** @category Validation Rules */
|
|
13
|
+
|
|
12
14
|
/**
|
|
13
15
|
* Lone anonymous operation
|
|
14
16
|
*
|
|
@@ -16,6 +18,33 @@ var _kinds = require('../../language/kinds.js');
|
|
|
16
18
|
* (the query short-hand) that it contains only that one operation definition.
|
|
17
19
|
*
|
|
18
20
|
* See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
|
|
21
|
+
* @param context - The validation context used while checking the document.
|
|
22
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
26
|
+
* import { LoneAnonymousOperationRule } from 'graphql/validation';
|
|
27
|
+
*
|
|
28
|
+
* const schema = buildSchema(`
|
|
29
|
+
* type Query {
|
|
30
|
+
* name: String
|
|
31
|
+
* }
|
|
32
|
+
* `);
|
|
33
|
+
*
|
|
34
|
+
* const invalidDocument = parse(`
|
|
35
|
+
* query { name } query Other { name }
|
|
36
|
+
* `);
|
|
37
|
+
* const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule]);
|
|
38
|
+
*
|
|
39
|
+
* invalidErrors.length; // => 1
|
|
40
|
+
*
|
|
41
|
+
* const validDocument = parse(`
|
|
42
|
+
* { name }
|
|
43
|
+
* `);
|
|
44
|
+
* const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule]);
|
|
45
|
+
*
|
|
46
|
+
* validErrors; // => []
|
|
47
|
+
* ```
|
|
19
48
|
*/
|
|
20
49
|
function LoneAnonymousOperationRule(context) {
|
|
21
50
|
let operationCount = 0;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
3
|
import { Kind } from '../../language/kinds.mjs';
|
|
3
4
|
|
|
@@ -8,6 +9,33 @@ import { Kind } from '../../language/kinds.mjs';
|
|
|
8
9
|
* (the query short-hand) that it contains only that one operation definition.
|
|
9
10
|
*
|
|
10
11
|
* See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
|
|
12
|
+
* @param context - The validation context used while checking the document.
|
|
13
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
17
|
+
* import { LoneAnonymousOperationRule } from 'graphql/validation';
|
|
18
|
+
*
|
|
19
|
+
* const schema = buildSchema(`
|
|
20
|
+
* type Query {
|
|
21
|
+
* name: String
|
|
22
|
+
* }
|
|
23
|
+
* `);
|
|
24
|
+
*
|
|
25
|
+
* const invalidDocument = parse(`
|
|
26
|
+
* query { name } query Other { name }
|
|
27
|
+
* `);
|
|
28
|
+
* const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule]);
|
|
29
|
+
*
|
|
30
|
+
* invalidErrors.length; // => 1
|
|
31
|
+
*
|
|
32
|
+
* const validDocument = parse(`
|
|
33
|
+
* { name }
|
|
34
|
+
* `);
|
|
35
|
+
* const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule]);
|
|
36
|
+
*
|
|
37
|
+
* validErrors; // => []
|
|
38
|
+
* ```
|
|
11
39
|
*/
|
|
12
40
|
export function LoneAnonymousOperationRule(context) {
|
|
13
41
|
let operationCount = 0;
|
|
@@ -1,9 +1,30 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../language/visitor';
|
|
2
3
|
import type { SDLValidationContext } from '../ValidationContext';
|
|
3
4
|
/**
|
|
4
5
|
* Lone Schema definition
|
|
5
6
|
*
|
|
6
7
|
* A GraphQL document is only valid if it contains only one schema definition.
|
|
8
|
+
* @param context - The validation context used while checking the document.
|
|
9
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { buildSchema } from 'graphql';
|
|
13
|
+
* import { LoneSchemaDefinitionRule } from 'graphql/validation';
|
|
14
|
+
*
|
|
15
|
+
* const invalidSDL = `
|
|
16
|
+
* schema { query: Query } schema { query: Query } type Query { name: String }
|
|
17
|
+
* `;
|
|
18
|
+
*
|
|
19
|
+
* LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'
|
|
20
|
+
* buildSchema(invalidSDL); // throws an error
|
|
21
|
+
*
|
|
22
|
+
* const validSDL = `
|
|
23
|
+
* schema { query: Query } type Query { name: String }
|
|
24
|
+
* `;
|
|
25
|
+
*
|
|
26
|
+
* buildSchema(validSDL); // does not throw
|
|
27
|
+
* ```
|
|
7
28
|
*/
|
|
8
29
|
export declare function LoneSchemaDefinitionRule(
|
|
9
30
|
context: SDLValidationContext,
|
|
@@ -7,10 +7,32 @@ exports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;
|
|
|
7
7
|
|
|
8
8
|
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
9
|
|
|
10
|
+
/** @category Validation Rules */
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* Lone Schema definition
|
|
12
14
|
*
|
|
13
15
|
* A GraphQL document is only valid if it contains only one schema definition.
|
|
16
|
+
* @param context - The validation context used while checking the document.
|
|
17
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { buildSchema } from 'graphql';
|
|
21
|
+
* import { LoneSchemaDefinitionRule } from 'graphql/validation';
|
|
22
|
+
*
|
|
23
|
+
* const invalidSDL = `
|
|
24
|
+
* schema { query: Query } schema { query: Query } type Query { name: String }
|
|
25
|
+
* `;
|
|
26
|
+
*
|
|
27
|
+
* LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'
|
|
28
|
+
* buildSchema(invalidSDL); // throws an error
|
|
29
|
+
*
|
|
30
|
+
* const validSDL = `
|
|
31
|
+
* schema { query: Query } type Query { name: String }
|
|
32
|
+
* `;
|
|
33
|
+
*
|
|
34
|
+
* buildSchema(validSDL); // does not throw
|
|
35
|
+
* ```
|
|
14
36
|
*/
|
|
15
37
|
function LoneSchemaDefinitionRule(context) {
|
|
16
38
|
var _ref, _ref2, _oldSchema$astNode;
|
|
@@ -1,9 +1,30 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Lone Schema definition
|
|
5
6
|
*
|
|
6
7
|
* A GraphQL document is only valid if it contains only one schema definition.
|
|
8
|
+
* @param context - The validation context used while checking the document.
|
|
9
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { buildSchema } from 'graphql';
|
|
13
|
+
* import { LoneSchemaDefinitionRule } from 'graphql/validation';
|
|
14
|
+
*
|
|
15
|
+
* const invalidSDL = `
|
|
16
|
+
* schema { query: Query } schema { query: Query } type Query { name: String }
|
|
17
|
+
* `;
|
|
18
|
+
*
|
|
19
|
+
* LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'
|
|
20
|
+
* buildSchema(invalidSDL); // throws an error
|
|
21
|
+
*
|
|
22
|
+
* const validSDL = `
|
|
23
|
+
* schema { query: Query } type Query { name: String }
|
|
24
|
+
* `;
|
|
25
|
+
*
|
|
26
|
+
* buildSchema(validSDL); // does not throw
|
|
27
|
+
* ```
|
|
7
28
|
*/
|
|
8
29
|
export function LoneSchemaDefinitionRule(context) {
|
|
9
30
|
var _ref, _ref2, _oldSchema$astNode;
|
|
@@ -1,5 +1,36 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../language/visitor';
|
|
2
3
|
import type { ASTValidationContext } from '../ValidationContext';
|
|
4
|
+
/**
|
|
5
|
+
* Implements the max introspection depth validation rule.
|
|
6
|
+
* @param context - The validation context used while checking the document.
|
|
7
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
11
|
+
* import { MaxIntrospectionDepthRule } from 'graphql/validation';
|
|
12
|
+
*
|
|
13
|
+
* const schema = buildSchema(`
|
|
14
|
+
* type Query {
|
|
15
|
+
* name: String
|
|
16
|
+
* }
|
|
17
|
+
* `);
|
|
18
|
+
*
|
|
19
|
+
* const invalidDocument = parse(`
|
|
20
|
+
* { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
|
|
21
|
+
* `);
|
|
22
|
+
* const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule]);
|
|
23
|
+
*
|
|
24
|
+
* invalidErrors.length; // => 1
|
|
25
|
+
*
|
|
26
|
+
* const validDocument = parse(`
|
|
27
|
+
* { __schema { queryType { name } } }
|
|
28
|
+
* `);
|
|
29
|
+
* const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule]);
|
|
30
|
+
*
|
|
31
|
+
* validErrors; // => []
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
3
34
|
export declare function MaxIntrospectionDepthRule(
|
|
4
35
|
context: ASTValidationContext,
|
|
5
36
|
): ASTVisitor;
|
|
@@ -9,12 +9,45 @@ var _GraphQLError = require('../../error/GraphQLError.js');
|
|
|
9
9
|
|
|
10
10
|
var _kinds = require('../../language/kinds.js');
|
|
11
11
|
|
|
12
|
+
/** @category Validation Rules */
|
|
12
13
|
const MAX_LISTS_DEPTH = 3;
|
|
14
|
+
/**
|
|
15
|
+
* Implements the max introspection depth validation rule.
|
|
16
|
+
* @param context - The validation context used while checking the document.
|
|
17
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
21
|
+
* import { MaxIntrospectionDepthRule } from 'graphql/validation';
|
|
22
|
+
*
|
|
23
|
+
* const schema = buildSchema(`
|
|
24
|
+
* type Query {
|
|
25
|
+
* name: String
|
|
26
|
+
* }
|
|
27
|
+
* `);
|
|
28
|
+
*
|
|
29
|
+
* const invalidDocument = parse(`
|
|
30
|
+
* { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
|
|
31
|
+
* `);
|
|
32
|
+
* const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule]);
|
|
33
|
+
*
|
|
34
|
+
* invalidErrors.length; // => 1
|
|
35
|
+
*
|
|
36
|
+
* const validDocument = parse(`
|
|
37
|
+
* { __schema { queryType { name } } }
|
|
38
|
+
* `);
|
|
39
|
+
* const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule]);
|
|
40
|
+
*
|
|
41
|
+
* validErrors; // => []
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
13
44
|
|
|
14
45
|
function MaxIntrospectionDepthRule(context) {
|
|
15
46
|
/**
|
|
16
47
|
* Counts the depth of list fields in "__Type" recursively and
|
|
17
48
|
* returns `true` if the limit has been reached.
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
18
51
|
*/
|
|
19
52
|
function checkDepth(node, visitedFragments = Object.create(null), depth = 0) {
|
|
20
53
|
if (node.kind === _kinds.Kind.FRAGMENT_SPREAD) {
|
|
@@ -1,10 +1,44 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
3
|
import { Kind } from '../../language/kinds.mjs';
|
|
3
4
|
const MAX_LISTS_DEPTH = 3;
|
|
5
|
+
/**
|
|
6
|
+
* Implements the max introspection depth validation rule.
|
|
7
|
+
* @param context - The validation context used while checking the document.
|
|
8
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
12
|
+
* import { MaxIntrospectionDepthRule } from 'graphql/validation';
|
|
13
|
+
*
|
|
14
|
+
* const schema = buildSchema(`
|
|
15
|
+
* type Query {
|
|
16
|
+
* name: String
|
|
17
|
+
* }
|
|
18
|
+
* `);
|
|
19
|
+
*
|
|
20
|
+
* const invalidDocument = parse(`
|
|
21
|
+
* { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
|
|
22
|
+
* `);
|
|
23
|
+
* const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule]);
|
|
24
|
+
*
|
|
25
|
+
* invalidErrors.length; // => 1
|
|
26
|
+
*
|
|
27
|
+
* const validDocument = parse(`
|
|
28
|
+
* { __schema { queryType { name } } }
|
|
29
|
+
* `);
|
|
30
|
+
* const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule]);
|
|
31
|
+
*
|
|
32
|
+
* validErrors; // => []
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
|
|
4
36
|
export function MaxIntrospectionDepthRule(context) {
|
|
5
37
|
/**
|
|
6
38
|
* Counts the depth of list fields in "__Type" recursively and
|
|
7
39
|
* returns `true` if the limit has been reached.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
8
42
|
*/
|
|
9
43
|
function checkDepth(node, visitedFragments = Object.create(null), depth = 0) {
|
|
10
44
|
if (node.kind === Kind.FRAGMENT_SPREAD) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../language/visitor';
|
|
2
3
|
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
4
|
/**
|
|
@@ -7,6 +8,33 @@ import type { ASTValidationContext } from '../ValidationContext';
|
|
|
7
8
|
* Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
|
|
8
9
|
*
|
|
9
10
|
* See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
|
|
11
|
+
* @param context - The validation context used while checking the document.
|
|
12
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
16
|
+
* import { NoFragmentCyclesRule } from 'graphql/validation';
|
|
17
|
+
*
|
|
18
|
+
* const schema = buildSchema(`
|
|
19
|
+
* type Query {
|
|
20
|
+
* name: String
|
|
21
|
+
* }
|
|
22
|
+
* `);
|
|
23
|
+
*
|
|
24
|
+
* const invalidDocument = parse(`
|
|
25
|
+
* fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }
|
|
26
|
+
* `);
|
|
27
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);
|
|
28
|
+
*
|
|
29
|
+
* invalidErrors.length; // => 1
|
|
30
|
+
*
|
|
31
|
+
* const validDocument = parse(`
|
|
32
|
+
* fragment A on Query { name } query { ...A }
|
|
33
|
+
* `);
|
|
34
|
+
* const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);
|
|
35
|
+
*
|
|
36
|
+
* validErrors; // => []
|
|
37
|
+
* ```
|
|
10
38
|
*/
|
|
11
39
|
export declare function NoFragmentCyclesRule(
|
|
12
40
|
context: ASTValidationContext,
|
|
@@ -7,6 +7,8 @@ exports.NoFragmentCyclesRule = NoFragmentCyclesRule;
|
|
|
7
7
|
|
|
8
8
|
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
9
|
|
|
10
|
+
/** @category Validation Rules */
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* No fragment cycles
|
|
12
14
|
*
|
|
@@ -14,6 +16,33 @@ var _GraphQLError = require('../../error/GraphQLError.js');
|
|
|
14
16
|
* Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
|
|
15
17
|
*
|
|
16
18
|
* See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
|
|
19
|
+
* @param context - The validation context used while checking the document.
|
|
20
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
24
|
+
* import { NoFragmentCyclesRule } from 'graphql/validation';
|
|
25
|
+
*
|
|
26
|
+
* const schema = buildSchema(`
|
|
27
|
+
* type Query {
|
|
28
|
+
* name: String
|
|
29
|
+
* }
|
|
30
|
+
* `);
|
|
31
|
+
*
|
|
32
|
+
* const invalidDocument = parse(`
|
|
33
|
+
* fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }
|
|
34
|
+
* `);
|
|
35
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);
|
|
36
|
+
*
|
|
37
|
+
* invalidErrors.length; // => 1
|
|
38
|
+
*
|
|
39
|
+
* const validDocument = parse(`
|
|
40
|
+
* fragment A on Query { name } query { ...A }
|
|
41
|
+
* `);
|
|
42
|
+
* const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);
|
|
43
|
+
*
|
|
44
|
+
* validErrors; // => []
|
|
45
|
+
* ```
|
|
17
46
|
*/
|
|
18
47
|
function NoFragmentCyclesRule(context) {
|
|
19
48
|
// Tracks already visited fragments to maintain O(N) and to ensure that cycles
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -7,6 +8,33 @@ import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
|
7
8
|
* Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
|
|
8
9
|
*
|
|
9
10
|
* See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
|
|
11
|
+
* @param context - The validation context used while checking the document.
|
|
12
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
16
|
+
* import { NoFragmentCyclesRule } from 'graphql/validation';
|
|
17
|
+
*
|
|
18
|
+
* const schema = buildSchema(`
|
|
19
|
+
* type Query {
|
|
20
|
+
* name: String
|
|
21
|
+
* }
|
|
22
|
+
* `);
|
|
23
|
+
*
|
|
24
|
+
* const invalidDocument = parse(`
|
|
25
|
+
* fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }
|
|
26
|
+
* `);
|
|
27
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);
|
|
28
|
+
*
|
|
29
|
+
* invalidErrors.length; // => 1
|
|
30
|
+
*
|
|
31
|
+
* const validDocument = parse(`
|
|
32
|
+
* fragment A on Query { name } query { ...A }
|
|
33
|
+
* `);
|
|
34
|
+
* const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);
|
|
35
|
+
*
|
|
36
|
+
* validErrors; // => []
|
|
37
|
+
* ```
|
|
10
38
|
*/
|
|
11
39
|
export function NoFragmentCyclesRule(context) {
|
|
12
40
|
// Tracks already visited fragments to maintain O(N) and to ensure that cycles
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../language/visitor';
|
|
2
3
|
import type { ValidationContext } from '../ValidationContext';
|
|
3
4
|
/**
|
|
@@ -7,6 +8,33 @@ import type { ValidationContext } from '../ValidationContext';
|
|
|
7
8
|
* and via fragment spreads, are defined by that operation.
|
|
8
9
|
*
|
|
9
10
|
* See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
|
|
11
|
+
* @param context - The validation context used while checking the document.
|
|
12
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
16
|
+
* import { NoUndefinedVariablesRule } from 'graphql/validation';
|
|
17
|
+
*
|
|
18
|
+
* const schema = buildSchema(`
|
|
19
|
+
* type Query {
|
|
20
|
+
* field(arg: ID): String
|
|
21
|
+
* }
|
|
22
|
+
* `);
|
|
23
|
+
*
|
|
24
|
+
* const invalidDocument = parse(`
|
|
25
|
+
* query ($id: ID) { field(arg: $missing) }
|
|
26
|
+
* `);
|
|
27
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule]);
|
|
28
|
+
*
|
|
29
|
+
* invalidErrors.length; // => 1
|
|
30
|
+
*
|
|
31
|
+
* const validDocument = parse(`
|
|
32
|
+
* query ($id: ID) { field(arg: $id) }
|
|
33
|
+
* `);
|
|
34
|
+
* const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);
|
|
35
|
+
*
|
|
36
|
+
* validErrors; // => []
|
|
37
|
+
* ```
|
|
10
38
|
*/
|
|
11
39
|
export declare function NoUndefinedVariablesRule(
|
|
12
40
|
context: ValidationContext,
|
|
@@ -7,6 +7,8 @@ exports.NoUndefinedVariablesRule = NoUndefinedVariablesRule;
|
|
|
7
7
|
|
|
8
8
|
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
9
|
|
|
10
|
+
/** @category Validation Rules */
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* No undefined variables
|
|
12
14
|
*
|
|
@@ -14,6 +16,33 @@ var _GraphQLError = require('../../error/GraphQLError.js');
|
|
|
14
16
|
* and via fragment spreads, are defined by that operation.
|
|
15
17
|
*
|
|
16
18
|
* See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
|
|
19
|
+
* @param context - The validation context used while checking the document.
|
|
20
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
24
|
+
* import { NoUndefinedVariablesRule } from 'graphql/validation';
|
|
25
|
+
*
|
|
26
|
+
* const schema = buildSchema(`
|
|
27
|
+
* type Query {
|
|
28
|
+
* field(arg: ID): String
|
|
29
|
+
* }
|
|
30
|
+
* `);
|
|
31
|
+
*
|
|
32
|
+
* const invalidDocument = parse(`
|
|
33
|
+
* query ($id: ID) { field(arg: $missing) }
|
|
34
|
+
* `);
|
|
35
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule]);
|
|
36
|
+
*
|
|
37
|
+
* invalidErrors.length; // => 1
|
|
38
|
+
*
|
|
39
|
+
* const validDocument = parse(`
|
|
40
|
+
* query ($id: ID) { field(arg: $id) }
|
|
41
|
+
* `);
|
|
42
|
+
* const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);
|
|
43
|
+
*
|
|
44
|
+
* validErrors; // => []
|
|
45
|
+
* ```
|
|
17
46
|
*/
|
|
18
47
|
function NoUndefinedVariablesRule(context) {
|
|
19
48
|
let variableNameDefined = Object.create(null);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -7,6 +8,33 @@ import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
|
7
8
|
* and via fragment spreads, are defined by that operation.
|
|
8
9
|
*
|
|
9
10
|
* See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
|
|
11
|
+
* @param context - The validation context used while checking the document.
|
|
12
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
16
|
+
* import { NoUndefinedVariablesRule } from 'graphql/validation';
|
|
17
|
+
*
|
|
18
|
+
* const schema = buildSchema(`
|
|
19
|
+
* type Query {
|
|
20
|
+
* field(arg: ID): String
|
|
21
|
+
* }
|
|
22
|
+
* `);
|
|
23
|
+
*
|
|
24
|
+
* const invalidDocument = parse(`
|
|
25
|
+
* query ($id: ID) { field(arg: $missing) }
|
|
26
|
+
* `);
|
|
27
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule]);
|
|
28
|
+
*
|
|
29
|
+
* invalidErrors.length; // => 1
|
|
30
|
+
*
|
|
31
|
+
* const validDocument = parse(`
|
|
32
|
+
* query ($id: ID) { field(arg: $id) }
|
|
33
|
+
* `);
|
|
34
|
+
* const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);
|
|
35
|
+
*
|
|
36
|
+
* validErrors; // => []
|
|
37
|
+
* ```
|
|
10
38
|
*/
|
|
11
39
|
export function NoUndefinedVariablesRule(context) {
|
|
12
40
|
let variableNameDefined = Object.create(null);
|