graphql 14.1.1 → 14.3.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 +1 -1
- package/README.md +1 -1
- package/error/GraphQLError.js +12 -10
- package/error/GraphQLError.js.flow +11 -6
- package/error/GraphQLError.mjs +20 -3
- package/error/formatError.js +2 -2
- package/error/formatError.js.flow +3 -3
- package/error/formatError.mjs +2 -2
- package/error/index.js +1 -1
- package/error/index.js.flow +5 -2
- package/error/index.mjs +2 -2
- package/error/locatedError.js +2 -2
- package/error/locatedError.js.flow +2 -2
- package/error/locatedError.mjs +2 -2
- package/error/printError.js +2 -2
- package/error/printError.js.flow +4 -5
- package/error/printError.mjs +2 -2
- package/error/syntaxError.js +2 -2
- package/error/syntaxError.js.flow +2 -2
- package/error/syntaxError.mjs +2 -2
- package/execution/execute.js +52 -37
- package/execution/execute.js.flow +66 -51
- package/execution/execute.mjs +50 -38
- package/execution/index.js +7 -1
- package/execution/index.js.flow +9 -4
- package/execution/index.mjs +3 -3
- package/execution/values.js +11 -11
- package/execution/values.js.flow +23 -19
- package/execution/values.mjs +11 -11
- package/graphql.js +13 -9
- package/graphql.js.flow +28 -10
- package/graphql.mjs +10 -9
- package/index.js +83 -53
- package/index.js.flow +60 -47
- package/index.mjs +26 -23
- package/jsutils/ObjMap.js +1 -1
- package/jsutils/ObjMap.js.flow +1 -1
- package/jsutils/ObjMap.mjs +1 -0
- package/jsutils/PromiseOrValue.js +1 -0
- package/jsutils/{MaybePromise.js.flow → PromiseOrValue.js.flow} +2 -2
- package/jsutils/PromiseOrValue.mjs +1 -0
- package/jsutils/dedent.js +2 -2
- package/jsutils/dedent.js.flow +1 -1
- package/jsutils/dedent.mjs +2 -2
- package/jsutils/defineToJSON.js +2 -2
- package/jsutils/defineToJSON.js.flow +1 -1
- package/jsutils/defineToJSON.mjs +2 -2
- package/jsutils/defineToStringTag.js +2 -2
- package/jsutils/defineToStringTag.js.flow +1 -1
- package/jsutils/defineToStringTag.mjs +2 -2
- package/jsutils/inspect.js +94 -19
- package/jsutils/inspect.js.flow +98 -20
- package/jsutils/inspect.mjs +94 -20
- package/jsutils/instanceOf.js +2 -2
- package/jsutils/instanceOf.js.flow +1 -1
- package/jsutils/instanceOf.mjs +2 -2
- package/jsutils/invariant.js +5 -3
- package/jsutils/invariant.js.flow +3 -2
- package/jsutils/invariant.mjs +5 -3
- package/jsutils/isInvalid.js +2 -2
- package/jsutils/isInvalid.js.flow +1 -1
- package/jsutils/isInvalid.mjs +2 -2
- package/jsutils/isNullish.js +2 -2
- package/jsutils/isNullish.js.flow +1 -1
- package/jsutils/isNullish.mjs +2 -2
- package/jsutils/isPromise.js +2 -2
- package/jsutils/isPromise.js.flow +1 -1
- package/jsutils/isPromise.mjs +2 -2
- package/jsutils/keyMap.js +4 -3
- package/jsutils/keyMap.js.flow +6 -6
- package/jsutils/keyMap.mjs +4 -3
- package/jsutils/keyValMap.js +4 -3
- package/jsutils/keyValMap.js.flow +6 -6
- package/jsutils/keyValMap.mjs +4 -3
- package/jsutils/mapValue.js +2 -2
- package/jsutils/mapValue.js.flow +2 -2
- package/jsutils/mapValue.mjs +2 -2
- package/jsutils/memoize3.js +3 -3
- package/jsutils/memoize3.js.flow +2 -2
- package/jsutils/memoize3.mjs +3 -3
- package/jsutils/nodejsCustomInspectSymbol.js +2 -2
- package/jsutils/nodejsCustomInspectSymbol.js.flow +1 -1
- package/jsutils/nodejsCustomInspectSymbol.mjs +2 -2
- package/jsutils/orList.js +2 -2
- package/jsutils/orList.js.flow +1 -1
- package/jsutils/orList.mjs +2 -2
- package/jsutils/promiseForObject.js +2 -2
- package/jsutils/promiseForObject.js.flow +2 -2
- package/jsutils/promiseForObject.mjs +2 -2
- package/jsutils/promiseReduce.js +2 -2
- package/jsutils/promiseReduce.js.flow +5 -5
- package/jsutils/promiseReduce.mjs +2 -2
- package/jsutils/quotedOrList.js +2 -2
- package/jsutils/quotedOrList.js.flow +1 -1
- package/jsutils/quotedOrList.mjs +2 -2
- package/jsutils/suggestionList.js +2 -2
- package/jsutils/suggestionList.js.flow +1 -1
- package/jsutils/suggestionList.mjs +2 -2
- package/language/ast.js +1 -1
- package/language/ast.js.flow +3 -3
- package/language/ast.mjs +1 -0
- package/language/blockString.js +114 -0
- package/language/blockString.js.flow +102 -0
- package/language/blockString.mjs +104 -0
- package/language/directiveLocation.js +2 -2
- package/language/directiveLocation.js.flow +1 -1
- package/language/directiveLocation.mjs +2 -2
- package/language/index.js +9 -9
- package/language/index.js.flow +10 -5
- package/language/index.mjs +3 -3
- package/language/kinds.js +2 -2
- package/language/kinds.js.flow +1 -1
- package/language/kinds.mjs +2 -2
- package/language/lexer.js +52 -44
- package/language/lexer.js.flow +65 -54
- package/language/lexer.mjs +49 -43
- package/language/location.js +2 -2
- package/language/location.js.flow +2 -2
- package/language/location.mjs +2 -2
- package/language/parser.js +75 -67
- package/language/parser.js.flow +138 -127
- package/language/parser.mjs +76 -68
- package/language/predicates.js +2 -2
- package/language/predicates.js.flow +2 -2
- package/language/predicates.mjs +2 -2
- package/language/printer.js +6 -14
- package/language/printer.js.flow +8 -17
- package/language/printer.mjs +5 -14
- package/language/source.js +2 -2
- package/language/source.js.flow +1 -1
- package/language/source.mjs +2 -2
- package/language/visitor.js +4 -6
- package/language/visitor.js.flow +3 -3
- package/language/visitor.mjs +4 -6
- package/package.json +1 -1
- package/polyfills/find.js +2 -2
- package/polyfills/find.js.flow +1 -1
- package/polyfills/find.mjs +2 -2
- package/polyfills/flatMap.js +38 -0
- package/polyfills/flatMap.js.flow +34 -0
- package/polyfills/flatMap.mjs +30 -0
- package/polyfills/isFinite.js +2 -2
- package/polyfills/isFinite.js.flow +1 -1
- package/polyfills/isFinite.mjs +2 -2
- package/polyfills/isInteger.js +2 -2
- package/polyfills/isInteger.js.flow +1 -1
- package/polyfills/isInteger.mjs +2 -2
- package/polyfills/objectEntries.js +2 -2
- package/polyfills/objectEntries.js.flow +2 -2
- package/polyfills/objectEntries.mjs +2 -2
- package/polyfills/objectValues.js +2 -2
- package/polyfills/objectValues.js.flow +2 -2
- package/polyfills/objectValues.mjs +2 -2
- package/subscription/asyncIteratorReject.js +1 -1
- package/subscription/asyncIteratorReject.js.flow +1 -1
- package/subscription/asyncIteratorReject.mjs +2 -2
- package/subscription/index.js +1 -1
- package/subscription/index.js.flow +1 -1
- package/subscription/index.mjs +2 -2
- package/subscription/mapAsyncIterator.js +1 -1
- package/subscription/mapAsyncIterator.js.flow +5 -5
- package/subscription/mapAsyncIterator.mjs +2 -2
- package/subscription/subscribe.js +2 -2
- package/subscription/subscribe.js.flow +6 -6
- package/subscription/subscribe.mjs +2 -2
- package/type/definition.js +138 -22
- package/type/definition.js.flow +184 -36
- package/type/definition.mjs +136 -23
- package/type/directives.js +14 -3
- package/type/directives.js.flow +24 -11
- package/type/directives.mjs +16 -5
- package/type/index.js +7 -7
- package/type/index.js.flow +8 -4
- package/type/index.mjs +10 -6
- package/type/introspection.js +14 -9
- package/type/introspection.js.flow +12 -18
- package/type/introspection.mjs +14 -9
- package/type/scalars.js +5 -4
- package/type/scalars.js.flow +4 -10
- package/type/scalars.mjs +7 -6
- package/type/schema.js +55 -3
- package/type/schema.js.flow +73 -17
- package/type/schema.mjs +56 -4
- package/type/validate.js +19 -47
- package/type/validate.js.flow +17 -29
- package/type/validate.mjs +18 -47
- package/utilities/TypeInfo.js +93 -73
- package/utilities/TypeInfo.js.flow +30 -23
- package/utilities/TypeInfo.mjs +93 -73
- package/utilities/assertValidName.js +2 -2
- package/utilities/assertValidName.js.flow +2 -2
- package/utilities/assertValidName.mjs +2 -2
- package/utilities/astFromValue.js +5 -4
- package/utilities/astFromValue.js.flow +8 -7
- package/utilities/astFromValue.mjs +7 -6
- package/utilities/buildASTSchema.js +63 -62
- package/utilities/buildASTSchema.js.flow +92 -108
- package/utilities/buildASTSchema.mjs +61 -62
- package/utilities/buildClientSchema.js +38 -45
- package/utilities/buildClientSchema.js.flow +66 -79
- package/utilities/buildClientSchema.mjs +37 -44
- package/utilities/coerceValue.js +6 -7
- package/utilities/coerceValue.js.flow +5 -4
- package/utilities/coerceValue.mjs +7 -8
- package/utilities/concatAST.js +9 -13
- package/utilities/concatAST.js.flow +4 -10
- package/utilities/concatAST.mjs +6 -13
- package/utilities/extendSchema.js +219 -511
- package/utilities/extendSchema.js.flow +195 -304
- package/utilities/extendSchema.mjs +218 -512
- package/utilities/findBreakingChanges.js +54 -95
- package/utilities/findBreakingChanges.js.flow +49 -47
- package/utilities/findBreakingChanges.mjs +80 -95
- package/utilities/findDeprecatedUsages.js +4 -4
- package/utilities/findDeprecatedUsages.js.flow +5 -5
- package/utilities/findDeprecatedUsages.mjs +4 -4
- package/utilities/getOperationAST.js +2 -2
- package/utilities/getOperationAST.js.flow +5 -2
- package/utilities/getOperationAST.mjs +2 -2
- package/utilities/getOperationRootType.js +24 -24
- package/utilities/getOperationRootType.js.flow +40 -35
- package/utilities/getOperationRootType.mjs +24 -24
- package/utilities/index.js +9 -1
- package/utilities/index.js.flow +13 -6
- package/utilities/index.mjs +13 -8
- package/utilities/introspectionFromSchema.js +6 -4
- package/utilities/introspectionFromSchema.js.flow +8 -7
- package/utilities/introspectionFromSchema.mjs +6 -5
- package/utilities/introspectionQuery.js +2 -2
- package/utilities/introspectionQuery.js.flow +2 -2
- package/utilities/introspectionQuery.mjs +2 -2
- package/utilities/isValidJSValue.js +4 -2
- package/utilities/isValidJSValue.js.flow +3 -2
- package/utilities/isValidJSValue.mjs +4 -2
- package/utilities/isValidLiteralValue.js +2 -2
- package/utilities/isValidLiteralValue.js.flow +4 -4
- package/utilities/isValidLiteralValue.mjs +2 -2
- package/utilities/lexicographicSortSchema.js +84 -123
- package/utilities/lexicographicSortSchema.js.flow +68 -96
- package/utilities/lexicographicSortSchema.mjs +84 -123
- package/utilities/schemaPrinter.js +47 -73
- package/utilities/schemaPrinter.js.flow +69 -120
- package/utilities/schemaPrinter.mjs +45 -72
- package/utilities/separateOperations.js +8 -12
- package/utilities/separateOperations.js.flow +6 -3
- package/utilities/separateOperations.mjs +8 -12
- package/utilities/stripIgnoredCharacters.js +140 -0
- package/utilities/stripIgnoredCharacters.js.flow +129 -0
- package/utilities/stripIgnoredCharacters.mjs +127 -0
- package/utilities/typeComparators.js +2 -2
- package/utilities/typeComparators.js.flow +4 -3
- package/utilities/typeComparators.mjs +2 -2
- package/utilities/typeFromAST.js +9 -4
- package/utilities/typeFromAST.js.flow +15 -9
- package/utilities/typeFromAST.mjs +6 -4
- package/utilities/valueFromAST.js +7 -4
- package/utilities/valueFromAST.js.flow +7 -5
- package/utilities/valueFromAST.mjs +6 -4
- package/utilities/valueFromASTUntyped.js +11 -6
- package/utilities/valueFromASTUntyped.js.flow +9 -5
- package/utilities/valueFromASTUntyped.mjs +10 -6
- package/validation/ValidationContext.js +1 -1
- package/validation/ValidationContext.js.flow +19 -20
- package/validation/ValidationContext.mjs +2 -2
- package/validation/index.js +1 -1
- package/validation/index.js.flow +2 -1
- package/validation/index.mjs +3 -2
- package/validation/rules/ExecutableDefinitions.js +3 -3
- package/validation/rules/ExecutableDefinitions.js.flow +4 -4
- package/validation/rules/ExecutableDefinitions.mjs +3 -3
- package/validation/rules/FieldsOnCorrectType.js +3 -3
- package/validation/rules/FieldsOnCorrectType.js.flow +7 -7
- package/validation/rules/FieldsOnCorrectType.mjs +3 -3
- package/validation/rules/FragmentsOnCompositeTypes.js +4 -4
- package/validation/rules/FragmentsOnCompositeTypes.js.flow +5 -5
- package/validation/rules/FragmentsOnCompositeTypes.mjs +4 -4
- package/validation/rules/KnownArgumentNames.js +1 -1
- package/validation/rules/KnownArgumentNames.js.flow +5 -5
- package/validation/rules/KnownArgumentNames.mjs +2 -2
- package/validation/rules/KnownDirectives.js +8 -6
- package/validation/rules/KnownDirectives.js.flow +11 -9
- package/validation/rules/KnownDirectives.mjs +8 -6
- package/validation/rules/KnownFragmentNames.js +3 -3
- package/validation/rules/KnownFragmentNames.js.flow +4 -4
- package/validation/rules/KnownFragmentNames.mjs +3 -3
- package/validation/rules/KnownTypeNames.js +2 -2
- package/validation/rules/KnownTypeNames.js.flow +6 -6
- package/validation/rules/KnownTypeNames.mjs +2 -2
- package/validation/rules/LoneAnonymousOperation.js +3 -3
- package/validation/rules/LoneAnonymousOperation.js.flow +4 -4
- package/validation/rules/LoneAnonymousOperation.mjs +3 -3
- package/validation/rules/LoneSchemaDefinition.js +2 -2
- package/validation/rules/LoneSchemaDefinition.js.flow +3 -3
- package/validation/rules/LoneSchemaDefinition.mjs +2 -2
- package/validation/rules/NoFragmentCycles.js +2 -2
- package/validation/rules/NoFragmentCycles.js.flow +4 -4
- package/validation/rules/NoFragmentCycles.mjs +2 -2
- package/validation/rules/NoUndefinedVariables.js +2 -2
- package/validation/rules/NoUndefinedVariables.js.flow +3 -3
- package/validation/rules/NoUndefinedVariables.mjs +2 -2
- package/validation/rules/NoUnusedFragments.js +7 -7
- package/validation/rules/NoUnusedFragments.js.flow +4 -4
- package/validation/rules/NoUnusedFragments.mjs +7 -7
- package/validation/rules/NoUnusedVariables.js +5 -5
- package/validation/rules/NoUnusedVariables.js.flow +6 -5
- package/validation/rules/NoUnusedVariables.mjs +5 -5
- package/validation/rules/OverlappingFieldsCanBeMerged.js +26 -23
- package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +17 -17
- package/validation/rules/OverlappingFieldsCanBeMerged.mjs +26 -23
- package/validation/rules/PossibleFragmentSpreads.js +4 -4
- package/validation/rules/PossibleFragmentSpreads.js.flow +5 -5
- package/validation/rules/PossibleFragmentSpreads.mjs +4 -4
- package/validation/rules/PossibleTypeExtensions.js +3 -3
- package/validation/rules/PossibleTypeExtensions.js.flow +5 -5
- package/validation/rules/PossibleTypeExtensions.mjs +4 -4
- package/validation/rules/ProvidedRequiredArguments.js +6 -8
- package/validation/rules/ProvidedRequiredArguments.js.flow +8 -8
- package/validation/rules/ProvidedRequiredArguments.mjs +7 -9
- package/validation/rules/ScalarLeafs.js +4 -4
- package/validation/rules/ScalarLeafs.js.flow +6 -6
- package/validation/rules/ScalarLeafs.mjs +4 -4
- package/validation/rules/SingleFieldSubscriptions.js +2 -2
- package/validation/rules/SingleFieldSubscriptions.js.flow +4 -4
- package/validation/rules/SingleFieldSubscriptions.mjs +2 -2
- package/validation/rules/UniqueArgumentNames.js +2 -2
- package/validation/rules/UniqueArgumentNames.js.flow +3 -3
- package/validation/rules/UniqueArgumentNames.mjs +2 -2
- package/validation/rules/UniqueDirectiveNames.js +2 -2
- package/validation/rules/UniqueDirectiveNames.js.flow +3 -3
- package/validation/rules/UniqueDirectiveNames.mjs +2 -2
- package/validation/rules/UniqueDirectivesPerLocation.js +3 -2
- package/validation/rules/UniqueDirectivesPerLocation.js.flow +4 -4
- package/validation/rules/UniqueDirectivesPerLocation.mjs +3 -2
- package/validation/rules/UniqueEnumValueNames.js +4 -8
- package/validation/rules/UniqueEnumValueNames.js.flow +6 -8
- package/validation/rules/UniqueEnumValueNames.mjs +4 -8
- package/validation/rules/UniqueFieldDefinitionNames.js +4 -8
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +6 -8
- package/validation/rules/UniqueFieldDefinitionNames.mjs +4 -8
- package/validation/rules/UniqueFragmentNames.js +2 -2
- package/validation/rules/UniqueFragmentNames.js.flow +3 -3
- package/validation/rules/UniqueFragmentNames.mjs +2 -2
- package/validation/rules/UniqueInputFieldNames.js +2 -4
- package/validation/rules/UniqueInputFieldNames.js.flow +3 -4
- package/validation/rules/UniqueInputFieldNames.mjs +2 -4
- package/validation/rules/UniqueOperationNames.js +2 -2
- package/validation/rules/UniqueOperationNames.js.flow +3 -3
- package/validation/rules/UniqueOperationNames.mjs +2 -2
- package/validation/rules/UniqueOperationTypes.js +2 -2
- package/validation/rules/UniqueOperationTypes.js.flow +3 -3
- package/validation/rules/UniqueOperationTypes.mjs +2 -2
- package/validation/rules/UniqueTypeNames.js +2 -2
- package/validation/rules/UniqueTypeNames.js.flow +4 -4
- package/validation/rules/UniqueTypeNames.mjs +2 -2
- package/validation/rules/UniqueVariableNames.js +2 -2
- package/validation/rules/UniqueVariableNames.js.flow +4 -4
- package/validation/rules/UniqueVariableNames.mjs +2 -2
- package/validation/rules/ValuesOfCorrectType.js +2 -2
- package/validation/rules/ValuesOfCorrectType.js.flow +5 -5
- package/validation/rules/ValuesOfCorrectType.mjs +2 -2
- package/validation/rules/VariablesAreInputTypes.js +3 -3
- package/validation/rules/VariablesAreInputTypes.js.flow +5 -5
- package/validation/rules/VariablesAreInputTypes.mjs +3 -3
- package/validation/rules/VariablesInAllowedPosition.js +3 -3
- package/validation/rules/VariablesInAllowedPosition.js.flow +7 -8
- package/validation/rules/VariablesInAllowedPosition.mjs +3 -3
- package/validation/specifiedRules.js +2 -2
- package/validation/specifiedRules.js.flow +13 -6
- package/validation/specifiedRules.mjs +7 -7
- package/validation/validate.js +2 -2
- package/validation/validate.js.flow +10 -6
- package/validation/validate.mjs +2 -2
- package/jsutils/MaybePromise.js +0 -1
- package/jsutils/MaybePromise.mjs +0 -0
- package/language/blockStringValue.js +0 -73
- package/language/blockStringValue.js.flow +0 -64
- package/language/blockStringValue.mjs +0 -66
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.dedentBlockStringValue = dedentBlockStringValue;
|
|
7
|
+
exports.getBlockStringIndentation = getBlockStringIndentation;
|
|
8
|
+
exports.printBlockString = printBlockString;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
12
|
+
*
|
|
13
|
+
* This source code is licensed under the MIT license found in the
|
|
14
|
+
* LICENSE file in the root directory of this source tree.
|
|
15
|
+
*
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Produces the value of a block string from its parsed raw value, similar to
|
|
21
|
+
* CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
|
|
22
|
+
*
|
|
23
|
+
* This implements the GraphQL spec's BlockStringValue() static algorithm.
|
|
24
|
+
*/
|
|
25
|
+
function dedentBlockStringValue(rawString) {
|
|
26
|
+
// Expand a block string's raw value into independent lines.
|
|
27
|
+
var lines = rawString.split(/\r\n|[\n\r]/g); // Remove common indentation from all lines but first.
|
|
28
|
+
|
|
29
|
+
var commonIndent = getBlockStringIndentation(lines);
|
|
30
|
+
|
|
31
|
+
if (commonIndent !== 0) {
|
|
32
|
+
for (var i = 1; i < lines.length; i++) {
|
|
33
|
+
lines[i] = lines[i].slice(commonIndent);
|
|
34
|
+
}
|
|
35
|
+
} // Remove leading and trailing blank lines.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
while (lines.length > 0 && isBlank(lines[0])) {
|
|
39
|
+
lines.shift();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
while (lines.length > 0 && isBlank(lines[lines.length - 1])) {
|
|
43
|
+
lines.pop();
|
|
44
|
+
} // Return a string of the lines joined with U+000A.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
return lines.join('\n');
|
|
48
|
+
} // @internal
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
function getBlockStringIndentation(lines) {
|
|
52
|
+
var commonIndent = null;
|
|
53
|
+
|
|
54
|
+
for (var i = 1; i < lines.length; i++) {
|
|
55
|
+
var line = lines[i];
|
|
56
|
+
var indent = leadingWhitespace(line);
|
|
57
|
+
|
|
58
|
+
if (indent === line.length) {
|
|
59
|
+
continue; // skip empty lines
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (commonIndent === null || indent < commonIndent) {
|
|
63
|
+
commonIndent = indent;
|
|
64
|
+
|
|
65
|
+
if (commonIndent === 0) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return commonIndent === null ? 0 : commonIndent;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function leadingWhitespace(str) {
|
|
75
|
+
var i = 0;
|
|
76
|
+
|
|
77
|
+
while (i < str.length && (str[i] === ' ' || str[i] === '\t')) {
|
|
78
|
+
i++;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return i;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function isBlank(str) {
|
|
85
|
+
return leadingWhitespace(str) === str.length;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Print a block string in the indented block form by adding a leading and
|
|
89
|
+
* trailing blank line. However, if a block string starts with whitespace and is
|
|
90
|
+
* a single-line, adding a leading blank line would strip that whitespace.
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
function printBlockString(value) {
|
|
95
|
+
var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
96
|
+
var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
97
|
+
var isSingleLine = value.indexOf('\n') === -1;
|
|
98
|
+
var hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
|
|
99
|
+
var hasTrailingQuote = value[value.length - 1] === '"';
|
|
100
|
+
var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;
|
|
101
|
+
var result = ''; // Format a multi-line block quote to account for leading space.
|
|
102
|
+
|
|
103
|
+
if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
|
|
104
|
+
result += '\n' + indentation;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
result += indentation ? value.replace(/\n/g, '\n' + indentation) : value;
|
|
108
|
+
|
|
109
|
+
if (printAsMultipleLines) {
|
|
110
|
+
result += '\n';
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return '"""' + result.replace(/"""/g, '\\"""') + '"""';
|
|
114
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Produces the value of a block string from its parsed raw value, similar to
|
|
12
|
+
* CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
|
|
13
|
+
*
|
|
14
|
+
* This implements the GraphQL spec's BlockStringValue() static algorithm.
|
|
15
|
+
*/
|
|
16
|
+
export function dedentBlockStringValue(rawString: string): string {
|
|
17
|
+
// Expand a block string's raw value into independent lines.
|
|
18
|
+
const lines = rawString.split(/\r\n|[\n\r]/g);
|
|
19
|
+
|
|
20
|
+
// Remove common indentation from all lines but first.
|
|
21
|
+
const commonIndent = getBlockStringIndentation(lines);
|
|
22
|
+
|
|
23
|
+
if (commonIndent !== 0) {
|
|
24
|
+
for (let i = 1; i < lines.length; i++) {
|
|
25
|
+
lines[i] = lines[i].slice(commonIndent);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Remove leading and trailing blank lines.
|
|
30
|
+
while (lines.length > 0 && isBlank(lines[0])) {
|
|
31
|
+
lines.shift();
|
|
32
|
+
}
|
|
33
|
+
while (lines.length > 0 && isBlank(lines[lines.length - 1])) {
|
|
34
|
+
lines.pop();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Return a string of the lines joined with U+000A.
|
|
38
|
+
return lines.join('\n');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// @internal
|
|
42
|
+
export function getBlockStringIndentation(lines: Array<string>): number {
|
|
43
|
+
let commonIndent = null;
|
|
44
|
+
|
|
45
|
+
for (let i = 1; i < lines.length; i++) {
|
|
46
|
+
const line = lines[i];
|
|
47
|
+
const indent = leadingWhitespace(line);
|
|
48
|
+
if (indent === line.length) {
|
|
49
|
+
continue; // skip empty lines
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (commonIndent === null || indent < commonIndent) {
|
|
53
|
+
commonIndent = indent;
|
|
54
|
+
if (commonIndent === 0) {
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return commonIndent === null ? 0 : commonIndent;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function leadingWhitespace(str) {
|
|
64
|
+
let i = 0;
|
|
65
|
+
while (i < str.length && (str[i] === ' ' || str[i] === '\t')) {
|
|
66
|
+
i++;
|
|
67
|
+
}
|
|
68
|
+
return i;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function isBlank(str) {
|
|
72
|
+
return leadingWhitespace(str) === str.length;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Print a block string in the indented block form by adding a leading and
|
|
77
|
+
* trailing blank line. However, if a block string starts with whitespace and is
|
|
78
|
+
* a single-line, adding a leading blank line would strip that whitespace.
|
|
79
|
+
*/
|
|
80
|
+
export function printBlockString(
|
|
81
|
+
value: string,
|
|
82
|
+
indentation?: string = '',
|
|
83
|
+
preferMultipleLines?: boolean = false,
|
|
84
|
+
): string {
|
|
85
|
+
const isSingleLine = value.indexOf('\n') === -1;
|
|
86
|
+
const hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
|
|
87
|
+
const hasTrailingQuote = value[value.length - 1] === '"';
|
|
88
|
+
const printAsMultipleLines =
|
|
89
|
+
!isSingleLine || hasTrailingQuote || preferMultipleLines;
|
|
90
|
+
|
|
91
|
+
let result = '';
|
|
92
|
+
// Format a multi-line block quote to account for leading space.
|
|
93
|
+
if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
|
|
94
|
+
result += '\n' + indentation;
|
|
95
|
+
}
|
|
96
|
+
result += indentation ? value.replace(/\n/g, '\n' + indentation) : value;
|
|
97
|
+
if (printAsMultipleLines) {
|
|
98
|
+
result += '\n';
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return '"""' + result.replace(/"""/g, '\\"""') + '"""';
|
|
102
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Produces the value of a block string from its parsed raw value, similar to
|
|
12
|
+
* CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
|
|
13
|
+
*
|
|
14
|
+
* This implements the GraphQL spec's BlockStringValue() static algorithm.
|
|
15
|
+
*/
|
|
16
|
+
export function dedentBlockStringValue(rawString) {
|
|
17
|
+
// Expand a block string's raw value into independent lines.
|
|
18
|
+
var lines = rawString.split(/\r\n|[\n\r]/g); // Remove common indentation from all lines but first.
|
|
19
|
+
|
|
20
|
+
var commonIndent = getBlockStringIndentation(lines);
|
|
21
|
+
|
|
22
|
+
if (commonIndent !== 0) {
|
|
23
|
+
for (var i = 1; i < lines.length; i++) {
|
|
24
|
+
lines[i] = lines[i].slice(commonIndent);
|
|
25
|
+
}
|
|
26
|
+
} // Remove leading and trailing blank lines.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
while (lines.length > 0 && isBlank(lines[0])) {
|
|
30
|
+
lines.shift();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
while (lines.length > 0 && isBlank(lines[lines.length - 1])) {
|
|
34
|
+
lines.pop();
|
|
35
|
+
} // Return a string of the lines joined with U+000A.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
return lines.join('\n');
|
|
39
|
+
} // @internal
|
|
40
|
+
|
|
41
|
+
export function getBlockStringIndentation(lines) {
|
|
42
|
+
var commonIndent = null;
|
|
43
|
+
|
|
44
|
+
for (var i = 1; i < lines.length; i++) {
|
|
45
|
+
var line = lines[i];
|
|
46
|
+
var indent = leadingWhitespace(line);
|
|
47
|
+
|
|
48
|
+
if (indent === line.length) {
|
|
49
|
+
continue; // skip empty lines
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (commonIndent === null || indent < commonIndent) {
|
|
53
|
+
commonIndent = indent;
|
|
54
|
+
|
|
55
|
+
if (commonIndent === 0) {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return commonIndent === null ? 0 : commonIndent;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function leadingWhitespace(str) {
|
|
65
|
+
var i = 0;
|
|
66
|
+
|
|
67
|
+
while (i < str.length && (str[i] === ' ' || str[i] === '\t')) {
|
|
68
|
+
i++;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return i;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function isBlank(str) {
|
|
75
|
+
return leadingWhitespace(str) === str.length;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Print a block string in the indented block form by adding a leading and
|
|
79
|
+
* trailing blank line. However, if a block string starts with whitespace and is
|
|
80
|
+
* a single-line, adding a leading blank line would strip that whitespace.
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
export function printBlockString(value) {
|
|
85
|
+
var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
86
|
+
var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
87
|
+
var isSingleLine = value.indexOf('\n') === -1;
|
|
88
|
+
var hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
|
|
89
|
+
var hasTrailingQuote = value[value.length - 1] === '"';
|
|
90
|
+
var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;
|
|
91
|
+
var result = ''; // Format a multi-line block quote to account for leading space.
|
|
92
|
+
|
|
93
|
+
if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
|
|
94
|
+
result += '\n' + indentation;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
result += indentation ? value.replace(/\n/g, '\n' + indentation) : value;
|
|
98
|
+
|
|
99
|
+
if (printAsMultipleLines) {
|
|
100
|
+
result += '\n';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return '"""' + result.replace(/"""/g, '\\"""') + '"""';
|
|
104
|
+
}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.DirectiveLocation = void 0;
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Copyright (c)
|
|
9
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
10
10
|
*
|
|
11
11
|
* This source code is licensed under the MIT license found in the
|
|
12
12
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -44,4 +44,4 @@ var DirectiveLocation = Object.freeze({
|
|
|
44
44
|
* The enum type representing the directive location values.
|
|
45
45
|
*/
|
|
46
46
|
|
|
47
|
-
exports.DirectiveLocation = DirectiveLocation;
|
|
47
|
+
exports.DirectiveLocation = DirectiveLocation;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -35,4 +35,4 @@ export var DirectiveLocation = Object.freeze({
|
|
|
35
35
|
});
|
|
36
36
|
/**
|
|
37
37
|
* The enum type representing the directive location values.
|
|
38
|
-
*/
|
|
38
|
+
*/
|
package/language/index.js
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "Source", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _source.Source;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "getLocation", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function get() {
|
|
@@ -51,12 +57,6 @@ Object.defineProperty(exports, "print", {
|
|
|
51
57
|
return _printer.print;
|
|
52
58
|
}
|
|
53
59
|
});
|
|
54
|
-
Object.defineProperty(exports, "Source", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function get() {
|
|
57
|
-
return _source.Source;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
60
|
Object.defineProperty(exports, "visit", {
|
|
61
61
|
enumerable: true,
|
|
62
62
|
get: function get() {
|
|
@@ -148,6 +148,8 @@ Object.defineProperty(exports, "DirectiveLocation", {
|
|
|
148
148
|
}
|
|
149
149
|
});
|
|
150
150
|
|
|
151
|
+
var _source = require("./source");
|
|
152
|
+
|
|
151
153
|
var _location = require("./location");
|
|
152
154
|
|
|
153
155
|
var _kinds = require("./kinds");
|
|
@@ -158,10 +160,8 @@ var _parser = require("./parser");
|
|
|
158
160
|
|
|
159
161
|
var _printer = require("./printer");
|
|
160
162
|
|
|
161
|
-
var _source = require("./source");
|
|
162
|
-
|
|
163
163
|
var _visitor = require("./visitor");
|
|
164
164
|
|
|
165
165
|
var _predicates = require("./predicates");
|
|
166
166
|
|
|
167
|
-
var _directiveLocation = require("./directiveLocation");
|
|
167
|
+
var _directiveLocation = require("./directiveLocation");
|
package/language/index.js.flow
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,14 +7,22 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
export { Source } from './source';
|
|
11
|
+
|
|
10
12
|
export { getLocation } from './location';
|
|
11
13
|
export type { SourceLocation } from './location';
|
|
14
|
+
|
|
12
15
|
export { Kind } from './kinds';
|
|
13
16
|
export type { KindEnum } from './kinds';
|
|
17
|
+
|
|
14
18
|
export { createLexer, TokenKind } from './lexer';
|
|
19
|
+
export type { Lexer, TokenKindEnum } from './lexer';
|
|
20
|
+
|
|
15
21
|
export { parse, parseValue, parseType } from './parser';
|
|
22
|
+
export type { ParseOptions } from './parser';
|
|
23
|
+
|
|
16
24
|
export { print } from './printer';
|
|
17
|
-
|
|
25
|
+
|
|
18
26
|
export {
|
|
19
27
|
visit,
|
|
20
28
|
visitInParallel,
|
|
@@ -24,9 +32,6 @@ export {
|
|
|
24
32
|
} from './visitor';
|
|
25
33
|
export type { ASTVisitor, Visitor, VisitFn, VisitorKeyMap } from './visitor';
|
|
26
34
|
|
|
27
|
-
export type { Lexer, TokenKindEnum } from './lexer';
|
|
28
|
-
export type { ParseOptions } from './parser';
|
|
29
|
-
|
|
30
35
|
export type {
|
|
31
36
|
Location,
|
|
32
37
|
Token,
|
package/language/index.mjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
*/
|
|
9
|
+
export { Source } from './source';
|
|
9
10
|
export { getLocation } from './location';
|
|
10
11
|
export { Kind } from './kinds';
|
|
11
12
|
export { createLexer, TokenKind } from './lexer';
|
|
12
13
|
export { parse, parseValue, parseType } from './parser';
|
|
13
14
|
export { print } from './printer';
|
|
14
|
-
export { Source } from './source';
|
|
15
15
|
export { visit, visitInParallel, visitWithTypeInfo, getVisitFn, BREAK } from './visitor';
|
|
16
16
|
export { isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './predicates';
|
|
17
|
-
export { DirectiveLocation } from './directiveLocation';
|
|
17
|
+
export { DirectiveLocation } from './directiveLocation';
|
package/language/kinds.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Kind = void 0;
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Copyright (c)
|
|
9
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
10
10
|
*
|
|
11
11
|
* This source code is licensed under the MIT license found in the
|
|
12
12
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -77,4 +77,4 @@ var Kind = Object.freeze({
|
|
|
77
77
|
* The enum type representing the possible kind values of AST nodes.
|
|
78
78
|
*/
|
|
79
79
|
|
|
80
|
-
exports.Kind = Kind;
|
|
80
|
+
exports.Kind = Kind;
|
package/language/kinds.js.flow
CHANGED
package/language/kinds.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -68,4 +68,4 @@ export var Kind = Object.freeze({
|
|
|
68
68
|
});
|
|
69
69
|
/**
|
|
70
70
|
* The enum type representing the possible kind values of AST nodes.
|
|
71
|
-
*/
|
|
71
|
+
*/
|