graphql 0.0.1-test.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NotSupportedTSVersion.d.ts +1 -0
- package/README.md +158 -0
- package/error/GraphQLError.d.ts +142 -0
- package/error/GraphQLError.js +267 -0
- package/error/GraphQLError.mjs +253 -0
- package/error/index.d.ts +7 -0
- package/error/index.js +41 -0
- package/error/index.mjs +3 -0
- package/error/locatedError.d.ts +13 -0
- package/error/locatedError.js +40 -0
- package/error/locatedError.mjs +32 -0
- package/error/syntaxError.d.ts +11 -0
- package/error/syntaxError.js +21 -0
- package/error/syntaxError.mjs +11 -0
- package/execution/collectFields.d.ts +45 -0
- package/execution/collectFields.js +229 -0
- package/execution/collectFields.mjs +213 -0
- package/execution/execute.d.ts +185 -0
- package/execution/execute.js +1016 -0
- package/execution/execute.mjs +988 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.js +67 -0
- package/execution/index.mjs +9 -0
- package/execution/mapAsyncIterator.d.ts +9 -0
- package/execution/mapAsyncIterator.js +68 -0
- package/execution/mapAsyncIterator.mjs +61 -0
- package/execution/subscribe.d.ts +68 -0
- package/execution/subscribe.js +261 -0
- package/execution/subscribe.mjs +239 -0
- package/execution/values.d.ts +81 -0
- package/execution/values.js +292 -0
- package/execution/values.mjs +255 -0
- package/graphql.d.ts +67 -0
- package/graphql.js +96 -0
- package/graphql.mjs +122 -0
- package/index.d.ts +411 -0
- package/index.js +1263 -0
- package/index.mjs +254 -0
- package/jsutils/Maybe.d.ts +2 -0
- package/jsutils/Maybe.js +5 -0
- package/jsutils/Maybe.mjs +1 -0
- package/jsutils/ObjMap.d.ts +16 -0
- package/jsutils/ObjMap.js +5 -0
- package/jsutils/ObjMap.mjs +1 -0
- package/jsutils/Path.d.ts +20 -0
- package/jsutils/Path.js +33 -0
- package/jsutils/Path.mjs +25 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/PromiseOrValue.js +5 -0
- package/jsutils/PromiseOrValue.mjs +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +14 -0
- package/jsutils/devAssert.mjs +7 -0
- package/jsutils/didYouMean.d.ts +8 -0
- package/jsutils/didYouMean.js +38 -0
- package/jsutils/didYouMean.mjs +32 -0
- package/jsutils/groupBy.d.ts +7 -0
- package/jsutils/groupBy.js +26 -0
- package/jsutils/groupBy.mjs +19 -0
- package/jsutils/identityFunc.d.ts +4 -0
- package/jsutils/identityFunc.js +13 -0
- package/jsutils/identityFunc.mjs +6 -0
- package/jsutils/inspect.d.ts +4 -0
- package/jsutils/inspect.js +121 -0
- package/jsutils/inspect.mjs +115 -0
- package/jsutils/instanceOf.d.ts +16 -0
- package/jsutils/instanceOf.js +60 -0
- package/jsutils/instanceOf.mjs +52 -0
- package/jsutils/invariant.d.ts +4 -0
- package/jsutils/invariant.js +16 -0
- package/jsutils/invariant.mjs +9 -0
- package/jsutils/isAsyncIterable.d.ts +7 -0
- package/jsutils/isAsyncIterable.js +18 -0
- package/jsutils/isAsyncIterable.mjs +11 -0
- package/jsutils/isIterableObject.d.ts +20 -0
- package/jsutils/isIterableObject.js +32 -0
- package/jsutils/isIterableObject.mjs +25 -0
- package/jsutils/isObjectLike.d.ts +7 -0
- package/jsutils/isObjectLike.js +14 -0
- package/jsutils/isObjectLike.mjs +7 -0
- package/jsutils/isPromise.d.ts +5 -0
- package/jsutils/isPromise.js +17 -0
- package/jsutils/isPromise.mjs +10 -0
- package/jsutils/keyMap.d.ts +32 -0
- package/jsutils/keyMap.js +43 -0
- package/jsutils/keyMap.mjs +36 -0
- package/jsutils/keyValMap.d.ts +23 -0
- package/jsutils/keyValMap.js +33 -0
- package/jsutils/keyValMap.mjs +26 -0
- package/jsutils/mapValue.d.ts +9 -0
- package/jsutils/mapValue.js +20 -0
- package/jsutils/mapValue.mjs +13 -0
- package/jsutils/memoize3.d.ts +9 -0
- package/jsutils/memoize3.js +41 -0
- package/jsutils/memoize3.mjs +34 -0
- package/jsutils/naturalCompare.d.ts +8 -0
- package/jsutils/naturalCompare.js +69 -0
- package/jsutils/naturalCompare.mjs +61 -0
- package/jsutils/printPathArray.d.ts +6 -0
- package/jsutils/printPathArray.js +17 -0
- package/jsutils/printPathArray.mjs +10 -0
- package/jsutils/promiseForObject.d.ts +11 -0
- package/jsutils/promiseForObject.js +25 -0
- package/jsutils/promiseForObject.mjs +18 -0
- package/jsutils/promiseReduce.d.ts +13 -0
- package/jsutils/promiseReduce.js +27 -0
- package/jsutils/promiseReduce.mjs +20 -0
- package/jsutils/suggestionList.d.ts +8 -0
- package/jsutils/suggestionList.js +139 -0
- package/jsutils/suggestionList.mjs +130 -0
- package/jsutils/toError.d.ts +4 -0
- package/jsutils/toError.js +25 -0
- package/jsutils/toError.mjs +18 -0
- package/jsutils/toObjMap.d.ts +5 -0
- package/jsutils/toObjMap.js +24 -0
- package/jsutils/toObjMap.mjs +17 -0
- package/language/ast.d.ts +536 -0
- package/language/ast.js +224 -0
- package/language/ast.mjs +206 -0
- package/language/blockString.d.ts +28 -0
- package/language/blockString.js +195 -0
- package/language/blockString.mjs +178 -0
- package/language/characterClasses.d.ts +47 -0
- package/language/characterClasses.js +75 -0
- package/language/characterClasses.mjs +64 -0
- package/language/directiveLocation.d.ts +32 -0
- package/language/directiveLocation.js +40 -0
- package/language/directiveLocation.mjs +31 -0
- package/language/index.d.ts +97 -0
- package/language/index.js +215 -0
- package/language/index.mjs +29 -0
- package/language/kinds.d.ts +65 -0
- package/language/kinds.js +64 -0
- package/language/kinds.mjs +55 -0
- package/language/lexer.d.ts +45 -0
- package/language/lexer.js +1006 -0
- package/language/lexer.mjs +902 -0
- package/language/location.d.ts +16 -0
- package/language/location.js +38 -0
- package/language/location.mjs +30 -0
- package/language/parser.d.ts +554 -0
- package/language/parser.js +1567 -0
- package/language/parser.mjs +1524 -0
- package/language/predicates.d.ts +33 -0
- package/language/predicates.js +109 -0
- package/language/predicates.mjs +81 -0
- package/language/printLocation.d.ts +14 -0
- package/language/printLocation.js +74 -0
- package/language/printLocation.mjs +66 -0
- package/language/printString.d.ts +5 -0
- package/language/printString.js +183 -0
- package/language/printString.mjs +176 -0
- package/language/printer.d.ts +6 -0
- package/language/printer.js +351 -0
- package/language/printer.mjs +339 -0
- package/language/source.d.ts +25 -0
- package/language/source.js +65 -0
- package/language/source.mjs +50 -0
- package/language/tokenKind.d.ts +34 -0
- package/language/tokenKind.js +44 -0
- package/language/tokenKind.mjs +35 -0
- package/language/visitor.d.ts +194 -0
- package/language/visitor.js +377 -0
- package/language/visitor.mjs +361 -0
- package/package.json +40 -0
- package/subscription/index.d.ts +19 -0
- package/subscription/index.js +19 -0
- package/subscription/index.mjs +19 -0
- package/type/assertName.d.ts +10 -0
- package/type/assertName.js +59 -0
- package/type/assertName.mjs +44 -0
- package/type/definition.d.ts +917 -0
- package/type/definition.js +1329 -0
- package/type/definition.mjs +1167 -0
- package/type/directives.d.ts +86 -0
- package/type/directives.js +224 -0
- package/type/directives.mjs +190 -0
- package/type/index.d.ts +150 -0
- package/type/index.js +547 -0
- package/type/index.mjs +103 -0
- package/type/introspection.d.ts +29 -0
- package/type/introspection.js +617 -0
- package/type/introspection.mjs +550 -0
- package/type/scalars.d.ts +19 -0
- package/type/scalars.js +359 -0
- package/type/scalars.mjs +299 -0
- package/type/schema.d.ts +170 -0
- package/type/schema.js +402 -0
- package/type/schema.mjs +381 -0
- package/type/validate.d.ts +17 -0
- package/type/validate.js +672 -0
- package/type/validate.mjs +647 -0
- package/utilities/TypeInfo.d.ts +67 -0
- package/utilities/TypeInfo.js +418 -0
- package/utilities/TypeInfo.mjs +395 -0
- package/utilities/assertValidName.d.ts +13 -0
- package/utilities/assertValidName.js +51 -0
- package/utilities/assertValidName.mjs +40 -0
- package/utilities/astFromValue.d.ts +28 -0
- package/utilities/astFromValue.js +190 -0
- package/utilities/astFromValue.mjs +177 -0
- package/utilities/buildASTSchema.d.ts +35 -0
- package/utilities/buildASTSchema.js +115 -0
- package/utilities/buildASTSchema.mjs +97 -0
- package/utilities/buildClientSchema.d.ts +19 -0
- package/utilities/buildClientSchema.js +386 -0
- package/utilities/buildClientSchema.mjs +363 -0
- package/utilities/coerceInputValue.d.ts +16 -0
- package/utilities/coerceInputValue.js +191 -0
- package/utilities/coerceInputValue.mjs +172 -0
- package/utilities/concatAST.d.ts +9 -0
- package/utilities/concatAST.js +26 -0
- package/utilities/concatAST.mjs +19 -0
- package/utilities/extendSchema.d.ts +40 -0
- package/utilities/extendSchema.js +798 -0
- package/utilities/extendSchema.mjs +789 -0
- package/utilities/findBreakingChanges.d.ts +51 -0
- package/utilities/findBreakingChanges.js +547 -0
- package/utilities/findBreakingChanges.mjs +516 -0
- package/utilities/getIntrospectionQuery.d.ts +182 -0
- package/utilities/getIntrospectionQuery.js +134 -0
- package/utilities/getIntrospectionQuery.mjs +127 -0
- package/utilities/getOperationAST.d.ts +11 -0
- package/utilities/getOperationAST.js +43 -0
- package/utilities/getOperationAST.mjs +36 -0
- package/utilities/getOperationRootType.d.ts +15 -0
- package/utilities/getOperationRootType.js +59 -0
- package/utilities/getOperationRootType.mjs +52 -0
- package/utilities/index.d.ts +61 -0
- package/utilities/index.js +233 -0
- package/utilities/index.mjs +55 -0
- package/utilities/introspectionFromSchema.d.ts +18 -0
- package/utilities/introspectionFromSchema.js +42 -0
- package/utilities/introspectionFromSchema.mjs +30 -0
- package/utilities/lexicographicSortSchema.d.ts +9 -0
- package/utilities/lexicographicSortSchema.js +177 -0
- package/utilities/lexicographicSortSchema.mjs +172 -0
- package/utilities/printSchema.d.ts +5 -0
- package/utilities/printSchema.js +333 -0
- package/utilities/printSchema.mjs +309 -0
- package/utilities/separateOperations.d.ts +11 -0
- package/utilities/separateOperations.js +88 -0
- package/utilities/separateOperations.mjs +80 -0
- package/utilities/sortValueNode.d.ts +9 -0
- package/utilities/sortValueNode.js +47 -0
- package/utilities/sortValueNode.mjs +39 -0
- package/utilities/stripIgnoredCharacters.d.ts +62 -0
- package/utilities/stripIgnoredCharacters.js +121 -0
- package/utilities/stripIgnoredCharacters.mjs +104 -0
- package/utilities/typeComparators.d.ts +32 -0
- package/utilities/typeComparators.js +116 -0
- package/utilities/typeComparators.mjs +106 -0
- package/utilities/typeFromAST.d.ts +32 -0
- package/utilities/typeFromAST.js +27 -0
- package/utilities/typeFromAST.mjs +18 -0
- package/utilities/typedQueryDocumentNode.d.ts +22 -0
- package/utilities/typedQueryDocumentNode.js +5 -0
- package/utilities/typedQueryDocumentNode.mjs +1 -0
- package/utilities/valueFromAST.d.ts +29 -0
- package/utilities/valueFromAST.js +185 -0
- package/utilities/valueFromAST.mjs +172 -0
- package/utilities/valueFromASTUntyped.d.ts +23 -0
- package/utilities/valueFromASTUntyped.js +61 -0
- package/utilities/valueFromASTUntyped.mjs +53 -0
- package/validation/ValidationContext.d.ts +95 -0
- package/validation/ValidationContext.js +232 -0
- package/validation/ValidationContext.mjs +212 -0
- package/validation/index.d.ts +40 -0
- package/validation/index.js +317 -0
- package/validation/index.mjs +68 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +13 -0
- package/validation/rules/ExecutableDefinitionsRule.js +44 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +35 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +13 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +143 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +125 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +14 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +65 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +49 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +23 -0
- package/validation/rules/KnownArgumentNamesRule.js +116 -0
- package/validation/rules/KnownArgumentNamesRule.mjs +98 -0
- package/validation/rules/KnownDirectivesRule.d.ts +16 -0
- package/validation/rules/KnownDirectivesRule.js +163 -0
- package/validation/rules/KnownDirectivesRule.mjs +146 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +13 -0
- package/validation/rules/KnownFragmentNamesRule.js +34 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +24 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +16 -0
- package/validation/rules/KnownTypeNamesRule.js +87 -0
- package/validation/rules/KnownTypeNamesRule.mjs +75 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +13 -0
- package/validation/rules/LoneAnonymousOperationRule.js +40 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +32 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +10 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +63 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +53 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +13 -0
- package/validation/rules/NoFragmentCyclesRule.js +83 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +76 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUndefinedVariablesRule.js +50 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +43 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +13 -0
- package/validation/rules/NoUnusedFragmentsRule.js +59 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +52 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUnusedVariablesRule.js +55 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +48 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.mjs +788 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +14 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +788 -0
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +12 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +91 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +69 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +10 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +167 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +147 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +20 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.js +158 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +138 -0
- package/validation/rules/ScalarLeafsRule.d.ts +9 -0
- package/validation/rules/ScalarLeafsRule.js +51 -0
- package/validation/rules/ScalarLeafsRule.mjs +42 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +13 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +82 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +73 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +11 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +90 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +79 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +13 -0
- package/validation/rules/UniqueArgumentNamesRule.js +53 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +42 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +10 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +50 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +16 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +93 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +83 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +10 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +71 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +60 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +10 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +83 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +75 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +12 -0
- package/validation/rules/UniqueFragmentNamesRule.js +39 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +13 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +52 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +44 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +12 -0
- package/validation/rules/UniqueOperationNamesRule.js +41 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +34 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +10 -0
- package/validation/rules/UniqueOperationTypesRule.js +67 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +60 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +10 -0
- package/validation/rules/UniqueTypeNamesRule.js +53 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +46 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +10 -0
- package/validation/rules/UniqueVariableNamesRule.js +47 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +39 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +13 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +183 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +164 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +13 -0
- package/validation/rules/VariablesAreInputTypesRule.js +44 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +31 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +12 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +114 -0
- package/validation/rules/VariablesInAllowedPositionRule.mjs +95 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +121 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +107 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +39 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +30 -0
- package/validation/specifiedRules.d.ts +12 -0
- package/validation/specifiedRules.js +160 -0
- package/validation/specifiedRules.mjs +123 -0
- package/validation/validate.d.ts +61 -0
- package/validation/validate.js +151 -0
- package/validation/validate.mjs +133 -0
- package/version.d.ts +13 -0
- package/version.js +25 -0
- package/version.mjs +17 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.inspect = inspect;
|
|
7
|
+
const MAX_ARRAY_LENGTH = 10;
|
|
8
|
+
const MAX_RECURSIVE_DEPTH = 2;
|
|
9
|
+
/**
|
|
10
|
+
* Used to print values in error messages.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
function inspect(value) {
|
|
14
|
+
return formatValue(value, []);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function formatValue(value, seenValues) {
|
|
18
|
+
switch (typeof value) {
|
|
19
|
+
case 'string':
|
|
20
|
+
return JSON.stringify(value);
|
|
21
|
+
|
|
22
|
+
case 'function':
|
|
23
|
+
return value.name ? `[function ${value.name}]` : '[function]';
|
|
24
|
+
|
|
25
|
+
case 'object':
|
|
26
|
+
return formatObjectValue(value, seenValues);
|
|
27
|
+
|
|
28
|
+
default:
|
|
29
|
+
return String(value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function formatObjectValue(value, previouslySeenValues) {
|
|
34
|
+
if (value === null) {
|
|
35
|
+
return 'null';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (previouslySeenValues.includes(value)) {
|
|
39
|
+
return '[Circular]';
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const seenValues = [...previouslySeenValues, value];
|
|
43
|
+
|
|
44
|
+
if (isJSONable(value)) {
|
|
45
|
+
const jsonValue = value.toJSON(); // check for infinite recursion
|
|
46
|
+
|
|
47
|
+
if (jsonValue !== value) {
|
|
48
|
+
return typeof jsonValue === 'string'
|
|
49
|
+
? jsonValue
|
|
50
|
+
: formatValue(jsonValue, seenValues);
|
|
51
|
+
}
|
|
52
|
+
} else if (Array.isArray(value)) {
|
|
53
|
+
return formatArray(value, seenValues);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return formatObject(value, seenValues);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function isJSONable(value) {
|
|
60
|
+
return typeof value.toJSON === 'function';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function formatObject(object, seenValues) {
|
|
64
|
+
const entries = Object.entries(object);
|
|
65
|
+
|
|
66
|
+
if (entries.length === 0) {
|
|
67
|
+
return '{}';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (seenValues.length > MAX_RECURSIVE_DEPTH) {
|
|
71
|
+
return '[' + getObjectTag(object) + ']';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const properties = entries.map(
|
|
75
|
+
([key, value]) => key + ': ' + formatValue(value, seenValues),
|
|
76
|
+
);
|
|
77
|
+
return '{ ' + properties.join(', ') + ' }';
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function formatArray(array, seenValues) {
|
|
81
|
+
if (array.length === 0) {
|
|
82
|
+
return '[]';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (seenValues.length > MAX_RECURSIVE_DEPTH) {
|
|
86
|
+
return '[Array]';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const len = Math.min(MAX_ARRAY_LENGTH, array.length);
|
|
90
|
+
const remaining = array.length - len;
|
|
91
|
+
const items = [];
|
|
92
|
+
|
|
93
|
+
for (let i = 0; i < len; ++i) {
|
|
94
|
+
items.push(formatValue(array[i], seenValues));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (remaining === 1) {
|
|
98
|
+
items.push('... 1 more item');
|
|
99
|
+
} else if (remaining > 1) {
|
|
100
|
+
items.push(`... ${remaining} more items`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return '[' + items.join(', ') + ']';
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function getObjectTag(object) {
|
|
107
|
+
const tag = Object.prototype.toString
|
|
108
|
+
.call(object)
|
|
109
|
+
.replace(/^\[object /, '')
|
|
110
|
+
.replace(/]$/, '');
|
|
111
|
+
|
|
112
|
+
if (tag === 'Object' && typeof object.constructor === 'function') {
|
|
113
|
+
const name = object.constructor.name;
|
|
114
|
+
|
|
115
|
+
if (typeof name === 'string' && name !== '') {
|
|
116
|
+
return name;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return tag;
|
|
121
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const MAX_ARRAY_LENGTH = 10;
|
|
2
|
+
const MAX_RECURSIVE_DEPTH = 2;
|
|
3
|
+
/**
|
|
4
|
+
* Used to print values in error messages.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export function inspect(value) {
|
|
8
|
+
return formatValue(value, []);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function formatValue(value, seenValues) {
|
|
12
|
+
switch (typeof value) {
|
|
13
|
+
case 'string':
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
|
|
16
|
+
case 'function':
|
|
17
|
+
return value.name ? `[function ${value.name}]` : '[function]';
|
|
18
|
+
|
|
19
|
+
case 'object':
|
|
20
|
+
return formatObjectValue(value, seenValues);
|
|
21
|
+
|
|
22
|
+
default:
|
|
23
|
+
return String(value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function formatObjectValue(value, previouslySeenValues) {
|
|
28
|
+
if (value === null) {
|
|
29
|
+
return 'null';
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (previouslySeenValues.includes(value)) {
|
|
33
|
+
return '[Circular]';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const seenValues = [...previouslySeenValues, value];
|
|
37
|
+
|
|
38
|
+
if (isJSONable(value)) {
|
|
39
|
+
const jsonValue = value.toJSON(); // check for infinite recursion
|
|
40
|
+
|
|
41
|
+
if (jsonValue !== value) {
|
|
42
|
+
return typeof jsonValue === 'string'
|
|
43
|
+
? jsonValue
|
|
44
|
+
: formatValue(jsonValue, seenValues);
|
|
45
|
+
}
|
|
46
|
+
} else if (Array.isArray(value)) {
|
|
47
|
+
return formatArray(value, seenValues);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return formatObject(value, seenValues);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function isJSONable(value) {
|
|
54
|
+
return typeof value.toJSON === 'function';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function formatObject(object, seenValues) {
|
|
58
|
+
const entries = Object.entries(object);
|
|
59
|
+
|
|
60
|
+
if (entries.length === 0) {
|
|
61
|
+
return '{}';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (seenValues.length > MAX_RECURSIVE_DEPTH) {
|
|
65
|
+
return '[' + getObjectTag(object) + ']';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const properties = entries.map(
|
|
69
|
+
([key, value]) => key + ': ' + formatValue(value, seenValues),
|
|
70
|
+
);
|
|
71
|
+
return '{ ' + properties.join(', ') + ' }';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function formatArray(array, seenValues) {
|
|
75
|
+
if (array.length === 0) {
|
|
76
|
+
return '[]';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (seenValues.length > MAX_RECURSIVE_DEPTH) {
|
|
80
|
+
return '[Array]';
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const len = Math.min(MAX_ARRAY_LENGTH, array.length);
|
|
84
|
+
const remaining = array.length - len;
|
|
85
|
+
const items = [];
|
|
86
|
+
|
|
87
|
+
for (let i = 0; i < len; ++i) {
|
|
88
|
+
items.push(formatValue(array[i], seenValues));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (remaining === 1) {
|
|
92
|
+
items.push('... 1 more item');
|
|
93
|
+
} else if (remaining > 1) {
|
|
94
|
+
items.push(`... ${remaining} more items`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return '[' + items.join(', ') + ']';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function getObjectTag(object) {
|
|
101
|
+
const tag = Object.prototype.toString
|
|
102
|
+
.call(object)
|
|
103
|
+
.replace(/^\[object /, '')
|
|
104
|
+
.replace(/]$/, '');
|
|
105
|
+
|
|
106
|
+
if (tag === 'Object' && typeof object.constructor === 'function') {
|
|
107
|
+
const name = object.constructor.name;
|
|
108
|
+
|
|
109
|
+
if (typeof name === 'string' && name !== '') {
|
|
110
|
+
return name;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return tag;
|
|
115
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A replacement for instanceof which includes an error warning when multi-realm
|
|
3
|
+
* constructors are detected.
|
|
4
|
+
* See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production
|
|
5
|
+
* See: https://webpack.js.org/guides/production/
|
|
6
|
+
*/
|
|
7
|
+
export declare const instanceOf: (
|
|
8
|
+
value: unknown,
|
|
9
|
+
constructor: Constructor,
|
|
10
|
+
) => boolean;
|
|
11
|
+
interface Constructor extends Function {
|
|
12
|
+
prototype: {
|
|
13
|
+
[Symbol.toStringTag]: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.instanceOf = void 0;
|
|
7
|
+
|
|
8
|
+
var _inspect = require('./inspect.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A replacement for instanceof which includes an error warning when multi-realm
|
|
12
|
+
* constructors are detected.
|
|
13
|
+
* See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production
|
|
14
|
+
* See: https://webpack.js.org/guides/production/
|
|
15
|
+
*/
|
|
16
|
+
const instanceOf =
|
|
17
|
+
/* c8 ignore next 5 */
|
|
18
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2317
|
|
19
|
+
process.env.NODE_ENV === 'production'
|
|
20
|
+
? function instanceOf(value, constructor) {
|
|
21
|
+
return value instanceof constructor;
|
|
22
|
+
}
|
|
23
|
+
: function instanceOf(value, constructor) {
|
|
24
|
+
if (value instanceof constructor) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (typeof value === 'object' && value !== null) {
|
|
29
|
+
var _value$constructor;
|
|
30
|
+
|
|
31
|
+
// Prefer Symbol.toStringTag since it is immune to minification.
|
|
32
|
+
const className = constructor.prototype[Symbol.toStringTag];
|
|
33
|
+
const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.
|
|
34
|
+
Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009
|
|
35
|
+
? value[Symbol.toStringTag]
|
|
36
|
+
: (_value$constructor = value.constructor) === null ||
|
|
37
|
+
_value$constructor === void 0
|
|
38
|
+
? void 0
|
|
39
|
+
: _value$constructor.name;
|
|
40
|
+
|
|
41
|
+
if (className === valueClassName) {
|
|
42
|
+
const stringifiedValue = (0, _inspect.inspect)(value);
|
|
43
|
+
throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm.
|
|
44
|
+
|
|
45
|
+
Ensure that there is only one instance of "graphql" in the node_modules
|
|
46
|
+
directory. If different versions of "graphql" are the dependencies of other
|
|
47
|
+
relied on modules, use "resolutions" to ensure only one version is installed.
|
|
48
|
+
|
|
49
|
+
https://yarnpkg.com/en/docs/selective-version-resolutions
|
|
50
|
+
|
|
51
|
+
Duplicate "graphql" modules cannot be used at the same time since different
|
|
52
|
+
versions may have different capabilities and behavior. The data from one
|
|
53
|
+
version used in the function from another could produce confusing and
|
|
54
|
+
spurious results.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return false;
|
|
59
|
+
};
|
|
60
|
+
exports.instanceOf = instanceOf;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { inspect } from './inspect.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* A replacement for instanceof which includes an error warning when multi-realm
|
|
4
|
+
* constructors are detected.
|
|
5
|
+
* See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production
|
|
6
|
+
* See: https://webpack.js.org/guides/production/
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const instanceOf =
|
|
10
|
+
/* c8 ignore next 5 */
|
|
11
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2317
|
|
12
|
+
process.env.NODE_ENV === 'production'
|
|
13
|
+
? function instanceOf(value, constructor) {
|
|
14
|
+
return value instanceof constructor;
|
|
15
|
+
}
|
|
16
|
+
: function instanceOf(value, constructor) {
|
|
17
|
+
if (value instanceof constructor) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof value === 'object' && value !== null) {
|
|
22
|
+
var _value$constructor;
|
|
23
|
+
|
|
24
|
+
// Prefer Symbol.toStringTag since it is immune to minification.
|
|
25
|
+
const className = constructor.prototype[Symbol.toStringTag];
|
|
26
|
+
const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.
|
|
27
|
+
Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009
|
|
28
|
+
? value[Symbol.toStringTag]
|
|
29
|
+
: (_value$constructor = value.constructor) === null ||
|
|
30
|
+
_value$constructor === void 0
|
|
31
|
+
? void 0
|
|
32
|
+
: _value$constructor.name;
|
|
33
|
+
|
|
34
|
+
if (className === valueClassName) {
|
|
35
|
+
const stringifiedValue = inspect(value);
|
|
36
|
+
throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm.
|
|
37
|
+
|
|
38
|
+
Ensure that there is only one instance of "graphql" in the node_modules
|
|
39
|
+
directory. If different versions of "graphql" are the dependencies of other
|
|
40
|
+
relied on modules, use "resolutions" to ensure only one version is installed.
|
|
41
|
+
|
|
42
|
+
https://yarnpkg.com/en/docs/selective-version-resolutions
|
|
43
|
+
|
|
44
|
+
Duplicate "graphql" modules cannot be used at the same time since different
|
|
45
|
+
versions may have different capabilities and behavior. The data from one
|
|
46
|
+
version used in the function from another could produce confusing and
|
|
47
|
+
spurious results.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return false;
|
|
52
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.invariant = invariant;
|
|
7
|
+
|
|
8
|
+
function invariant(condition, message) {
|
|
9
|
+
const booleanCondition = Boolean(condition);
|
|
10
|
+
|
|
11
|
+
if (!booleanCondition) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
message != null ? message : 'Unexpected invariant triggered.',
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.isAsyncIterable = isAsyncIterable;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns true if the provided object implements the AsyncIterator protocol via
|
|
10
|
+
* implementing a `Symbol.asyncIterator` method.
|
|
11
|
+
*/
|
|
12
|
+
function isAsyncIterable(maybeAsyncIterable) {
|
|
13
|
+
return (
|
|
14
|
+
typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0
|
|
15
|
+
? void 0
|
|
16
|
+
: maybeAsyncIterable[Symbol.asyncIterator]) === 'function'
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the provided object implements the AsyncIterator protocol via
|
|
3
|
+
* implementing a `Symbol.asyncIterator` method.
|
|
4
|
+
*/
|
|
5
|
+
export function isAsyncIterable(maybeAsyncIterable) {
|
|
6
|
+
return (
|
|
7
|
+
typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0
|
|
8
|
+
? void 0
|
|
9
|
+
: maybeAsyncIterable[Symbol.asyncIterator]) === 'function'
|
|
10
|
+
);
|
|
11
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the provided object is an Object (i.e. not a string literal)
|
|
3
|
+
* and implements the Iterator protocol.
|
|
4
|
+
*
|
|
5
|
+
* This may be used in place of [Array.isArray()][isArray] to determine if
|
|
6
|
+
* an object should be iterated-over e.g. Array, Map, Set, Int8Array,
|
|
7
|
+
* TypedArray, etc. but excludes string literals.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* isIterableObject([ 1, 2, 3 ]) // true
|
|
12
|
+
* isIterableObject(new Map()) // true
|
|
13
|
+
* isIterableObject('ABC') // false
|
|
14
|
+
* isIterableObject({ key: 'value' }) // false
|
|
15
|
+
* isIterableObject({ length: 1, 0: 'Alpha' }) // false
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function isIterableObject(
|
|
19
|
+
maybeIterable: any,
|
|
20
|
+
): maybeIterable is Iterable<unknown>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.isIterableObject = isIterableObject;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns true if the provided object is an Object (i.e. not a string literal)
|
|
10
|
+
* and implements the Iterator protocol.
|
|
11
|
+
*
|
|
12
|
+
* This may be used in place of [Array.isArray()][isArray] to determine if
|
|
13
|
+
* an object should be iterated-over e.g. Array, Map, Set, Int8Array,
|
|
14
|
+
* TypedArray, etc. but excludes string literals.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* isIterableObject([ 1, 2, 3 ]) // true
|
|
19
|
+
* isIterableObject(new Map()) // true
|
|
20
|
+
* isIterableObject('ABC') // false
|
|
21
|
+
* isIterableObject({ key: 'value' }) // false
|
|
22
|
+
* isIterableObject({ length: 1, 0: 'Alpha' }) // false
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function isIterableObject(maybeIterable) {
|
|
26
|
+
return (
|
|
27
|
+
typeof maybeIterable === 'object' &&
|
|
28
|
+
typeof (maybeIterable === null || maybeIterable === void 0
|
|
29
|
+
? void 0
|
|
30
|
+
: maybeIterable[Symbol.iterator]) === 'function'
|
|
31
|
+
);
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the provided object is an Object (i.e. not a string literal)
|
|
3
|
+
* and implements the Iterator protocol.
|
|
4
|
+
*
|
|
5
|
+
* This may be used in place of [Array.isArray()][isArray] to determine if
|
|
6
|
+
* an object should be iterated-over e.g. Array, Map, Set, Int8Array,
|
|
7
|
+
* TypedArray, etc. but excludes string literals.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* isIterableObject([ 1, 2, 3 ]) // true
|
|
12
|
+
* isIterableObject(new Map()) // true
|
|
13
|
+
* isIterableObject('ABC') // false
|
|
14
|
+
* isIterableObject({ key: 'value' }) // false
|
|
15
|
+
* isIterableObject({ length: 1, 0: 'Alpha' }) // false
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function isIterableObject(maybeIterable) {
|
|
19
|
+
return (
|
|
20
|
+
typeof maybeIterable === 'object' &&
|
|
21
|
+
typeof (maybeIterable === null || maybeIterable === void 0
|
|
22
|
+
? void 0
|
|
23
|
+
: maybeIterable[Symbol.iterator]) === 'function'
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.isObjectLike = isObjectLike;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Return true if `value` is object-like. A value is object-like if it's not
|
|
10
|
+
* `null` and has a `typeof` result of "object".
|
|
11
|
+
*/
|
|
12
|
+
function isObjectLike(value) {
|
|
13
|
+
return typeof value == 'object' && value !== null;
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.isPromise = isPromise;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns true if the value acts like a Promise, i.e. has a "then" function,
|
|
10
|
+
* otherwise returns false.
|
|
11
|
+
*/
|
|
12
|
+
function isPromise(value) {
|
|
13
|
+
return (
|
|
14
|
+
typeof (value === null || value === void 0 ? void 0 : value.then) ===
|
|
15
|
+
'function'
|
|
16
|
+
);
|
|
17
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ObjMap } from './ObjMap';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a keyed JS object from an array, given a function to produce the keys
|
|
4
|
+
* for each value in the array.
|
|
5
|
+
*
|
|
6
|
+
* This provides a convenient lookup for the array items if the key function
|
|
7
|
+
* produces unique results.
|
|
8
|
+
* ```ts
|
|
9
|
+
* const phoneBook = [
|
|
10
|
+
* { name: 'Jon', num: '555-1234' },
|
|
11
|
+
* { name: 'Jenny', num: '867-5309' }
|
|
12
|
+
* ]
|
|
13
|
+
*
|
|
14
|
+
* const entriesByName = keyMap(
|
|
15
|
+
* phoneBook,
|
|
16
|
+
* entry => entry.name
|
|
17
|
+
* )
|
|
18
|
+
*
|
|
19
|
+
* // {
|
|
20
|
+
* // Jon: { name: 'Jon', num: '555-1234' },
|
|
21
|
+
* // Jenny: { name: 'Jenny', num: '867-5309' }
|
|
22
|
+
* // }
|
|
23
|
+
*
|
|
24
|
+
* const jennyEntry = entriesByName['Jenny']
|
|
25
|
+
*
|
|
26
|
+
* // { name: 'Jenny', num: '857-6309' }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function keyMap<T>(
|
|
30
|
+
list: ReadonlyArray<T>,
|
|
31
|
+
keyFn: (item: T) => string,
|
|
32
|
+
): ObjMap<T>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.keyMap = keyMap;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Creates a keyed JS object from an array, given a function to produce the keys
|
|
10
|
+
* for each value in the array.
|
|
11
|
+
*
|
|
12
|
+
* This provides a convenient lookup for the array items if the key function
|
|
13
|
+
* produces unique results.
|
|
14
|
+
* ```ts
|
|
15
|
+
* const phoneBook = [
|
|
16
|
+
* { name: 'Jon', num: '555-1234' },
|
|
17
|
+
* { name: 'Jenny', num: '867-5309' }
|
|
18
|
+
* ]
|
|
19
|
+
*
|
|
20
|
+
* const entriesByName = keyMap(
|
|
21
|
+
* phoneBook,
|
|
22
|
+
* entry => entry.name
|
|
23
|
+
* )
|
|
24
|
+
*
|
|
25
|
+
* // {
|
|
26
|
+
* // Jon: { name: 'Jon', num: '555-1234' },
|
|
27
|
+
* // Jenny: { name: 'Jenny', num: '867-5309' }
|
|
28
|
+
* // }
|
|
29
|
+
*
|
|
30
|
+
* const jennyEntry = entriesByName['Jenny']
|
|
31
|
+
*
|
|
32
|
+
* // { name: 'Jenny', num: '857-6309' }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
function keyMap(list, keyFn) {
|
|
36
|
+
const result = Object.create(null);
|
|
37
|
+
|
|
38
|
+
for (const item of list) {
|
|
39
|
+
result[keyFn(item)] = item;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return result;
|
|
43
|
+
}
|