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
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -115,6 +115,16 @@ directly on this branch:
|
|
|
115
115
|
npm install graphql@git://github.com/graphql/graphql-js.git#npm
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
+
### Experimental features
|
|
119
|
+
|
|
120
|
+
Each release of GraphQL.js will be accompanied by an experimental release containing support for the `@defer` and `@stream` directive proposal. We are hoping to get community feedback on these releases before the proposal is accepted into the GraphQL specification. You can use this experimental release of GraphQL.js by adding the following to your project's `package.json` file.
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
"graphql": "experimental-stream-defer"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Community feedback on this experimental release is much appreciated and can be provided on the [issue created for this purpose](https://github.com/graphql/graphql-js/issues/2848).
|
|
127
|
+
|
|
118
128
|
### Using in a Browser
|
|
119
129
|
|
|
120
130
|
GraphQL.js is a general-purpose library and can be used both in a Node server
|
package/error/GraphQLError.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
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); }
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.printError = printError;
|
|
7
9
|
exports.GraphQLError = void 0;
|
|
8
10
|
|
|
9
|
-
var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
|
|
11
|
+
var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
|
|
10
12
|
|
|
11
|
-
var _symbols = require("../polyfills/symbols");
|
|
13
|
+
var _symbols = require("../polyfills/symbols.js");
|
|
12
14
|
|
|
13
|
-
var _location = require("../language/location");
|
|
15
|
+
var _location = require("../language/location.js");
|
|
14
16
|
|
|
15
|
-
var _printLocation = require("../language/printLocation");
|
|
17
|
+
var _printLocation = require("../language/printLocation.js");
|
|
16
18
|
|
|
17
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
20
|
|
|
19
|
-
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); }
|
|
20
|
-
|
|
21
21
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
22
22
|
|
|
23
23
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
@@ -219,7 +219,7 @@ var GraphQLError = /*#__PURE__*/function (_Error) {
|
|
|
219
219
|
}
|
|
220
220
|
}); // Include (non-enumerable) stack trace.
|
|
221
221
|
|
|
222
|
-
if (originalError
|
|
222
|
+
if (originalError !== null && originalError !== void 0 && originalError.stack) {
|
|
223
223
|
Object.defineProperty(_assertThisInitialized(_this), 'stack', {
|
|
224
224
|
value: originalError.stack,
|
|
225
225
|
writable: true,
|
|
@@ -247,7 +247,7 @@ var GraphQLError = /*#__PURE__*/function (_Error) {
|
|
|
247
247
|
value: function toString() {
|
|
248
248
|
return printError(this);
|
|
249
249
|
} // FIXME: workaround to not break chai comparisons, should be remove in v16
|
|
250
|
-
// $FlowFixMe Flow doesn't support computed properties yet
|
|
250
|
+
// $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
|
|
251
251
|
|
|
252
252
|
}, {
|
|
253
253
|
key: _symbols.SYMBOL_TO_STRING_TAG,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
|
|
3
2
|
// FIXME:
|
|
4
3
|
// flowlint uninitialized-instance-property:off
|
|
5
4
|
|
|
@@ -85,7 +84,7 @@ export class GraphQLError extends Error {
|
|
|
85
84
|
path?: ?$ReadOnlyArray<string | number>,
|
|
86
85
|
originalError?: ?(Error & { +extensions?: mixed, ... }),
|
|
87
86
|
extensions?: ?{ [key: string]: mixed, ... },
|
|
88
|
-
)
|
|
87
|
+
) {
|
|
89
88
|
super(message);
|
|
90
89
|
|
|
91
90
|
// Compute list of blame nodes.
|
|
@@ -214,7 +213,7 @@ export class GraphQLError extends Error {
|
|
|
214
213
|
}
|
|
215
214
|
|
|
216
215
|
// FIXME: workaround to not break chai comparisons, should be remove in v16
|
|
217
|
-
// $FlowFixMe Flow doesn't support computed properties yet
|
|
216
|
+
// $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
|
|
218
217
|
get [SYMBOL_TO_STRING_TAG](): string {
|
|
219
218
|
return 'Object';
|
|
220
219
|
}
|
package/error/GraphQLError.mjs
CHANGED
|
@@ -208,7 +208,7 @@ export var GraphQLError = /*#__PURE__*/function (_Error) {
|
|
|
208
208
|
}
|
|
209
209
|
}); // Include (non-enumerable) stack trace.
|
|
210
210
|
|
|
211
|
-
if (originalError
|
|
211
|
+
if (originalError !== null && originalError !== void 0 && originalError.stack) {
|
|
212
212
|
Object.defineProperty(_assertThisInitialized(_this), 'stack', {
|
|
213
213
|
value: originalError.stack,
|
|
214
214
|
writable: true,
|
|
@@ -236,7 +236,7 @@ export var GraphQLError = /*#__PURE__*/function (_Error) {
|
|
|
236
236
|
value: function toString() {
|
|
237
237
|
return printError(this);
|
|
238
238
|
} // FIXME: workaround to not break chai comparisons, should be remove in v16
|
|
239
|
-
// $FlowFixMe Flow doesn't support computed properties yet
|
|
239
|
+
// $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
|
|
240
240
|
|
|
241
241
|
}, {
|
|
242
242
|
key: SYMBOL_TO_STRING_TAG,
|
package/error/formatError.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.formatError = formatError;
|
|
7
7
|
|
|
8
|
-
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
|
|
8
|
+
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
package/error/index.js
CHANGED
|
@@ -34,10 +34,10 @@ Object.defineProperty(exports, "formatError", {
|
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
var _GraphQLError = require("./GraphQLError");
|
|
37
|
+
var _GraphQLError = require("./GraphQLError.js");
|
|
38
38
|
|
|
39
|
-
var _syntaxError = require("./syntaxError");
|
|
39
|
+
var _syntaxError = require("./syntaxError.js");
|
|
40
40
|
|
|
41
|
-
var _locatedError = require("./locatedError");
|
|
41
|
+
var _locatedError = require("./locatedError.js");
|
|
42
42
|
|
|
43
|
-
var _formatError = require("./formatError");
|
|
43
|
+
var _formatError = require("./formatError.js");
|
package/error/index.js.flow
CHANGED
package/error/locatedError.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ import { ASTNode } from '../language/ast';
|
|
|
5
5
|
import { GraphQLError } from './GraphQLError';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Given an arbitrary
|
|
8
|
+
* Given an arbitrary value, presumably thrown while attempting to execute a
|
|
9
9
|
* GraphQL operation, produce a new GraphQLError aware of the location in the
|
|
10
10
|
* document responsible for the original Error.
|
|
11
11
|
*/
|
|
12
12
|
export function locatedError(
|
|
13
|
-
|
|
13
|
+
rawOriginalError: any,
|
|
14
14
|
nodes: ASTNode | ReadonlyArray<ASTNode> | undefined,
|
|
15
15
|
path?: Maybe<ReadonlyArray<string | number>>,
|
|
16
16
|
): GraphQLError;
|
package/error/locatedError.js
CHANGED
|
@@ -5,18 +5,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.locatedError = locatedError;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
|
|
9
|
+
|
|
10
|
+
var _GraphQLError = require("./GraphQLError.js");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
13
|
|
|
10
14
|
/**
|
|
11
|
-
* Given an arbitrary
|
|
15
|
+
* Given an arbitrary value, presumably thrown while attempting to execute a
|
|
12
16
|
* GraphQL operation, produce a new GraphQLError aware of the location in the
|
|
13
17
|
* document responsible for the original Error.
|
|
14
18
|
*/
|
|
15
|
-
function locatedError(
|
|
19
|
+
function locatedError(rawOriginalError, nodes, path) {
|
|
16
20
|
var _nodes;
|
|
17
21
|
|
|
18
|
-
//
|
|
19
|
-
// other contexts.
|
|
22
|
+
// Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.
|
|
23
|
+
var originalError = rawOriginalError instanceof Error ? rawOriginalError : new Error('Unexpected error value: ' + (0, _inspect.default)(rawOriginalError)); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.
|
|
24
|
+
|
|
20
25
|
if (Array.isArray(originalError.path)) {
|
|
21
26
|
return originalError;
|
|
22
27
|
}
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
+
import inspect from '../jsutils/inspect';
|
|
2
3
|
|
|
3
4
|
import type { ASTNode } from '../language/ast';
|
|
4
5
|
|
|
5
6
|
import { GraphQLError } from './GraphQLError';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
|
-
* Given an arbitrary
|
|
9
|
+
* Given an arbitrary value, presumably thrown while attempting to execute a
|
|
9
10
|
* GraphQL operation, produce a new GraphQLError aware of the location in the
|
|
10
11
|
* document responsible for the original Error.
|
|
11
12
|
*/
|
|
12
13
|
export function locatedError(
|
|
13
|
-
|
|
14
|
+
rawOriginalError: mixed,
|
|
14
15
|
nodes: ASTNode | $ReadOnlyArray<ASTNode> | void | null,
|
|
15
16
|
path?: ?$ReadOnlyArray<string | number>,
|
|
16
17
|
): GraphQLError {
|
|
17
|
-
//
|
|
18
|
-
|
|
18
|
+
// Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.
|
|
19
|
+
const originalError: Error | GraphQLError =
|
|
20
|
+
rawOriginalError instanceof Error
|
|
21
|
+
? rawOriginalError
|
|
22
|
+
: new Error('Unexpected error value: ' + inspect(rawOriginalError));
|
|
23
|
+
|
|
24
|
+
// Note: this uses a brand-check to support GraphQL errors originating from other contexts.
|
|
19
25
|
if (Array.isArray(originalError.path)) {
|
|
20
26
|
return (originalError: any);
|
|
21
27
|
}
|
package/error/locatedError.mjs
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
import inspect from "../jsutils/inspect.mjs";
|
|
1
2
|
import { GraphQLError } from "./GraphQLError.mjs";
|
|
2
3
|
/**
|
|
3
|
-
* Given an arbitrary
|
|
4
|
+
* Given an arbitrary value, presumably thrown while attempting to execute a
|
|
4
5
|
* GraphQL operation, produce a new GraphQLError aware of the location in the
|
|
5
6
|
* document responsible for the original Error.
|
|
6
7
|
*/
|
|
7
8
|
|
|
8
|
-
export function locatedError(
|
|
9
|
+
export function locatedError(rawOriginalError, nodes, path) {
|
|
9
10
|
var _nodes;
|
|
10
11
|
|
|
11
|
-
//
|
|
12
|
-
// other contexts.
|
|
12
|
+
// Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.
|
|
13
|
+
var originalError = rawOriginalError instanceof Error ? rawOriginalError : new Error('Unexpected error value: ' + inspect(rawOriginalError)); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.
|
|
14
|
+
|
|
13
15
|
if (Array.isArray(originalError.path)) {
|
|
14
16
|
return originalError;
|
|
15
17
|
}
|
package/error/syntaxError.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.syntaxError = syntaxError;
|
|
7
7
|
|
|
8
|
-
var _GraphQLError = require("./GraphQLError");
|
|
8
|
+
var _GraphQLError = require("./GraphQLError.js");
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Produces a GraphQLError representing a syntax error, containing useful
|
package/execution/execute.d.ts
CHANGED
|
@@ -159,21 +159,6 @@ export function buildResolveInfo(
|
|
|
159
159
|
path: Path,
|
|
160
160
|
): GraphQLResolveInfo;
|
|
161
161
|
|
|
162
|
-
/**
|
|
163
|
-
* Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
|
|
164
|
-
* function. Returns the result of resolveFn or the abrupt-return Error object.
|
|
165
|
-
*
|
|
166
|
-
* @internal
|
|
167
|
-
*/
|
|
168
|
-
export function resolveFieldValueOrError(
|
|
169
|
-
exeContext: ExecutionContext,
|
|
170
|
-
fieldDef: GraphQLField<any, any>,
|
|
171
|
-
fieldNodes: ReadonlyArray<FieldNode>,
|
|
172
|
-
resolveFn: GraphQLFieldResolver<any, any>,
|
|
173
|
-
source: any,
|
|
174
|
-
info: GraphQLResolveInfo,
|
|
175
|
-
): any;
|
|
176
|
-
|
|
177
162
|
/**
|
|
178
163
|
* If a resolveType function is not given, then a default resolve behavior is
|
|
179
164
|
* used which attempts two strategies:
|
package/execution/execute.js
CHANGED
|
@@ -9,51 +9,48 @@ exports.assertValidExecutionArguments = assertValidExecutionArguments;
|
|
|
9
9
|
exports.buildExecutionContext = buildExecutionContext;
|
|
10
10
|
exports.collectFields = collectFields;
|
|
11
11
|
exports.buildResolveInfo = buildResolveInfo;
|
|
12
|
-
exports.resolveFieldValueOrError = resolveFieldValueOrError;
|
|
13
12
|
exports.getFieldDef = getFieldDef;
|
|
14
13
|
exports.defaultFieldResolver = exports.defaultTypeResolver = void 0;
|
|
15
14
|
|
|
16
|
-
var
|
|
15
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
|
|
17
16
|
|
|
18
|
-
var
|
|
17
|
+
var _memoize = _interopRequireDefault(require("../jsutils/memoize3.js"));
|
|
19
18
|
|
|
20
|
-
var
|
|
19
|
+
var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
|
|
21
20
|
|
|
22
|
-
var
|
|
21
|
+
var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
|
|
23
22
|
|
|
24
|
-
var
|
|
23
|
+
var _isPromise = _interopRequireDefault(require("../jsutils/isPromise.js"));
|
|
25
24
|
|
|
26
|
-
var
|
|
25
|
+
var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
|
|
27
26
|
|
|
28
|
-
var
|
|
27
|
+
var _safeArrayFrom = _interopRequireDefault(require("../jsutils/safeArrayFrom.js"));
|
|
29
28
|
|
|
30
|
-
var
|
|
29
|
+
var _promiseReduce = _interopRequireDefault(require("../jsutils/promiseReduce.js"));
|
|
31
30
|
|
|
32
|
-
var
|
|
31
|
+
var _promiseForObject = _interopRequireDefault(require("../jsutils/promiseForObject.js"));
|
|
33
32
|
|
|
34
|
-
var
|
|
33
|
+
var _Path = require("../jsutils/Path.js");
|
|
35
34
|
|
|
36
|
-
var
|
|
35
|
+
var _GraphQLError = require("../error/GraphQLError.js");
|
|
37
36
|
|
|
38
|
-
var
|
|
37
|
+
var _locatedError = require("../error/locatedError.js");
|
|
39
38
|
|
|
40
|
-
var
|
|
39
|
+
var _kinds = require("../language/kinds.js");
|
|
41
40
|
|
|
42
|
-
var
|
|
41
|
+
var _validate = require("../type/validate.js");
|
|
43
42
|
|
|
44
|
-
var
|
|
43
|
+
var _introspection = require("../type/introspection.js");
|
|
45
44
|
|
|
46
|
-
var
|
|
45
|
+
var _directives = require("../type/directives.js");
|
|
47
46
|
|
|
48
|
-
var
|
|
47
|
+
var _definition = require("../type/definition.js");
|
|
49
48
|
|
|
50
|
-
var
|
|
49
|
+
var _typeFromAST = require("../utilities/typeFromAST.js");
|
|
51
50
|
|
|
52
|
-
var
|
|
51
|
+
var _getOperationRootType = require("../utilities/getOperationRootType.js");
|
|
53
52
|
|
|
54
|
-
var
|
|
55
|
-
|
|
56
|
-
var _values = require("./values");
|
|
53
|
+
var _values = require("./values.js");
|
|
57
54
|
|
|
58
55
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
59
56
|
|
|
@@ -234,8 +231,6 @@ function executeOperation(exeContext, operation, rootValue) {
|
|
|
234
231
|
var path = undefined; // Errors from sub-fields of a NonNull type may propagate to the top level,
|
|
235
232
|
// at which point we still log the error and null the parent field, which
|
|
236
233
|
// in this case is the entire response.
|
|
237
|
-
//
|
|
238
|
-
// Similar to completeValueCatchingError.
|
|
239
234
|
|
|
240
235
|
try {
|
|
241
236
|
var result = operation.operation === 'mutation' ? executeFieldsSerially(exeContext, type, rootValue, path, fields) : executeFields(exeContext, type, rootValue, path, fields);
|
|
@@ -299,7 +294,7 @@ function executeFields(exeContext, parentType, sourceValue, path, fields) {
|
|
|
299
294
|
if (result !== undefined) {
|
|
300
295
|
results[responseName] = result;
|
|
301
296
|
|
|
302
|
-
if (
|
|
297
|
+
if ((0, _isPromise.default)(result)) {
|
|
303
298
|
containsPromise = true;
|
|
304
299
|
}
|
|
305
300
|
}
|
|
@@ -453,43 +448,10 @@ function resolveField(exeContext, parentType, source, fieldNodes, path) {
|
|
|
453
448
|
return;
|
|
454
449
|
}
|
|
455
450
|
|
|
451
|
+
var returnType = fieldDef.type;
|
|
456
452
|
var resolveFn = (_fieldDef$resolve = fieldDef.resolve) !== null && _fieldDef$resolve !== void 0 ? _fieldDef$resolve : exeContext.fieldResolver;
|
|
457
|
-
var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal
|
|
458
|
-
// or abrupt (error).
|
|
459
|
-
|
|
460
|
-
var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info);
|
|
461
|
-
return completeValueCatchingError(exeContext, fieldDef.type, fieldNodes, info, path, result);
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* @internal
|
|
465
|
-
*/
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {
|
|
469
|
-
// The resolve function's optional fourth argument is a collection of
|
|
470
|
-
// information about the current execution state.
|
|
471
|
-
return {
|
|
472
|
-
fieldName: fieldDef.name,
|
|
473
|
-
fieldNodes: fieldNodes,
|
|
474
|
-
returnType: fieldDef.type,
|
|
475
|
-
parentType: parentType,
|
|
476
|
-
path: path,
|
|
477
|
-
schema: exeContext.schema,
|
|
478
|
-
fragments: exeContext.fragments,
|
|
479
|
-
rootValue: exeContext.rootValue,
|
|
480
|
-
operation: exeContext.operation,
|
|
481
|
-
variableValues: exeContext.variableValues
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
/**
|
|
485
|
-
* Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
|
|
486
|
-
* function. Returns the result of resolveFn or the abrupt-return Error object.
|
|
487
|
-
*
|
|
488
|
-
* @internal
|
|
489
|
-
*/
|
|
490
|
-
|
|
453
|
+
var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal or abrupt (error).
|
|
491
454
|
|
|
492
|
-
function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info) {
|
|
493
455
|
try {
|
|
494
456
|
// Build a JS object of arguments from the field.arguments AST, using the
|
|
495
457
|
// variables scope to fulfill any variable references.
|
|
@@ -500,26 +462,6 @@ function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, s
|
|
|
500
462
|
|
|
501
463
|
var _contextValue = exeContext.contextValue;
|
|
502
464
|
var result = resolveFn(source, args, _contextValue, info);
|
|
503
|
-
return (0, _isPromise.default)(result) ? result.then(undefined, asErrorInstance) : result;
|
|
504
|
-
} catch (error) {
|
|
505
|
-
return asErrorInstance(error);
|
|
506
|
-
}
|
|
507
|
-
} // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a
|
|
508
|
-
// consistent Error interface.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
function asErrorInstance(error) {
|
|
512
|
-
if (error instanceof Error) {
|
|
513
|
-
return error;
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
return new Error('Unexpected error value: ' + (0, _inspect.default)(error));
|
|
517
|
-
} // This is a small wrapper around completeValue which detects and logs errors
|
|
518
|
-
// in the execution context.
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
function completeValueCatchingError(exeContext, returnType, fieldNodes, info, path, result) {
|
|
522
|
-
try {
|
|
523
465
|
var completed;
|
|
524
466
|
|
|
525
467
|
if ((0, _isPromise.default)(result)) {
|
|
@@ -533,21 +475,43 @@ function completeValueCatchingError(exeContext, returnType, fieldNodes, info, pa
|
|
|
533
475
|
if ((0, _isPromise.default)(completed)) {
|
|
534
476
|
// Note: we don't rely on a `catch` method, but we do expect "thenable"
|
|
535
477
|
// to take a second callback for the error case.
|
|
536
|
-
return completed.then(undefined, function (
|
|
537
|
-
|
|
478
|
+
return completed.then(undefined, function (rawError) {
|
|
479
|
+
var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(path));
|
|
480
|
+
return handleFieldError(error, returnType, exeContext);
|
|
538
481
|
});
|
|
539
482
|
}
|
|
540
483
|
|
|
541
484
|
return completed;
|
|
542
|
-
} catch (
|
|
543
|
-
|
|
485
|
+
} catch (rawError) {
|
|
486
|
+
var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(path));
|
|
487
|
+
return handleFieldError(error, returnType, exeContext);
|
|
544
488
|
}
|
|
545
489
|
}
|
|
490
|
+
/**
|
|
491
|
+
* @internal
|
|
492
|
+
*/
|
|
546
493
|
|
|
547
|
-
function handleFieldError(rawError, fieldNodes, path, returnType, exeContext) {
|
|
548
|
-
var error = (0, _locatedError.locatedError)(asErrorInstance(rawError), fieldNodes, (0, _Path.pathToArray)(path)); // If the field type is non-nullable, then it is resolved without any
|
|
549
|
-
// protection from errors, however it still properly locates the error.
|
|
550
494
|
|
|
495
|
+
function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {
|
|
496
|
+
// The resolve function's optional fourth argument is a collection of
|
|
497
|
+
// information about the current execution state.
|
|
498
|
+
return {
|
|
499
|
+
fieldName: fieldDef.name,
|
|
500
|
+
fieldNodes: fieldNodes,
|
|
501
|
+
returnType: fieldDef.type,
|
|
502
|
+
parentType: parentType,
|
|
503
|
+
path: path,
|
|
504
|
+
schema: exeContext.schema,
|
|
505
|
+
fragments: exeContext.fragments,
|
|
506
|
+
rootValue: exeContext.rootValue,
|
|
507
|
+
operation: exeContext.operation,
|
|
508
|
+
variableValues: exeContext.variableValues
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
function handleFieldError(error, returnType, exeContext) {
|
|
513
|
+
// If the field type is non-nullable, then it is resolved without any
|
|
514
|
+
// protection from errors, however it still properly locates the error.
|
|
551
515
|
if ((0, _definition.isNonNullType)(returnType)) {
|
|
552
516
|
throw error;
|
|
553
517
|
} // Otherwise, error protection is applied, logging the error and resolving
|
|
@@ -636,26 +600,47 @@ function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
|
|
|
636
600
|
|
|
637
601
|
|
|
638
602
|
function completeListValue(exeContext, returnType, fieldNodes, info, path, result) {
|
|
639
|
-
|
|
640
|
-
throw new _GraphQLError.GraphQLError("Expected Iterable, but did not find one for field \"".concat(info.parentType.name, ".").concat(info.fieldName, "\"."));
|
|
641
|
-
} // This is specified as a simple map, however we're optimizing the path
|
|
603
|
+
// This is specified as a simple map, however we're optimizing the path
|
|
642
604
|
// where the list contains no Promises by avoiding creating another Promise.
|
|
643
|
-
|
|
644
|
-
|
|
645
605
|
var itemType = returnType.ofType;
|
|
646
606
|
var containsPromise = false;
|
|
647
|
-
var completedResults = (0,
|
|
607
|
+
var completedResults = (0, _safeArrayFrom.default)(result, function (item, index) {
|
|
648
608
|
// No need to modify the info object containing the path,
|
|
649
609
|
// since from here on it is not ever accessed by resolver functions.
|
|
650
|
-
var
|
|
651
|
-
var completedItem = completeValueCatchingError(exeContext, itemType, fieldNodes, info, fieldPath, item);
|
|
610
|
+
var itemPath = (0, _Path.addPath)(path, index, undefined);
|
|
652
611
|
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
612
|
+
try {
|
|
613
|
+
var completedItem;
|
|
614
|
+
|
|
615
|
+
if ((0, _isPromise.default)(item)) {
|
|
616
|
+
completedItem = item.then(function (resolved) {
|
|
617
|
+
return completeValue(exeContext, itemType, fieldNodes, info, itemPath, resolved);
|
|
618
|
+
});
|
|
619
|
+
} else {
|
|
620
|
+
completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item);
|
|
621
|
+
}
|
|
656
622
|
|
|
657
|
-
|
|
623
|
+
if ((0, _isPromise.default)(completedItem)) {
|
|
624
|
+
containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect "thenable"
|
|
625
|
+
// to take a second callback for the error case.
|
|
626
|
+
|
|
627
|
+
return completedItem.then(undefined, function (rawError) {
|
|
628
|
+
var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(itemPath));
|
|
629
|
+
return handleFieldError(error, itemType, exeContext);
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
return completedItem;
|
|
634
|
+
} catch (rawError) {
|
|
635
|
+
var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(itemPath));
|
|
636
|
+
return handleFieldError(error, itemType, exeContext);
|
|
637
|
+
}
|
|
658
638
|
});
|
|
639
|
+
|
|
640
|
+
if (completedResults == null) {
|
|
641
|
+
throw new _GraphQLError.GraphQLError("Expected Iterable, but did not find one for field \"".concat(info.parentType.name, ".").concat(info.fieldName, "\"."));
|
|
642
|
+
}
|
|
643
|
+
|
|
659
644
|
return containsPromise ? Promise.all(completedResults) : completedResults;
|
|
660
645
|
}
|
|
661
646
|
/**
|
|
@@ -696,10 +681,25 @@ function completeAbstractValue(exeContext, returnType, fieldNodes, info, path, r
|
|
|
696
681
|
}
|
|
697
682
|
|
|
698
683
|
function ensureValidRuntimeType(runtimeTypeOrName, exeContext, returnType, fieldNodes, info, result) {
|
|
699
|
-
|
|
684
|
+
if (runtimeTypeOrName == null) {
|
|
685
|
+
throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" must resolve to an Object type at runtime for field \"").concat(info.parentType.name, ".").concat(info.fieldName, "\". Either the \"").concat(returnType.name, "\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function."), fieldNodes);
|
|
686
|
+
} // FIXME: temporary workaround until support for passing object types would be removed in v16.0.0
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
var runtimeTypeName = (0, _definition.isNamedType)(runtimeTypeOrName) ? runtimeTypeOrName.name : runtimeTypeOrName;
|
|
690
|
+
|
|
691
|
+
if (typeof runtimeTypeName !== 'string') {
|
|
692
|
+
throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" must resolve to an Object type at runtime for field \"").concat(info.parentType.name, ".").concat(info.fieldName, "\" with ") + "value ".concat((0, _inspect.default)(result), ", received \"").concat((0, _inspect.default)(runtimeTypeOrName), "\"."));
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
var runtimeType = exeContext.schema.getType(runtimeTypeName);
|
|
696
|
+
|
|
697
|
+
if (runtimeType == null) {
|
|
698
|
+
throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" was resolve to a type \"").concat(runtimeTypeName, "\" that does not exist inside schema."), fieldNodes);
|
|
699
|
+
}
|
|
700
700
|
|
|
701
701
|
if (!(0, _definition.isObjectType)(runtimeType)) {
|
|
702
|
-
throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\"
|
|
702
|
+
throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" was resolve to a non-object type \"").concat(runtimeTypeName, "\"."), fieldNodes);
|
|
703
703
|
}
|
|
704
704
|
|
|
705
705
|
if (!exeContext.schema.isSubType(returnType, runtimeType)) {
|
|
@@ -801,7 +801,7 @@ var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info
|
|
|
801
801
|
if ((0, _isPromise.default)(isTypeOfResult)) {
|
|
802
802
|
promisedIsTypeOfResults[i] = isTypeOfResult;
|
|
803
803
|
} else if (isTypeOfResult) {
|
|
804
|
-
return type;
|
|
804
|
+
return type.name;
|
|
805
805
|
}
|
|
806
806
|
}
|
|
807
807
|
}
|
|
@@ -810,7 +810,7 @@ var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info
|
|
|
810
810
|
return Promise.all(promisedIsTypeOfResults).then(function (isTypeOfResults) {
|
|
811
811
|
for (var _i9 = 0; _i9 < isTypeOfResults.length; _i9++) {
|
|
812
812
|
if (isTypeOfResults[_i9]) {
|
|
813
|
-
return possibleTypes[_i9];
|
|
813
|
+
return possibleTypes[_i9].name;
|
|
814
814
|
}
|
|
815
815
|
}
|
|
816
816
|
});
|