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/type/directives.js
CHANGED
|
@@ -4,9 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isDirective = isDirective;
|
|
7
|
+
exports.assertDirective = assertDirective;
|
|
7
8
|
exports.isSpecifiedDirective = isSpecifiedDirective;
|
|
8
9
|
exports.specifiedDirectives = exports.GraphQLDeprecatedDirective = exports.DEFAULT_DEPRECATION_REASON = exports.GraphQLSkipDirective = exports.GraphQLIncludeDirective = exports.GraphQLDirective = void 0;
|
|
9
10
|
|
|
11
|
+
var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries"));
|
|
12
|
+
|
|
10
13
|
var _definition = require("./definition");
|
|
11
14
|
|
|
12
15
|
var _scalars = require("./scalars");
|
|
@@ -19,16 +22,23 @@ var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf"));
|
|
|
19
22
|
|
|
20
23
|
var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
|
|
21
24
|
|
|
25
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
|
|
26
|
+
|
|
22
27
|
var _directiveLocation = require("../language/directiveLocation");
|
|
23
28
|
|
|
24
29
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
30
|
|
|
26
|
-
function
|
|
31
|
+
function _typeof(obj) { 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); }
|
|
27
32
|
|
|
28
33
|
// eslint-disable-next-line no-redeclare
|
|
29
34
|
function isDirective(directive) {
|
|
30
35
|
return (0, _instanceOf.default)(directive, GraphQLDirective);
|
|
31
36
|
}
|
|
37
|
+
|
|
38
|
+
function assertDirective(directive) {
|
|
39
|
+
!isDirective(directive) ? (0, _invariant.default)(0, "Expected ".concat((0, _inspect.default)(directive), " to be a GraphQL directive.")) : void 0;
|
|
40
|
+
return directive;
|
|
41
|
+
}
|
|
32
42
|
/**
|
|
33
43
|
* Directives are used by the GraphQL runtime as a way of modifying execution
|
|
34
44
|
* behavior. Type system creators will usually not create these directly.
|
|
@@ -39,39 +49,25 @@ var GraphQLDirective =
|
|
|
39
49
|
/*#__PURE__*/
|
|
40
50
|
function () {
|
|
41
51
|
function GraphQLDirective(config) {
|
|
42
|
-
_defineProperty(this, "name", void 0);
|
|
43
|
-
|
|
44
|
-
_defineProperty(this, "description", void 0);
|
|
45
|
-
|
|
46
|
-
_defineProperty(this, "locations", void 0);
|
|
47
|
-
|
|
48
|
-
_defineProperty(this, "args", void 0);
|
|
49
|
-
|
|
50
|
-
_defineProperty(this, "astNode", void 0);
|
|
51
|
-
|
|
52
52
|
this.name = config.name;
|
|
53
53
|
this.description = config.description;
|
|
54
54
|
this.locations = config.locations;
|
|
55
55
|
this.astNode = config.astNode;
|
|
56
56
|
!config.name ? (0, _invariant.default)(0, 'Directive must be named.') : void 0;
|
|
57
|
-
!Array.isArray(config.locations) ? (0, _invariant.default)(0,
|
|
58
|
-
var args = config.args;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
astNode: arg.astNode
|
|
72
|
-
};
|
|
73
|
-
});
|
|
74
|
-
}
|
|
57
|
+
!Array.isArray(config.locations) ? (0, _invariant.default)(0, "@".concat(config.name, " locations must be an Array.")) : void 0;
|
|
58
|
+
var args = config.args || {};
|
|
59
|
+
!(_typeof(args) === 'object' && !Array.isArray(args)) ? (0, _invariant.default)(0, "@".concat(config.name, " args must be an object with argument names as keys.")) : void 0;
|
|
60
|
+
this.args = (0, _objectEntries.default)(args).map(function (_ref) {
|
|
61
|
+
var argName = _ref[0],
|
|
62
|
+
arg = _ref[1];
|
|
63
|
+
return {
|
|
64
|
+
name: argName,
|
|
65
|
+
description: arg.description === undefined ? null : arg.description,
|
|
66
|
+
type: arg.type,
|
|
67
|
+
defaultValue: arg.defaultValue,
|
|
68
|
+
astNode: arg.astNode
|
|
69
|
+
};
|
|
70
|
+
});
|
|
75
71
|
}
|
|
76
72
|
|
|
77
73
|
var _proto = GraphQLDirective.prototype;
|
package/type/directives.js.flow
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import objectEntries from '../polyfills/objectEntries';
|
|
10
11
|
import type {
|
|
11
12
|
GraphQLFieldConfigArgumentMap,
|
|
12
13
|
GraphQLArgument,
|
|
@@ -17,6 +18,7 @@ import defineToStringTag from '../jsutils/defineToStringTag';
|
|
|
17
18
|
import defineToJSON from '../jsutils/defineToJSON';
|
|
18
19
|
import instanceOf from '../jsutils/instanceOf';
|
|
19
20
|
import invariant from '../jsutils/invariant';
|
|
21
|
+
import inspect from '../jsutils/inspect';
|
|
20
22
|
import type { DirectiveDefinitionNode } from '../language/ast';
|
|
21
23
|
import {
|
|
22
24
|
DirectiveLocation,
|
|
@@ -34,6 +36,14 @@ export function isDirective(directive) {
|
|
|
34
36
|
return instanceOf(directive, GraphQLDirective);
|
|
35
37
|
}
|
|
36
38
|
|
|
39
|
+
export function assertDirective(directive: mixed): GraphQLDirective {
|
|
40
|
+
invariant(
|
|
41
|
+
isDirective(directive),
|
|
42
|
+
`Expected ${inspect(directive)} to be a GraphQL directive.`,
|
|
43
|
+
);
|
|
44
|
+
return directive;
|
|
45
|
+
}
|
|
46
|
+
|
|
37
47
|
/**
|
|
38
48
|
* Directives are used by the GraphQL runtime as a way of modifying execution
|
|
39
49
|
* behavior. Type system creators will usually not create these directly.
|
|
@@ -53,28 +63,22 @@ export class GraphQLDirective {
|
|
|
53
63
|
invariant(config.name, 'Directive must be named.');
|
|
54
64
|
invariant(
|
|
55
65
|
Array.isArray(config.locations),
|
|
56
|
-
|
|
66
|
+
`@${config.name} locations must be an Array.`,
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
const args = config.args || {};
|
|
70
|
+
invariant(
|
|
71
|
+
typeof args === 'object' && !Array.isArray(args),
|
|
72
|
+
`@${config.name} args must be an object with argument names as keys.`,
|
|
57
73
|
);
|
|
58
74
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
);
|
|
67
|
-
this.args = Object.keys(args).map(argName => {
|
|
68
|
-
const arg = args[argName];
|
|
69
|
-
return {
|
|
70
|
-
name: argName,
|
|
71
|
-
description: arg.description === undefined ? null : arg.description,
|
|
72
|
-
type: arg.type,
|
|
73
|
-
defaultValue: arg.defaultValue,
|
|
74
|
-
astNode: arg.astNode,
|
|
75
|
-
};
|
|
76
|
-
});
|
|
77
|
-
}
|
|
75
|
+
this.args = objectEntries(args).map(([argName, arg]) => ({
|
|
76
|
+
name: argName,
|
|
77
|
+
description: arg.description === undefined ? null : arg.description,
|
|
78
|
+
type: arg.type,
|
|
79
|
+
defaultValue: arg.defaultValue,
|
|
80
|
+
astNode: arg.astNode,
|
|
81
|
+
}));
|
|
78
82
|
}
|
|
79
83
|
|
|
80
84
|
toString(): string {
|
package/type/directives.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _typeof(obj) { 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
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
@@ -6,14 +6,16 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
6
6
|
* This source code is licensed under the MIT license found in the
|
|
7
7
|
* LICENSE file in the root directory of this source tree.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
10
|
*/
|
|
11
|
+
import objectEntries from '../polyfills/objectEntries';
|
|
11
12
|
import { GraphQLNonNull } from './definition';
|
|
12
13
|
import { GraphQLString, GraphQLBoolean } from './scalars';
|
|
13
14
|
import defineToStringTag from '../jsutils/defineToStringTag';
|
|
14
15
|
import defineToJSON from '../jsutils/defineToJSON';
|
|
15
16
|
import instanceOf from '../jsutils/instanceOf';
|
|
16
17
|
import invariant from '../jsutils/invariant';
|
|
18
|
+
import inspect from '../jsutils/inspect';
|
|
17
19
|
import { DirectiveLocation } from '../language/directiveLocation';
|
|
18
20
|
/**
|
|
19
21
|
* Test if the given value is a GraphQL directive.
|
|
@@ -23,6 +25,10 @@ import { DirectiveLocation } from '../language/directiveLocation';
|
|
|
23
25
|
export function isDirective(directive) {
|
|
24
26
|
return instanceOf(directive, GraphQLDirective);
|
|
25
27
|
}
|
|
28
|
+
export function assertDirective(directive) {
|
|
29
|
+
!isDirective(directive) ? invariant(0, "Expected ".concat(inspect(directive), " to be a GraphQL directive.")) : void 0;
|
|
30
|
+
return directive;
|
|
31
|
+
}
|
|
26
32
|
/**
|
|
27
33
|
* Directives are used by the GraphQL runtime as a way of modifying execution
|
|
28
34
|
* behavior. Type system creators will usually not create these directly.
|
|
@@ -32,39 +38,25 @@ export var GraphQLDirective =
|
|
|
32
38
|
/*#__PURE__*/
|
|
33
39
|
function () {
|
|
34
40
|
function GraphQLDirective(config) {
|
|
35
|
-
_defineProperty(this, "name", void 0);
|
|
36
|
-
|
|
37
|
-
_defineProperty(this, "description", void 0);
|
|
38
|
-
|
|
39
|
-
_defineProperty(this, "locations", void 0);
|
|
40
|
-
|
|
41
|
-
_defineProperty(this, "args", void 0);
|
|
42
|
-
|
|
43
|
-
_defineProperty(this, "astNode", void 0);
|
|
44
|
-
|
|
45
41
|
this.name = config.name;
|
|
46
42
|
this.description = config.description;
|
|
47
43
|
this.locations = config.locations;
|
|
48
44
|
this.astNode = config.astNode;
|
|
49
45
|
!config.name ? invariant(0, 'Directive must be named.') : void 0;
|
|
50
|
-
!Array.isArray(config.locations) ? invariant(0,
|
|
51
|
-
var args = config.args;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
astNode: arg.astNode
|
|
65
|
-
};
|
|
66
|
-
});
|
|
67
|
-
}
|
|
46
|
+
!Array.isArray(config.locations) ? invariant(0, "@".concat(config.name, " locations must be an Array.")) : void 0;
|
|
47
|
+
var args = config.args || {};
|
|
48
|
+
!(_typeof(args) === 'object' && !Array.isArray(args)) ? invariant(0, "@".concat(config.name, " args must be an object with argument names as keys.")) : void 0;
|
|
49
|
+
this.args = objectEntries(args).map(function (_ref) {
|
|
50
|
+
var argName = _ref[0],
|
|
51
|
+
arg = _ref[1];
|
|
52
|
+
return {
|
|
53
|
+
name: argName,
|
|
54
|
+
description: arg.description === undefined ? null : arg.description,
|
|
55
|
+
type: arg.type,
|
|
56
|
+
defaultValue: arg.defaultValue,
|
|
57
|
+
astNode: arg.astNode
|
|
58
|
+
};
|
|
59
|
+
});
|
|
68
60
|
}
|
|
69
61
|
|
|
70
62
|
var _proto = GraphQLDirective.prototype;
|
package/type/index.js
CHANGED
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "isSchema", {
|
|
|
9
9
|
return _schema.isSchema;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "assertSchema", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _schema.assertSchema;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "GraphQLSchema", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function get() {
|
|
@@ -297,6 +303,12 @@ Object.defineProperty(exports, "isDirective", {
|
|
|
297
303
|
return _directives.isDirective;
|
|
298
304
|
}
|
|
299
305
|
});
|
|
306
|
+
Object.defineProperty(exports, "assertDirective", {
|
|
307
|
+
enumerable: true,
|
|
308
|
+
get: function get() {
|
|
309
|
+
return _directives.assertDirective;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
300
312
|
Object.defineProperty(exports, "GraphQLDirective", {
|
|
301
313
|
enumerable: true,
|
|
302
314
|
get: function get() {
|
package/type/index.js.flow
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
export {
|
|
11
11
|
// Predicate
|
|
12
12
|
isSchema,
|
|
13
|
+
// Assertion
|
|
14
|
+
assertSchema,
|
|
13
15
|
// GraphQL Schema definition
|
|
14
16
|
GraphQLSchema,
|
|
15
17
|
} from './schema';
|
|
@@ -73,6 +75,8 @@ export {
|
|
|
73
75
|
export {
|
|
74
76
|
// Predicate
|
|
75
77
|
isDirective,
|
|
78
|
+
// Assertion
|
|
79
|
+
assertDirective,
|
|
76
80
|
// Directives Definition
|
|
77
81
|
GraphQLDirective,
|
|
78
82
|
// Built-in Directives defined by the Spec
|
package/type/index.mjs
CHANGED
|
@@ -4,10 +4,11 @@
|
|
|
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
|
export { // Predicate
|
|
10
|
-
isSchema, //
|
|
10
|
+
isSchema, // Assertion
|
|
11
|
+
assertSchema, // GraphQL Schema definition
|
|
11
12
|
GraphQLSchema } from './schema';
|
|
12
13
|
export { // Predicates
|
|
13
14
|
isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, // Assertions
|
|
@@ -16,7 +17,8 @@ getNullableType, getNamedType, // Definitions
|
|
|
16
17
|
GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, // Type Wrappers
|
|
17
18
|
GraphQLList, GraphQLNonNull } from './definition';
|
|
18
19
|
export { // Predicate
|
|
19
|
-
isDirective, //
|
|
20
|
+
isDirective, // Assertion
|
|
21
|
+
assertDirective, // Directives Definition
|
|
20
22
|
GraphQLDirective, // Built-in Directives defined by the Spec
|
|
21
23
|
isSpecifiedDirective, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective, // Constant Deprecation Reason
|
|
22
24
|
DEFAULT_DEPRECATION_REASON } from './directives';
|
package/type/introspection.js
CHANGED
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.isIntrospectionType = isIntrospectionType;
|
|
7
7
|
exports.introspectionTypes = exports.TypeNameMetaFieldDef = exports.TypeMetaFieldDef = exports.SchemaMetaFieldDef = exports.__TypeKind = exports.TypeKind = exports.__EnumValue = exports.__InputValue = exports.__Field = exports.__Type = exports.__DirectiveLocation = exports.__Directive = exports.__Schema = void 0;
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _isInvalid = _interopRequireDefault(require("../jsutils/isInvalid"));
|
|
12
12
|
|
|
13
13
|
var _astFromValue = require("../utilities/astFromValue");
|
|
14
14
|
|
|
@@ -28,7 +28,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
28
28
|
* This source code is licensed under the MIT license found in the
|
|
29
29
|
* LICENSE file in the root directory of this source tree.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
31
|
+
*
|
|
32
32
|
*/
|
|
33
33
|
var __Schema = new _definition.GraphQLObjectType({
|
|
34
34
|
name: '__Schema',
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import objectValues from '../polyfills/objectValues';
|
|
10
11
|
import isInvalid from '../jsutils/isInvalid';
|
|
11
|
-
import objectValues from '../jsutils/objectValues';
|
|
12
12
|
import { astFromValue } from '../utilities/astFromValue';
|
|
13
13
|
import { print } from '../language/printer';
|
|
14
14
|
import {
|
package/type/introspection.mjs
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
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 objectValues from '../polyfills/objectValues';
|
|
9
10
|
import isInvalid from '../jsutils/isInvalid';
|
|
10
|
-
import objectValues from '../jsutils/objectValues';
|
|
11
11
|
import { astFromValue } from '../utilities/astFromValue';
|
|
12
12
|
import { print } from '../language/printer';
|
|
13
13
|
import { GraphQLObjectType, GraphQLEnumType, GraphQLList, GraphQLNonNull, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isAbstractType, isNamedType } from './definition';
|
package/type/scalars.js
CHANGED
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.isSpecifiedScalarType = isSpecifiedScalarType;
|
|
7
7
|
exports.specifiedScalarTypes = exports.GraphQLID = exports.GraphQLBoolean = exports.GraphQLString = exports.GraphQLFloat = exports.GraphQLInt = void 0;
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _isFinite = _interopRequireDefault(require("../polyfills/isFinite"));
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _isInteger = _interopRequireDefault(require("../polyfills/isInteger"));
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
|
|
14
14
|
|
|
15
15
|
var _definition = require("./definition");
|
|
16
16
|
|
|
@@ -18,14 +18,8 @@ var _kinds = require("../language/kinds");
|
|
|
18
18
|
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the MIT license found in the
|
|
25
|
-
* LICENSE file in the root directory of this source tree.
|
|
26
|
-
*
|
|
27
|
-
* strict
|
|
28
|
-
*/
|
|
21
|
+
function _typeof(obj) { 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); }
|
|
22
|
+
|
|
29
23
|
// As per the GraphQL Spec, Integers are only treated as valid when a valid
|
|
30
24
|
// 32-bit signed integer, providing the broadest support across platforms.
|
|
31
25
|
//
|
|
@@ -115,35 +109,54 @@ function coerceFloat(value) {
|
|
|
115
109
|
|
|
116
110
|
var GraphQLFloat = new _definition.GraphQLScalarType({
|
|
117
111
|
name: 'Float',
|
|
118
|
-
description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](
|
|
112
|
+
description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). ',
|
|
119
113
|
serialize: serializeFloat,
|
|
120
114
|
parseValue: coerceFloat,
|
|
121
115
|
parseLiteral: function parseLiteral(ast) {
|
|
122
116
|
return ast.kind === _kinds.Kind.FLOAT || ast.kind === _kinds.Kind.INT ? parseFloat(ast.value) : undefined;
|
|
123
117
|
}
|
|
124
|
-
});
|
|
118
|
+
}); // Support serializing objects with custom valueOf() or toJSON() functions -
|
|
119
|
+
// a common way to represent a complex value which can be represented as
|
|
120
|
+
// a string (ex: MongoDB id objects).
|
|
121
|
+
|
|
125
122
|
exports.GraphQLFloat = GraphQLFloat;
|
|
126
123
|
|
|
127
|
-
function
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
function serializeObject(value) {
|
|
125
|
+
if (_typeof(value) === 'object' && value !== null) {
|
|
126
|
+
if (typeof value.valueOf === 'function') {
|
|
127
|
+
var valueOfResult = value.valueOf();
|
|
128
|
+
|
|
129
|
+
if (_typeof(valueOfResult) !== 'object') {
|
|
130
|
+
return valueOfResult;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (typeof value.toJSON === 'function') {
|
|
135
|
+
// $FlowFixMe(>=0.90.0)
|
|
136
|
+
return value.toJSON();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function serializeString(rawValue) {
|
|
144
|
+
var value = serializeObject(rawValue); // Serialize string, boolean and number values to a string, but do not
|
|
132
145
|
// attempt to coerce object, function, symbol, or other types as strings.
|
|
133
146
|
|
|
134
|
-
if (typeof
|
|
135
|
-
return
|
|
147
|
+
if (typeof value === 'string') {
|
|
148
|
+
return value;
|
|
136
149
|
}
|
|
137
150
|
|
|
138
|
-
if (typeof
|
|
139
|
-
return
|
|
151
|
+
if (typeof value === 'boolean') {
|
|
152
|
+
return value ? 'true' : 'false';
|
|
140
153
|
}
|
|
141
154
|
|
|
142
|
-
if ((0, _isFinite.default)(
|
|
143
|
-
return
|
|
155
|
+
if ((0, _isFinite.default)(value)) {
|
|
156
|
+
return value.toString();
|
|
144
157
|
}
|
|
145
158
|
|
|
146
|
-
throw new TypeError("String cannot represent value: ".concat((0, _inspect.default)(
|
|
159
|
+
throw new TypeError("String cannot represent value: ".concat((0, _inspect.default)(rawValue)));
|
|
147
160
|
}
|
|
148
161
|
|
|
149
162
|
function coerceString(value) {
|
|
@@ -196,20 +209,18 @@ var GraphQLBoolean = new _definition.GraphQLScalarType({
|
|
|
196
209
|
});
|
|
197
210
|
exports.GraphQLBoolean = GraphQLBoolean;
|
|
198
211
|
|
|
199
|
-
function serializeID(
|
|
200
|
-
|
|
201
|
-
// to represent an object identifier (ex. MongoDB).
|
|
202
|
-
var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value;
|
|
212
|
+
function serializeID(rawValue) {
|
|
213
|
+
var value = serializeObject(rawValue);
|
|
203
214
|
|
|
204
|
-
if (typeof
|
|
205
|
-
return
|
|
215
|
+
if (typeof value === 'string') {
|
|
216
|
+
return value;
|
|
206
217
|
}
|
|
207
218
|
|
|
208
|
-
if ((0, _isInteger.default)(
|
|
209
|
-
return String(
|
|
219
|
+
if ((0, _isInteger.default)(value)) {
|
|
220
|
+
return String(value);
|
|
210
221
|
}
|
|
211
222
|
|
|
212
|
-
throw new TypeError("ID cannot represent value: ".concat((0, _inspect.default)(
|
|
223
|
+
throw new TypeError("ID cannot represent value: ".concat((0, _inspect.default)(rawValue)));
|
|
213
224
|
}
|
|
214
225
|
|
|
215
226
|
function coerceID(value) {
|
package/type/scalars.js.flow
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import isFinite from '../polyfills/isFinite';
|
|
11
|
+
import isInteger from '../polyfills/isInteger';
|
|
10
12
|
import inspect from '../jsutils/inspect';
|
|
11
|
-
import isFinite from '../jsutils/isFinite';
|
|
12
|
-
import isInteger from '../jsutils/isInteger';
|
|
13
13
|
import { GraphQLScalarType, isNamedType } from './definition';
|
|
14
14
|
import { Kind } from '../language/kinds';
|
|
15
15
|
|
|
@@ -107,7 +107,7 @@ export const GraphQLFloat = new GraphQLScalarType({
|
|
|
107
107
|
description:
|
|
108
108
|
'The `Float` scalar type represents signed double-precision fractional ' +
|
|
109
109
|
'values as specified by ' +
|
|
110
|
-
'[IEEE 754](
|
|
110
|
+
'[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). ',
|
|
111
111
|
serialize: serializeFloat,
|
|
112
112
|
parseValue: coerceFloat,
|
|
113
113
|
parseLiteral(ast) {
|
|
@@ -117,24 +117,40 @@ export const GraphQLFloat = new GraphQLScalarType({
|
|
|
117
117
|
},
|
|
118
118
|
});
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
// Support serializing objects with custom valueOf() or toJSON() functions -
|
|
121
|
+
// a common way to represent a complex value which can be represented as
|
|
122
|
+
// a string (ex: MongoDB id objects).
|
|
123
|
+
function serializeObject(value: mixed): mixed {
|
|
124
|
+
if (typeof value === 'object' && value !== null) {
|
|
125
|
+
if (typeof value.valueOf === 'function') {
|
|
126
|
+
const valueOfResult = value.valueOf();
|
|
127
|
+
if (typeof valueOfResult !== 'object') {
|
|
128
|
+
return valueOfResult;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (typeof value.toJSON === 'function') {
|
|
132
|
+
// $FlowFixMe(>=0.90.0)
|
|
133
|
+
return value.toJSON();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function serializeString(rawValue: mixed): string {
|
|
140
|
+
const value = serializeObject(rawValue);
|
|
141
|
+
|
|
126
142
|
// Serialize string, boolean and number values to a string, but do not
|
|
127
143
|
// attempt to coerce object, function, symbol, or other types as strings.
|
|
128
|
-
if (typeof
|
|
129
|
-
return
|
|
144
|
+
if (typeof value === 'string') {
|
|
145
|
+
return value;
|
|
130
146
|
}
|
|
131
|
-
if (typeof
|
|
132
|
-
return
|
|
147
|
+
if (typeof value === 'boolean') {
|
|
148
|
+
return value ? 'true' : 'false';
|
|
133
149
|
}
|
|
134
|
-
if (isFinite(
|
|
135
|
-
return
|
|
150
|
+
if (isFinite(value)) {
|
|
151
|
+
return value.toString();
|
|
136
152
|
}
|
|
137
|
-
throw new TypeError(`String cannot represent value: ${inspect(
|
|
153
|
+
throw new TypeError(`String cannot represent value: ${inspect(rawValue)}`);
|
|
138
154
|
}
|
|
139
155
|
|
|
140
156
|
function coerceString(value: mixed): string {
|
|
@@ -190,18 +206,16 @@ export const GraphQLBoolean = new GraphQLScalarType({
|
|
|
190
206
|
},
|
|
191
207
|
});
|
|
192
208
|
|
|
193
|
-
function serializeID(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (typeof result === 'string') {
|
|
199
|
-
return result;
|
|
209
|
+
function serializeID(rawValue: mixed): string {
|
|
210
|
+
const value = serializeObject(rawValue);
|
|
211
|
+
|
|
212
|
+
if (typeof value === 'string') {
|
|
213
|
+
return value;
|
|
200
214
|
}
|
|
201
|
-
if (isInteger(
|
|
202
|
-
return String(
|
|
215
|
+
if (isInteger(value)) {
|
|
216
|
+
return String(value);
|
|
203
217
|
}
|
|
204
|
-
throw new TypeError(`ID cannot represent value: ${inspect(
|
|
218
|
+
throw new TypeError(`ID cannot represent value: ${inspect(rawValue)}`);
|
|
205
219
|
}
|
|
206
220
|
|
|
207
221
|
function coerceID(value: mixed): string {
|