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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
3
|
import { print } from '../../language/printer.mjs';
|
|
3
4
|
import { isInputType } from '../../type/definition.mjs';
|
|
@@ -10,6 +11,37 @@ import { typeFromAST } from '../../utilities/typeFromAST.mjs';
|
|
|
10
11
|
* input types (scalar, enum, or input object).
|
|
11
12
|
*
|
|
12
13
|
* See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types
|
|
14
|
+
* @param context - The validation context used while checking the document.
|
|
15
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
19
|
+
* import { VariablesAreInputTypesRule } from 'graphql/validation';
|
|
20
|
+
*
|
|
21
|
+
* const schema = buildSchema(`
|
|
22
|
+
* type Query {
|
|
23
|
+
* field(arg: ID): String
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* type User {
|
|
27
|
+
* name: String
|
|
28
|
+
* }
|
|
29
|
+
* `);
|
|
30
|
+
*
|
|
31
|
+
* const invalidDocument = parse(`
|
|
32
|
+
* query ($user: User) { field(arg: "1") }
|
|
33
|
+
* `);
|
|
34
|
+
* const invalidErrors = validate(schema, invalidDocument, [VariablesAreInputTypesRule]);
|
|
35
|
+
*
|
|
36
|
+
* invalidErrors.length; // => 1
|
|
37
|
+
*
|
|
38
|
+
* const validDocument = parse(`
|
|
39
|
+
* query ($id: ID) { field(arg: $id) }
|
|
40
|
+
* `);
|
|
41
|
+
* const validErrors = validate(schema, validDocument, [VariablesAreInputTypesRule]);
|
|
42
|
+
*
|
|
43
|
+
* validErrors; // => []
|
|
44
|
+
* ```
|
|
13
45
|
*/
|
|
14
46
|
export function VariablesAreInputTypesRule(context) {
|
|
15
47
|
return {
|
|
@@ -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
|
/**
|
|
@@ -6,6 +7,33 @@ import type { ValidationContext } from '../ValidationContext';
|
|
|
6
7
|
* Variable usages must be compatible with the arguments they are passed to.
|
|
7
8
|
*
|
|
8
9
|
* See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed
|
|
10
|
+
* @param context - The validation context used while checking the document.
|
|
11
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
15
|
+
* import { VariablesInAllowedPositionRule } from 'graphql/validation';
|
|
16
|
+
*
|
|
17
|
+
* const schema = buildSchema(`
|
|
18
|
+
* type Query {
|
|
19
|
+
* field(arg: ID!): String
|
|
20
|
+
* }
|
|
21
|
+
* `);
|
|
22
|
+
*
|
|
23
|
+
* const invalidDocument = parse(`
|
|
24
|
+
* query ($id: String) { field(arg: $id) }
|
|
25
|
+
* `);
|
|
26
|
+
* const invalidErrors = validate(schema, invalidDocument, [VariablesInAllowedPositionRule]);
|
|
27
|
+
*
|
|
28
|
+
* invalidErrors.length; // => 1
|
|
29
|
+
*
|
|
30
|
+
* const validDocument = parse(`
|
|
31
|
+
* query ($id: ID!) { field(arg: $id) }
|
|
32
|
+
* `);
|
|
33
|
+
* const validErrors = validate(schema, validDocument, [VariablesInAllowedPositionRule]);
|
|
34
|
+
*
|
|
35
|
+
* validErrors; // => []
|
|
36
|
+
* ```
|
|
9
37
|
*/
|
|
10
38
|
export declare function VariablesInAllowedPositionRule(
|
|
11
39
|
context: ValidationContext,
|
|
@@ -17,12 +17,41 @@ var _typeComparators = require('../../utilities/typeComparators.js');
|
|
|
17
17
|
|
|
18
18
|
var _typeFromAST = require('../../utilities/typeFromAST.js');
|
|
19
19
|
|
|
20
|
+
/** @category Validation Rules */
|
|
21
|
+
|
|
20
22
|
/**
|
|
21
23
|
* Variables in allowed position
|
|
22
24
|
*
|
|
23
25
|
* Variable usages must be compatible with the arguments they are passed to.
|
|
24
26
|
*
|
|
25
27
|
* See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed
|
|
28
|
+
* @param context - The validation context used while checking the document.
|
|
29
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
33
|
+
* import { VariablesInAllowedPositionRule } from 'graphql/validation';
|
|
34
|
+
*
|
|
35
|
+
* const schema = buildSchema(`
|
|
36
|
+
* type Query {
|
|
37
|
+
* field(arg: ID!): String
|
|
38
|
+
* }
|
|
39
|
+
* `);
|
|
40
|
+
*
|
|
41
|
+
* const invalidDocument = parse(`
|
|
42
|
+
* query ($id: String) { field(arg: $id) }
|
|
43
|
+
* `);
|
|
44
|
+
* const invalidErrors = validate(schema, invalidDocument, [VariablesInAllowedPositionRule]);
|
|
45
|
+
*
|
|
46
|
+
* invalidErrors.length; // => 1
|
|
47
|
+
*
|
|
48
|
+
* const validDocument = parse(`
|
|
49
|
+
* query ($id: ID!) { field(arg: $id) }
|
|
50
|
+
* `);
|
|
51
|
+
* const validErrors = validate(schema, validDocument, [VariablesInAllowedPositionRule]);
|
|
52
|
+
*
|
|
53
|
+
* validErrors; // => []
|
|
54
|
+
* ```
|
|
26
55
|
*/
|
|
27
56
|
function VariablesInAllowedPositionRule(context) {
|
|
28
57
|
let varDefMap = Object.create(null);
|
|
@@ -96,8 +125,13 @@ function VariablesInAllowedPositionRule(context) {
|
|
|
96
125
|
}
|
|
97
126
|
/**
|
|
98
127
|
* Returns true if the variable is allowed in the location it was found,
|
|
99
|
-
*
|
|
128
|
+
* including considering if default values exist for either the variable
|
|
100
129
|
* or the location at which it is located.
|
|
130
|
+
*
|
|
131
|
+
* OneOf Input Object Type fields are considered separately above to
|
|
132
|
+
* provide a more descriptive error message.
|
|
133
|
+
*
|
|
134
|
+
* @internal
|
|
101
135
|
*/
|
|
102
136
|
|
|
103
137
|
function allowedVariableUsage(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { inspect } from '../../jsutils/inspect.mjs';
|
|
2
3
|
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
3
4
|
import { Kind } from '../../language/kinds.mjs';
|
|
@@ -15,6 +16,33 @@ import { typeFromAST } from '../../utilities/typeFromAST.mjs';
|
|
|
15
16
|
* Variable usages must be compatible with the arguments they are passed to.
|
|
16
17
|
*
|
|
17
18
|
* See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed
|
|
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 { VariablesInAllowedPositionRule } 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: String) { field(arg: $id) }
|
|
34
|
+
* `);
|
|
35
|
+
* const invalidErrors = validate(schema, invalidDocument, [VariablesInAllowedPositionRule]);
|
|
36
|
+
*
|
|
37
|
+
* invalidErrors.length; // => 1
|
|
38
|
+
*
|
|
39
|
+
* const validDocument = parse(`
|
|
40
|
+
* query ($id: ID!) { field(arg: $id) }
|
|
41
|
+
* `);
|
|
42
|
+
* const validErrors = validate(schema, validDocument, [VariablesInAllowedPositionRule]);
|
|
43
|
+
*
|
|
44
|
+
* validErrors; // => []
|
|
45
|
+
* ```
|
|
18
46
|
*/
|
|
19
47
|
export function VariablesInAllowedPositionRule(context) {
|
|
20
48
|
let varDefMap = Object.create(null);
|
|
@@ -88,8 +116,13 @@ export function VariablesInAllowedPositionRule(context) {
|
|
|
88
116
|
}
|
|
89
117
|
/**
|
|
90
118
|
* Returns true if the variable is allowed in the location it was found,
|
|
91
|
-
*
|
|
119
|
+
* including considering if default values exist for either the variable
|
|
92
120
|
* or the location at which it is located.
|
|
121
|
+
*
|
|
122
|
+
* OneOf Input Object Type fields are considered separately above to
|
|
123
|
+
* provide a more descriptive error message.
|
|
124
|
+
*
|
|
125
|
+
* @internal
|
|
93
126
|
*/
|
|
94
127
|
|
|
95
128
|
function allowedVariableUsage(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Custom Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../../language/visitor';
|
|
2
3
|
import type { ValidationContext } from '../../ValidationContext';
|
|
3
4
|
/**
|
|
@@ -9,6 +10,46 @@ import type { ValidationContext } from '../../ValidationContext';
|
|
|
9
10
|
* Note: This rule is optional and is not part of the Validation section of the GraphQL
|
|
10
11
|
* Specification. The main purpose of this rule is detection of deprecated usages and not
|
|
11
12
|
* necessarily to forbid their use when querying a service.
|
|
13
|
+
* @param context - The validation context used while checking the document.
|
|
14
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import {
|
|
18
|
+
* GraphQLObjectType,
|
|
19
|
+
* GraphQLSchema,
|
|
20
|
+
* GraphQLString,
|
|
21
|
+
* parse,
|
|
22
|
+
* validate,
|
|
23
|
+
* } from 'graphql';
|
|
24
|
+
* import { NoDeprecatedCustomRule } from 'graphql/validation';
|
|
25
|
+
*
|
|
26
|
+
* const schema = new GraphQLSchema({
|
|
27
|
+
* query: new GraphQLObjectType({
|
|
28
|
+
* name: 'Query',
|
|
29
|
+
* fields: {
|
|
30
|
+
* name: { type: GraphQLString },
|
|
31
|
+
* oldName: {
|
|
32
|
+
* type: GraphQLString,
|
|
33
|
+
* deprecationReason: 'Use name instead.',
|
|
34
|
+
* },
|
|
35
|
+
* },
|
|
36
|
+
* }),
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* const invalidDocument = parse(`
|
|
40
|
+
* { oldName }
|
|
41
|
+
* `);
|
|
42
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoDeprecatedCustomRule]);
|
|
43
|
+
*
|
|
44
|
+
* invalidErrors.length; // => 1
|
|
45
|
+
*
|
|
46
|
+
* const validDocument = parse(`
|
|
47
|
+
* { name }
|
|
48
|
+
* `);
|
|
49
|
+
* const validErrors = validate(schema, validDocument, [NoDeprecatedCustomRule]);
|
|
50
|
+
*
|
|
51
|
+
* validErrors; // => []
|
|
52
|
+
* ```
|
|
12
53
|
*/
|
|
13
54
|
export declare function NoDeprecatedCustomRule(
|
|
14
55
|
context: ValidationContext,
|
|
@@ -11,6 +11,8 @@ var _GraphQLError = require('../../../error/GraphQLError.js');
|
|
|
11
11
|
|
|
12
12
|
var _definition = require('../../../type/definition.js');
|
|
13
13
|
|
|
14
|
+
/** @category Custom Rules */
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* No deprecated
|
|
16
18
|
*
|
|
@@ -20,6 +22,46 @@ var _definition = require('../../../type/definition.js');
|
|
|
20
22
|
* Note: This rule is optional and is not part of the Validation section of the GraphQL
|
|
21
23
|
* Specification. The main purpose of this rule is detection of deprecated usages and not
|
|
22
24
|
* necessarily to forbid their use when querying a service.
|
|
25
|
+
* @param context - The validation context used while checking the document.
|
|
26
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import {
|
|
30
|
+
* GraphQLObjectType,
|
|
31
|
+
* GraphQLSchema,
|
|
32
|
+
* GraphQLString,
|
|
33
|
+
* parse,
|
|
34
|
+
* validate,
|
|
35
|
+
* } from 'graphql';
|
|
36
|
+
* import { NoDeprecatedCustomRule } from 'graphql/validation';
|
|
37
|
+
*
|
|
38
|
+
* const schema = new GraphQLSchema({
|
|
39
|
+
* query: new GraphQLObjectType({
|
|
40
|
+
* name: 'Query',
|
|
41
|
+
* fields: {
|
|
42
|
+
* name: { type: GraphQLString },
|
|
43
|
+
* oldName: {
|
|
44
|
+
* type: GraphQLString,
|
|
45
|
+
* deprecationReason: 'Use name instead.',
|
|
46
|
+
* },
|
|
47
|
+
* },
|
|
48
|
+
* }),
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* const invalidDocument = parse(`
|
|
52
|
+
* { oldName }
|
|
53
|
+
* `);
|
|
54
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoDeprecatedCustomRule]);
|
|
55
|
+
*
|
|
56
|
+
* invalidErrors.length; // => 1
|
|
57
|
+
*
|
|
58
|
+
* const validDocument = parse(`
|
|
59
|
+
* { name }
|
|
60
|
+
* `);
|
|
61
|
+
* const validErrors = validate(schema, validDocument, [NoDeprecatedCustomRule]);
|
|
62
|
+
*
|
|
63
|
+
* validErrors; // => []
|
|
64
|
+
* ```
|
|
23
65
|
*/
|
|
24
66
|
function NoDeprecatedCustomRule(context) {
|
|
25
67
|
return {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Custom Rules */
|
|
1
2
|
import { invariant } from '../../../jsutils/invariant.mjs';
|
|
2
3
|
import { GraphQLError } from '../../../error/GraphQLError.mjs';
|
|
3
4
|
import { getNamedType, isInputObjectType } from '../../../type/definition.mjs';
|
|
@@ -11,6 +12,46 @@ import { getNamedType, isInputObjectType } from '../../../type/definition.mjs';
|
|
|
11
12
|
* Note: This rule is optional and is not part of the Validation section of the GraphQL
|
|
12
13
|
* Specification. The main purpose of this rule is detection of deprecated usages and not
|
|
13
14
|
* necessarily to forbid their use when querying a service.
|
|
15
|
+
* @param context - The validation context used while checking the document.
|
|
16
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import {
|
|
20
|
+
* GraphQLObjectType,
|
|
21
|
+
* GraphQLSchema,
|
|
22
|
+
* GraphQLString,
|
|
23
|
+
* parse,
|
|
24
|
+
* validate,
|
|
25
|
+
* } from 'graphql';
|
|
26
|
+
* import { NoDeprecatedCustomRule } from 'graphql/validation';
|
|
27
|
+
*
|
|
28
|
+
* const schema = new GraphQLSchema({
|
|
29
|
+
* query: new GraphQLObjectType({
|
|
30
|
+
* name: 'Query',
|
|
31
|
+
* fields: {
|
|
32
|
+
* name: { type: GraphQLString },
|
|
33
|
+
* oldName: {
|
|
34
|
+
* type: GraphQLString,
|
|
35
|
+
* deprecationReason: 'Use name instead.',
|
|
36
|
+
* },
|
|
37
|
+
* },
|
|
38
|
+
* }),
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* const invalidDocument = parse(`
|
|
42
|
+
* { oldName }
|
|
43
|
+
* `);
|
|
44
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoDeprecatedCustomRule]);
|
|
45
|
+
*
|
|
46
|
+
* invalidErrors.length; // => 1
|
|
47
|
+
*
|
|
48
|
+
* const validDocument = parse(`
|
|
49
|
+
* { name }
|
|
50
|
+
* `);
|
|
51
|
+
* const validErrors = validate(schema, validDocument, [NoDeprecatedCustomRule]);
|
|
52
|
+
*
|
|
53
|
+
* validErrors; // => []
|
|
54
|
+
* ```
|
|
14
55
|
*/
|
|
15
56
|
export function NoDeprecatedCustomRule(context) {
|
|
16
57
|
return {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Custom Rules */
|
|
1
2
|
import type { ASTVisitor } from '../../../language/visitor';
|
|
2
3
|
import type { ValidationContext } from '../../ValidationContext';
|
|
3
4
|
/**
|
|
@@ -9,6 +10,33 @@ import type { ValidationContext } from '../../ValidationContext';
|
|
|
9
10
|
* Note: This rule is optional and is not part of the Validation section of the
|
|
10
11
|
* GraphQL Specification. This rule effectively disables introspection, which
|
|
11
12
|
* does not reflect best practices and should only be done if absolutely necessary.
|
|
13
|
+
* @param context - The validation context used while checking the document.
|
|
14
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
18
|
+
* import { NoSchemaIntrospectionCustomRule } from 'graphql/validation';
|
|
19
|
+
*
|
|
20
|
+
* const schema = buildSchema(`
|
|
21
|
+
* type Query {
|
|
22
|
+
* name: String
|
|
23
|
+
* }
|
|
24
|
+
* `);
|
|
25
|
+
*
|
|
26
|
+
* const invalidDocument = parse(`
|
|
27
|
+
* { __schema { queryType { name } } }
|
|
28
|
+
* `);
|
|
29
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoSchemaIntrospectionCustomRule]);
|
|
30
|
+
*
|
|
31
|
+
* invalidErrors.length; // => 1
|
|
32
|
+
*
|
|
33
|
+
* const validDocument = parse(`
|
|
34
|
+
* { name }
|
|
35
|
+
* `);
|
|
36
|
+
* const validErrors = validate(schema, validDocument, [NoSchemaIntrospectionCustomRule]);
|
|
37
|
+
*
|
|
38
|
+
* validErrors; // => []
|
|
39
|
+
* ```
|
|
12
40
|
*/
|
|
13
41
|
export declare function NoSchemaIntrospectionCustomRule(
|
|
14
42
|
context: ValidationContext,
|
|
@@ -11,6 +11,8 @@ var _definition = require('../../../type/definition.js');
|
|
|
11
11
|
|
|
12
12
|
var _introspection = require('../../../type/introspection.js');
|
|
13
13
|
|
|
14
|
+
/** @category Custom Rules */
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* Prohibit introspection queries
|
|
16
18
|
*
|
|
@@ -20,6 +22,33 @@ var _introspection = require('../../../type/introspection.js');
|
|
|
20
22
|
* Note: This rule is optional and is not part of the Validation section of the
|
|
21
23
|
* GraphQL Specification. This rule effectively disables introspection, which
|
|
22
24
|
* does not reflect best practices and should only be done if absolutely necessary.
|
|
25
|
+
* @param context - The validation context used while checking the document.
|
|
26
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
30
|
+
* import { NoSchemaIntrospectionCustomRule } from 'graphql/validation';
|
|
31
|
+
*
|
|
32
|
+
* const schema = buildSchema(`
|
|
33
|
+
* type Query {
|
|
34
|
+
* name: String
|
|
35
|
+
* }
|
|
36
|
+
* `);
|
|
37
|
+
*
|
|
38
|
+
* const invalidDocument = parse(`
|
|
39
|
+
* { __schema { queryType { name } } }
|
|
40
|
+
* `);
|
|
41
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoSchemaIntrospectionCustomRule]);
|
|
42
|
+
*
|
|
43
|
+
* invalidErrors.length; // => 1
|
|
44
|
+
*
|
|
45
|
+
* const validDocument = parse(`
|
|
46
|
+
* { name }
|
|
47
|
+
* `);
|
|
48
|
+
* const validErrors = validate(schema, validDocument, [NoSchemaIntrospectionCustomRule]);
|
|
49
|
+
*
|
|
50
|
+
* validErrors; // => []
|
|
51
|
+
* ```
|
|
23
52
|
*/
|
|
24
53
|
function NoSchemaIntrospectionCustomRule(context) {
|
|
25
54
|
return {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Custom Rules */
|
|
1
2
|
import { GraphQLError } from '../../../error/GraphQLError.mjs';
|
|
2
3
|
import { getNamedType } from '../../../type/definition.mjs';
|
|
3
4
|
import { isIntrospectionType } from '../../../type/introspection.mjs';
|
|
@@ -11,6 +12,33 @@ import { isIntrospectionType } from '../../../type/introspection.mjs';
|
|
|
11
12
|
* Note: This rule is optional and is not part of the Validation section of the
|
|
12
13
|
* GraphQL Specification. This rule effectively disables introspection, which
|
|
13
14
|
* does not reflect best practices and should only be done if absolutely necessary.
|
|
15
|
+
* @param context - The validation context used while checking the document.
|
|
16
|
+
* @returns A visitor that reports validation errors for this rule.
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { buildSchema, parse, validate } from 'graphql';
|
|
20
|
+
* import { NoSchemaIntrospectionCustomRule } from 'graphql/validation';
|
|
21
|
+
*
|
|
22
|
+
* const schema = buildSchema(`
|
|
23
|
+
* type Query {
|
|
24
|
+
* name: String
|
|
25
|
+
* }
|
|
26
|
+
* `);
|
|
27
|
+
*
|
|
28
|
+
* const invalidDocument = parse(`
|
|
29
|
+
* { __schema { queryType { name } } }
|
|
30
|
+
* `);
|
|
31
|
+
* const invalidErrors = validate(schema, invalidDocument, [NoSchemaIntrospectionCustomRule]);
|
|
32
|
+
*
|
|
33
|
+
* invalidErrors.length; // => 1
|
|
34
|
+
*
|
|
35
|
+
* const validDocument = parse(`
|
|
36
|
+
* { name }
|
|
37
|
+
* `);
|
|
38
|
+
* const validErrors = validate(schema, validDocument, [NoSchemaIntrospectionCustomRule]);
|
|
39
|
+
*
|
|
40
|
+
* validErrors; // => []
|
|
41
|
+
* ```
|
|
14
42
|
*/
|
|
15
43
|
export function NoSchemaIntrospectionCustomRule(context) {
|
|
16
44
|
return {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
import { MaxIntrospectionDepthRule } from './rules/MaxIntrospectionDepthRule';
|
|
2
3
|
import type { SDLValidationRule, ValidationRule } from './ValidationContext';
|
|
3
4
|
/**
|
|
@@ -12,7 +13,5 @@ export declare const recommendedRules: readonly typeof MaxIntrospectionDepthRule
|
|
|
12
13
|
* most clear output when encountering multiple validation errors.
|
|
13
14
|
*/
|
|
14
15
|
export declare const specifiedRules: ReadonlyArray<ValidationRule>;
|
|
15
|
-
/**
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
16
|
+
/** @internal */
|
|
18
17
|
export declare const specifiedSDLRules: ReadonlyArray<SDLValidationRule>;
|
|
@@ -78,6 +78,7 @@ var _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js
|
|
|
78
78
|
|
|
79
79
|
var _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');
|
|
80
80
|
|
|
81
|
+
/** @category Validation Rules */
|
|
81
82
|
// Spec Section: "Executable Definitions"
|
|
82
83
|
// Spec Section: "Field Selections on Objects, Interfaces, and Unions Types"
|
|
83
84
|
// Spec Section: "Fragments on Composite Types"
|
|
@@ -151,9 +152,7 @@ const specifiedRules = Object.freeze([
|
|
|
151
152
|
_UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,
|
|
152
153
|
...recommendedRules,
|
|
153
154
|
]);
|
|
154
|
-
/**
|
|
155
|
-
* @internal
|
|
156
|
-
*/
|
|
155
|
+
/** @internal */
|
|
157
156
|
|
|
158
157
|
exports.specifiedRules = specifiedRules;
|
|
159
158
|
const specifiedSDLRules = Object.freeze([
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation Rules */
|
|
1
2
|
// Spec Section: "Executable Definitions"
|
|
2
3
|
import { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.mjs'; // Spec Section: "Field Selections on Objects, Interfaces, and Unions Types"
|
|
3
4
|
|
|
@@ -109,9 +110,7 @@ export const specifiedRules = Object.freeze([
|
|
|
109
110
|
UniqueInputFieldNamesRule,
|
|
110
111
|
...recommendedRules,
|
|
111
112
|
]);
|
|
112
|
-
/**
|
|
113
|
-
* @internal
|
|
114
|
-
*/
|
|
113
|
+
/** @internal */
|
|
115
114
|
|
|
116
115
|
export const specifiedSDLRules = Object.freeze([
|
|
117
116
|
LoneSchemaDefinitionRule,
|
package/validation/validate.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
/** @category Validation */
|
|
1
2
|
import type { Maybe } from '../jsutils/Maybe';
|
|
2
3
|
import { GraphQLError } from '../error/GraphQLError';
|
|
3
4
|
import type { DocumentNode } from '../language/ast';
|
|
4
5
|
import type { GraphQLSchema } from '../type/schema';
|
|
5
6
|
import { TypeInfo } from '../utilities/TypeInfo';
|
|
6
7
|
import type { SDLValidationRule, ValidationRule } from './ValidationContext';
|
|
8
|
+
/**
|
|
9
|
+
* Options used when validating a GraphQL document.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export interface ValidationOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Maximum number of validation errors before validation stops.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
maxErrors?: number;
|
|
18
|
+
}
|
|
7
19
|
/**
|
|
8
20
|
* Implements the "Validation" section of the spec.
|
|
9
21
|
*
|
|
@@ -13,30 +25,79 @@ import type { SDLValidationRule, ValidationRule } from './ValidationContext';
|
|
|
13
25
|
* A list of specific validation rules may be provided. If not provided, the
|
|
14
26
|
* default list of rules defined by the GraphQL specification will be used.
|
|
15
27
|
*
|
|
16
|
-
* Each validation
|
|
28
|
+
* Each validation rule is a function that returns a visitor
|
|
17
29
|
* (see the language/visitor API). Visitor methods are expected to return
|
|
18
30
|
* GraphQLErrors, or Arrays of GraphQLErrors when invalid.
|
|
19
31
|
*
|
|
20
32
|
* Validate will stop validation after a `maxErrors` limit has been reached.
|
|
21
33
|
* Attackers can send pathologically invalid queries to induce a DoS attack,
|
|
22
|
-
* so
|
|
34
|
+
* so `maxErrors` defaults to 100 errors.
|
|
23
35
|
*
|
|
24
36
|
* Optionally a custom TypeInfo instance may be provided. If not provided, one
|
|
25
37
|
* will be created from the provided schema.
|
|
38
|
+
* @param schema - Schema to validate against.
|
|
39
|
+
* @param documentAST - Document AST to validate.
|
|
40
|
+
* @param rules - Validation rules to apply.
|
|
41
|
+
* @param options - Validation options, including error limits.
|
|
42
|
+
* @param typeInfo - TypeInfo instance to update during traversal.
|
|
43
|
+
* @returns Validation errors, or an empty array when the document is valid.
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* // Validate with the default specified rules.
|
|
47
|
+
* import { parse } from 'graphql/language';
|
|
48
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
49
|
+
* import { validate } from 'graphql/validation';
|
|
50
|
+
*
|
|
51
|
+
* const schema = buildSchema(`
|
|
52
|
+
* type Query {
|
|
53
|
+
* greeting: String
|
|
54
|
+
* }
|
|
55
|
+
* `);
|
|
56
|
+
*
|
|
57
|
+
* validate(schema, parse('{ greeting }')); // => []
|
|
58
|
+
*
|
|
59
|
+
* const errors = validate(schema, parse('{ missing }'));
|
|
60
|
+
* errors[0].message; // => 'Cannot query field "missing" on type "Query".'
|
|
61
|
+
* ```
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* // This variant uses a custom rule list, TypeInfo, and validation options.
|
|
65
|
+
* import { parse } from 'graphql/language';
|
|
66
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
67
|
+
* import { FieldsOnCorrectTypeRule, validate } from 'graphql/validation';
|
|
68
|
+
*
|
|
69
|
+
* const schema = buildSchema(`
|
|
70
|
+
* type Query {
|
|
71
|
+
* greeting: String
|
|
72
|
+
* }
|
|
73
|
+
* `);
|
|
74
|
+
* const document = parse('{ missingOne missingTwo }');
|
|
75
|
+
*
|
|
76
|
+
* const errors = validate(
|
|
77
|
+
* schema,
|
|
78
|
+
* document,
|
|
79
|
+
* [FieldsOnCorrectTypeRule],
|
|
80
|
+
* { maxErrors: 1 },
|
|
81
|
+
* new TypeInfo(schema),
|
|
82
|
+
* );
|
|
83
|
+
*
|
|
84
|
+
* errors.length; // => 2
|
|
85
|
+
* errors[1].message; // => 'Too many validation errors, error limit reached. Validation aborted.'
|
|
86
|
+
* ```
|
|
26
87
|
*/
|
|
27
88
|
export declare function validate(
|
|
28
89
|
schema: GraphQLSchema,
|
|
29
90
|
documentAST: DocumentNode,
|
|
30
91
|
rules?: ReadonlyArray<ValidationRule>,
|
|
31
|
-
options?:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
92
|
+
options?: ValidationOptions,
|
|
93
|
+
/**
|
|
94
|
+
* Deprecated TypeInfo instance used to track traversal state during
|
|
95
|
+
* validation. Omit this argument so validate creates the TypeInfo instance.
|
|
96
|
+
* @deprecated will be removed in 17.0.0
|
|
97
|
+
*/
|
|
35
98
|
typeInfo?: TypeInfo,
|
|
36
99
|
): ReadonlyArray<GraphQLError>;
|
|
37
|
-
/**
|
|
38
|
-
* @internal
|
|
39
|
-
*/
|
|
100
|
+
/** @internal */
|
|
40
101
|
export declare function validateSDL(
|
|
41
102
|
documentAST: DocumentNode,
|
|
42
103
|
schemaToExtend?: Maybe<GraphQLSchema>,
|