graphql 0.0.1-test.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/LICENSE +21 -0
- package/NotSupportedTSVersion.d.ts +1 -0
- package/README.md +158 -0
- package/error/GraphQLError.d.ts +142 -0
- package/error/GraphQLError.js +267 -0
- package/error/GraphQLError.mjs +253 -0
- package/error/index.d.ts +7 -0
- package/error/index.js +41 -0
- package/error/index.mjs +3 -0
- package/error/locatedError.d.ts +13 -0
- package/error/locatedError.js +40 -0
- package/error/locatedError.mjs +32 -0
- package/error/syntaxError.d.ts +11 -0
- package/error/syntaxError.js +21 -0
- package/error/syntaxError.mjs +11 -0
- package/execution/collectFields.d.ts +45 -0
- package/execution/collectFields.js +229 -0
- package/execution/collectFields.mjs +213 -0
- package/execution/execute.d.ts +185 -0
- package/execution/execute.js +1016 -0
- package/execution/execute.mjs +988 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.js +67 -0
- package/execution/index.mjs +9 -0
- package/execution/mapAsyncIterator.d.ts +9 -0
- package/execution/mapAsyncIterator.js +68 -0
- package/execution/mapAsyncIterator.mjs +61 -0
- package/execution/subscribe.d.ts +68 -0
- package/execution/subscribe.js +261 -0
- package/execution/subscribe.mjs +239 -0
- package/execution/values.d.ts +81 -0
- package/execution/values.js +292 -0
- package/execution/values.mjs +255 -0
- package/graphql.d.ts +67 -0
- package/graphql.js +96 -0
- package/graphql.mjs +122 -0
- package/index.d.ts +411 -0
- package/index.js +1263 -0
- package/index.mjs +254 -0
- package/jsutils/Maybe.d.ts +2 -0
- package/jsutils/Maybe.js +5 -0
- package/jsutils/Maybe.mjs +1 -0
- package/jsutils/ObjMap.d.ts +16 -0
- package/jsutils/ObjMap.js +5 -0
- package/jsutils/ObjMap.mjs +1 -0
- package/jsutils/Path.d.ts +20 -0
- package/jsutils/Path.js +33 -0
- package/jsutils/Path.mjs +25 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/PromiseOrValue.js +5 -0
- package/jsutils/PromiseOrValue.mjs +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +14 -0
- package/jsutils/devAssert.mjs +7 -0
- package/jsutils/didYouMean.d.ts +8 -0
- package/jsutils/didYouMean.js +38 -0
- package/jsutils/didYouMean.mjs +32 -0
- package/jsutils/groupBy.d.ts +7 -0
- package/jsutils/groupBy.js +26 -0
- package/jsutils/groupBy.mjs +19 -0
- package/jsutils/identityFunc.d.ts +4 -0
- package/jsutils/identityFunc.js +13 -0
- package/jsutils/identityFunc.mjs +6 -0
- package/jsutils/inspect.d.ts +4 -0
- package/jsutils/inspect.js +121 -0
- package/jsutils/inspect.mjs +115 -0
- package/jsutils/instanceOf.d.ts +16 -0
- package/jsutils/instanceOf.js +60 -0
- package/jsutils/instanceOf.mjs +52 -0
- package/jsutils/invariant.d.ts +4 -0
- package/jsutils/invariant.js +16 -0
- package/jsutils/invariant.mjs +9 -0
- package/jsutils/isAsyncIterable.d.ts +7 -0
- package/jsutils/isAsyncIterable.js +18 -0
- package/jsutils/isAsyncIterable.mjs +11 -0
- package/jsutils/isIterableObject.d.ts +20 -0
- package/jsutils/isIterableObject.js +32 -0
- package/jsutils/isIterableObject.mjs +25 -0
- package/jsutils/isObjectLike.d.ts +7 -0
- package/jsutils/isObjectLike.js +14 -0
- package/jsutils/isObjectLike.mjs +7 -0
- package/jsutils/isPromise.d.ts +5 -0
- package/jsutils/isPromise.js +17 -0
- package/jsutils/isPromise.mjs +10 -0
- package/jsutils/keyMap.d.ts +32 -0
- package/jsutils/keyMap.js +43 -0
- package/jsutils/keyMap.mjs +36 -0
- package/jsutils/keyValMap.d.ts +23 -0
- package/jsutils/keyValMap.js +33 -0
- package/jsutils/keyValMap.mjs +26 -0
- package/jsutils/mapValue.d.ts +9 -0
- package/jsutils/mapValue.js +20 -0
- package/jsutils/mapValue.mjs +13 -0
- package/jsutils/memoize3.d.ts +9 -0
- package/jsutils/memoize3.js +41 -0
- package/jsutils/memoize3.mjs +34 -0
- package/jsutils/naturalCompare.d.ts +8 -0
- package/jsutils/naturalCompare.js +69 -0
- package/jsutils/naturalCompare.mjs +61 -0
- package/jsutils/printPathArray.d.ts +6 -0
- package/jsutils/printPathArray.js +17 -0
- package/jsutils/printPathArray.mjs +10 -0
- package/jsutils/promiseForObject.d.ts +11 -0
- package/jsutils/promiseForObject.js +25 -0
- package/jsutils/promiseForObject.mjs +18 -0
- package/jsutils/promiseReduce.d.ts +13 -0
- package/jsutils/promiseReduce.js +27 -0
- package/jsutils/promiseReduce.mjs +20 -0
- package/jsutils/suggestionList.d.ts +8 -0
- package/jsutils/suggestionList.js +139 -0
- package/jsutils/suggestionList.mjs +130 -0
- package/jsutils/toError.d.ts +4 -0
- package/jsutils/toError.js +25 -0
- package/jsutils/toError.mjs +18 -0
- package/jsutils/toObjMap.d.ts +5 -0
- package/jsutils/toObjMap.js +24 -0
- package/jsutils/toObjMap.mjs +17 -0
- package/language/ast.d.ts +536 -0
- package/language/ast.js +224 -0
- package/language/ast.mjs +206 -0
- package/language/blockString.d.ts +28 -0
- package/language/blockString.js +195 -0
- package/language/blockString.mjs +178 -0
- package/language/characterClasses.d.ts +47 -0
- package/language/characterClasses.js +75 -0
- package/language/characterClasses.mjs +64 -0
- package/language/directiveLocation.d.ts +32 -0
- package/language/directiveLocation.js +40 -0
- package/language/directiveLocation.mjs +31 -0
- package/language/index.d.ts +97 -0
- package/language/index.js +215 -0
- package/language/index.mjs +29 -0
- package/language/kinds.d.ts +65 -0
- package/language/kinds.js +64 -0
- package/language/kinds.mjs +55 -0
- package/language/lexer.d.ts +45 -0
- package/language/lexer.js +1006 -0
- package/language/lexer.mjs +902 -0
- package/language/location.d.ts +16 -0
- package/language/location.js +38 -0
- package/language/location.mjs +30 -0
- package/language/parser.d.ts +554 -0
- package/language/parser.js +1567 -0
- package/language/parser.mjs +1524 -0
- package/language/predicates.d.ts +33 -0
- package/language/predicates.js +109 -0
- package/language/predicates.mjs +81 -0
- package/language/printLocation.d.ts +14 -0
- package/language/printLocation.js +74 -0
- package/language/printLocation.mjs +66 -0
- package/language/printString.d.ts +5 -0
- package/language/printString.js +183 -0
- package/language/printString.mjs +176 -0
- package/language/printer.d.ts +6 -0
- package/language/printer.js +351 -0
- package/language/printer.mjs +339 -0
- package/language/source.d.ts +25 -0
- package/language/source.js +65 -0
- package/language/source.mjs +50 -0
- package/language/tokenKind.d.ts +34 -0
- package/language/tokenKind.js +44 -0
- package/language/tokenKind.mjs +35 -0
- package/language/visitor.d.ts +194 -0
- package/language/visitor.js +377 -0
- package/language/visitor.mjs +361 -0
- package/package.json +40 -0
- package/subscription/index.d.ts +19 -0
- package/subscription/index.js +19 -0
- package/subscription/index.mjs +19 -0
- package/type/assertName.d.ts +10 -0
- package/type/assertName.js +59 -0
- package/type/assertName.mjs +44 -0
- package/type/definition.d.ts +917 -0
- package/type/definition.js +1329 -0
- package/type/definition.mjs +1167 -0
- package/type/directives.d.ts +86 -0
- package/type/directives.js +224 -0
- package/type/directives.mjs +190 -0
- package/type/index.d.ts +150 -0
- package/type/index.js +547 -0
- package/type/index.mjs +103 -0
- package/type/introspection.d.ts +29 -0
- package/type/introspection.js +617 -0
- package/type/introspection.mjs +550 -0
- package/type/scalars.d.ts +19 -0
- package/type/scalars.js +359 -0
- package/type/scalars.mjs +299 -0
- package/type/schema.d.ts +170 -0
- package/type/schema.js +402 -0
- package/type/schema.mjs +381 -0
- package/type/validate.d.ts +17 -0
- package/type/validate.js +672 -0
- package/type/validate.mjs +647 -0
- package/utilities/TypeInfo.d.ts +67 -0
- package/utilities/TypeInfo.js +418 -0
- package/utilities/TypeInfo.mjs +395 -0
- package/utilities/assertValidName.d.ts +13 -0
- package/utilities/assertValidName.js +51 -0
- package/utilities/assertValidName.mjs +40 -0
- package/utilities/astFromValue.d.ts +28 -0
- package/utilities/astFromValue.js +190 -0
- package/utilities/astFromValue.mjs +177 -0
- package/utilities/buildASTSchema.d.ts +35 -0
- package/utilities/buildASTSchema.js +115 -0
- package/utilities/buildASTSchema.mjs +97 -0
- package/utilities/buildClientSchema.d.ts +19 -0
- package/utilities/buildClientSchema.js +386 -0
- package/utilities/buildClientSchema.mjs +363 -0
- package/utilities/coerceInputValue.d.ts +16 -0
- package/utilities/coerceInputValue.js +191 -0
- package/utilities/coerceInputValue.mjs +172 -0
- package/utilities/concatAST.d.ts +9 -0
- package/utilities/concatAST.js +26 -0
- package/utilities/concatAST.mjs +19 -0
- package/utilities/extendSchema.d.ts +40 -0
- package/utilities/extendSchema.js +798 -0
- package/utilities/extendSchema.mjs +789 -0
- package/utilities/findBreakingChanges.d.ts +51 -0
- package/utilities/findBreakingChanges.js +547 -0
- package/utilities/findBreakingChanges.mjs +516 -0
- package/utilities/getIntrospectionQuery.d.ts +182 -0
- package/utilities/getIntrospectionQuery.js +134 -0
- package/utilities/getIntrospectionQuery.mjs +127 -0
- package/utilities/getOperationAST.d.ts +11 -0
- package/utilities/getOperationAST.js +43 -0
- package/utilities/getOperationAST.mjs +36 -0
- package/utilities/getOperationRootType.d.ts +15 -0
- package/utilities/getOperationRootType.js +59 -0
- package/utilities/getOperationRootType.mjs +52 -0
- package/utilities/index.d.ts +61 -0
- package/utilities/index.js +233 -0
- package/utilities/index.mjs +55 -0
- package/utilities/introspectionFromSchema.d.ts +18 -0
- package/utilities/introspectionFromSchema.js +42 -0
- package/utilities/introspectionFromSchema.mjs +30 -0
- package/utilities/lexicographicSortSchema.d.ts +9 -0
- package/utilities/lexicographicSortSchema.js +177 -0
- package/utilities/lexicographicSortSchema.mjs +172 -0
- package/utilities/printSchema.d.ts +5 -0
- package/utilities/printSchema.js +333 -0
- package/utilities/printSchema.mjs +309 -0
- package/utilities/separateOperations.d.ts +11 -0
- package/utilities/separateOperations.js +88 -0
- package/utilities/separateOperations.mjs +80 -0
- package/utilities/sortValueNode.d.ts +9 -0
- package/utilities/sortValueNode.js +47 -0
- package/utilities/sortValueNode.mjs +39 -0
- package/utilities/stripIgnoredCharacters.d.ts +62 -0
- package/utilities/stripIgnoredCharacters.js +121 -0
- package/utilities/stripIgnoredCharacters.mjs +104 -0
- package/utilities/typeComparators.d.ts +32 -0
- package/utilities/typeComparators.js +116 -0
- package/utilities/typeComparators.mjs +106 -0
- package/utilities/typeFromAST.d.ts +32 -0
- package/utilities/typeFromAST.js +27 -0
- package/utilities/typeFromAST.mjs +18 -0
- package/utilities/typedQueryDocumentNode.d.ts +22 -0
- package/utilities/typedQueryDocumentNode.js +5 -0
- package/utilities/typedQueryDocumentNode.mjs +1 -0
- package/utilities/valueFromAST.d.ts +29 -0
- package/utilities/valueFromAST.js +185 -0
- package/utilities/valueFromAST.mjs +172 -0
- package/utilities/valueFromASTUntyped.d.ts +23 -0
- package/utilities/valueFromASTUntyped.js +61 -0
- package/utilities/valueFromASTUntyped.mjs +53 -0
- package/validation/ValidationContext.d.ts +95 -0
- package/validation/ValidationContext.js +232 -0
- package/validation/ValidationContext.mjs +212 -0
- package/validation/index.d.ts +40 -0
- package/validation/index.js +317 -0
- package/validation/index.mjs +68 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +13 -0
- package/validation/rules/ExecutableDefinitionsRule.js +44 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +35 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +13 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +143 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +125 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +14 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +65 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +49 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +23 -0
- package/validation/rules/KnownArgumentNamesRule.js +116 -0
- package/validation/rules/KnownArgumentNamesRule.mjs +98 -0
- package/validation/rules/KnownDirectivesRule.d.ts +16 -0
- package/validation/rules/KnownDirectivesRule.js +163 -0
- package/validation/rules/KnownDirectivesRule.mjs +146 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +13 -0
- package/validation/rules/KnownFragmentNamesRule.js +34 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +24 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +16 -0
- package/validation/rules/KnownTypeNamesRule.js +87 -0
- package/validation/rules/KnownTypeNamesRule.mjs +75 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +13 -0
- package/validation/rules/LoneAnonymousOperationRule.js +40 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +32 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +10 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +63 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +53 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +13 -0
- package/validation/rules/NoFragmentCyclesRule.js +83 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +76 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUndefinedVariablesRule.js +50 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +43 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +13 -0
- package/validation/rules/NoUnusedFragmentsRule.js +59 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +52 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUnusedVariablesRule.js +55 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +48 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.mjs +788 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +14 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +788 -0
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +12 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +91 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +69 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +10 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +167 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +147 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +20 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.js +158 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +138 -0
- package/validation/rules/ScalarLeafsRule.d.ts +9 -0
- package/validation/rules/ScalarLeafsRule.js +51 -0
- package/validation/rules/ScalarLeafsRule.mjs +42 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +13 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +82 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +73 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +11 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +90 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +79 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +13 -0
- package/validation/rules/UniqueArgumentNamesRule.js +53 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +42 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +10 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +50 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +16 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +93 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +83 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +10 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +71 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +60 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +10 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +83 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +75 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +12 -0
- package/validation/rules/UniqueFragmentNamesRule.js +39 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +13 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +52 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +44 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +12 -0
- package/validation/rules/UniqueOperationNamesRule.js +41 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +34 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +10 -0
- package/validation/rules/UniqueOperationTypesRule.js +67 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +60 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +10 -0
- package/validation/rules/UniqueTypeNamesRule.js +53 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +46 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +10 -0
- package/validation/rules/UniqueVariableNamesRule.js +47 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +39 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +13 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +183 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +164 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +13 -0
- package/validation/rules/VariablesAreInputTypesRule.js +44 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +31 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +12 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +114 -0
- package/validation/rules/VariablesInAllowedPositionRule.mjs +95 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +121 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +107 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +39 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +30 -0
- package/validation/specifiedRules.d.ts +12 -0
- package/validation/specifiedRules.js +160 -0
- package/validation/specifiedRules.mjs +123 -0
- package/validation/validate.d.ts +61 -0
- package/validation/validate.js +151 -0
- package/validation/validate.mjs +133 -0
- package/version.d.ts +13 -0
- package/version.js +25 -0
- package/version.mjs +17 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { inspect } from '../../jsutils/inspect.mjs';
|
|
2
|
+
import { invariant } from '../../jsutils/invariant.mjs';
|
|
3
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
4
|
+
import { OperationTypeNode } from '../../language/ast.mjs';
|
|
5
|
+
import { DirectiveLocation } from '../../language/directiveLocation.mjs';
|
|
6
|
+
import { Kind } from '../../language/kinds.mjs';
|
|
7
|
+
import { specifiedDirectives } from '../../type/directives.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Known directives
|
|
11
|
+
*
|
|
12
|
+
* A GraphQL document is only valid if all `@directives` are known by the
|
|
13
|
+
* schema and legally positioned.
|
|
14
|
+
*
|
|
15
|
+
* See https://spec.graphql.org/draft/#sec-Directives-Are-Defined
|
|
16
|
+
*/
|
|
17
|
+
export function KnownDirectivesRule(context) {
|
|
18
|
+
const locationsMap = Object.create(null);
|
|
19
|
+
const schema = context.getSchema();
|
|
20
|
+
const definedDirectives = schema
|
|
21
|
+
? schema.getDirectives()
|
|
22
|
+
: specifiedDirectives;
|
|
23
|
+
|
|
24
|
+
for (const directive of definedDirectives) {
|
|
25
|
+
locationsMap[directive.name] = directive.locations;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const astDefinitions = context.getDocument().definitions;
|
|
29
|
+
|
|
30
|
+
for (const def of astDefinitions) {
|
|
31
|
+
if (def.kind === Kind.DIRECTIVE_DEFINITION) {
|
|
32
|
+
locationsMap[def.name.value] = def.locations.map((name) => name.value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
Directive(node, _key, _parent, _path, ancestors) {
|
|
38
|
+
const name = node.name.value;
|
|
39
|
+
const locations = locationsMap[name];
|
|
40
|
+
|
|
41
|
+
if (!locations) {
|
|
42
|
+
context.reportError(
|
|
43
|
+
new GraphQLError(`Unknown directive "@${name}".`, node),
|
|
44
|
+
);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const candidateLocation = getDirectiveLocationForASTPath(ancestors);
|
|
49
|
+
|
|
50
|
+
if (candidateLocation && !locations.includes(candidateLocation)) {
|
|
51
|
+
context.reportError(
|
|
52
|
+
new GraphQLError(
|
|
53
|
+
`Directive "@${name}" may not be used on ${candidateLocation}.`,
|
|
54
|
+
node,
|
|
55
|
+
),
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function getDirectiveLocationForASTPath(ancestors) {
|
|
63
|
+
const appliedTo = ancestors[ancestors.length - 1];
|
|
64
|
+
'kind' in appliedTo || invariant(false);
|
|
65
|
+
|
|
66
|
+
switch (appliedTo.kind) {
|
|
67
|
+
case Kind.OPERATION_DEFINITION:
|
|
68
|
+
return getDirectiveLocationForOperation(appliedTo.operation);
|
|
69
|
+
|
|
70
|
+
case Kind.FIELD:
|
|
71
|
+
return DirectiveLocation.FIELD;
|
|
72
|
+
|
|
73
|
+
case Kind.FRAGMENT_SPREAD:
|
|
74
|
+
return DirectiveLocation.FRAGMENT_SPREAD;
|
|
75
|
+
|
|
76
|
+
case Kind.INLINE_FRAGMENT:
|
|
77
|
+
return DirectiveLocation.INLINE_FRAGMENT;
|
|
78
|
+
|
|
79
|
+
case Kind.FRAGMENT_DEFINITION:
|
|
80
|
+
return DirectiveLocation.FRAGMENT_DEFINITION;
|
|
81
|
+
|
|
82
|
+
case Kind.VARIABLE_DEFINITION:
|
|
83
|
+
return DirectiveLocation.VARIABLE_DEFINITION;
|
|
84
|
+
|
|
85
|
+
case Kind.SCHEMA_DEFINITION:
|
|
86
|
+
case Kind.SCHEMA_EXTENSION:
|
|
87
|
+
return DirectiveLocation.SCHEMA;
|
|
88
|
+
|
|
89
|
+
case Kind.SCALAR_TYPE_DEFINITION:
|
|
90
|
+
case Kind.SCALAR_TYPE_EXTENSION:
|
|
91
|
+
return DirectiveLocation.SCALAR;
|
|
92
|
+
|
|
93
|
+
case Kind.OBJECT_TYPE_DEFINITION:
|
|
94
|
+
case Kind.OBJECT_TYPE_EXTENSION:
|
|
95
|
+
return DirectiveLocation.OBJECT;
|
|
96
|
+
|
|
97
|
+
case Kind.FIELD_DEFINITION:
|
|
98
|
+
return DirectiveLocation.FIELD_DEFINITION;
|
|
99
|
+
|
|
100
|
+
case Kind.INTERFACE_TYPE_DEFINITION:
|
|
101
|
+
case Kind.INTERFACE_TYPE_EXTENSION:
|
|
102
|
+
return DirectiveLocation.INTERFACE;
|
|
103
|
+
|
|
104
|
+
case Kind.UNION_TYPE_DEFINITION:
|
|
105
|
+
case Kind.UNION_TYPE_EXTENSION:
|
|
106
|
+
return DirectiveLocation.UNION;
|
|
107
|
+
|
|
108
|
+
case Kind.ENUM_TYPE_DEFINITION:
|
|
109
|
+
case Kind.ENUM_TYPE_EXTENSION:
|
|
110
|
+
return DirectiveLocation.ENUM;
|
|
111
|
+
|
|
112
|
+
case Kind.ENUM_VALUE_DEFINITION:
|
|
113
|
+
return DirectiveLocation.ENUM_VALUE;
|
|
114
|
+
|
|
115
|
+
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
|
|
116
|
+
case Kind.INPUT_OBJECT_TYPE_EXTENSION:
|
|
117
|
+
return DirectiveLocation.INPUT_OBJECT;
|
|
118
|
+
|
|
119
|
+
case Kind.INPUT_VALUE_DEFINITION: {
|
|
120
|
+
const parentNode = ancestors[ancestors.length - 3];
|
|
121
|
+
'kind' in parentNode || invariant(false);
|
|
122
|
+
return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION
|
|
123
|
+
? DirectiveLocation.INPUT_FIELD_DEFINITION
|
|
124
|
+
: DirectiveLocation.ARGUMENT_DEFINITION;
|
|
125
|
+
}
|
|
126
|
+
// Not reachable, all possible types have been considered.
|
|
127
|
+
|
|
128
|
+
/* c8 ignore next */
|
|
129
|
+
|
|
130
|
+
default:
|
|
131
|
+
false || invariant(false, 'Unexpected kind: ' + inspect(appliedTo.kind));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function getDirectiveLocationForOperation(operation) {
|
|
136
|
+
switch (operation) {
|
|
137
|
+
case OperationTypeNode.QUERY:
|
|
138
|
+
return DirectiveLocation.QUERY;
|
|
139
|
+
|
|
140
|
+
case OperationTypeNode.MUTATION:
|
|
141
|
+
return DirectiveLocation.MUTATION;
|
|
142
|
+
|
|
143
|
+
case OperationTypeNode.SUBSCRIPTION:
|
|
144
|
+
return DirectiveLocation.SUBSCRIPTION;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Known fragment names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all `...Fragment` fragment spreads refer
|
|
7
|
+
* to fragments defined in the same document.
|
|
8
|
+
*
|
|
9
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined
|
|
10
|
+
*/
|
|
11
|
+
export declare function KnownFragmentNamesRule(
|
|
12
|
+
context: ValidationContext,
|
|
13
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.KnownFragmentNamesRule = KnownFragmentNamesRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Known fragment names
|
|
12
|
+
*
|
|
13
|
+
* A GraphQL document is only valid if all `...Fragment` fragment spreads refer
|
|
14
|
+
* to fragments defined in the same document.
|
|
15
|
+
*
|
|
16
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined
|
|
17
|
+
*/
|
|
18
|
+
function KnownFragmentNamesRule(context) {
|
|
19
|
+
return {
|
|
20
|
+
FragmentSpread(node) {
|
|
21
|
+
const fragmentName = node.name.value;
|
|
22
|
+
const fragment = context.getFragment(fragmentName);
|
|
23
|
+
|
|
24
|
+
if (!fragment) {
|
|
25
|
+
context.reportError(
|
|
26
|
+
new _GraphQLError.GraphQLError(
|
|
27
|
+
`Unknown fragment "${fragmentName}".`,
|
|
28
|
+
node.name,
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Known fragment names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all `...Fragment` fragment spreads refer
|
|
7
|
+
* to fragments defined in the same document.
|
|
8
|
+
*
|
|
9
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined
|
|
10
|
+
*/
|
|
11
|
+
export function KnownFragmentNamesRule(context) {
|
|
12
|
+
return {
|
|
13
|
+
FragmentSpread(node) {
|
|
14
|
+
const fragmentName = node.name.value;
|
|
15
|
+
const fragment = context.getFragment(fragmentName);
|
|
16
|
+
|
|
17
|
+
if (!fragment) {
|
|
18
|
+
context.reportError(
|
|
19
|
+
new GraphQLError(`Unknown fragment "${fragmentName}".`, node.name),
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type {
|
|
3
|
+
SDLValidationContext,
|
|
4
|
+
ValidationContext,
|
|
5
|
+
} from '../ValidationContext';
|
|
6
|
+
/**
|
|
7
|
+
* Known type names
|
|
8
|
+
*
|
|
9
|
+
* A GraphQL document is only valid if referenced types (specifically
|
|
10
|
+
* variable definitions and fragment conditions) are defined by the type schema.
|
|
11
|
+
*
|
|
12
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
|
|
13
|
+
*/
|
|
14
|
+
export declare function KnownTypeNamesRule(
|
|
15
|
+
context: ValidationContext | SDLValidationContext,
|
|
16
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.KnownTypeNamesRule = KnownTypeNamesRule;
|
|
7
|
+
|
|
8
|
+
var _didYouMean = require('../../jsutils/didYouMean.js');
|
|
9
|
+
|
|
10
|
+
var _suggestionList = require('../../jsutils/suggestionList.js');
|
|
11
|
+
|
|
12
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
13
|
+
|
|
14
|
+
var _predicates = require('../../language/predicates.js');
|
|
15
|
+
|
|
16
|
+
var _introspection = require('../../type/introspection.js');
|
|
17
|
+
|
|
18
|
+
var _scalars = require('../../type/scalars.js');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Known type names
|
|
22
|
+
*
|
|
23
|
+
* A GraphQL document is only valid if referenced types (specifically
|
|
24
|
+
* variable definitions and fragment conditions) are defined by the type schema.
|
|
25
|
+
*
|
|
26
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
|
|
27
|
+
*/
|
|
28
|
+
function KnownTypeNamesRule(context) {
|
|
29
|
+
const schema = context.getSchema();
|
|
30
|
+
const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);
|
|
31
|
+
const definedTypes = Object.create(null);
|
|
32
|
+
|
|
33
|
+
for (const def of context.getDocument().definitions) {
|
|
34
|
+
if ((0, _predicates.isTypeDefinitionNode)(def)) {
|
|
35
|
+
definedTypes[def.name.value] = true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const typeNames = [
|
|
40
|
+
...Object.keys(existingTypesMap),
|
|
41
|
+
...Object.keys(definedTypes),
|
|
42
|
+
];
|
|
43
|
+
return {
|
|
44
|
+
NamedType(node, _1, parent, _2, ancestors) {
|
|
45
|
+
const typeName = node.name.value;
|
|
46
|
+
|
|
47
|
+
if (!existingTypesMap[typeName] && !definedTypes[typeName]) {
|
|
48
|
+
var _ancestors$;
|
|
49
|
+
|
|
50
|
+
const definitionNode =
|
|
51
|
+
(_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0
|
|
52
|
+
? _ancestors$
|
|
53
|
+
: parent;
|
|
54
|
+
const isSDL = definitionNode != null && isSDLNode(definitionNode);
|
|
55
|
+
|
|
56
|
+
if (isSDL && standardTypeNames.includes(typeName)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const suggestedTypes = (0, _suggestionList.suggestionList)(
|
|
61
|
+
typeName,
|
|
62
|
+
isSDL ? standardTypeNames.concat(typeNames) : typeNames,
|
|
63
|
+
);
|
|
64
|
+
context.reportError(
|
|
65
|
+
new _GraphQLError.GraphQLError(
|
|
66
|
+
`Unknown type "${typeName}".` +
|
|
67
|
+
(0, _didYouMean.didYouMean)(suggestedTypes),
|
|
68
|
+
node,
|
|
69
|
+
),
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const standardTypeNames = [
|
|
77
|
+
..._scalars.specifiedScalarTypes,
|
|
78
|
+
..._introspection.introspectionTypes,
|
|
79
|
+
].map((type) => type.name);
|
|
80
|
+
|
|
81
|
+
function isSDLNode(value) {
|
|
82
|
+
return (
|
|
83
|
+
'kind' in value &&
|
|
84
|
+
((0, _predicates.isTypeSystemDefinitionNode)(value) ||
|
|
85
|
+
(0, _predicates.isTypeSystemExtensionNode)(value))
|
|
86
|
+
);
|
|
87
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { didYouMean } from '../../jsutils/didYouMean.mjs';
|
|
2
|
+
import { suggestionList } from '../../jsutils/suggestionList.mjs';
|
|
3
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
4
|
+
import {
|
|
5
|
+
isTypeDefinitionNode,
|
|
6
|
+
isTypeSystemDefinitionNode,
|
|
7
|
+
isTypeSystemExtensionNode,
|
|
8
|
+
} from '../../language/predicates.mjs';
|
|
9
|
+
import { introspectionTypes } from '../../type/introspection.mjs';
|
|
10
|
+
import { specifiedScalarTypes } from '../../type/scalars.mjs';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Known type names
|
|
14
|
+
*
|
|
15
|
+
* A GraphQL document is only valid if referenced types (specifically
|
|
16
|
+
* variable definitions and fragment conditions) are defined by the type schema.
|
|
17
|
+
*
|
|
18
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
|
|
19
|
+
*/
|
|
20
|
+
export function KnownTypeNamesRule(context) {
|
|
21
|
+
const schema = context.getSchema();
|
|
22
|
+
const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);
|
|
23
|
+
const definedTypes = Object.create(null);
|
|
24
|
+
|
|
25
|
+
for (const def of context.getDocument().definitions) {
|
|
26
|
+
if (isTypeDefinitionNode(def)) {
|
|
27
|
+
definedTypes[def.name.value] = true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const typeNames = [
|
|
32
|
+
...Object.keys(existingTypesMap),
|
|
33
|
+
...Object.keys(definedTypes),
|
|
34
|
+
];
|
|
35
|
+
return {
|
|
36
|
+
NamedType(node, _1, parent, _2, ancestors) {
|
|
37
|
+
const typeName = node.name.value;
|
|
38
|
+
|
|
39
|
+
if (!existingTypesMap[typeName] && !definedTypes[typeName]) {
|
|
40
|
+
var _ancestors$;
|
|
41
|
+
|
|
42
|
+
const definitionNode =
|
|
43
|
+
(_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0
|
|
44
|
+
? _ancestors$
|
|
45
|
+
: parent;
|
|
46
|
+
const isSDL = definitionNode != null && isSDLNode(definitionNode);
|
|
47
|
+
|
|
48
|
+
if (isSDL && standardTypeNames.includes(typeName)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const suggestedTypes = suggestionList(
|
|
53
|
+
typeName,
|
|
54
|
+
isSDL ? standardTypeNames.concat(typeNames) : typeNames,
|
|
55
|
+
);
|
|
56
|
+
context.reportError(
|
|
57
|
+
new GraphQLError(
|
|
58
|
+
`Unknown type "${typeName}".` + didYouMean(suggestedTypes),
|
|
59
|
+
node,
|
|
60
|
+
),
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map(
|
|
67
|
+
(type) => type.name,
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
function isSDLNode(value) {
|
|
71
|
+
return (
|
|
72
|
+
'kind' in value &&
|
|
73
|
+
(isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value))
|
|
74
|
+
);
|
|
75
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Lone anonymous operation
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if when it contains an anonymous operation
|
|
7
|
+
* (the query short-hand) that it contains only that one operation definition.
|
|
8
|
+
*
|
|
9
|
+
* See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
|
|
10
|
+
*/
|
|
11
|
+
export declare function LoneAnonymousOperationRule(
|
|
12
|
+
context: ASTValidationContext,
|
|
13
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.LoneAnonymousOperationRule = LoneAnonymousOperationRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
var _kinds = require('../../language/kinds.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Lone anonymous operation
|
|
14
|
+
*
|
|
15
|
+
* A GraphQL document is only valid if when it contains an anonymous operation
|
|
16
|
+
* (the query short-hand) that it contains only that one operation definition.
|
|
17
|
+
*
|
|
18
|
+
* See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
|
|
19
|
+
*/
|
|
20
|
+
function LoneAnonymousOperationRule(context) {
|
|
21
|
+
let operationCount = 0;
|
|
22
|
+
return {
|
|
23
|
+
Document(node) {
|
|
24
|
+
operationCount = node.definitions.filter(
|
|
25
|
+
(definition) => definition.kind === _kinds.Kind.OPERATION_DEFINITION,
|
|
26
|
+
).length;
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
OperationDefinition(node) {
|
|
30
|
+
if (!node.name && operationCount > 1) {
|
|
31
|
+
context.reportError(
|
|
32
|
+
new _GraphQLError.GraphQLError(
|
|
33
|
+
'This anonymous operation must be the only defined operation.',
|
|
34
|
+
node,
|
|
35
|
+
),
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
import { Kind } from '../../language/kinds.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Lone anonymous operation
|
|
6
|
+
*
|
|
7
|
+
* A GraphQL document is only valid if when it contains an anonymous operation
|
|
8
|
+
* (the query short-hand) that it contains only that one operation definition.
|
|
9
|
+
*
|
|
10
|
+
* See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
|
|
11
|
+
*/
|
|
12
|
+
export function LoneAnonymousOperationRule(context) {
|
|
13
|
+
let operationCount = 0;
|
|
14
|
+
return {
|
|
15
|
+
Document(node) {
|
|
16
|
+
operationCount = node.definitions.filter(
|
|
17
|
+
(definition) => definition.kind === Kind.OPERATION_DEFINITION,
|
|
18
|
+
).length;
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
OperationDefinition(node) {
|
|
22
|
+
if (!node.name && operationCount > 1) {
|
|
23
|
+
context.reportError(
|
|
24
|
+
new GraphQLError(
|
|
25
|
+
'This anonymous operation must be the only defined operation.',
|
|
26
|
+
node,
|
|
27
|
+
),
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { SDLValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Lone Schema definition
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if it contains only one schema definition.
|
|
7
|
+
*/
|
|
8
|
+
export declare function LoneSchemaDefinitionRule(
|
|
9
|
+
context: SDLValidationContext,
|
|
10
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Lone Schema definition
|
|
12
|
+
*
|
|
13
|
+
* A GraphQL document is only valid if it contains only one schema definition.
|
|
14
|
+
*/
|
|
15
|
+
function LoneSchemaDefinitionRule(context) {
|
|
16
|
+
var _ref, _ref2, _oldSchema$astNode;
|
|
17
|
+
|
|
18
|
+
const oldSchema = context.getSchema();
|
|
19
|
+
const alreadyDefined =
|
|
20
|
+
(_ref =
|
|
21
|
+
(_ref2 =
|
|
22
|
+
(_oldSchema$astNode =
|
|
23
|
+
oldSchema === null || oldSchema === void 0
|
|
24
|
+
? void 0
|
|
25
|
+
: oldSchema.astNode) !== null && _oldSchema$astNode !== void 0
|
|
26
|
+
? _oldSchema$astNode
|
|
27
|
+
: oldSchema === null || oldSchema === void 0
|
|
28
|
+
? void 0
|
|
29
|
+
: oldSchema.getQueryType()) !== null && _ref2 !== void 0
|
|
30
|
+
? _ref2
|
|
31
|
+
: oldSchema === null || oldSchema === void 0
|
|
32
|
+
? void 0
|
|
33
|
+
: oldSchema.getMutationType()) !== null && _ref !== void 0
|
|
34
|
+
? _ref
|
|
35
|
+
: oldSchema === null || oldSchema === void 0
|
|
36
|
+
? void 0
|
|
37
|
+
: oldSchema.getSubscriptionType();
|
|
38
|
+
let schemaDefinitionsCount = 0;
|
|
39
|
+
return {
|
|
40
|
+
SchemaDefinition(node) {
|
|
41
|
+
if (alreadyDefined) {
|
|
42
|
+
context.reportError(
|
|
43
|
+
new _GraphQLError.GraphQLError(
|
|
44
|
+
'Cannot define a new schema within a schema extension.',
|
|
45
|
+
node,
|
|
46
|
+
),
|
|
47
|
+
);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (schemaDefinitionsCount > 0) {
|
|
52
|
+
context.reportError(
|
|
53
|
+
new _GraphQLError.GraphQLError(
|
|
54
|
+
'Must provide only one schema definition.',
|
|
55
|
+
node,
|
|
56
|
+
),
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
++schemaDefinitionsCount;
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Lone Schema definition
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if it contains only one schema definition.
|
|
7
|
+
*/
|
|
8
|
+
export function LoneSchemaDefinitionRule(context) {
|
|
9
|
+
var _ref, _ref2, _oldSchema$astNode;
|
|
10
|
+
|
|
11
|
+
const oldSchema = context.getSchema();
|
|
12
|
+
const alreadyDefined =
|
|
13
|
+
(_ref =
|
|
14
|
+
(_ref2 =
|
|
15
|
+
(_oldSchema$astNode =
|
|
16
|
+
oldSchema === null || oldSchema === void 0
|
|
17
|
+
? void 0
|
|
18
|
+
: oldSchema.astNode) !== null && _oldSchema$astNode !== void 0
|
|
19
|
+
? _oldSchema$astNode
|
|
20
|
+
: oldSchema === null || oldSchema === void 0
|
|
21
|
+
? void 0
|
|
22
|
+
: oldSchema.getQueryType()) !== null && _ref2 !== void 0
|
|
23
|
+
? _ref2
|
|
24
|
+
: oldSchema === null || oldSchema === void 0
|
|
25
|
+
? void 0
|
|
26
|
+
: oldSchema.getMutationType()) !== null && _ref !== void 0
|
|
27
|
+
? _ref
|
|
28
|
+
: oldSchema === null || oldSchema === void 0
|
|
29
|
+
? void 0
|
|
30
|
+
: oldSchema.getSubscriptionType();
|
|
31
|
+
let schemaDefinitionsCount = 0;
|
|
32
|
+
return {
|
|
33
|
+
SchemaDefinition(node) {
|
|
34
|
+
if (alreadyDefined) {
|
|
35
|
+
context.reportError(
|
|
36
|
+
new GraphQLError(
|
|
37
|
+
'Cannot define a new schema within a schema extension.',
|
|
38
|
+
node,
|
|
39
|
+
),
|
|
40
|
+
);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (schemaDefinitionsCount > 0) {
|
|
45
|
+
context.reportError(
|
|
46
|
+
new GraphQLError('Must provide only one schema definition.', node),
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
++schemaDefinitionsCount;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* No fragment cycles
|
|
5
|
+
*
|
|
6
|
+
* The graph of fragment spreads must not form any cycles including spreading itself.
|
|
7
|
+
* Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
|
|
8
|
+
*
|
|
9
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
|
|
10
|
+
*/
|
|
11
|
+
export declare function NoFragmentCyclesRule(
|
|
12
|
+
context: ASTValidationContext,
|
|
13
|
+
): ASTVisitor;
|