graphql 15.3.0 → 15.5.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 +10 -0
- package/error/GraphQLError.js +8 -8
- package/error/GraphQLError.js.flow +2 -3
- package/error/GraphQLError.mjs +2 -2
- package/error/formatError.js +1 -1
- package/error/formatError.js.flow +0 -1
- package/error/index.js +4 -4
- package/error/index.js.flow +0 -1
- package/error/locatedError.d.ts +2 -2
- package/error/locatedError.js +10 -5
- package/error/locatedError.js.flow +10 -4
- package/error/locatedError.mjs +6 -4
- package/error/syntaxError.js +1 -1
- package/error/syntaxError.js.flow +0 -1
- package/execution/execute.d.ts +0 -15
- package/execution/execute.js +104 -104
- package/execution/execute.js.flow +119 -133
- package/execution/execute.mjs +86 -82
- package/execution/index.js +3 -3
- package/execution/index.js.flow +0 -1
- package/execution/values.js +11 -11
- package/execution/values.js.flow +0 -1
- package/graphql.js +5 -5
- package/graphql.js.flow +0 -1
- package/index.d.ts +1 -0
- package/index.js +9 -9
- package/index.js.flow +0 -1
- package/jsutils/ObjMap.js.flow +0 -1
- package/jsutils/Path.js.flow +0 -1
- package/jsutils/PromiseOrValue.js.flow +0 -1
- package/jsutils/defineInspect.js +2 -2
- package/jsutils/defineInspect.js.flow +0 -1
- package/jsutils/devAssert.js.flow +0 -1
- package/jsutils/didYouMean.js.flow +0 -1
- package/jsutils/identityFunc.js.flow +0 -1
- package/jsutils/inspect.js +1 -2
- package/jsutils/inspect.js.flow +10 -8
- package/jsutils/inspect.mjs +1 -1
- package/jsutils/instanceOf.js +15 -9
- package/jsutils/instanceOf.js.flow +13 -7
- package/jsutils/instanceOf.mjs +13 -5
- package/jsutils/invariant.js.flow +0 -1
- package/jsutils/isAsyncIterable.js +13 -0
- package/jsutils/isAsyncIterable.js.flow +14 -0
- package/jsutils/isAsyncIterable.mjs +10 -0
- package/jsutils/isObjectLike.js.flow +0 -1
- package/jsutils/isPromise.js.flow +0 -1
- package/jsutils/keyMap.js.flow +0 -1
- package/jsutils/keyValMap.js.flow +0 -1
- package/jsutils/mapValue.js +1 -1
- package/jsutils/mapValue.js.flow +0 -1
- package/jsutils/memoize3.js +2 -5
- package/jsutils/memoize3.js.flow +2 -5
- package/jsutils/memoize3.mjs +2 -5
- package/jsutils/naturalCompare.js +69 -0
- package/jsutils/naturalCompare.js.flow +59 -0
- package/jsutils/naturalCompare.mjs +61 -0
- package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
- package/jsutils/printPathArray.js.flow +0 -1
- package/jsutils/promiseForObject.js.flow +0 -1
- package/jsutils/promiseReduce.js +1 -1
- package/jsutils/promiseReduce.js.flow +0 -1
- package/jsutils/safeArrayFrom.js +73 -0
- package/jsutils/safeArrayFrom.js.flow +59 -0
- package/jsutils/safeArrayFrom.mjs +66 -0
- package/jsutils/suggestionList.js +5 -1
- package/jsutils/suggestionList.js.flow +3 -2
- package/jsutils/suggestionList.mjs +3 -1
- package/jsutils/toObjMap.js +1 -1
- package/jsutils/toObjMap.js.flow +0 -1
- package/language/ast.js +1 -1
- package/language/ast.js.flow +0 -1
- package/language/blockString.d.ts +1 -1
- package/language/blockString.js +53 -32
- package/language/blockString.js.flow +51 -36
- package/language/blockString.mjs +54 -33
- package/language/directiveLocation.js.flow +0 -1
- package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
- package/language/experimentalOnlineParser/grammar.js +987 -0
- package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
- package/language/experimentalOnlineParser/grammar.mjs +980 -0
- package/language/experimentalOnlineParser/index.d.ts +6 -0
- package/language/experimentalOnlineParser/index.js +31 -0
- package/language/experimentalOnlineParser/index.js.flow +7 -0
- package/language/experimentalOnlineParser/index.mjs +1 -0
- package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
- package/language/experimentalOnlineParser/onlineParser.js +604 -0
- package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
- package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
- package/language/index.js +12 -12
- package/language/index.js.flow +0 -1
- package/language/kinds.js.flow +0 -1
- package/language/lexer.js +242 -183
- package/language/lexer.js.flow +188 -184
- package/language/lexer.mjs +238 -179
- package/language/location.js.flow +0 -1
- package/language/parser.js +73 -68
- package/language/parser.js.flow +62 -57
- package/language/parser.mjs +64 -60
- package/language/predicates.js +1 -1
- package/language/predicates.js.flow +0 -1
- package/language/printLocation.js +1 -1
- package/language/printLocation.js.flow +0 -1
- package/language/printer.js +20 -13
- package/language/printer.js.flow +26 -25
- package/language/printer.mjs +18 -11
- package/language/source.d.ts +7 -0
- package/language/source.js +20 -3
- package/language/source.js.flow +21 -3
- package/language/source.mjs +14 -1
- package/language/tokenKind.js.flow +0 -1
- package/language/visitor.js +2 -2
- package/language/visitor.js.flow +0 -1
- package/package.json +2 -3
- package/polyfills/arrayFrom.js +2 -2
- package/polyfills/arrayFrom.js.flow +1 -2
- package/polyfills/arrayFrom.mjs +1 -1
- package/polyfills/find.js +1 -1
- package/polyfills/find.js.flow +1 -2
- package/polyfills/find.mjs +1 -1
- package/polyfills/isFinite.js +1 -1
- package/polyfills/isFinite.js.flow +1 -2
- package/polyfills/isFinite.mjs +1 -1
- package/polyfills/isInteger.js +1 -1
- package/polyfills/isInteger.js.flow +1 -2
- package/polyfills/isInteger.mjs +1 -1
- package/polyfills/objectEntries.js +1 -1
- package/polyfills/objectEntries.js.flow +1 -2
- package/polyfills/objectEntries.mjs +1 -1
- package/polyfills/objectValues.js +1 -1
- package/polyfills/objectValues.js.flow +1 -2
- package/polyfills/objectValues.mjs +1 -1
- package/polyfills/symbols.js +3 -5
- package/polyfills/symbols.js.flow +9 -6
- package/polyfills/symbols.mjs +3 -5
- package/subscription/index.js +1 -1
- package/subscription/index.js.flow +0 -1
- package/subscription/mapAsyncIterator.js +2 -2
- package/subscription/mapAsyncIterator.js.flow +8 -9
- package/subscription/mapAsyncIterator.mjs +1 -1
- package/subscription/subscribe.js +61 -73
- package/subscription/subscribe.js.flow +71 -85
- package/subscription/subscribe.mjs +53 -65
- package/type/definition.d.ts +16 -6
- package/type/definition.js +37 -32
- package/type/definition.js.flow +93 -63
- package/type/definition.mjs +19 -14
- package/type/directives.js +17 -16
- package/type/directives.js.flow +20 -13
- package/type/directives.mjs +6 -5
- package/type/index.js +6 -6
- package/type/index.js.flow +0 -1
- package/type/introspection.js +86 -65
- package/type/introspection.js.flow +75 -43
- package/type/introspection.mjs +79 -58
- package/type/scalars.js +9 -9
- package/type/scalars.js.flow +1 -2
- package/type/scalars.mjs +1 -1
- package/type/schema.js +13 -13
- package/type/schema.js.flow +2 -3
- package/type/schema.mjs +1 -1
- package/type/validate.js +52 -19
- package/type/validate.js.flow +54 -8
- package/type/validate.mjs +43 -9
- package/utilities/TypeInfo.js +7 -7
- package/utilities/TypeInfo.js.flow +1 -2
- package/utilities/assertValidName.js +2 -2
- package/utilities/assertValidName.js.flow +0 -1
- package/utilities/astFromValue.js +14 -16
- package/utilities/astFromValue.js.flow +6 -7
- package/utilities/astFromValue.mjs +6 -7
- package/utilities/buildASTSchema.js +17 -27
- package/utilities/buildASTSchema.js.flow +5 -21
- package/utilities/buildASTSchema.mjs +11 -21
- package/utilities/buildClientSchema.js +16 -15
- package/utilities/buildClientSchema.js.flow +28 -12
- package/utilities/buildClientSchema.mjs +5 -4
- package/utilities/coerceInputValue.js +17 -18
- package/utilities/coerceInputValue.js.flow +12 -10
- package/utilities/coerceInputValue.mjs +7 -7
- package/utilities/concatAST.js +9 -8
- package/utilities/concatAST.js.flow +8 -8
- package/utilities/concatAST.mjs +9 -6
- package/utilities/extendSchema.js +26 -19
- package/utilities/extendSchema.js.flow +19 -7
- package/utilities/extendSchema.mjs +8 -1
- package/utilities/findBreakingChanges.js +15 -11
- package/utilities/findBreakingChanges.js.flow +6 -3
- package/utilities/findBreakingChanges.mjs +5 -2
- package/utilities/findDeprecatedUsages.js +2 -2
- package/utilities/findDeprecatedUsages.js.flow +0 -1
- package/utilities/getIntrospectionQuery.d.ts +6 -0
- package/utilities/getIntrospectionQuery.js +8 -2
- package/utilities/getIntrospectionQuery.js.flow +17 -5
- package/utilities/getIntrospectionQuery.mjs +8 -2
- package/utilities/getOperationAST.js +1 -1
- package/utilities/getOperationAST.js.flow +0 -1
- package/utilities/getOperationRootType.js +1 -1
- package/utilities/getOperationRootType.js.flow +0 -1
- package/utilities/index.d.ts +3 -0
- package/utilities/index.js +22 -22
- package/utilities/index.js.flow +0 -1
- package/utilities/introspectionFromSchema.js +7 -5
- package/utilities/introspectionFromSchema.js.flow +2 -1
- package/utilities/introspectionFromSchema.mjs +3 -1
- package/utilities/lexicographicSortSchema.js +13 -9
- package/utilities/lexicographicSortSchema.js.flow +21 -13
- package/utilities/lexicographicSortSchema.mjs +5 -2
- package/utilities/printSchema.js +15 -16
- package/utilities/printSchema.js.flow +23 -16
- package/utilities/printSchema.mjs +5 -6
- package/utilities/separateOperations.js +46 -42
- package/utilities/separateOperations.js.flow +46 -37
- package/utilities/separateOperations.mjs +44 -40
- package/utilities/stripIgnoredCharacters.js +6 -16
- package/utilities/stripIgnoredCharacters.js.flow +4 -13
- package/utilities/stripIgnoredCharacters.mjs +3 -10
- package/utilities/typeComparators.js +1 -1
- package/utilities/typeComparators.js.flow +0 -1
- package/utilities/typeFromAST.js +6 -6
- package/utilities/typeFromAST.js.flow +2 -3
- package/utilities/typeFromAST.mjs +2 -2
- package/utilities/typedQueryDocumentNode.d.ts +20 -0
- package/utilities/valueFromAST.js +6 -6
- package/utilities/valueFromAST.js.flow +4 -2
- package/utilities/valueFromASTUntyped.js +4 -4
- package/utilities/valueFromASTUntyped.js.flow +0 -1
- package/validation/ValidationContext.js +3 -3
- package/validation/ValidationContext.js.flow +3 -4
- package/validation/index.js +38 -38
- package/validation/index.js.flow +0 -1
- package/validation/rules/ExecutableDefinitions.js +1 -1
- package/validation/rules/ExecutableDefinitions.js.flow +0 -1
- package/validation/rules/ExecutableDefinitionsRule.js +3 -3
- package/validation/rules/ExecutableDefinitionsRule.js.flow +0 -1
- package/validation/rules/FieldsOnCorrectTypeRule.js +8 -6
- package/validation/rules/FieldsOnCorrectTypeRule.js.flow +2 -2
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +2 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
- package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +0 -1
- package/validation/rules/KnownArgumentNamesRule.js +5 -5
- package/validation/rules/KnownArgumentNamesRule.js.flow +1 -1
- package/validation/rules/KnownDirectivesRule.js +6 -6
- package/validation/rules/KnownDirectivesRule.js.flow +4 -3
- package/validation/rules/KnownFragmentNamesRule.js +1 -1
- package/validation/rules/KnownFragmentNamesRule.js.flow +0 -1
- package/validation/rules/KnownTypeNamesRule.js +6 -6
- package/validation/rules/KnownTypeNamesRule.js.flow +1 -2
- package/validation/rules/LoneAnonymousOperationRule.js +2 -2
- package/validation/rules/LoneAnonymousOperationRule.js.flow +0 -1
- package/validation/rules/LoneSchemaDefinition.js +1 -1
- package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
- package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.js.flow +0 -1
- package/validation/rules/NoFragmentCyclesRule.js +1 -1
- package/validation/rules/NoFragmentCyclesRule.js.flow +1 -2
- package/validation/rules/NoUndefinedVariablesRule.js +1 -1
- package/validation/rules/NoUndefinedVariablesRule.js.flow +0 -1
- package/validation/rules/NoUnusedFragmentsRule.js +1 -1
- package/validation/rules/NoUnusedFragmentsRule.js.flow +0 -1
- package/validation/rules/NoUnusedVariablesRule.js +1 -1
- package/validation/rules/NoUnusedVariablesRule.js.flow +0 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +14 -14
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
- package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
- package/validation/rules/PossibleFragmentSpreadsRule.js.flow +5 -2
- package/validation/rules/PossibleTypeExtensions.js +1 -1
- package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
- package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
- package/validation/rules/PossibleTypeExtensionsRule.js.flow +6 -4
- package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
- package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +4 -3
- package/validation/rules/ScalarLeafsRule.js +3 -3
- package/validation/rules/ScalarLeafsRule.js.flow +0 -1
- package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.js.flow +0 -1
- package/validation/rules/UniqueArgumentNamesRule.js +1 -1
- package/validation/rules/UniqueArgumentNamesRule.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNames.js +1 -1
- package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNamesRule.js +2 -2
- package/validation/rules/UniqueDirectiveNamesRule.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNamesRule.mjs +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
- package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +0 -1
- package/validation/rules/UniqueEnumValueNames.js +1 -1
- package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
- package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
- package/validation/rules/UniqueEnumValueNamesRule.js.flow +7 -2
- package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
- package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +13 -4
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
- package/validation/rules/UniqueFragmentNamesRule.js +1 -1
- package/validation/rules/UniqueFragmentNamesRule.js.flow +0 -1
- package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.js.flow +0 -1
- package/validation/rules/UniqueOperationNamesRule.js +1 -1
- package/validation/rules/UniqueOperationNamesRule.js.flow +0 -1
- package/validation/rules/UniqueOperationTypes.js +1 -1
- package/validation/rules/UniqueOperationTypes.js.flow +0 -1
- package/validation/rules/UniqueOperationTypesRule.js +1 -1
- package/validation/rules/UniqueOperationTypesRule.js.flow +7 -2
- package/validation/rules/UniqueTypeNames.js +1 -1
- package/validation/rules/UniqueTypeNames.js.flow +0 -1
- package/validation/rules/UniqueTypeNamesRule.js +2 -2
- package/validation/rules/UniqueTypeNamesRule.js.flow +0 -1
- package/validation/rules/UniqueTypeNamesRule.mjs +1 -1
- package/validation/rules/UniqueVariableNamesRule.js +1 -1
- package/validation/rules/UniqueVariableNamesRule.js.flow +0 -1
- package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
- package/validation/rules/ValuesOfCorrectTypeRule.js.flow +0 -1
- package/validation/rules/VariablesAreInputTypesRule.js +4 -4
- package/validation/rules/VariablesAreInputTypesRule.js.flow +0 -1
- package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
- package/validation/rules/VariablesInAllowedPositionRule.js.flow +0 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.js +47 -9
- package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +56 -13
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +43 -8
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +3 -3
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +0 -1
- package/validation/specifiedRules.js +33 -33
- package/validation/specifiedRules.js.flow +0 -1
- package/validation/validate.js +7 -7
- package/validation/validate.js.flow +4 -5
- package/version.js +3 -3
- package/version.js.flow +3 -4
- package/version.mjs +3 -3
- package/jsutils/isCollection.js +0 -47
- package/jsutils/isCollection.js.flow +0 -39
- package/jsutils/isCollection.mjs +0 -40
- package/polyfills/flatMap.js +0 -30
- package/polyfills/flatMap.js.flow +0 -28
- package/polyfills/flatMap.mjs +0 -23
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @flow strict
|
|
2
|
+
/**
|
|
3
|
+
* Returns a number indicating whether a reference string comes before, or after,
|
|
4
|
+
* or is the same as the given string in natural sort order.
|
|
5
|
+
*
|
|
6
|
+
* See: https://en.wikipedia.org/wiki/Natural_sort_order
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export default function naturalCompare(aStr: string, bStr: string): number {
|
|
10
|
+
let aIdx = 0;
|
|
11
|
+
let bIdx = 0;
|
|
12
|
+
|
|
13
|
+
while (aIdx < aStr.length && bIdx < bStr.length) {
|
|
14
|
+
let aChar = aStr.charCodeAt(aIdx);
|
|
15
|
+
let bChar = bStr.charCodeAt(bIdx);
|
|
16
|
+
|
|
17
|
+
if (isDigit(aChar) && isDigit(bChar)) {
|
|
18
|
+
let aNum = 0;
|
|
19
|
+
do {
|
|
20
|
+
++aIdx;
|
|
21
|
+
aNum = aNum * 10 + aChar - DIGIT_0;
|
|
22
|
+
aChar = aStr.charCodeAt(aIdx);
|
|
23
|
+
} while (isDigit(aChar) && aNum > 0);
|
|
24
|
+
|
|
25
|
+
let bNum = 0;
|
|
26
|
+
do {
|
|
27
|
+
++bIdx;
|
|
28
|
+
bNum = bNum * 10 + bChar - DIGIT_0;
|
|
29
|
+
bChar = bStr.charCodeAt(bIdx);
|
|
30
|
+
} while (isDigit(bChar) && bNum > 0);
|
|
31
|
+
|
|
32
|
+
if (aNum < bNum) {
|
|
33
|
+
return -1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (aNum > bNum) {
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
if (aChar < bChar) {
|
|
41
|
+
return -1;
|
|
42
|
+
}
|
|
43
|
+
if (aChar > bChar) {
|
|
44
|
+
return 1;
|
|
45
|
+
}
|
|
46
|
+
++aIdx;
|
|
47
|
+
++bIdx;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return aStr.length - bStr.length;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const DIGIT_0 = 48;
|
|
55
|
+
const DIGIT_9 = 57;
|
|
56
|
+
|
|
57
|
+
function isDigit(code: number): boolean {
|
|
58
|
+
return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;
|
|
59
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a number indicating whether a reference string comes before, or after,
|
|
3
|
+
* or is the same as the given string in natural sort order.
|
|
4
|
+
*
|
|
5
|
+
* See: https://en.wikipedia.org/wiki/Natural_sort_order
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export default function naturalCompare(aStr, bStr) {
|
|
9
|
+
var aIdx = 0;
|
|
10
|
+
var bIdx = 0;
|
|
11
|
+
|
|
12
|
+
while (aIdx < aStr.length && bIdx < bStr.length) {
|
|
13
|
+
var aChar = aStr.charCodeAt(aIdx);
|
|
14
|
+
var bChar = bStr.charCodeAt(bIdx);
|
|
15
|
+
|
|
16
|
+
if (isDigit(aChar) && isDigit(bChar)) {
|
|
17
|
+
var aNum = 0;
|
|
18
|
+
|
|
19
|
+
do {
|
|
20
|
+
++aIdx;
|
|
21
|
+
aNum = aNum * 10 + aChar - DIGIT_0;
|
|
22
|
+
aChar = aStr.charCodeAt(aIdx);
|
|
23
|
+
} while (isDigit(aChar) && aNum > 0);
|
|
24
|
+
|
|
25
|
+
var bNum = 0;
|
|
26
|
+
|
|
27
|
+
do {
|
|
28
|
+
++bIdx;
|
|
29
|
+
bNum = bNum * 10 + bChar - DIGIT_0;
|
|
30
|
+
bChar = bStr.charCodeAt(bIdx);
|
|
31
|
+
} while (isDigit(bChar) && bNum > 0);
|
|
32
|
+
|
|
33
|
+
if (aNum < bNum) {
|
|
34
|
+
return -1;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (aNum > bNum) {
|
|
38
|
+
return 1;
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
if (aChar < bChar) {
|
|
42
|
+
return -1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (aChar > bChar) {
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
++aIdx;
|
|
50
|
+
++bIdx;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return aStr.length - bStr.length;
|
|
55
|
+
}
|
|
56
|
+
var DIGIT_0 = 48;
|
|
57
|
+
var DIGIT_9 = 57;
|
|
58
|
+
|
|
59
|
+
function isDigit(code) {
|
|
60
|
+
return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;
|
|
61
|
+
}
|
package/jsutils/promiseReduce.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = promiseReduce;
|
|
7
7
|
|
|
8
|
-
var _isPromise = _interopRequireDefault(require("./isPromise"));
|
|
8
|
+
var _isPromise = _interopRequireDefault(require("./isPromise.js"));
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = safeArrayFrom;
|
|
7
|
+
|
|
8
|
+
var _symbols = require("../polyfills/symbols.js");
|
|
9
|
+
|
|
10
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Safer version of `Array.from` that return `null` if value isn't convertible to array.
|
|
14
|
+
* Also protects against Array-like objects without items.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
*
|
|
18
|
+
* safeArrayFrom([ 1, 2, 3 ]) // [1, 2, 3]
|
|
19
|
+
* safeArrayFrom('ABC') // null
|
|
20
|
+
* safeArrayFrom({ length: 1 }) // null
|
|
21
|
+
* safeArrayFrom({ length: 1, 0: 'Alpha' }) // ['Alpha']
|
|
22
|
+
* safeArrayFrom({ key: 'value' }) // null
|
|
23
|
+
* safeArrayFrom(new Map()) // []
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
function safeArrayFrom(collection) {
|
|
27
|
+
var mapFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (item) {
|
|
28
|
+
return item;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
if (collection == null || _typeof(collection) !== 'object') {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (Array.isArray(collection)) {
|
|
36
|
+
return collection.map(mapFn);
|
|
37
|
+
} // Is Iterable?
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
var iteratorMethod = collection[_symbols.SYMBOL_ITERATOR];
|
|
41
|
+
|
|
42
|
+
if (typeof iteratorMethod === 'function') {
|
|
43
|
+
// $FlowFixMe[incompatible-use]
|
|
44
|
+
var iterator = iteratorMethod.call(collection);
|
|
45
|
+
var result = [];
|
|
46
|
+
var step;
|
|
47
|
+
|
|
48
|
+
for (var i = 0; !(step = iterator.next()).done; ++i) {
|
|
49
|
+
result.push(mapFn(step.value, i));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return result;
|
|
53
|
+
} // Is Array like?
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
var length = collection.length;
|
|
57
|
+
|
|
58
|
+
if (typeof length === 'number' && length >= 0 && length % 1 === 0) {
|
|
59
|
+
var _result = [];
|
|
60
|
+
|
|
61
|
+
for (var _i = 0; _i < length; ++_i) {
|
|
62
|
+
if (!Object.prototype.hasOwnProperty.call(collection, _i)) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
_result.push(mapFn(collection[String(_i)], _i));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return _result;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @flow strict
|
|
2
|
+
import { SYMBOL_ITERATOR } from '../polyfills/symbols';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Safer version of `Array.from` that return `null` if value isn't convertible to array.
|
|
6
|
+
* Also protects against Array-like objects without items.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
*
|
|
10
|
+
* safeArrayFrom([ 1, 2, 3 ]) // [1, 2, 3]
|
|
11
|
+
* safeArrayFrom('ABC') // null
|
|
12
|
+
* safeArrayFrom({ length: 1 }) // null
|
|
13
|
+
* safeArrayFrom({ length: 1, 0: 'Alpha' }) // ['Alpha']
|
|
14
|
+
* safeArrayFrom({ key: 'value' }) // null
|
|
15
|
+
* safeArrayFrom(new Map()) // []
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export default function safeArrayFrom<T>(
|
|
19
|
+
collection: mixed,
|
|
20
|
+
mapFn: (elem: mixed, index: number) => T = (item) => ((item: any): T),
|
|
21
|
+
): Array<T> | null {
|
|
22
|
+
if (collection == null || typeof collection !== 'object') {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (Array.isArray(collection)) {
|
|
27
|
+
return collection.map(mapFn);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Is Iterable?
|
|
31
|
+
const iteratorMethod = collection[SYMBOL_ITERATOR];
|
|
32
|
+
if (typeof iteratorMethod === 'function') {
|
|
33
|
+
// $FlowFixMe[incompatible-use]
|
|
34
|
+
const iterator = iteratorMethod.call(collection);
|
|
35
|
+
const result = [];
|
|
36
|
+
let step;
|
|
37
|
+
|
|
38
|
+
for (let i = 0; !(step = iterator.next()).done; ++i) {
|
|
39
|
+
result.push(mapFn(step.value, i));
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Is Array like?
|
|
45
|
+
const length = collection.length;
|
|
46
|
+
if (typeof length === 'number' && length >= 0 && length % 1 === 0) {
|
|
47
|
+
const result = [];
|
|
48
|
+
for (let i = 0; i < length; ++i) {
|
|
49
|
+
if (!Object.prototype.hasOwnProperty.call(collection, i)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
result.push(mapFn(collection[String(i)], i));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
+
|
|
3
|
+
import { SYMBOL_ITERATOR } from "../polyfills/symbols.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Safer version of `Array.from` that return `null` if value isn't convertible to array.
|
|
6
|
+
* Also protects against Array-like objects without items.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
*
|
|
10
|
+
* safeArrayFrom([ 1, 2, 3 ]) // [1, 2, 3]
|
|
11
|
+
* safeArrayFrom('ABC') // null
|
|
12
|
+
* safeArrayFrom({ length: 1 }) // null
|
|
13
|
+
* safeArrayFrom({ length: 1, 0: 'Alpha' }) // ['Alpha']
|
|
14
|
+
* safeArrayFrom({ key: 'value' }) // null
|
|
15
|
+
* safeArrayFrom(new Map()) // []
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export default function safeArrayFrom(collection) {
|
|
20
|
+
var mapFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (item) {
|
|
21
|
+
return item;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
if (collection == null || _typeof(collection) !== 'object') {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (Array.isArray(collection)) {
|
|
29
|
+
return collection.map(mapFn);
|
|
30
|
+
} // Is Iterable?
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
var iteratorMethod = collection[SYMBOL_ITERATOR];
|
|
34
|
+
|
|
35
|
+
if (typeof iteratorMethod === 'function') {
|
|
36
|
+
// $FlowFixMe[incompatible-use]
|
|
37
|
+
var iterator = iteratorMethod.call(collection);
|
|
38
|
+
var result = [];
|
|
39
|
+
var step;
|
|
40
|
+
|
|
41
|
+
for (var i = 0; !(step = iterator.next()).done; ++i) {
|
|
42
|
+
result.push(mapFn(step.value, i));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return result;
|
|
46
|
+
} // Is Array like?
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
var length = collection.length;
|
|
50
|
+
|
|
51
|
+
if (typeof length === 'number' && length >= 0 && length % 1 === 0) {
|
|
52
|
+
var _result = [];
|
|
53
|
+
|
|
54
|
+
for (var _i = 0; _i < length; ++_i) {
|
|
55
|
+
if (!Object.prototype.hasOwnProperty.call(collection, _i)) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
_result.push(mapFn(collection[String(_i)], _i));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return _result;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = suggestionList;
|
|
7
7
|
|
|
8
|
+
var _naturalCompare = _interopRequireDefault(require("./naturalCompare.js"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
8
12
|
/**
|
|
9
13
|
* Given an invalid input string and a list of valid options, returns a filtered
|
|
10
14
|
* list of valid options sorted based on their similarity with the input.
|
|
@@ -25,7 +29,7 @@ function suggestionList(input, options) {
|
|
|
25
29
|
|
|
26
30
|
return Object.keys(optionsByDistance).sort(function (a, b) {
|
|
27
31
|
var distanceDiff = optionsByDistance[a] - optionsByDistance[b];
|
|
28
|
-
return distanceDiff !== 0 ? distanceDiff :
|
|
32
|
+
return distanceDiff !== 0 ? distanceDiff : (0, _naturalCompare.default)(a, b);
|
|
29
33
|
});
|
|
30
34
|
}
|
|
31
35
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
+
import naturalCompare from './naturalCompare';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Given an invalid input string and a list of valid options, returns a filtered
|
|
@@ -21,7 +22,7 @@ export default function suggestionList(
|
|
|
21
22
|
|
|
22
23
|
return Object.keys(optionsByDistance).sort((a, b) => {
|
|
23
24
|
const distanceDiff = optionsByDistance[a] - optionsByDistance[b];
|
|
24
|
-
return distanceDiff !== 0 ? distanceDiff : a
|
|
25
|
+
return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b);
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -127,7 +128,7 @@ class LexicalDistance {
|
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
|
|
130
|
-
function stringToArray(str) {
|
|
131
|
+
function stringToArray(str: string): Array<number> {
|
|
131
132
|
const strLength = str.length;
|
|
132
133
|
const array = new Array(strLength);
|
|
133
134
|
for (let i = 0; i < strLength; ++i) {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import naturalCompare from "./naturalCompare.mjs";
|
|
1
2
|
/**
|
|
2
3
|
* Given an invalid input string and a list of valid options, returns a filtered
|
|
3
4
|
* list of valid options sorted based on their similarity with the input.
|
|
4
5
|
*/
|
|
6
|
+
|
|
5
7
|
export default function suggestionList(input, options) {
|
|
6
8
|
var optionsByDistance = Object.create(null);
|
|
7
9
|
var lexicalDistance = new LexicalDistance(input);
|
|
@@ -18,7 +20,7 @@ export default function suggestionList(input, options) {
|
|
|
18
20
|
|
|
19
21
|
return Object.keys(optionsByDistance).sort(function (a, b) {
|
|
20
22
|
var distanceDiff = optionsByDistance[a] - optionsByDistance[b];
|
|
21
|
-
return distanceDiff !== 0 ? distanceDiff : a
|
|
23
|
+
return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b);
|
|
22
24
|
});
|
|
23
25
|
}
|
|
24
26
|
/**
|
package/jsutils/toObjMap.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = toObjMap;
|
|
7
7
|
|
|
8
|
-
var _objectEntries3 = _interopRequireDefault(require("../polyfills/objectEntries"));
|
|
8
|
+
var _objectEntries3 = _interopRequireDefault(require("../polyfills/objectEntries.js"));
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
package/jsutils/toObjMap.js.flow
CHANGED
package/language/ast.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.isNode = isNode;
|
|
7
7
|
exports.Token = exports.Location = void 0;
|
|
8
8
|
|
|
9
|
-
var _defineInspect = _interopRequireDefault(require("../jsutils/defineInspect"));
|
|
9
|
+
var _defineInspect = _interopRequireDefault(require("../jsutils/defineInspect.js"));
|
|
10
10
|
|
|
11
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
12
|
|
package/language/ast.js.flow
CHANGED
|
@@ -9,7 +9,7 @@ export function dedentBlockStringValue(rawString: string): string;
|
|
|
9
9
|
/**
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
|
-
export function getBlockStringIndentation(
|
|
12
|
+
export function getBlockStringIndentation(body: string): number;
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Print a block string in the indented block form by adding a leading and
|
package/language/blockString.js
CHANGED
|
@@ -19,7 +19,7 @@ function dedentBlockStringValue(rawString) {
|
|
|
19
19
|
// Expand a block string's raw value into independent lines.
|
|
20
20
|
var lines = rawString.split(/\r\n|[\n\r]/g); // Remove common indentation from all lines but first.
|
|
21
21
|
|
|
22
|
-
var commonIndent = getBlockStringIndentation(
|
|
22
|
+
var commonIndent = getBlockStringIndentation(rawString);
|
|
23
23
|
|
|
24
24
|
if (commonIndent !== 0) {
|
|
25
25
|
for (var i = 1; i < lines.length; i++) {
|
|
@@ -28,57 +28,78 @@ function dedentBlockStringValue(rawString) {
|
|
|
28
28
|
} // Remove leading and trailing blank lines.
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
var startLine = 0;
|
|
32
|
+
|
|
33
|
+
while (startLine < lines.length && isBlank(lines[startLine])) {
|
|
34
|
+
++startLine;
|
|
33
35
|
}
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
var endLine = lines.length;
|
|
38
|
+
|
|
39
|
+
while (endLine > startLine && isBlank(lines[endLine - 1])) {
|
|
40
|
+
--endLine;
|
|
37
41
|
} // Return a string of the lines joined with U+000A.
|
|
38
42
|
|
|
39
43
|
|
|
40
|
-
return lines.join('\n');
|
|
44
|
+
return lines.slice(startLine, endLine).join('\n');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function isBlank(str) {
|
|
48
|
+
for (var i = 0; i < str.length; ++i) {
|
|
49
|
+
if (str[i] !== ' ' && str[i] !== '\t') {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return true;
|
|
41
55
|
}
|
|
42
56
|
/**
|
|
43
57
|
* @internal
|
|
44
58
|
*/
|
|
45
59
|
|
|
46
60
|
|
|
47
|
-
function getBlockStringIndentation(
|
|
48
|
-
var
|
|
61
|
+
function getBlockStringIndentation(value) {
|
|
62
|
+
var _commonIndent;
|
|
49
63
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
var isFirstLine = true;
|
|
65
|
+
var isEmptyLine = true;
|
|
66
|
+
var indent = 0;
|
|
67
|
+
var commonIndent = null;
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
69
|
+
for (var i = 0; i < value.length; ++i) {
|
|
70
|
+
switch (value.charCodeAt(i)) {
|
|
71
|
+
case 13:
|
|
72
|
+
// \r
|
|
73
|
+
if (value.charCodeAt(i + 1) === 10) {
|
|
74
|
+
++i; // skip \r\n as one symbol
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// falls through
|
|
78
|
+
|
|
79
|
+
case 10:
|
|
80
|
+
// \n
|
|
81
|
+
isFirstLine = false;
|
|
82
|
+
isEmptyLine = true;
|
|
83
|
+
indent = 0;
|
|
84
|
+
break;
|
|
57
85
|
|
|
58
|
-
|
|
59
|
-
commonIndent = indent;
|
|
86
|
+
case 9: // \t
|
|
60
87
|
|
|
61
|
-
|
|
88
|
+
case 32:
|
|
89
|
+
// <space>
|
|
90
|
+
++indent;
|
|
62
91
|
break;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return commonIndent === null ? 0 : commonIndent;
|
|
68
|
-
}
|
|
69
92
|
|
|
70
|
-
|
|
71
|
-
|
|
93
|
+
default:
|
|
94
|
+
if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {
|
|
95
|
+
commonIndent = indent;
|
|
96
|
+
}
|
|
72
97
|
|
|
73
|
-
|
|
74
|
-
|
|
98
|
+
isEmptyLine = false;
|
|
99
|
+
}
|
|
75
100
|
}
|
|
76
101
|
|
|
77
|
-
return
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function isBlank(str) {
|
|
81
|
-
return leadingWhitespace(str) === str.length;
|
|
102
|
+
return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;
|
|
82
103
|
}
|
|
83
104
|
/**
|
|
84
105
|
* Print a block string in the indented block form by adding a leading and
|