graphql 14.0.0 → 14.1.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/README.md +4 -4
- package/error/GraphQLError.js +1 -1
- package/error/GraphQLError.js.flow +3 -3
- package/error/GraphQLError.mjs +1 -1
- package/error/formatError.js +1 -1
- package/error/formatError.mjs +1 -1
- package/error/index.mjs +1 -1
- package/error/locatedError.js +1 -1
- package/error/locatedError.mjs +1 -1
- package/error/printError.js +1 -1
- package/error/printError.mjs +1 -1
- package/error/syntaxError.js +1 -1
- package/error/syntaxError.mjs +1 -1
- package/execution/execute.js +4 -4
- package/execution/execute.js.flow +4 -6
- package/execution/execute.mjs +5 -5
- package/execution/index.mjs +1 -1
- package/execution/values.js +4 -4
- package/execution/values.js.flow +3 -3
- package/execution/values.mjs +3 -3
- package/graphql.js +1 -1
- package/graphql.mjs +1 -1
- package/index.js +12 -0
- package/index.js.flow +4 -0
- package/index.mjs +4 -4
- package/jsutils/dedent.js +2 -2
- package/jsutils/dedent.js.flow +1 -1
- package/jsutils/dedent.mjs +2 -2
- package/jsutils/defineToJSON.js +17 -6
- package/jsutils/defineToJSON.js.flow +14 -5
- package/jsutils/defineToJSON.mjs +14 -6
- package/jsutils/defineToStringTag.js +5 -5
- package/jsutils/defineToStringTag.js.flow +3 -3
- package/jsutils/defineToStringTag.mjs +4 -4
- package/jsutils/inspect.js +46 -12
- package/jsutils/inspect.js.flow +42 -15
- package/jsutils/inspect.mjs +45 -5
- package/jsutils/instanceOf.js +1 -1
- package/jsutils/instanceOf.mjs +1 -1
- package/jsutils/invariant.js +1 -1
- package/jsutils/invariant.mjs +1 -1
- package/jsutils/isInvalid.js +1 -1
- package/jsutils/isInvalid.mjs +1 -1
- package/jsutils/isNullish.js +1 -1
- package/jsutils/isNullish.mjs +1 -1
- package/jsutils/isPromise.js +1 -1
- package/jsutils/isPromise.mjs +1 -1
- package/jsutils/keyMap.js +1 -1
- package/jsutils/keyMap.mjs +1 -1
- package/jsutils/keyValMap.js +1 -1
- package/jsutils/keyValMap.mjs +1 -1
- package/jsutils/mapValue.js +54 -0
- package/jsutils/mapValue.js.flow +27 -0
- package/jsutils/mapValue.mjs +44 -0
- package/jsutils/memoize3.js +1 -1
- package/jsutils/memoize3.mjs +1 -1
- package/jsutils/nodejsCustomInspectSymbol.js +18 -0
- package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
- package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
- package/jsutils/orList.js +17 -4
- package/jsutils/orList.js.flow +13 -7
- package/jsutils/orList.mjs +14 -4
- package/jsutils/promiseForObject.js +1 -1
- package/jsutils/promiseForObject.mjs +1 -1
- package/jsutils/promiseReduce.js +1 -1
- package/jsutils/promiseReduce.mjs +1 -1
- package/jsutils/quotedOrList.js +1 -1
- package/jsutils/quotedOrList.mjs +1 -1
- package/jsutils/suggestionList.js +1 -1
- package/jsutils/suggestionList.mjs +1 -1
- package/language/blockStringValue.js +2 -2
- package/language/blockStringValue.js.flow +1 -1
- package/language/blockStringValue.mjs +2 -2
- package/language/directiveLocation.js +1 -1
- package/language/directiveLocation.mjs +1 -1
- package/language/index.mjs +1 -1
- package/language/kinds.js +1 -1
- package/language/kinds.mjs +1 -1
- package/language/lexer.js +29 -13
- package/language/lexer.js.flow +34 -20
- package/language/lexer.mjs +28 -13
- package/language/location.js +1 -1
- package/language/location.mjs +1 -1
- package/language/parser.js +31 -38
- package/language/parser.js.flow +32 -48
- package/language/parser.mjs +30 -38
- package/language/predicates.js +1 -1
- package/language/predicates.mjs +1 -1
- package/language/printer.js +13 -7
- package/language/printer.js.flow +19 -9
- package/language/printer.mjs +13 -7
- package/language/source.js +8 -7
- package/language/source.mjs +1 -9
- package/language/visitor.js +11 -20
- package/language/visitor.js.flow +4 -5
- package/language/visitor.mjs +8 -20
- package/package.json +10 -3
- package/polyfills/find.js +31 -0
- package/polyfills/find.js.flow +29 -0
- package/polyfills/find.mjs +23 -0
- package/{jsutils → polyfills}/isFinite.js +1 -1
- package/{jsutils → polyfills}/isFinite.js.flow +0 -0
- package/{jsutils → polyfills}/isFinite.mjs +1 -1
- package/{jsutils → polyfills}/isInteger.js +1 -1
- package/{jsutils → polyfills}/isInteger.js.flow +0 -0
- package/{jsutils → polyfills}/isInteger.mjs +1 -1
- package/polyfills/objectEntries.js +26 -0
- package/polyfills/objectEntries.js.flow +19 -0
- package/polyfills/objectEntries.mjs +18 -0
- package/{jsutils → polyfills}/objectValues.js +1 -1
- package/{jsutils → polyfills}/objectValues.js.flow +1 -1
- package/{jsutils → polyfills}/objectValues.mjs +1 -1
- package/subscription/asyncIteratorReject.mjs +1 -1
- package/subscription/index.mjs +1 -1
- package/subscription/mapAsyncIterator.mjs +1 -1
- package/subscription/subscribe.js +1 -1
- package/subscription/subscribe.js.flow +1 -1
- package/subscription/subscribe.mjs +2 -2
- package/type/definition.js +31 -130
- package/type/definition.js.flow +35 -47
- package/type/definition.mjs +30 -131
- package/type/directives.js +25 -29
- package/type/directives.js.flow +24 -20
- package/type/directives.mjs +22 -30
- package/type/index.js +12 -0
- package/type/index.js.flow +4 -0
- package/type/index.mjs +5 -3
- package/type/introspection.js +3 -3
- package/type/introspection.js.flow +1 -1
- package/type/introspection.mjs +2 -2
- package/type/scalars.js +45 -34
- package/type/scalars.js.flow +40 -26
- package/type/scalars.mjs +44 -26
- package/type/schema.js +82 -87
- package/type/schema.js.flow +17 -9
- package/type/schema.mjs +79 -86
- package/type/validate.js +168 -175
- package/type/validate.js.flow +8 -49
- package/type/validate.mjs +159 -175
- package/utilities/TypeInfo.js +10 -23
- package/utilities/TypeInfo.js.flow +1 -1
- package/utilities/TypeInfo.mjs +2 -24
- package/utilities/assertValidName.js +1 -1
- package/utilities/assertValidName.mjs +1 -1
- package/utilities/astFromValue.js +2 -2
- package/utilities/astFromValue.js.flow +1 -1
- package/utilities/astFromValue.mjs +2 -2
- package/utilities/buildASTSchema.js +169 -152
- package/utilities/buildASTSchema.js.flow +117 -113
- package/utilities/buildASTSchema.mjs +160 -152
- package/utilities/buildClientSchema.js +24 -14
- package/utilities/buildClientSchema.js.flow +24 -14
- package/utilities/buildClientSchema.mjs +23 -14
- package/utilities/coerceValue.js +38 -19
- package/utilities/coerceValue.js.flow +41 -47
- package/utilities/coerceValue.mjs +38 -20
- package/utilities/concatAST.js +1 -1
- package/utilities/concatAST.mjs +1 -1
- package/utilities/extendSchema.js +228 -312
- package/utilities/extendSchema.js.flow +27 -152
- package/utilities/extendSchema.mjs +229 -312
- package/utilities/findBreakingChanges.js +7 -5
- package/utilities/findBreakingChanges.js.flow +3 -2
- package/utilities/findBreakingChanges.mjs +6 -5
- package/utilities/findDeprecatedUsages.js +1 -1
- package/utilities/findDeprecatedUsages.mjs +1 -1
- package/utilities/getOperationAST.js +1 -1
- package/utilities/getOperationAST.mjs +1 -1
- package/utilities/getOperationRootType.js +1 -1
- package/utilities/getOperationRootType.mjs +1 -1
- package/utilities/index.mjs +1 -1
- package/utilities/introspectionFromSchema.js +1 -1
- package/utilities/introspectionFromSchema.mjs +1 -1
- package/utilities/introspectionQuery.js +1 -1
- package/utilities/introspectionQuery.mjs +1 -1
- package/utilities/isValidJSValue.js +1 -1
- package/utilities/isValidJSValue.mjs +1 -1
- package/utilities/isValidLiteralValue.js +1 -1
- package/utilities/isValidLiteralValue.mjs +1 -1
- package/utilities/lexicographicSortSchema.js +2 -2
- package/utilities/lexicographicSortSchema.js.flow +1 -1
- package/utilities/lexicographicSortSchema.mjs +2 -2
- package/utilities/schemaPrinter.js +3 -3
- package/utilities/schemaPrinter.js.flow +1 -1
- package/utilities/schemaPrinter.mjs +2 -2
- package/utilities/separateOperations.js +1 -1
- package/utilities/separateOperations.mjs +1 -1
- package/utilities/typeComparators.js +1 -1
- package/utilities/typeComparators.mjs +1 -1
- package/utilities/typeFromAST.js +1 -1
- package/utilities/typeFromAST.mjs +1 -1
- package/utilities/valueFromAST.js +3 -3
- package/utilities/valueFromAST.js.flow +1 -1
- package/utilities/valueFromAST.mjs +2 -2
- package/utilities/valueFromASTUntyped.js +1 -1
- package/utilities/valueFromASTUntyped.mjs +1 -1
- package/validation/ValidationContext.js +57 -82
- package/validation/ValidationContext.js.flow +52 -49
- package/validation/ValidationContext.mjs +52 -77
- package/validation/index.js.flow +1 -0
- package/validation/index.mjs +1 -1
- package/validation/rules/ExecutableDefinitions.js +1 -1
- package/validation/rules/ExecutableDefinitions.js.flow +1 -1
- package/validation/rules/ExecutableDefinitions.mjs +1 -1
- package/validation/rules/FieldsOnCorrectType.js +1 -1
- package/validation/rules/FieldsOnCorrectType.mjs +1 -1
- package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
- package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
- package/validation/rules/KnownArgumentNames.mjs +1 -1
- package/validation/rules/KnownDirectives.js +1 -1
- package/validation/rules/KnownDirectives.mjs +1 -1
- package/validation/rules/KnownFragmentNames.js +1 -1
- package/validation/rules/KnownFragmentNames.mjs +1 -1
- package/validation/rules/KnownTypeNames.js +59 -21
- package/validation/rules/KnownTypeNames.js.flow +54 -20
- package/validation/rules/KnownTypeNames.mjs +56 -21
- package/validation/rules/LoneAnonymousOperation.js +1 -1
- package/validation/rules/LoneAnonymousOperation.mjs +1 -1
- package/validation/rules/LoneSchemaDefinition.js +1 -1
- package/validation/rules/LoneSchemaDefinition.mjs +1 -1
- package/validation/rules/NoFragmentCycles.js +1 -1
- package/validation/rules/NoFragmentCycles.js.flow +2 -2
- package/validation/rules/NoFragmentCycles.mjs +1 -1
- package/validation/rules/NoUndefinedVariables.js +1 -1
- package/validation/rules/NoUndefinedVariables.mjs +1 -1
- package/validation/rules/NoUnusedFragments.js +1 -1
- package/validation/rules/NoUnusedFragments.js.flow +2 -2
- package/validation/rules/NoUnusedFragments.mjs +1 -1
- package/validation/rules/NoUnusedVariables.js +1 -1
- package/validation/rules/NoUnusedVariables.mjs +1 -1
- package/validation/rules/OverlappingFieldsCanBeMerged.js +57 -33
- package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +5 -6
- package/validation/rules/OverlappingFieldsCanBeMerged.mjs +48 -33
- package/validation/rules/PossibleFragmentSpreads.js +1 -1
- package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
- package/validation/rules/PossibleTypeExtensions.js +158 -0
- package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
- package/validation/rules/PossibleTypeExtensions.mjs +146 -0
- package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
- package/validation/rules/ScalarLeafs.js +1 -1
- package/validation/rules/ScalarLeafs.mjs +1 -1
- package/validation/rules/SingleFieldSubscriptions.js +1 -1
- package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
- package/validation/rules/UniqueArgumentNames.js +1 -1
- package/validation/rules/UniqueArgumentNames.mjs +1 -1
- package/validation/rules/UniqueDirectiveNames.js +55 -0
- package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
- package/validation/rules/UniqueDirectiveNames.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
- package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
- package/validation/rules/UniqueEnumValueNames.js +94 -0
- package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
- package/validation/rules/UniqueEnumValueNames.mjs +81 -0
- package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
- package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
- package/validation/rules/UniqueFragmentNames.js +1 -1
- package/validation/rules/UniqueFragmentNames.mjs +1 -1
- package/validation/rules/UniqueInputFieldNames.js +1 -1
- package/validation/rules/UniqueInputFieldNames.mjs +1 -1
- package/validation/rules/UniqueOperationNames.js +1 -1
- package/validation/rules/UniqueOperationNames.mjs +1 -1
- package/validation/rules/UniqueOperationTypes.js +85 -0
- package/validation/rules/UniqueOperationTypes.js.flow +76 -0
- package/validation/rules/UniqueOperationTypes.mjs +73 -0
- package/validation/rules/UniqueTypeNames.js +62 -0
- package/validation/rules/UniqueTypeNames.js.flow +67 -0
- package/validation/rules/UniqueTypeNames.mjs +50 -0
- package/validation/rules/UniqueVariableNames.js +1 -1
- package/validation/rules/UniqueVariableNames.mjs +1 -1
- package/validation/rules/ValuesOfCorrectType.js +29 -13
- package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
- package/validation/rules/ValuesOfCorrectType.mjs +28 -13
- package/validation/rules/VariablesAreInputTypes.js +1 -1
- package/validation/rules/VariablesAreInputTypes.mjs +1 -1
- package/validation/rules/VariablesInAllowedPosition.js +4 -4
- package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
- package/validation/specifiedRules.js +14 -2
- package/validation/specifiedRules.js.flow +13 -0
- package/validation/specifiedRules.mjs +8 -2
- package/validation/validate.js +1 -1
- package/validation/validate.mjs +1 -1
- package/jsutils/find.js +0 -22
- package/jsutils/find.js.flow +0 -19
- package/jsutils/find.mjs +0 -15
package/jsutils/orList.mjs
CHANGED
|
@@ -4,16 +4,26 @@
|
|
|
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
|
+
import invariant from './invariant';
|
|
9
10
|
var MAX_LENGTH = 5;
|
|
10
11
|
/**
|
|
11
12
|
* Given [ A, B, C ] return 'A, B, or C'.
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
15
|
export default function orList(items) {
|
|
16
|
+
!(items.length !== 0) ? invariant(0) : void 0;
|
|
17
|
+
|
|
18
|
+
if (items.length === 1) {
|
|
19
|
+
return items[0];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (items.length === 2) {
|
|
23
|
+
return items[0] + ' or ' + items[1];
|
|
24
|
+
}
|
|
25
|
+
|
|
15
26
|
var selected = items.slice(0, MAX_LENGTH);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
27
|
+
var lastItem = selected.pop();
|
|
28
|
+
return selected.join(', ') + ', or ' + lastItem;
|
|
19
29
|
}
|
package/jsutils/promiseReduce.js
CHANGED
package/jsutils/quotedOrList.js
CHANGED
package/jsutils/quotedOrList.mjs
CHANGED
|
@@ -11,12 +11,12 @@ exports.default = blockStringValue;
|
|
|
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.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
14
|
+
*
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Produces the value of a block string from its parsed raw value, similar to
|
|
19
|
-
*
|
|
19
|
+
* CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
|
|
20
20
|
*
|
|
21
21
|
* This implements the GraphQL spec's BlockStringValue() static algorithm.
|
|
22
22
|
*/
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Produces the value of a block string from its parsed raw value, similar to
|
|
12
|
-
*
|
|
12
|
+
* CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
|
|
13
13
|
*
|
|
14
14
|
* This implements the GraphQL spec's BlockStringValue() static algorithm.
|
|
15
15
|
*/
|
|
@@ -4,12 +4,12 @@
|
|
|
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
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Produces the value of a block string from its parsed raw value, similar to
|
|
12
|
-
*
|
|
12
|
+
* CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
|
|
13
13
|
*
|
|
14
14
|
* This implements the GraphQL spec's BlockStringValue() static algorithm.
|
|
15
15
|
*/
|
package/language/index.mjs
CHANGED
package/language/kinds.js
CHANGED
package/language/kinds.mjs
CHANGED
package/language/lexer.js
CHANGED
|
@@ -7,6 +7,8 @@ exports.createLexer = createLexer;
|
|
|
7
7
|
exports.getTokenDesc = getTokenDesc;
|
|
8
8
|
exports.TokenKind = void 0;
|
|
9
9
|
|
|
10
|
+
var _defineToJSON = _interopRequireDefault(require("../jsutils/defineToJSON"));
|
|
11
|
+
|
|
10
12
|
var _error = require("../error");
|
|
11
13
|
|
|
12
14
|
var _blockStringValue = _interopRequireDefault(require("./blockStringValue"));
|
|
@@ -19,7 +21,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
19
21
|
* This source code is licensed under the MIT license found in the
|
|
20
22
|
* LICENSE file in the root directory of this source tree.
|
|
21
23
|
*
|
|
22
|
-
*
|
|
24
|
+
*
|
|
23
25
|
*/
|
|
24
26
|
|
|
25
27
|
/**
|
|
@@ -128,14 +130,14 @@ function Tok(kind, start, end, line, column, prev, value) {
|
|
|
128
130
|
} // Print a simplified form when appearing in JSON/util.inspect.
|
|
129
131
|
|
|
130
132
|
|
|
131
|
-
|
|
133
|
+
(0, _defineToJSON.default)(Tok, function () {
|
|
132
134
|
return {
|
|
133
135
|
kind: this.kind,
|
|
134
136
|
value: this.value,
|
|
135
137
|
line: this.line,
|
|
136
138
|
column: this.column
|
|
137
139
|
};
|
|
138
|
-
};
|
|
140
|
+
});
|
|
139
141
|
|
|
140
142
|
function printCharCode(code) {
|
|
141
143
|
return (// NaN/undefined represents access beyond the end of the file.
|
|
@@ -147,9 +149,9 @@ function printCharCode(code) {
|
|
|
147
149
|
/**
|
|
148
150
|
* Gets the next token from the source starting at the given position.
|
|
149
151
|
*
|
|
150
|
-
* This skips over whitespace
|
|
151
|
-
*
|
|
152
|
-
*
|
|
152
|
+
* This skips over whitespace until it finds the next lexable token, then lexes
|
|
153
|
+
* punctuators immediately or calls the appropriate helper function for more
|
|
154
|
+
* complicated tokens.
|
|
153
155
|
*/
|
|
154
156
|
|
|
155
157
|
|
|
@@ -305,7 +307,7 @@ function readToken(lexer, prev) {
|
|
|
305
307
|
|
|
306
308
|
case 34:
|
|
307
309
|
if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {
|
|
308
|
-
return readBlockString(source, pos, line, col, prev);
|
|
310
|
+
return readBlockString(source, pos, line, col, prev, lexer);
|
|
309
311
|
}
|
|
310
312
|
|
|
311
313
|
return readString(source, pos, line, col, prev);
|
|
@@ -332,8 +334,7 @@ function unexpectedCharacterMessage(code) {
|
|
|
332
334
|
}
|
|
333
335
|
/**
|
|
334
336
|
* Reads from body starting at startPosition until it finds a non-whitespace
|
|
335
|
-
*
|
|
336
|
-
* lexing.
|
|
337
|
+
* character, then returns the position of that character for lexing.
|
|
337
338
|
*/
|
|
338
339
|
|
|
339
340
|
|
|
@@ -561,7 +562,7 @@ function readString(source, start, line, col, prev) {
|
|
|
561
562
|
*/
|
|
562
563
|
|
|
563
564
|
|
|
564
|
-
function readBlockString(source, start, line, col, prev) {
|
|
565
|
+
function readBlockString(source, start, line, col, prev, lexer) {
|
|
565
566
|
var body = source.body;
|
|
566
567
|
var position = start + 3;
|
|
567
568
|
var chunkStart = position;
|
|
@@ -578,10 +579,25 @@ function readBlockString(source, start, line, col, prev) {
|
|
|
578
579
|
|
|
579
580
|
if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {
|
|
580
581
|
throw (0, _error.syntaxError)(source, position, "Invalid character within String: ".concat(printCharCode(code), "."));
|
|
581
|
-
}
|
|
582
|
+
}
|
|
582
583
|
|
|
584
|
+
if (code === 10) {
|
|
585
|
+
// new line
|
|
586
|
+
++position;
|
|
587
|
+
++lexer.line;
|
|
588
|
+
lexer.lineStart = position;
|
|
589
|
+
} else if (code === 13) {
|
|
590
|
+
// carriage return
|
|
591
|
+
if (charCodeAt.call(body, position + 1) === 10) {
|
|
592
|
+
position += 2;
|
|
593
|
+
} else {
|
|
594
|
+
++position;
|
|
595
|
+
}
|
|
583
596
|
|
|
584
|
-
|
|
597
|
+
++lexer.line;
|
|
598
|
+
lexer.lineStart = position;
|
|
599
|
+
} else if ( // Escape Triple-Quote (\""")
|
|
600
|
+
code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {
|
|
585
601
|
rawValue += slice.call(body, chunkStart, position) + '"""';
|
|
586
602
|
position += 4;
|
|
587
603
|
chunkStart = position;
|
|
@@ -593,7 +609,7 @@ function readBlockString(source, start, line, col, prev) {
|
|
|
593
609
|
throw (0, _error.syntaxError)(source, position, 'Unterminated string.');
|
|
594
610
|
}
|
|
595
611
|
/**
|
|
596
|
-
* Converts four
|
|
612
|
+
* Converts four hexadecimal chars to the integer that the
|
|
597
613
|
* string represents. For example, uniCharCode('0','0','0','f')
|
|
598
614
|
* will return 15, and uniCharCode('0','0','f','f') returns 255.
|
|
599
615
|
*
|
package/language/lexer.js.flow
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import defineToJSON from '../jsutils/defineToJSON';
|
|
10
11
|
import type { Token } from './ast';
|
|
11
12
|
import type { Source } from './source';
|
|
12
13
|
import { syntaxError } from '../error';
|
|
@@ -162,14 +163,14 @@ function Tok(
|
|
|
162
163
|
}
|
|
163
164
|
|
|
164
165
|
// Print a simplified form when appearing in JSON/util.inspect.
|
|
165
|
-
Tok
|
|
166
|
+
defineToJSON(Tok, function() {
|
|
166
167
|
return {
|
|
167
168
|
kind: this.kind,
|
|
168
169
|
value: this.value,
|
|
169
170
|
line: this.line,
|
|
170
171
|
column: this.column,
|
|
171
172
|
};
|
|
172
|
-
};
|
|
173
|
+
});
|
|
173
174
|
|
|
174
175
|
function printCharCode(code) {
|
|
175
176
|
return (
|
|
@@ -177,19 +178,19 @@ function printCharCode(code) {
|
|
|
177
178
|
isNaN(code)
|
|
178
179
|
? TokenKind.EOF
|
|
179
180
|
: // Trust JSON for ASCII.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
code < 0x007f
|
|
182
|
+
? JSON.stringify(String.fromCharCode(code))
|
|
183
|
+
: // Otherwise print the escaped form.
|
|
184
|
+
`"\\u${('00' + code.toString(16).toUpperCase()).slice(-4)}"`
|
|
184
185
|
);
|
|
185
186
|
}
|
|
186
187
|
|
|
187
188
|
/**
|
|
188
189
|
* Gets the next token from the source starting at the given position.
|
|
189
190
|
*
|
|
190
|
-
* This skips over whitespace
|
|
191
|
-
*
|
|
192
|
-
*
|
|
191
|
+
* This skips over whitespace until it finds the next lexable token, then lexes
|
|
192
|
+
* punctuators immediately or calls the appropriate helper function for more
|
|
193
|
+
* complicated tokens.
|
|
193
194
|
*/
|
|
194
195
|
function readToken(lexer: Lexer<*>, prev: Token): Token {
|
|
195
196
|
const source = lexer.source;
|
|
@@ -333,7 +334,7 @@ function readToken(lexer: Lexer<*>, prev: Token): Token {
|
|
|
333
334
|
charCodeAt.call(body, pos + 1) === 34 &&
|
|
334
335
|
charCodeAt.call(body, pos + 2) === 34
|
|
335
336
|
) {
|
|
336
|
-
return readBlockString(source, pos, line, col, prev);
|
|
337
|
+
return readBlockString(source, pos, line, col, prev, lexer);
|
|
337
338
|
}
|
|
338
339
|
return readString(source, pos, line, col, prev);
|
|
339
340
|
}
|
|
@@ -362,8 +363,7 @@ function unexpectedCharacterMessage(code) {
|
|
|
362
363
|
|
|
363
364
|
/**
|
|
364
365
|
* Reads from body starting at startPosition until it finds a non-whitespace
|
|
365
|
-
*
|
|
366
|
-
* lexing.
|
|
366
|
+
* character, then returns the position of that character for lexing.
|
|
367
367
|
*/
|
|
368
368
|
function positionAfterWhitespace(
|
|
369
369
|
body: string,
|
|
@@ -625,7 +625,7 @@ function readString(source, start, line, col, prev): Token {
|
|
|
625
625
|
*
|
|
626
626
|
* """("?"?(\\"""|\\(?!=""")|[^"\\]))*"""
|
|
627
627
|
*/
|
|
628
|
-
function readBlockString(source, start, line, col, prev): Token {
|
|
628
|
+
function readBlockString(source, start, line, col, prev, lexer): Token {
|
|
629
629
|
const body = source.body;
|
|
630
630
|
let position = start + 3;
|
|
631
631
|
let chunkStart = position;
|
|
@@ -668,8 +668,22 @@ function readBlockString(source, start, line, col, prev): Token {
|
|
|
668
668
|
);
|
|
669
669
|
}
|
|
670
670
|
|
|
671
|
-
|
|
672
|
-
|
|
671
|
+
if (code === 10) {
|
|
672
|
+
// new line
|
|
673
|
+
++position;
|
|
674
|
+
++lexer.line;
|
|
675
|
+
lexer.lineStart = position;
|
|
676
|
+
} else if (code === 13) {
|
|
677
|
+
// carriage return
|
|
678
|
+
if (charCodeAt.call(body, position + 1) === 10) {
|
|
679
|
+
position += 2;
|
|
680
|
+
} else {
|
|
681
|
+
++position;
|
|
682
|
+
}
|
|
683
|
+
++lexer.line;
|
|
684
|
+
lexer.lineStart = position;
|
|
685
|
+
} else if (
|
|
686
|
+
// Escape Triple-Quote (\""")
|
|
673
687
|
code === 92 &&
|
|
674
688
|
charCodeAt.call(body, position + 1) === 34 &&
|
|
675
689
|
charCodeAt.call(body, position + 2) === 34 &&
|
|
@@ -687,7 +701,7 @@ function readBlockString(source, start, line, col, prev): Token {
|
|
|
687
701
|
}
|
|
688
702
|
|
|
689
703
|
/**
|
|
690
|
-
* Converts four
|
|
704
|
+
* Converts four hexadecimal chars to the integer that the
|
|
691
705
|
* string represents. For example, uniCharCode('0','0','0','f')
|
|
692
706
|
* will return 15, and uniCharCode('0','0','f','f') returns 255.
|
|
693
707
|
*
|
|
@@ -714,10 +728,10 @@ function char2hex(a) {
|
|
|
714
728
|
return a >= 48 && a <= 57
|
|
715
729
|
? a - 48 // 0-9
|
|
716
730
|
: a >= 65 && a <= 70
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
731
|
+
? a - 55 // A-F
|
|
732
|
+
: a >= 97 && a <= 102
|
|
733
|
+
? a - 87 // a-f
|
|
734
|
+
: -1;
|
|
721
735
|
}
|
|
722
736
|
|
|
723
737
|
/**
|
package/language/lexer.mjs
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
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
|
+
import defineToJSON from '../jsutils/defineToJSON';
|
|
9
10
|
import { syntaxError } from '../error';
|
|
10
11
|
import blockStringValue from './blockStringValue';
|
|
11
12
|
/**
|
|
@@ -112,14 +113,14 @@ function Tok(kind, start, end, line, column, prev, value) {
|
|
|
112
113
|
} // Print a simplified form when appearing in JSON/util.inspect.
|
|
113
114
|
|
|
114
115
|
|
|
115
|
-
Tok
|
|
116
|
+
defineToJSON(Tok, function () {
|
|
116
117
|
return {
|
|
117
118
|
kind: this.kind,
|
|
118
119
|
value: this.value,
|
|
119
120
|
line: this.line,
|
|
120
121
|
column: this.column
|
|
121
122
|
};
|
|
122
|
-
};
|
|
123
|
+
});
|
|
123
124
|
|
|
124
125
|
function printCharCode(code) {
|
|
125
126
|
return (// NaN/undefined represents access beyond the end of the file.
|
|
@@ -131,9 +132,9 @@ function printCharCode(code) {
|
|
|
131
132
|
/**
|
|
132
133
|
* Gets the next token from the source starting at the given position.
|
|
133
134
|
*
|
|
134
|
-
* This skips over whitespace
|
|
135
|
-
*
|
|
136
|
-
*
|
|
135
|
+
* This skips over whitespace until it finds the next lexable token, then lexes
|
|
136
|
+
* punctuators immediately or calls the appropriate helper function for more
|
|
137
|
+
* complicated tokens.
|
|
137
138
|
*/
|
|
138
139
|
|
|
139
140
|
|
|
@@ -289,7 +290,7 @@ function readToken(lexer, prev) {
|
|
|
289
290
|
|
|
290
291
|
case 34:
|
|
291
292
|
if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {
|
|
292
|
-
return readBlockString(source, pos, line, col, prev);
|
|
293
|
+
return readBlockString(source, pos, line, col, prev, lexer);
|
|
293
294
|
}
|
|
294
295
|
|
|
295
296
|
return readString(source, pos, line, col, prev);
|
|
@@ -316,8 +317,7 @@ function unexpectedCharacterMessage(code) {
|
|
|
316
317
|
}
|
|
317
318
|
/**
|
|
318
319
|
* Reads from body starting at startPosition until it finds a non-whitespace
|
|
319
|
-
*
|
|
320
|
-
* lexing.
|
|
320
|
+
* character, then returns the position of that character for lexing.
|
|
321
321
|
*/
|
|
322
322
|
|
|
323
323
|
|
|
@@ -545,7 +545,7 @@ function readString(source, start, line, col, prev) {
|
|
|
545
545
|
*/
|
|
546
546
|
|
|
547
547
|
|
|
548
|
-
function readBlockString(source, start, line, col, prev) {
|
|
548
|
+
function readBlockString(source, start, line, col, prev, lexer) {
|
|
549
549
|
var body = source.body;
|
|
550
550
|
var position = start + 3;
|
|
551
551
|
var chunkStart = position;
|
|
@@ -562,10 +562,25 @@ function readBlockString(source, start, line, col, prev) {
|
|
|
562
562
|
|
|
563
563
|
if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {
|
|
564
564
|
throw syntaxError(source, position, "Invalid character within String: ".concat(printCharCode(code), "."));
|
|
565
|
-
}
|
|
565
|
+
}
|
|
566
566
|
|
|
567
|
+
if (code === 10) {
|
|
568
|
+
// new line
|
|
569
|
+
++position;
|
|
570
|
+
++lexer.line;
|
|
571
|
+
lexer.lineStart = position;
|
|
572
|
+
} else if (code === 13) {
|
|
573
|
+
// carriage return
|
|
574
|
+
if (charCodeAt.call(body, position + 1) === 10) {
|
|
575
|
+
position += 2;
|
|
576
|
+
} else {
|
|
577
|
+
++position;
|
|
578
|
+
}
|
|
567
579
|
|
|
568
|
-
|
|
580
|
+
++lexer.line;
|
|
581
|
+
lexer.lineStart = position;
|
|
582
|
+
} else if ( // Escape Triple-Quote (\""")
|
|
583
|
+
code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {
|
|
569
584
|
rawValue += slice.call(body, chunkStart, position) + '"""';
|
|
570
585
|
position += 4;
|
|
571
586
|
chunkStart = position;
|
|
@@ -577,7 +592,7 @@ function readBlockString(source, start, line, col, prev) {
|
|
|
577
592
|
throw syntaxError(source, position, 'Unterminated string.');
|
|
578
593
|
}
|
|
579
594
|
/**
|
|
580
|
-
* Converts four
|
|
595
|
+
* Converts four hexadecimal chars to the integer that the
|
|
581
596
|
* string represents. For example, uniCharCode('0','0','0','f')
|
|
582
597
|
* will return 15, and uniCharCode('0','0','f','f') returns 255.
|
|
583
598
|
*
|
package/language/location.js
CHANGED