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,309 @@
|
|
|
1
|
+
import { inspect } from '../jsutils/inspect.mjs';
|
|
2
|
+
import { invariant } from '../jsutils/invariant.mjs';
|
|
3
|
+
import { isPrintableAsBlockString } from '../language/blockString.mjs';
|
|
4
|
+
import { Kind } from '../language/kinds.mjs';
|
|
5
|
+
import { print } from '../language/printer.mjs';
|
|
6
|
+
import {
|
|
7
|
+
isEnumType,
|
|
8
|
+
isInputObjectType,
|
|
9
|
+
isInterfaceType,
|
|
10
|
+
isObjectType,
|
|
11
|
+
isScalarType,
|
|
12
|
+
isUnionType,
|
|
13
|
+
} from '../type/definition.mjs';
|
|
14
|
+
import {
|
|
15
|
+
DEFAULT_DEPRECATION_REASON,
|
|
16
|
+
isSpecifiedDirective,
|
|
17
|
+
} from '../type/directives.mjs';
|
|
18
|
+
import { isIntrospectionType } from '../type/introspection.mjs';
|
|
19
|
+
import { isSpecifiedScalarType } from '../type/scalars.mjs';
|
|
20
|
+
import { astFromValue } from './astFromValue.mjs';
|
|
21
|
+
export function printSchema(schema) {
|
|
22
|
+
return printFilteredSchema(
|
|
23
|
+
schema,
|
|
24
|
+
(n) => !isSpecifiedDirective(n),
|
|
25
|
+
isDefinedType,
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
export function printIntrospectionSchema(schema) {
|
|
29
|
+
return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function isDefinedType(type) {
|
|
33
|
+
return !isSpecifiedScalarType(type) && !isIntrospectionType(type);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function printFilteredSchema(schema, directiveFilter, typeFilter) {
|
|
37
|
+
const directives = schema.getDirectives().filter(directiveFilter);
|
|
38
|
+
const types = Object.values(schema.getTypeMap()).filter(typeFilter);
|
|
39
|
+
return [
|
|
40
|
+
printSchemaDefinition(schema),
|
|
41
|
+
...directives.map((directive) => printDirective(directive)),
|
|
42
|
+
...types.map((type) => printType(type)),
|
|
43
|
+
]
|
|
44
|
+
.filter(Boolean)
|
|
45
|
+
.join('\n\n');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function printSchemaDefinition(schema) {
|
|
49
|
+
if (schema.description == null && isSchemaOfCommonNames(schema)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const operationTypes = [];
|
|
54
|
+
const queryType = schema.getQueryType();
|
|
55
|
+
|
|
56
|
+
if (queryType) {
|
|
57
|
+
operationTypes.push(` query: ${queryType.name}`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const mutationType = schema.getMutationType();
|
|
61
|
+
|
|
62
|
+
if (mutationType) {
|
|
63
|
+
operationTypes.push(` mutation: ${mutationType.name}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const subscriptionType = schema.getSubscriptionType();
|
|
67
|
+
|
|
68
|
+
if (subscriptionType) {
|
|
69
|
+
operationTypes.push(` subscription: ${subscriptionType.name}`);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return printDescription(schema) + `schema {\n${operationTypes.join('\n')}\n}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* GraphQL schema define root types for each type of operation. These types are
|
|
76
|
+
* the same as any other type and can be named in any manner, however there is
|
|
77
|
+
* a common naming convention:
|
|
78
|
+
*
|
|
79
|
+
* ```graphql
|
|
80
|
+
* schema {
|
|
81
|
+
* query: Query
|
|
82
|
+
* mutation: Mutation
|
|
83
|
+
* subscription: Subscription
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* When using this naming convention, the schema description can be omitted.
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
function isSchemaOfCommonNames(schema) {
|
|
91
|
+
const queryType = schema.getQueryType();
|
|
92
|
+
|
|
93
|
+
if (queryType && queryType.name !== 'Query') {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const mutationType = schema.getMutationType();
|
|
98
|
+
|
|
99
|
+
if (mutationType && mutationType.name !== 'Mutation') {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const subscriptionType = schema.getSubscriptionType();
|
|
104
|
+
|
|
105
|
+
if (subscriptionType && subscriptionType.name !== 'Subscription') {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function printType(type) {
|
|
113
|
+
if (isScalarType(type)) {
|
|
114
|
+
return printScalar(type);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (isObjectType(type)) {
|
|
118
|
+
return printObject(type);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (isInterfaceType(type)) {
|
|
122
|
+
return printInterface(type);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (isUnionType(type)) {
|
|
126
|
+
return printUnion(type);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (isEnumType(type)) {
|
|
130
|
+
return printEnum(type);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (isInputObjectType(type)) {
|
|
134
|
+
return printInputObject(type);
|
|
135
|
+
}
|
|
136
|
+
/* c8 ignore next 3 */
|
|
137
|
+
// Not reachable, all possible types have been considered.
|
|
138
|
+
|
|
139
|
+
false || invariant(false, 'Unexpected type: ' + inspect(type));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function printScalar(type) {
|
|
143
|
+
return (
|
|
144
|
+
printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function printImplementedInterfaces(type) {
|
|
149
|
+
const interfaces = type.getInterfaces();
|
|
150
|
+
return interfaces.length
|
|
151
|
+
? ' implements ' + interfaces.map((i) => i.name).join(' & ')
|
|
152
|
+
: '';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function printObject(type) {
|
|
156
|
+
return (
|
|
157
|
+
printDescription(type) +
|
|
158
|
+
`type ${type.name}` +
|
|
159
|
+
printImplementedInterfaces(type) +
|
|
160
|
+
printFields(type)
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function printInterface(type) {
|
|
165
|
+
return (
|
|
166
|
+
printDescription(type) +
|
|
167
|
+
`interface ${type.name}` +
|
|
168
|
+
printImplementedInterfaces(type) +
|
|
169
|
+
printFields(type)
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function printUnion(type) {
|
|
174
|
+
const types = type.getTypes();
|
|
175
|
+
const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
|
|
176
|
+
return printDescription(type) + 'union ' + type.name + possibleTypes;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function printEnum(type) {
|
|
180
|
+
const values = type
|
|
181
|
+
.getValues()
|
|
182
|
+
.map(
|
|
183
|
+
(value, i) =>
|
|
184
|
+
printDescription(value, ' ', !i) +
|
|
185
|
+
' ' +
|
|
186
|
+
value.name +
|
|
187
|
+
printDeprecated(value.deprecationReason),
|
|
188
|
+
);
|
|
189
|
+
return printDescription(type) + `enum ${type.name}` + printBlock(values);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function printInputObject(type) {
|
|
193
|
+
const fields = Object.values(type.getFields()).map(
|
|
194
|
+
(f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),
|
|
195
|
+
);
|
|
196
|
+
return printDescription(type) + `input ${type.name}` + printBlock(fields);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function printFields(type) {
|
|
200
|
+
const fields = Object.values(type.getFields()).map(
|
|
201
|
+
(f, i) =>
|
|
202
|
+
printDescription(f, ' ', !i) +
|
|
203
|
+
' ' +
|
|
204
|
+
f.name +
|
|
205
|
+
printArgs(f.args, ' ') +
|
|
206
|
+
': ' +
|
|
207
|
+
String(f.type) +
|
|
208
|
+
printDeprecated(f.deprecationReason),
|
|
209
|
+
);
|
|
210
|
+
return printBlock(fields);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function printBlock(items) {
|
|
214
|
+
return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function printArgs(args, indentation = '') {
|
|
218
|
+
if (args.length === 0) {
|
|
219
|
+
return '';
|
|
220
|
+
} // If every arg does not have a description, print them on one line.
|
|
221
|
+
|
|
222
|
+
if (args.every((arg) => !arg.description)) {
|
|
223
|
+
return '(' + args.map(printInputValue).join(', ') + ')';
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
return (
|
|
227
|
+
'(\n' +
|
|
228
|
+
args
|
|
229
|
+
.map(
|
|
230
|
+
(arg, i) =>
|
|
231
|
+
printDescription(arg, ' ' + indentation, !i) +
|
|
232
|
+
' ' +
|
|
233
|
+
indentation +
|
|
234
|
+
printInputValue(arg),
|
|
235
|
+
)
|
|
236
|
+
.join('\n') +
|
|
237
|
+
'\n' +
|
|
238
|
+
indentation +
|
|
239
|
+
')'
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function printInputValue(arg) {
|
|
244
|
+
const defaultAST = astFromValue(arg.defaultValue, arg.type);
|
|
245
|
+
let argDecl = arg.name + ': ' + String(arg.type);
|
|
246
|
+
|
|
247
|
+
if (defaultAST) {
|
|
248
|
+
argDecl += ` = ${print(defaultAST)}`;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return argDecl + printDeprecated(arg.deprecationReason);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function printDirective(directive) {
|
|
255
|
+
return (
|
|
256
|
+
printDescription(directive) +
|
|
257
|
+
'directive @' +
|
|
258
|
+
directive.name +
|
|
259
|
+
printArgs(directive.args) +
|
|
260
|
+
(directive.isRepeatable ? ' repeatable' : '') +
|
|
261
|
+
' on ' +
|
|
262
|
+
directive.locations.join(' | ')
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function printDeprecated(reason) {
|
|
267
|
+
if (reason == null) {
|
|
268
|
+
return '';
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
if (reason !== DEFAULT_DEPRECATION_REASON) {
|
|
272
|
+
const astValue = print({
|
|
273
|
+
kind: Kind.STRING,
|
|
274
|
+
value: reason,
|
|
275
|
+
});
|
|
276
|
+
return ` @deprecated(reason: ${astValue})`;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return ' @deprecated';
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
function printSpecifiedByURL(scalar) {
|
|
283
|
+
if (scalar.specifiedByURL == null) {
|
|
284
|
+
return '';
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const astValue = print({
|
|
288
|
+
kind: Kind.STRING,
|
|
289
|
+
value: scalar.specifiedByURL,
|
|
290
|
+
});
|
|
291
|
+
return ` @specifiedBy(url: ${astValue})`;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function printDescription(def, indentation = '', firstInBlock = true) {
|
|
295
|
+
const { description } = def;
|
|
296
|
+
|
|
297
|
+
if (description == null) {
|
|
298
|
+
return '';
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const blockString = print({
|
|
302
|
+
kind: Kind.STRING,
|
|
303
|
+
value: description,
|
|
304
|
+
block: isPrintableAsBlockString(description),
|
|
305
|
+
});
|
|
306
|
+
const prefix =
|
|
307
|
+
indentation && !firstInBlock ? '\n' + indentation : indentation;
|
|
308
|
+
return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
|
|
309
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ObjMap } from '../jsutils/ObjMap';
|
|
2
|
+
import type { DocumentNode } from '../language/ast';
|
|
3
|
+
/**
|
|
4
|
+
* separateOperations accepts a single AST document which may contain many
|
|
5
|
+
* operations and fragments and returns a collection of AST documents each of
|
|
6
|
+
* which contains a single operation as well the fragment definitions it
|
|
7
|
+
* refers to.
|
|
8
|
+
*/
|
|
9
|
+
export declare function separateOperations(
|
|
10
|
+
documentAST: DocumentNode,
|
|
11
|
+
): ObjMap<DocumentNode>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.separateOperations = separateOperations;
|
|
7
|
+
|
|
8
|
+
var _kinds = require('../language/kinds.js');
|
|
9
|
+
|
|
10
|
+
var _visitor = require('../language/visitor.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* separateOperations accepts a single AST document which may contain many
|
|
14
|
+
* operations and fragments and returns a collection of AST documents each of
|
|
15
|
+
* which contains a single operation as well the fragment definitions it
|
|
16
|
+
* refers to.
|
|
17
|
+
*/
|
|
18
|
+
function separateOperations(documentAST) {
|
|
19
|
+
const operations = [];
|
|
20
|
+
const depGraph = Object.create(null); // Populate metadata and build a dependency graph.
|
|
21
|
+
|
|
22
|
+
for (const definitionNode of documentAST.definitions) {
|
|
23
|
+
switch (definitionNode.kind) {
|
|
24
|
+
case _kinds.Kind.OPERATION_DEFINITION:
|
|
25
|
+
operations.push(definitionNode);
|
|
26
|
+
break;
|
|
27
|
+
|
|
28
|
+
case _kinds.Kind.FRAGMENT_DEFINITION:
|
|
29
|
+
depGraph[definitionNode.name.value] = collectDependencies(
|
|
30
|
+
definitionNode.selectionSet,
|
|
31
|
+
);
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
default: // ignore non-executable definitions
|
|
35
|
+
}
|
|
36
|
+
} // For each operation, produce a new synthesized AST which includes only what
|
|
37
|
+
// is necessary for completing that operation.
|
|
38
|
+
|
|
39
|
+
const separatedDocumentASTs = Object.create(null);
|
|
40
|
+
|
|
41
|
+
for (const operation of operations) {
|
|
42
|
+
const dependencies = new Set();
|
|
43
|
+
|
|
44
|
+
for (const fragmentName of collectDependencies(operation.selectionSet)) {
|
|
45
|
+
collectTransitiveDependencies(dependencies, depGraph, fragmentName);
|
|
46
|
+
} // Provides the empty string for anonymous operations.
|
|
47
|
+
|
|
48
|
+
const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted
|
|
49
|
+
// to retain the same order as the original document.
|
|
50
|
+
|
|
51
|
+
separatedDocumentASTs[operationName] = {
|
|
52
|
+
kind: _kinds.Kind.DOCUMENT,
|
|
53
|
+
definitions: documentAST.definitions.filter(
|
|
54
|
+
(node) =>
|
|
55
|
+
node === operation ||
|
|
56
|
+
(node.kind === _kinds.Kind.FRAGMENT_DEFINITION &&
|
|
57
|
+
dependencies.has(node.name.value)),
|
|
58
|
+
),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return separatedDocumentASTs;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// From a dependency graph, collects a list of transitive dependencies by
|
|
66
|
+
// recursing through a dependency graph.
|
|
67
|
+
function collectTransitiveDependencies(collected, depGraph, fromName) {
|
|
68
|
+
if (!collected.has(fromName)) {
|
|
69
|
+
collected.add(fromName);
|
|
70
|
+
const immediateDeps = depGraph[fromName];
|
|
71
|
+
|
|
72
|
+
if (immediateDeps !== undefined) {
|
|
73
|
+
for (const toName of immediateDeps) {
|
|
74
|
+
collectTransitiveDependencies(collected, depGraph, toName);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function collectDependencies(selectionSet) {
|
|
81
|
+
const dependencies = [];
|
|
82
|
+
(0, _visitor.visit)(selectionSet, {
|
|
83
|
+
FragmentSpread(node) {
|
|
84
|
+
dependencies.push(node.name.value);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
return dependencies;
|
|
88
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Kind } from '../language/kinds.mjs';
|
|
2
|
+
import { visit } from '../language/visitor.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* separateOperations accepts a single AST document which may contain many
|
|
5
|
+
* operations and fragments and returns a collection of AST documents each of
|
|
6
|
+
* which contains a single operation as well the fragment definitions it
|
|
7
|
+
* refers to.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export function separateOperations(documentAST) {
|
|
11
|
+
const operations = [];
|
|
12
|
+
const depGraph = Object.create(null); // Populate metadata and build a dependency graph.
|
|
13
|
+
|
|
14
|
+
for (const definitionNode of documentAST.definitions) {
|
|
15
|
+
switch (definitionNode.kind) {
|
|
16
|
+
case Kind.OPERATION_DEFINITION:
|
|
17
|
+
operations.push(definitionNode);
|
|
18
|
+
break;
|
|
19
|
+
|
|
20
|
+
case Kind.FRAGMENT_DEFINITION:
|
|
21
|
+
depGraph[definitionNode.name.value] = collectDependencies(
|
|
22
|
+
definitionNode.selectionSet,
|
|
23
|
+
);
|
|
24
|
+
break;
|
|
25
|
+
|
|
26
|
+
default: // ignore non-executable definitions
|
|
27
|
+
}
|
|
28
|
+
} // For each operation, produce a new synthesized AST which includes only what
|
|
29
|
+
// is necessary for completing that operation.
|
|
30
|
+
|
|
31
|
+
const separatedDocumentASTs = Object.create(null);
|
|
32
|
+
|
|
33
|
+
for (const operation of operations) {
|
|
34
|
+
const dependencies = new Set();
|
|
35
|
+
|
|
36
|
+
for (const fragmentName of collectDependencies(operation.selectionSet)) {
|
|
37
|
+
collectTransitiveDependencies(dependencies, depGraph, fragmentName);
|
|
38
|
+
} // Provides the empty string for anonymous operations.
|
|
39
|
+
|
|
40
|
+
const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted
|
|
41
|
+
// to retain the same order as the original document.
|
|
42
|
+
|
|
43
|
+
separatedDocumentASTs[operationName] = {
|
|
44
|
+
kind: Kind.DOCUMENT,
|
|
45
|
+
definitions: documentAST.definitions.filter(
|
|
46
|
+
(node) =>
|
|
47
|
+
node === operation ||
|
|
48
|
+
(node.kind === Kind.FRAGMENT_DEFINITION &&
|
|
49
|
+
dependencies.has(node.name.value)),
|
|
50
|
+
),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return separatedDocumentASTs;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// From a dependency graph, collects a list of transitive dependencies by
|
|
58
|
+
// recursing through a dependency graph.
|
|
59
|
+
function collectTransitiveDependencies(collected, depGraph, fromName) {
|
|
60
|
+
if (!collected.has(fromName)) {
|
|
61
|
+
collected.add(fromName);
|
|
62
|
+
const immediateDeps = depGraph[fromName];
|
|
63
|
+
|
|
64
|
+
if (immediateDeps !== undefined) {
|
|
65
|
+
for (const toName of immediateDeps) {
|
|
66
|
+
collectTransitiveDependencies(collected, depGraph, toName);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function collectDependencies(selectionSet) {
|
|
73
|
+
const dependencies = [];
|
|
74
|
+
visit(selectionSet, {
|
|
75
|
+
FragmentSpread(node) {
|
|
76
|
+
dependencies.push(node.name.value);
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
return dependencies;
|
|
80
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.sortValueNode = sortValueNode;
|
|
7
|
+
|
|
8
|
+
var _naturalCompare = require('../jsutils/naturalCompare.js');
|
|
9
|
+
|
|
10
|
+
var _kinds = require('../language/kinds.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Sort ValueNode.
|
|
14
|
+
*
|
|
15
|
+
* This function returns a sorted copy of the given ValueNode.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
function sortValueNode(valueNode) {
|
|
20
|
+
switch (valueNode.kind) {
|
|
21
|
+
case _kinds.Kind.OBJECT:
|
|
22
|
+
return { ...valueNode, fields: sortFields(valueNode.fields) };
|
|
23
|
+
|
|
24
|
+
case _kinds.Kind.LIST:
|
|
25
|
+
return { ...valueNode, values: valueNode.values.map(sortValueNode) };
|
|
26
|
+
|
|
27
|
+
case _kinds.Kind.INT:
|
|
28
|
+
case _kinds.Kind.FLOAT:
|
|
29
|
+
case _kinds.Kind.STRING:
|
|
30
|
+
case _kinds.Kind.BOOLEAN:
|
|
31
|
+
case _kinds.Kind.NULL:
|
|
32
|
+
case _kinds.Kind.ENUM:
|
|
33
|
+
case _kinds.Kind.VARIABLE:
|
|
34
|
+
return valueNode;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function sortFields(fields) {
|
|
39
|
+
return fields
|
|
40
|
+
.map((fieldNode) => ({
|
|
41
|
+
...fieldNode,
|
|
42
|
+
value: sortValueNode(fieldNode.value),
|
|
43
|
+
}))
|
|
44
|
+
.sort((fieldA, fieldB) =>
|
|
45
|
+
(0, _naturalCompare.naturalCompare)(fieldA.name.value, fieldB.name.value),
|
|
46
|
+
);
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { naturalCompare } from '../jsutils/naturalCompare.mjs';
|
|
2
|
+
import { Kind } from '../language/kinds.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* Sort ValueNode.
|
|
5
|
+
*
|
|
6
|
+
* This function returns a sorted copy of the given ValueNode.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export function sortValueNode(valueNode) {
|
|
12
|
+
switch (valueNode.kind) {
|
|
13
|
+
case Kind.OBJECT:
|
|
14
|
+
return { ...valueNode, fields: sortFields(valueNode.fields) };
|
|
15
|
+
|
|
16
|
+
case Kind.LIST:
|
|
17
|
+
return { ...valueNode, values: valueNode.values.map(sortValueNode) };
|
|
18
|
+
|
|
19
|
+
case Kind.INT:
|
|
20
|
+
case Kind.FLOAT:
|
|
21
|
+
case Kind.STRING:
|
|
22
|
+
case Kind.BOOLEAN:
|
|
23
|
+
case Kind.NULL:
|
|
24
|
+
case Kind.ENUM:
|
|
25
|
+
case Kind.VARIABLE:
|
|
26
|
+
return valueNode;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function sortFields(fields) {
|
|
31
|
+
return fields
|
|
32
|
+
.map((fieldNode) => ({
|
|
33
|
+
...fieldNode,
|
|
34
|
+
value: sortValueNode(fieldNode.value),
|
|
35
|
+
}))
|
|
36
|
+
.sort((fieldA, fieldB) =>
|
|
37
|
+
naturalCompare(fieldA.name.value, fieldB.name.value),
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Source } from '../language/source';
|
|
2
|
+
/**
|
|
3
|
+
* Strips characters that are not significant to the validity or execution
|
|
4
|
+
* of a GraphQL document:
|
|
5
|
+
* - UnicodeBOM
|
|
6
|
+
* - WhiteSpace
|
|
7
|
+
* - LineTerminator
|
|
8
|
+
* - Comment
|
|
9
|
+
* - Comma
|
|
10
|
+
* - BlockString indentation
|
|
11
|
+
*
|
|
12
|
+
* Note: It is required to have a delimiter character between neighboring
|
|
13
|
+
* non-punctuator tokens and this function always uses single space as delimiter.
|
|
14
|
+
*
|
|
15
|
+
* It is guaranteed that both input and output documents if parsed would result
|
|
16
|
+
* in the exact same AST except for nodes location.
|
|
17
|
+
*
|
|
18
|
+
* Warning: It is guaranteed that this function will always produce stable results.
|
|
19
|
+
* However, it's not guaranteed that it will stay the same between different
|
|
20
|
+
* releases due to bugfixes or changes in the GraphQL specification.
|
|
21
|
+
*
|
|
22
|
+
* Query example:
|
|
23
|
+
*
|
|
24
|
+
* ```graphql
|
|
25
|
+
* query SomeQuery($foo: String!, $bar: String) {
|
|
26
|
+
* someField(foo: $foo, bar: $bar) {
|
|
27
|
+
* a
|
|
28
|
+
* b {
|
|
29
|
+
* c
|
|
30
|
+
* d
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Becomes:
|
|
37
|
+
*
|
|
38
|
+
* ```graphql
|
|
39
|
+
* query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* SDL example:
|
|
43
|
+
*
|
|
44
|
+
* ```graphql
|
|
45
|
+
* """
|
|
46
|
+
* Type description
|
|
47
|
+
* """
|
|
48
|
+
* type Foo {
|
|
49
|
+
* """
|
|
50
|
+
* Field description
|
|
51
|
+
* """
|
|
52
|
+
* bar: String
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* Becomes:
|
|
57
|
+
*
|
|
58
|
+
* ```graphql
|
|
59
|
+
* """Type description""" type Foo{"""Field description""" bar:String}
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function stripIgnoredCharacters(source: string | Source): string;
|