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,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.UniqueFragmentNamesRule = UniqueFragmentNamesRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Unique fragment names
|
|
12
|
+
*
|
|
13
|
+
* A GraphQL document is only valid if all defined fragments have unique names.
|
|
14
|
+
*
|
|
15
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness
|
|
16
|
+
*/
|
|
17
|
+
function UniqueFragmentNamesRule(context) {
|
|
18
|
+
const knownFragmentNames = Object.create(null);
|
|
19
|
+
return {
|
|
20
|
+
OperationDefinition: () => false,
|
|
21
|
+
|
|
22
|
+
FragmentDefinition(node) {
|
|
23
|
+
const fragmentName = node.name.value;
|
|
24
|
+
|
|
25
|
+
if (knownFragmentNames[fragmentName]) {
|
|
26
|
+
context.reportError(
|
|
27
|
+
new _GraphQLError.GraphQLError(
|
|
28
|
+
`There can be only one fragment named "${fragmentName}".`,
|
|
29
|
+
[knownFragmentNames[fragmentName], node.name],
|
|
30
|
+
),
|
|
31
|
+
);
|
|
32
|
+
} else {
|
|
33
|
+
knownFragmentNames[fragmentName] = node.name;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return false;
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unique fragment names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all defined fragments have unique names.
|
|
7
|
+
*
|
|
8
|
+
* See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness
|
|
9
|
+
*/
|
|
10
|
+
export function UniqueFragmentNamesRule(context) {
|
|
11
|
+
const knownFragmentNames = Object.create(null);
|
|
12
|
+
return {
|
|
13
|
+
OperationDefinition: () => false,
|
|
14
|
+
|
|
15
|
+
FragmentDefinition(node) {
|
|
16
|
+
const fragmentName = node.name.value;
|
|
17
|
+
|
|
18
|
+
if (knownFragmentNames[fragmentName]) {
|
|
19
|
+
context.reportError(
|
|
20
|
+
new GraphQLError(
|
|
21
|
+
`There can be only one fragment named "${fragmentName}".`,
|
|
22
|
+
[knownFragmentNames[fragmentName], node.name],
|
|
23
|
+
),
|
|
24
|
+
);
|
|
25
|
+
} else {
|
|
26
|
+
knownFragmentNames[fragmentName] = node.name;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return false;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Unique input field names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL input object value is only valid if all supplied fields are
|
|
7
|
+
* uniquely named.
|
|
8
|
+
*
|
|
9
|
+
* See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
|
|
10
|
+
*/
|
|
11
|
+
export declare function UniqueInputFieldNamesRule(
|
|
12
|
+
context: ASTValidationContext,
|
|
13
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.UniqueInputFieldNamesRule = UniqueInputFieldNamesRule;
|
|
7
|
+
|
|
8
|
+
var _invariant = require('../../jsutils/invariant.js');
|
|
9
|
+
|
|
10
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Unique input field names
|
|
14
|
+
*
|
|
15
|
+
* A GraphQL input object value is only valid if all supplied fields are
|
|
16
|
+
* uniquely named.
|
|
17
|
+
*
|
|
18
|
+
* See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
|
|
19
|
+
*/
|
|
20
|
+
function UniqueInputFieldNamesRule(context) {
|
|
21
|
+
const knownNameStack = [];
|
|
22
|
+
let knownNames = Object.create(null);
|
|
23
|
+
return {
|
|
24
|
+
ObjectValue: {
|
|
25
|
+
enter() {
|
|
26
|
+
knownNameStack.push(knownNames);
|
|
27
|
+
knownNames = Object.create(null);
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
leave() {
|
|
31
|
+
const prevKnownNames = knownNameStack.pop();
|
|
32
|
+
prevKnownNames || (0, _invariant.invariant)(false);
|
|
33
|
+
knownNames = prevKnownNames;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
ObjectField(node) {
|
|
38
|
+
const fieldName = node.name.value;
|
|
39
|
+
|
|
40
|
+
if (knownNames[fieldName]) {
|
|
41
|
+
context.reportError(
|
|
42
|
+
new _GraphQLError.GraphQLError(
|
|
43
|
+
`There can be only one input field named "${fieldName}".`,
|
|
44
|
+
[knownNames[fieldName], node.name],
|
|
45
|
+
),
|
|
46
|
+
);
|
|
47
|
+
} else {
|
|
48
|
+
knownNames[fieldName] = node.name;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { invariant } from '../../jsutils/invariant.mjs';
|
|
2
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unique input field names
|
|
6
|
+
*
|
|
7
|
+
* A GraphQL input object value is only valid if all supplied fields are
|
|
8
|
+
* uniquely named.
|
|
9
|
+
*
|
|
10
|
+
* See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
|
|
11
|
+
*/
|
|
12
|
+
export function UniqueInputFieldNamesRule(context) {
|
|
13
|
+
const knownNameStack = [];
|
|
14
|
+
let knownNames = Object.create(null);
|
|
15
|
+
return {
|
|
16
|
+
ObjectValue: {
|
|
17
|
+
enter() {
|
|
18
|
+
knownNameStack.push(knownNames);
|
|
19
|
+
knownNames = Object.create(null);
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
leave() {
|
|
23
|
+
const prevKnownNames = knownNameStack.pop();
|
|
24
|
+
prevKnownNames || invariant(false);
|
|
25
|
+
knownNames = prevKnownNames;
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
ObjectField(node) {
|
|
30
|
+
const fieldName = node.name.value;
|
|
31
|
+
|
|
32
|
+
if (knownNames[fieldName]) {
|
|
33
|
+
context.reportError(
|
|
34
|
+
new GraphQLError(
|
|
35
|
+
`There can be only one input field named "${fieldName}".`,
|
|
36
|
+
[knownNames[fieldName], node.name],
|
|
37
|
+
),
|
|
38
|
+
);
|
|
39
|
+
} else {
|
|
40
|
+
knownNames[fieldName] = node.name;
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Unique operation names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all defined operations have unique names.
|
|
7
|
+
*
|
|
8
|
+
* See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness
|
|
9
|
+
*/
|
|
10
|
+
export declare function UniqueOperationNamesRule(
|
|
11
|
+
context: ASTValidationContext,
|
|
12
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.UniqueOperationNamesRule = UniqueOperationNamesRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Unique operation names
|
|
12
|
+
*
|
|
13
|
+
* A GraphQL document is only valid if all defined operations have unique names.
|
|
14
|
+
*
|
|
15
|
+
* See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness
|
|
16
|
+
*/
|
|
17
|
+
function UniqueOperationNamesRule(context) {
|
|
18
|
+
const knownOperationNames = Object.create(null);
|
|
19
|
+
return {
|
|
20
|
+
OperationDefinition(node) {
|
|
21
|
+
const operationName = node.name;
|
|
22
|
+
|
|
23
|
+
if (operationName) {
|
|
24
|
+
if (knownOperationNames[operationName.value]) {
|
|
25
|
+
context.reportError(
|
|
26
|
+
new _GraphQLError.GraphQLError(
|
|
27
|
+
`There can be only one operation named "${operationName.value}".`,
|
|
28
|
+
[knownOperationNames[operationName.value], operationName],
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
} else {
|
|
32
|
+
knownOperationNames[operationName.value] = operationName;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return false;
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
FragmentDefinition: () => false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unique operation names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all defined operations have unique names.
|
|
7
|
+
*
|
|
8
|
+
* See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness
|
|
9
|
+
*/
|
|
10
|
+
export function UniqueOperationNamesRule(context) {
|
|
11
|
+
const knownOperationNames = Object.create(null);
|
|
12
|
+
return {
|
|
13
|
+
OperationDefinition(node) {
|
|
14
|
+
const operationName = node.name;
|
|
15
|
+
|
|
16
|
+
if (operationName) {
|
|
17
|
+
if (knownOperationNames[operationName.value]) {
|
|
18
|
+
context.reportError(
|
|
19
|
+
new GraphQLError(
|
|
20
|
+
`There can be only one operation named "${operationName.value}".`,
|
|
21
|
+
[knownOperationNames[operationName.value], operationName],
|
|
22
|
+
),
|
|
23
|
+
);
|
|
24
|
+
} else {
|
|
25
|
+
knownOperationNames[operationName.value] = operationName;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return false;
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
FragmentDefinition: () => false,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { SDLValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Unique operation types
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if it has only one type per operation.
|
|
7
|
+
*/
|
|
8
|
+
export declare function UniqueOperationTypesRule(
|
|
9
|
+
context: SDLValidationContext,
|
|
10
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.UniqueOperationTypesRule = UniqueOperationTypesRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Unique operation types
|
|
12
|
+
*
|
|
13
|
+
* A GraphQL document is only valid if it has only one type per operation.
|
|
14
|
+
*/
|
|
15
|
+
function UniqueOperationTypesRule(context) {
|
|
16
|
+
const schema = context.getSchema();
|
|
17
|
+
const definedOperationTypes = Object.create(null);
|
|
18
|
+
const existingOperationTypes = schema
|
|
19
|
+
? {
|
|
20
|
+
query: schema.getQueryType(),
|
|
21
|
+
mutation: schema.getMutationType(),
|
|
22
|
+
subscription: schema.getSubscriptionType(),
|
|
23
|
+
}
|
|
24
|
+
: {};
|
|
25
|
+
return {
|
|
26
|
+
SchemaDefinition: checkOperationTypes,
|
|
27
|
+
SchemaExtension: checkOperationTypes,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
function checkOperationTypes(node) {
|
|
31
|
+
var _node$operationTypes;
|
|
32
|
+
|
|
33
|
+
// See: https://github.com/graphql/graphql-js/issues/2203
|
|
34
|
+
|
|
35
|
+
/* c8 ignore next */
|
|
36
|
+
const operationTypesNodes =
|
|
37
|
+
(_node$operationTypes = node.operationTypes) !== null &&
|
|
38
|
+
_node$operationTypes !== void 0
|
|
39
|
+
? _node$operationTypes
|
|
40
|
+
: [];
|
|
41
|
+
|
|
42
|
+
for (const operationType of operationTypesNodes) {
|
|
43
|
+
const operation = operationType.operation;
|
|
44
|
+
const alreadyDefinedOperationType = definedOperationTypes[operation];
|
|
45
|
+
|
|
46
|
+
if (existingOperationTypes[operation]) {
|
|
47
|
+
context.reportError(
|
|
48
|
+
new _GraphQLError.GraphQLError(
|
|
49
|
+
`Type for ${operation} already defined in the schema. It cannot be redefined.`,
|
|
50
|
+
operationType,
|
|
51
|
+
),
|
|
52
|
+
);
|
|
53
|
+
} else if (alreadyDefinedOperationType) {
|
|
54
|
+
context.reportError(
|
|
55
|
+
new _GraphQLError.GraphQLError(
|
|
56
|
+
`There can be only one ${operation} type in schema.`,
|
|
57
|
+
[alreadyDefinedOperationType, operationType],
|
|
58
|
+
),
|
|
59
|
+
);
|
|
60
|
+
} else {
|
|
61
|
+
definedOperationTypes[operation] = operationType;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unique operation types
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if it has only one type per operation.
|
|
7
|
+
*/
|
|
8
|
+
export function UniqueOperationTypesRule(context) {
|
|
9
|
+
const schema = context.getSchema();
|
|
10
|
+
const definedOperationTypes = Object.create(null);
|
|
11
|
+
const existingOperationTypes = schema
|
|
12
|
+
? {
|
|
13
|
+
query: schema.getQueryType(),
|
|
14
|
+
mutation: schema.getMutationType(),
|
|
15
|
+
subscription: schema.getSubscriptionType(),
|
|
16
|
+
}
|
|
17
|
+
: {};
|
|
18
|
+
return {
|
|
19
|
+
SchemaDefinition: checkOperationTypes,
|
|
20
|
+
SchemaExtension: checkOperationTypes,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
function checkOperationTypes(node) {
|
|
24
|
+
var _node$operationTypes;
|
|
25
|
+
|
|
26
|
+
// See: https://github.com/graphql/graphql-js/issues/2203
|
|
27
|
+
|
|
28
|
+
/* c8 ignore next */
|
|
29
|
+
const operationTypesNodes =
|
|
30
|
+
(_node$operationTypes = node.operationTypes) !== null &&
|
|
31
|
+
_node$operationTypes !== void 0
|
|
32
|
+
? _node$operationTypes
|
|
33
|
+
: [];
|
|
34
|
+
|
|
35
|
+
for (const operationType of operationTypesNodes) {
|
|
36
|
+
const operation = operationType.operation;
|
|
37
|
+
const alreadyDefinedOperationType = definedOperationTypes[operation];
|
|
38
|
+
|
|
39
|
+
if (existingOperationTypes[operation]) {
|
|
40
|
+
context.reportError(
|
|
41
|
+
new GraphQLError(
|
|
42
|
+
`Type for ${operation} already defined in the schema. It cannot be redefined.`,
|
|
43
|
+
operationType,
|
|
44
|
+
),
|
|
45
|
+
);
|
|
46
|
+
} else if (alreadyDefinedOperationType) {
|
|
47
|
+
context.reportError(
|
|
48
|
+
new GraphQLError(
|
|
49
|
+
`There can be only one ${operation} type in schema.`,
|
|
50
|
+
[alreadyDefinedOperationType, operationType],
|
|
51
|
+
),
|
|
52
|
+
);
|
|
53
|
+
} else {
|
|
54
|
+
definedOperationTypes[operation] = operationType;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { SDLValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Unique type names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all defined types have unique names.
|
|
7
|
+
*/
|
|
8
|
+
export declare function UniqueTypeNamesRule(
|
|
9
|
+
context: SDLValidationContext,
|
|
10
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.UniqueTypeNamesRule = UniqueTypeNamesRule;
|
|
7
|
+
|
|
8
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Unique type names
|
|
12
|
+
*
|
|
13
|
+
* A GraphQL document is only valid if all defined types have unique names.
|
|
14
|
+
*/
|
|
15
|
+
function UniqueTypeNamesRule(context) {
|
|
16
|
+
const knownTypeNames = Object.create(null);
|
|
17
|
+
const schema = context.getSchema();
|
|
18
|
+
return {
|
|
19
|
+
ScalarTypeDefinition: checkTypeName,
|
|
20
|
+
ObjectTypeDefinition: checkTypeName,
|
|
21
|
+
InterfaceTypeDefinition: checkTypeName,
|
|
22
|
+
UnionTypeDefinition: checkTypeName,
|
|
23
|
+
EnumTypeDefinition: checkTypeName,
|
|
24
|
+
InputObjectTypeDefinition: checkTypeName,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
function checkTypeName(node) {
|
|
28
|
+
const typeName = node.name.value;
|
|
29
|
+
|
|
30
|
+
if (schema !== null && schema !== void 0 && schema.getType(typeName)) {
|
|
31
|
+
context.reportError(
|
|
32
|
+
new _GraphQLError.GraphQLError(
|
|
33
|
+
`Type "${typeName}" already exists in the schema. It cannot also be defined in this type definition.`,
|
|
34
|
+
node.name,
|
|
35
|
+
),
|
|
36
|
+
);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (knownTypeNames[typeName]) {
|
|
41
|
+
context.reportError(
|
|
42
|
+
new _GraphQLError.GraphQLError(
|
|
43
|
+
`There can be only one type named "${typeName}".`,
|
|
44
|
+
[knownTypeNames[typeName], node.name],
|
|
45
|
+
),
|
|
46
|
+
);
|
|
47
|
+
} else {
|
|
48
|
+
knownTypeNames[typeName] = node.name;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unique type names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all defined types have unique names.
|
|
7
|
+
*/
|
|
8
|
+
export function UniqueTypeNamesRule(context) {
|
|
9
|
+
const knownTypeNames = Object.create(null);
|
|
10
|
+
const schema = context.getSchema();
|
|
11
|
+
return {
|
|
12
|
+
ScalarTypeDefinition: checkTypeName,
|
|
13
|
+
ObjectTypeDefinition: checkTypeName,
|
|
14
|
+
InterfaceTypeDefinition: checkTypeName,
|
|
15
|
+
UnionTypeDefinition: checkTypeName,
|
|
16
|
+
EnumTypeDefinition: checkTypeName,
|
|
17
|
+
InputObjectTypeDefinition: checkTypeName,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
function checkTypeName(node) {
|
|
21
|
+
const typeName = node.name.value;
|
|
22
|
+
|
|
23
|
+
if (schema !== null && schema !== void 0 && schema.getType(typeName)) {
|
|
24
|
+
context.reportError(
|
|
25
|
+
new GraphQLError(
|
|
26
|
+
`Type "${typeName}" already exists in the schema. It cannot also be defined in this type definition.`,
|
|
27
|
+
node.name,
|
|
28
|
+
),
|
|
29
|
+
);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (knownTypeNames[typeName]) {
|
|
34
|
+
context.reportError(
|
|
35
|
+
new GraphQLError(`There can be only one type named "${typeName}".`, [
|
|
36
|
+
knownTypeNames[typeName],
|
|
37
|
+
node.name,
|
|
38
|
+
]),
|
|
39
|
+
);
|
|
40
|
+
} else {
|
|
41
|
+
knownTypeNames[typeName] = node.name;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ASTValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Unique variable names
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL operation is only valid if all its variables are uniquely named.
|
|
7
|
+
*/
|
|
8
|
+
export declare function UniqueVariableNamesRule(
|
|
9
|
+
context: ASTValidationContext,
|
|
10
|
+
): ASTVisitor;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.UniqueVariableNamesRule = UniqueVariableNamesRule;
|
|
7
|
+
|
|
8
|
+
var _groupBy = require('../../jsutils/groupBy.js');
|
|
9
|
+
|
|
10
|
+
var _GraphQLError = require('../../error/GraphQLError.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Unique variable names
|
|
14
|
+
*
|
|
15
|
+
* A GraphQL operation is only valid if all its variables are uniquely named.
|
|
16
|
+
*/
|
|
17
|
+
function UniqueVariableNamesRule(context) {
|
|
18
|
+
return {
|
|
19
|
+
OperationDefinition(operationNode) {
|
|
20
|
+
var _operationNode$variab;
|
|
21
|
+
|
|
22
|
+
// See: https://github.com/graphql/graphql-js/issues/2203
|
|
23
|
+
|
|
24
|
+
/* c8 ignore next */
|
|
25
|
+
const variableDefinitions =
|
|
26
|
+
(_operationNode$variab = operationNode.variableDefinitions) !== null &&
|
|
27
|
+
_operationNode$variab !== void 0
|
|
28
|
+
? _operationNode$variab
|
|
29
|
+
: [];
|
|
30
|
+
const seenVariableDefinitions = (0, _groupBy.groupBy)(
|
|
31
|
+
variableDefinitions,
|
|
32
|
+
(node) => node.variable.name.value,
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
for (const [variableName, variableNodes] of seenVariableDefinitions) {
|
|
36
|
+
if (variableNodes.length > 1) {
|
|
37
|
+
context.reportError(
|
|
38
|
+
new _GraphQLError.GraphQLError(
|
|
39
|
+
`There can be only one variable named "$${variableName}".`,
|
|
40
|
+
variableNodes.map((node) => node.variable.name),
|
|
41
|
+
),
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { groupBy } from '../../jsutils/groupBy.mjs';
|
|
2
|
+
import { GraphQLError } from '../../error/GraphQLError.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unique variable names
|
|
6
|
+
*
|
|
7
|
+
* A GraphQL operation is only valid if all its variables are uniquely named.
|
|
8
|
+
*/
|
|
9
|
+
export function UniqueVariableNamesRule(context) {
|
|
10
|
+
return {
|
|
11
|
+
OperationDefinition(operationNode) {
|
|
12
|
+
var _operationNode$variab;
|
|
13
|
+
|
|
14
|
+
// See: https://github.com/graphql/graphql-js/issues/2203
|
|
15
|
+
|
|
16
|
+
/* c8 ignore next */
|
|
17
|
+
const variableDefinitions =
|
|
18
|
+
(_operationNode$variab = operationNode.variableDefinitions) !== null &&
|
|
19
|
+
_operationNode$variab !== void 0
|
|
20
|
+
? _operationNode$variab
|
|
21
|
+
: [];
|
|
22
|
+
const seenVariableDefinitions = groupBy(
|
|
23
|
+
variableDefinitions,
|
|
24
|
+
(node) => node.variable.name.value,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
for (const [variableName, variableNodes] of seenVariableDefinitions) {
|
|
28
|
+
if (variableNodes.length > 1) {
|
|
29
|
+
context.reportError(
|
|
30
|
+
new GraphQLError(
|
|
31
|
+
`There can be only one variable named "$${variableName}".`,
|
|
32
|
+
variableNodes.map((node) => node.variable.name),
|
|
33
|
+
),
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ASTVisitor } from '../../language/visitor';
|
|
2
|
+
import type { ValidationContext } from '../ValidationContext';
|
|
3
|
+
/**
|
|
4
|
+
* Value literals of correct type
|
|
5
|
+
*
|
|
6
|
+
* A GraphQL document is only valid if all value literals are of the type
|
|
7
|
+
* expected at their position.
|
|
8
|
+
*
|
|
9
|
+
* See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type
|
|
10
|
+
*/
|
|
11
|
+
export declare function ValuesOfCorrectTypeRule(
|
|
12
|
+
context: ValidationContext,
|
|
13
|
+
): ASTVisitor;
|