graphql 15.1.0 → 15.4.0
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 -12
- package/error/GraphQLError.js +5 -5
- package/error/GraphQLError.js.flow +5 -5
- package/error/GraphQLError.mjs +1 -1
- package/error/formatError.js +1 -1
- package/error/formatError.js.flow +2 -3
- 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 +11 -5
- package/error/locatedError.mjs +6 -4
- package/error/syntaxError.js +1 -1
- package/error/syntaxError.js.flow +1 -2
- package/execution/execute.d.ts +24 -16
- package/execution/execute.js +123 -105
- package/execution/execute.js.flow +169 -153
- package/execution/execute.mjs +101 -82
- package/execution/index.d.ts +2 -0
- package/execution/index.js +9 -3
- package/execution/index.js.flow +12 -3
- package/execution/index.mjs +1 -1
- package/execution/values.js +11 -11
- package/execution/values.js.flow +10 -14
- package/graphql.js +5 -5
- package/graphql.js.flow +9 -9
- package/index.d.ts +19 -1
- package/index.js +27 -9
- package/index.js.flow +10 -3
- package/index.mjs +4 -3
- package/jsutils/ObjMap.js.flow +0 -1
- package/jsutils/Path.d.ts +6 -1
- package/jsutils/Path.js +3 -2
- package/jsutils/Path.js.flow +3 -2
- package/jsutils/Path.mjs +3 -2
- 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.flow +2 -3
- package/jsutils/invariant.js.flow +0 -1
- package/jsutils/isAsyncIterable.js +19 -0
- package/jsutils/isAsyncIterable.js.flow +18 -0
- package/jsutils/isAsyncIterable.mjs +16 -0
- package/jsutils/isCollection.js +1 -1
- package/jsutils/isCollection.js.flow +0 -1
- package/jsutils/isObjectLike.js.flow +0 -1
- package/jsutils/isPromise.js.flow +0 -1
- package/jsutils/keyMap.js.flow +1 -2
- package/jsutils/keyValMap.js.flow +1 -2
- package/jsutils/mapValue.js +1 -1
- package/jsutils/mapValue.js.flow +1 -2
- package/jsutils/memoize3.js +2 -5
- package/jsutils/memoize3.js.flow +2 -5
- package/jsutils/memoize3.mjs +2 -5
- package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
- package/jsutils/printPathArray.js.flow +0 -1
- package/jsutils/promiseForObject.js.flow +1 -2
- package/jsutils/promiseReduce.js +1 -1
- package/jsutils/promiseReduce.js.flow +1 -1
- package/jsutils/promiseReduce.mjs +1 -1
- package/jsutils/suggestionList.js.flow +1 -2
- package/jsutils/toObjMap.js +1 -1
- package/jsutils/toObjMap.js.flow +5 -6
- package/language/ast.js +1 -1
- package/language/ast.js.flow +2 -3
- package/language/blockString.d.ts +1 -1
- package/language/blockString.js +53 -32
- package/language/blockString.js.flow +49 -34
- 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 +191 -186
- package/language/lexer.mjs +239 -180
- package/language/location.js.flow +1 -2
- package/language/parser.js +73 -68
- package/language/parser.js.flow +112 -106
- package/language/parser.mjs +66 -62
- package/language/predicates.js +1 -1
- package/language/predicates.js.flow +1 -2
- package/language/printLocation.js +1 -1
- package/language/printLocation.js.flow +4 -4
- package/language/printer.js +20 -13
- package/language/printer.js.flow +27 -25
- package/language/printer.mjs +18 -11
- package/language/source.d.ts +12 -6
- package/language/source.js +25 -9
- package/language/source.js.flow +25 -8
- package/language/source.mjs +19 -7
- package/language/tokenKind.js.flow +0 -1
- package/language/visitor.d.ts +3 -3
- package/language/visitor.js +5 -5
- package/language/visitor.js.flow +5 -5
- package/language/visitor.mjs +3 -3
- package/package.json +1 -1
- 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 +2 -3
- package/polyfills/objectEntries.mjs +1 -1
- package/polyfills/objectValues.js +1 -1
- package/polyfills/objectValues.js.flow +2 -3
- 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 +9 -10
- package/subscription/mapAsyncIterator.mjs +1 -1
- package/subscription/subscribe.js +61 -73
- package/subscription/subscribe.js.flow +74 -88
- package/subscription/subscribe.mjs +53 -65
- package/type/definition.d.ts +181 -31
- package/type/definition.js +37 -32
- package/type/definition.js.flow +66 -51
- package/type/definition.mjs +20 -18
- package/type/directives.d.ts +17 -3
- package/type/directives.js +17 -16
- package/type/directives.js.flow +20 -21
- package/type/directives.mjs +6 -5
- package/type/index.d.ts +12 -0
- package/type/index.js +6 -6
- package/type/index.js.flow +0 -1
- package/type/introspection.js +86 -68
- package/type/introspection.js.flow +85 -54
- package/type/introspection.mjs +79 -61
- package/type/scalars.js +9 -9
- package/type/scalars.js.flow +3 -3
- package/type/scalars.mjs +1 -1
- package/type/schema.d.ts +17 -4
- package/type/schema.js +13 -13
- package/type/schema.js.flow +18 -16
- package/type/schema.mjs +1 -1
- package/type/validate.js +52 -19
- package/type/validate.js.flow +67 -18
- package/type/validate.mjs +44 -10
- package/utilities/TypeInfo.js +7 -7
- package/utilities/TypeInfo.js.flow +16 -18
- package/utilities/TypeInfo.mjs +1 -1
- package/utilities/assertValidName.js +2 -2
- package/utilities/assertValidName.js.flow +0 -1
- package/utilities/astFromValue.js +10 -10
- package/utilities/astFromValue.js.flow +2 -3
- package/utilities/buildASTSchema.js +17 -27
- package/utilities/buildASTSchema.js.flow +11 -28
- package/utilities/buildASTSchema.mjs +11 -21
- package/utilities/buildClientSchema.js +14 -14
- package/utilities/buildClientSchema.js.flow +41 -29
- package/utilities/buildClientSchema.mjs +5 -5
- package/utilities/coerceInputValue.js +14 -14
- package/utilities/coerceInputValue.js.flow +7 -6
- package/utilities/coerceInputValue.mjs +2 -2
- package/utilities/concatAST.js +9 -8
- package/utilities/concatAST.js.flow +9 -9
- package/utilities/concatAST.mjs +9 -6
- package/utilities/extendSchema.js +26 -19
- package/utilities/extendSchema.js.flow +58 -45
- package/utilities/extendSchema.mjs +9 -2
- package/utilities/findBreakingChanges.js +9 -9
- package/utilities/findBreakingChanges.js.flow +12 -11
- package/utilities/findDeprecatedUsages.d.ts +9 -1
- package/utilities/findDeprecatedUsages.js +11 -27
- package/utilities/findDeprecatedUsages.js.flow +15 -44
- package/utilities/findDeprecatedUsages.mjs +11 -25
- package/utilities/getIntrospectionQuery.js.flow +2 -3
- package/utilities/getOperationAST.js +1 -1
- package/utilities/getOperationAST.js.flow +1 -5
- package/utilities/getOperationAST.mjs +1 -1
- package/utilities/getOperationRootType.js +1 -1
- package/utilities/getOperationRootType.js.flow +5 -6
- package/utilities/index.d.ts +4 -1
- package/utilities/index.js +22 -22
- package/utilities/index.js.flow +1 -2
- package/utilities/index.mjs +1 -1
- package/utilities/introspectionFromSchema.js +6 -8
- package/utilities/introspectionFromSchema.js.flow +10 -10
- package/utilities/introspectionFromSchema.mjs +3 -4
- package/utilities/lexicographicSortSchema.js +10 -8
- package/utilities/lexicographicSortSchema.js.flow +19 -12
- package/utilities/lexicographicSortSchema.mjs +3 -1
- package/utilities/printSchema.js +15 -16
- package/utilities/printSchema.js.flow +34 -25
- package/utilities/printSchema.mjs +6 -7
- package/utilities/separateOperations.js +2 -2
- package/utilities/separateOperations.js.flow +2 -6
- package/utilities/separateOperations.mjs +1 -1
- 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 +2 -4
- package/utilities/typeFromAST.js +6 -6
- package/utilities/typeFromAST.js.flow +11 -14
- package/utilities/typeFromAST.mjs +2 -2
- package/utilities/typedQueryDocumentNode.d.ts +20 -0
- package/utilities/valueFromAST.js +6 -6
- package/utilities/valueFromAST.js.flow +7 -5
- package/utilities/valueFromASTUntyped.js +4 -4
- package/utilities/valueFromASTUntyped.js.flow +2 -3
- package/validation/ValidationContext.d.ts +3 -0
- package/validation/ValidationContext.js +7 -3
- package/validation/ValidationContext.js.flow +28 -22
- package/validation/ValidationContext.mjs +4 -0
- package/validation/index.d.ts +4 -0
- package/validation/index.js +52 -36
- package/validation/index.js.flow +4 -1
- package/validation/index.mjs +4 -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 +2 -3
- package/validation/rules/FieldsOnCorrectTypeRule.js +5 -5
- package/validation/rules/FieldsOnCorrectTypeRule.js.flow +9 -8
- package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
- package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +2 -3
- package/validation/rules/KnownArgumentNamesRule.js +5 -5
- package/validation/rules/KnownArgumentNamesRule.js.flow +5 -5
- package/validation/rules/KnownDirectivesRule.js +6 -6
- package/validation/rules/KnownDirectivesRule.js.flow +10 -11
- package/validation/rules/KnownFragmentNamesRule.js +1 -1
- package/validation/rules/KnownFragmentNamesRule.js.flow +3 -3
- package/validation/rules/KnownTypeNamesRule.js +12 -10
- package/validation/rules/KnownTypeNamesRule.js.flow +14 -11
- package/validation/rules/KnownTypeNamesRule.mjs +6 -5
- package/validation/rules/LoneAnonymousOperationRule.js +2 -2
- package/validation/rules/LoneAnonymousOperationRule.js.flow +2 -3
- 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 +2 -3
- package/validation/rules/NoFragmentCyclesRule.js +1 -1
- package/validation/rules/NoFragmentCyclesRule.js.flow +4 -5
- package/validation/rules/NoUndefinedVariablesRule.js +1 -1
- package/validation/rules/NoUndefinedVariablesRule.js.flow +3 -3
- package/validation/rules/NoUnusedFragmentsRule.js +1 -1
- package/validation/rules/NoUnusedFragmentsRule.js.flow +3 -3
- package/validation/rules/NoUnusedVariablesRule.js +1 -1
- package/validation/rules/NoUnusedVariablesRule.js.flow +3 -3
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +29 -27
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
- package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
- package/validation/rules/PossibleFragmentSpreadsRule.js.flow +7 -4
- 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 +8 -6
- package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
- package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +7 -6
- package/validation/rules/ScalarLeafsRule.js +3 -3
- package/validation/rules/ScalarLeafsRule.js.flow +3 -4
- package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.js.flow +3 -4
- package/validation/rules/UniqueArgumentNamesRule.js +1 -1
- package/validation/rules/UniqueArgumentNamesRule.js.flow +2 -3
- package/validation/rules/UniqueDirectiveNames.js +1 -1
- package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
- package/validation/rules/UniqueDirectiveNamesRule.js +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.js.flow +2 -3
- package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
- package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +4 -5
- 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 +11 -4
- 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 +17 -6
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
- package/validation/rules/UniqueFragmentNamesRule.js +1 -1
- package/validation/rules/UniqueFragmentNamesRule.js.flow +3 -3
- package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.js.flow +3 -3
- package/validation/rules/UniqueOperationNamesRule.js +1 -1
- package/validation/rules/UniqueOperationNamesRule.js.flow +3 -3
- 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 +10 -4
- package/validation/rules/UniqueTypeNames.js +1 -1
- package/validation/rules/UniqueTypeNames.js.flow +0 -1
- package/validation/rules/UniqueTypeNamesRule.js +1 -1
- package/validation/rules/UniqueTypeNamesRule.js.flow +3 -4
- package/validation/rules/UniqueVariableNamesRule.js +1 -1
- package/validation/rules/UniqueVariableNamesRule.js.flow +3 -4
- package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
- package/validation/rules/ValuesOfCorrectTypeRule.js.flow +3 -4
- package/validation/rules/VariablesAreInputTypesRule.js +4 -4
- package/validation/rules/VariablesAreInputTypesRule.js.flow +3 -4
- package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
- package/validation/rules/VariablesInAllowedPositionRule.js.flow +6 -6
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +14 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +79 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +94 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +68 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +16 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +34 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +38 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +25 -0
- 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 -9
- package/version.js +2 -2
- package/version.js.flow +2 -3
- package/version.mjs +2 -2
- package/polyfills/flatMap.js +0 -30
- package/polyfills/flatMap.js.flow +0 -28
- package/polyfills/flatMap.mjs +0 -23
|
@@ -6,25 +6,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.subscribe = subscribe;
|
|
7
7
|
exports.createSourceEventStream = createSourceEventStream;
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _isAsyncIterable = _interopRequireDefault(require("../jsutils/isAsyncIterable.js"));
|
|
12
12
|
|
|
13
|
-
var _Path = require("../jsutils/Path");
|
|
13
|
+
var _Path = require("../jsutils/Path.js");
|
|
14
14
|
|
|
15
|
-
var _GraphQLError = require("../error/GraphQLError");
|
|
15
|
+
var _GraphQLError = require("../error/GraphQLError.js");
|
|
16
16
|
|
|
17
|
-
var _locatedError = require("../error/locatedError");
|
|
17
|
+
var _locatedError = require("../error/locatedError.js");
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _values = require("../execution/values.js");
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var _execute = require("../execution/execute.js");
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _getOperationRootType = require("../utilities/getOperationRootType.js");
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
var _mapAsyncIterator = _interopRequireDefault(require("./mapAsyncIterator.js"));
|
|
26
26
|
|
|
27
|
-
function
|
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
28
|
|
|
29
29
|
function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
|
|
30
30
|
/* eslint-enable no-redeclare */
|
|
@@ -89,7 +89,7 @@ function subscribeImpl(args) {
|
|
|
89
89
|
|
|
90
90
|
return sourcePromise.then(function (resultOrStream) {
|
|
91
91
|
return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used.
|
|
92
|
-
|
|
92
|
+
(0, _isAsyncIterable.default)(resultOrStream) ? (0, _mapAsyncIterator.default)(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream
|
|
93
93
|
);
|
|
94
94
|
});
|
|
95
95
|
}
|
|
@@ -127,78 +127,66 @@ function createSourceEventStream(schema, document, rootValue, contextValue, vari
|
|
|
127
127
|
// If arguments are missing or incorrectly typed, this is an internal
|
|
128
128
|
// developer mistake which should throw an early error.
|
|
129
129
|
(0, _execute.assertValidExecutionArguments)(schema, document, variableValues);
|
|
130
|
-
|
|
131
|
-
try {
|
|
132
|
-
var _fieldDef$subscribe;
|
|
133
|
-
|
|
130
|
+
return new Promise(function (resolve) {
|
|
134
131
|
// If a valid context cannot be created due to incorrect arguments,
|
|
135
132
|
// this will throw an error.
|
|
136
|
-
var exeContext = (0, _execute.buildExecutionContext)(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
var exeContext = (0, _execute.buildExecutionContext)(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
|
|
134
|
+
resolve( // Return early errors if execution context failed.
|
|
135
|
+
Array.isArray(exeContext) ? {
|
|
136
|
+
errors: exeContext
|
|
137
|
+
} : executeSubscription(exeContext));
|
|
138
|
+
}).catch(reportGraphQLError);
|
|
139
|
+
}
|
|
143
140
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
141
|
+
function executeSubscription(exeContext) {
|
|
142
|
+
var schema = exeContext.schema,
|
|
143
|
+
operation = exeContext.operation,
|
|
144
|
+
variableValues = exeContext.variableValues,
|
|
145
|
+
rootValue = exeContext.rootValue;
|
|
146
|
+
var type = (0, _getOperationRootType.getOperationRootType)(schema, operation);
|
|
147
|
+
var fields = (0, _execute.collectFields)(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null));
|
|
148
|
+
var responseNames = Object.keys(fields);
|
|
149
|
+
var responseName = responseNames[0];
|
|
150
|
+
var fieldNodes = fields[responseName];
|
|
151
|
+
var fieldNode = fieldNodes[0];
|
|
152
|
+
var fieldName = fieldNode.name.value;
|
|
153
|
+
var fieldDef = (0, _execute.getFieldDef)(schema, type, fieldName);
|
|
154
|
+
|
|
155
|
+
if (!fieldDef) {
|
|
156
|
+
throw new _GraphQLError.GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes);
|
|
157
|
+
}
|
|
157
158
|
|
|
159
|
+
var path = (0, _Path.addPath)(undefined, responseName, type.name);
|
|
160
|
+
var info = (0, _execute.buildResolveInfo)(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type.
|
|
158
161
|
|
|
159
|
-
|
|
160
|
-
var
|
|
161
|
-
var info = (0, _execute.buildResolveInfo)(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the "ResolveFieldEventStream"
|
|
162
|
-
// algorithm from GraphQL specification. It differs from
|
|
163
|
-
// "ResolveFieldValue" due to providing a different `resolveFn`.
|
|
162
|
+
return new Promise(function (resolveResult) {
|
|
163
|
+
var _fieldDef$subscribe;
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
// Implements the "ResolveFieldEventStream" algorithm from GraphQL specification.
|
|
166
|
+
// It differs from "ResolveFieldValue" due to providing a different `resolveFn`.
|
|
167
|
+
// Build a JS object of arguments from the field.arguments AST, using the
|
|
168
|
+
// variables scope to fulfill any variable references.
|
|
169
|
+
var args = (0, _values.getArgumentValues)(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that
|
|
170
|
+
// is provided to every resolve function within an execution. It is commonly
|
|
171
|
+
// used to represent an authenticated user, or request-specific caches.
|
|
166
172
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (eventStream instanceof Error) {
|
|
170
|
-
return {
|
|
171
|
-
errors: [(0, _locatedError.locatedError)(eventStream, fieldNodes, (0, _Path.pathToArray)(path))]
|
|
172
|
-
};
|
|
173
|
-
} // Assert field returned an event stream, otherwise yield an error.
|
|
173
|
+
var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an
|
|
174
|
+
// AsyncIterable yielding raw payloads.
|
|
174
175
|
|
|
176
|
+
var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;
|
|
177
|
+
resolveResult(resolveFn(rootValue, args, contextValue, info));
|
|
178
|
+
}).then(function (eventStream) {
|
|
179
|
+
if (eventStream instanceof Error) {
|
|
180
|
+
throw (0, _locatedError.locatedError)(eventStream, fieldNodes, (0, _Path.pathToArray)(path));
|
|
181
|
+
} // Assert field returned an event stream, otherwise yield an error.
|
|
175
182
|
|
|
176
|
-
if (isAsyncIterable(eventStream)) {
|
|
177
|
-
// Note: isAsyncIterable above ensures this will be correct.
|
|
178
|
-
return eventStream;
|
|
179
|
-
}
|
|
180
183
|
|
|
184
|
+
if (!(0, _isAsyncIterable.default)(eventStream)) {
|
|
181
185
|
throw new Error('Subscription field must return Async Iterable. ' + "Received: ".concat((0, _inspect.default)(eventStream), "."));
|
|
182
|
-
}
|
|
183
|
-
} catch (error) {
|
|
184
|
-
// As with reportGraphQLError above, if the error is a GraphQLError, report
|
|
185
|
-
// it as an ExecutionResult; otherwise treat it as a system-class error and
|
|
186
|
-
// re-throw it.
|
|
187
|
-
return error instanceof _GraphQLError.GraphQLError ? Promise.resolve({
|
|
188
|
-
errors: [error]
|
|
189
|
-
}) : Promise.reject(error);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Returns true if the provided object implements the AsyncIterator protocol via
|
|
194
|
-
* either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method.
|
|
195
|
-
*/
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
function isAsyncIterable(maybeAsyncIterable) {
|
|
199
|
-
if (maybeAsyncIterable == null || _typeof(maybeAsyncIterable) !== 'object') {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
186
|
+
}
|
|
202
187
|
|
|
203
|
-
|
|
188
|
+
return eventStream;
|
|
189
|
+
}, function (error) {
|
|
190
|
+
throw (0, _locatedError.locatedError)(error, fieldNodes, (0, _Path.pathToArray)(path));
|
|
191
|
+
});
|
|
204
192
|
}
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
|
|
3
|
-
import { SYMBOL_ASYNC_ITERATOR } from '../polyfills/symbols';
|
|
4
|
-
|
|
5
2
|
import inspect from '../jsutils/inspect';
|
|
3
|
+
import isAsyncIterable from '../jsutils/isAsyncIterable';
|
|
6
4
|
import { addPath, pathToArray } from '../jsutils/Path';
|
|
7
5
|
|
|
8
6
|
import { GraphQLError } from '../error/GraphQLError';
|
|
9
7
|
import { locatedError } from '../error/locatedError';
|
|
10
8
|
|
|
11
|
-
import {
|
|
9
|
+
import type { DocumentNode } from '../language/ast';
|
|
12
10
|
|
|
11
|
+
import type { ExecutionResult, ExecutionContext } from '../execution/execute';
|
|
12
|
+
import { getArgumentValues } from '../execution/values';
|
|
13
13
|
import {
|
|
14
|
-
type ExecutionResult,
|
|
15
14
|
assertValidExecutionArguments,
|
|
16
15
|
buildExecutionContext,
|
|
17
16
|
buildResolveInfo,
|
|
18
17
|
collectFields,
|
|
19
18
|
execute,
|
|
20
19
|
getFieldDef,
|
|
21
|
-
resolveFieldValueOrError,
|
|
22
20
|
} from '../execution/execute';
|
|
23
21
|
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
22
|
+
import type { GraphQLSchema } from '../type/schema';
|
|
23
|
+
import type { GraphQLFieldResolver } from '../type/definition';
|
|
26
24
|
|
|
27
25
|
import { getOperationRootType } from '../utilities/getOperationRootType';
|
|
28
26
|
|
|
@@ -63,7 +61,7 @@ export type SubscriptionArgs = {|
|
|
|
63
61
|
declare function subscribe(
|
|
64
62
|
SubscriptionArgs,
|
|
65
63
|
..._: []
|
|
66
|
-
): Promise<
|
|
64
|
+
): Promise<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult>;
|
|
67
65
|
/* eslint-disable no-redeclare */
|
|
68
66
|
declare function subscribe(
|
|
69
67
|
schema: GraphQLSchema,
|
|
@@ -106,7 +104,7 @@ export function subscribe(
|
|
|
106
104
|
* an ExecutionResult, containing only errors and no data. Otherwise treat the
|
|
107
105
|
* error as a system-class error and re-throw it.
|
|
108
106
|
*/
|
|
109
|
-
function reportGraphQLError(error) {
|
|
107
|
+
function reportGraphQLError(error: mixed): ExecutionResult {
|
|
110
108
|
if (error instanceof GraphQLError) {
|
|
111
109
|
return { errors: [error] };
|
|
112
110
|
}
|
|
@@ -115,7 +113,7 @@ function reportGraphQLError(error) {
|
|
|
115
113
|
|
|
116
114
|
function subscribeImpl(
|
|
117
115
|
args: SubscriptionArgs,
|
|
118
|
-
): Promise<
|
|
116
|
+
): Promise<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult> {
|
|
119
117
|
const {
|
|
120
118
|
schema,
|
|
121
119
|
document,
|
|
@@ -160,7 +158,7 @@ function subscribeImpl(
|
|
|
160
158
|
// Note: Flow can't refine isAsyncIterable, so explicit casts are used.
|
|
161
159
|
isAsyncIterable(resultOrStream)
|
|
162
160
|
? mapAsyncIterator(
|
|
163
|
-
|
|
161
|
+
resultOrStream,
|
|
164
162
|
mapSourceToResponse,
|
|
165
163
|
reportGraphQLError,
|
|
166
164
|
)
|
|
@@ -209,7 +207,7 @@ export function createSourceEventStream(
|
|
|
209
207
|
// developer mistake which should throw an early error.
|
|
210
208
|
assertValidExecutionArguments(schema, document, variableValues);
|
|
211
209
|
|
|
212
|
-
|
|
210
|
+
return new Promise((resolve) => {
|
|
213
211
|
// If a valid context cannot be created due to incorrect arguments,
|
|
214
212
|
// this will throw an error.
|
|
215
213
|
const exeContext = buildExecutionContext(
|
|
@@ -222,91 +220,79 @@ export function createSourceEventStream(
|
|
|
222
220
|
fieldResolver,
|
|
223
221
|
);
|
|
224
222
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
const type = getOperationRootType(schema, exeContext.operation);
|
|
231
|
-
const fields = collectFields(
|
|
232
|
-
exeContext,
|
|
233
|
-
type,
|
|
234
|
-
exeContext.operation.selectionSet,
|
|
235
|
-
Object.create(null),
|
|
236
|
-
Object.create(null),
|
|
223
|
+
resolve(
|
|
224
|
+
// Return early errors if execution context failed.
|
|
225
|
+
Array.isArray(exeContext)
|
|
226
|
+
? { errors: exeContext }
|
|
227
|
+
: executeSubscription(exeContext),
|
|
237
228
|
);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
const fieldNodes = fields[responseName];
|
|
241
|
-
const fieldNode = fieldNodes[0];
|
|
242
|
-
const fieldName = fieldNode.name.value;
|
|
243
|
-
const fieldDef = getFieldDef(schema, type, fieldName);
|
|
229
|
+
}).catch(reportGraphQLError);
|
|
230
|
+
}
|
|
244
231
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
232
|
+
function executeSubscription(
|
|
233
|
+
exeContext: ExecutionContext,
|
|
234
|
+
): Promise<AsyncIterable<mixed>> {
|
|
235
|
+
const { schema, operation, variableValues, rootValue } = exeContext;
|
|
236
|
+
const type = getOperationRootType(schema, operation);
|
|
237
|
+
const fields = collectFields(
|
|
238
|
+
exeContext,
|
|
239
|
+
type,
|
|
240
|
+
operation.selectionSet,
|
|
241
|
+
Object.create(null),
|
|
242
|
+
Object.create(null),
|
|
243
|
+
);
|
|
244
|
+
const responseNames = Object.keys(fields);
|
|
245
|
+
const responseName = responseNames[0];
|
|
246
|
+
const fieldNodes = fields[responseName];
|
|
247
|
+
const fieldNode = fieldNodes[0];
|
|
248
|
+
const fieldName = fieldNode.name.value;
|
|
249
|
+
const fieldDef = getFieldDef(schema, type, fieldName);
|
|
251
250
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
if (!fieldDef) {
|
|
252
|
+
throw new GraphQLError(
|
|
253
|
+
`The subscription field "${fieldName}" is not defined.`,
|
|
254
|
+
fieldNodes,
|
|
255
|
+
);
|
|
256
|
+
}
|
|
255
257
|
|
|
256
|
-
|
|
258
|
+
const path = addPath(undefined, responseName, type.name);
|
|
259
|
+
const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path);
|
|
257
260
|
|
|
258
|
-
|
|
261
|
+
// Coerce to Promise for easier error handling and consistent return type.
|
|
262
|
+
return new Promise((resolveResult) => {
|
|
263
|
+
// Implements the "ResolveFieldEventStream" algorithm from GraphQL specification.
|
|
264
|
+
// It differs from "ResolveFieldValue" due to providing a different `resolveFn`.
|
|
259
265
|
|
|
260
|
-
//
|
|
261
|
-
//
|
|
262
|
-
|
|
263
|
-
const result = resolveFieldValueOrError(
|
|
264
|
-
exeContext,
|
|
265
|
-
fieldDef,
|
|
266
|
-
fieldNodes,
|
|
267
|
-
resolveFn,
|
|
268
|
-
rootValue,
|
|
269
|
-
info,
|
|
270
|
-
);
|
|
266
|
+
// Build a JS object of arguments from the field.arguments AST, using the
|
|
267
|
+
// variables scope to fulfill any variable references.
|
|
268
|
+
const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues);
|
|
271
269
|
|
|
272
|
-
//
|
|
273
|
-
|
|
274
|
-
|
|
270
|
+
// The resolve function's optional third argument is a context value that
|
|
271
|
+
// is provided to every resolve function within an execution. It is commonly
|
|
272
|
+
// used to represent an authenticated user, or request-specific caches.
|
|
273
|
+
const contextValue = exeContext.contextValue;
|
|
274
|
+
|
|
275
|
+
// Call the `subscribe()` resolver or the default resolver to produce an
|
|
276
|
+
// AsyncIterable yielding raw payloads.
|
|
277
|
+
const resolveFn = fieldDef.subscribe ?? exeContext.fieldResolver;
|
|
278
|
+
resolveResult(resolveFn(rootValue, args, contextValue, info));
|
|
279
|
+
}).then(
|
|
280
|
+
(eventStream) => {
|
|
275
281
|
if (eventStream instanceof Error) {
|
|
276
|
-
|
|
277
|
-
errors: [locatedError(eventStream, fieldNodes, pathToArray(path))],
|
|
278
|
-
};
|
|
282
|
+
throw locatedError(eventStream, fieldNodes, pathToArray(path));
|
|
279
283
|
}
|
|
280
284
|
|
|
281
285
|
// Assert field returned an event stream, otherwise yield an error.
|
|
282
|
-
if (isAsyncIterable(eventStream)) {
|
|
283
|
-
|
|
284
|
-
|
|
286
|
+
if (!isAsyncIterable(eventStream)) {
|
|
287
|
+
throw new Error(
|
|
288
|
+
'Subscription field must return Async Iterable. ' +
|
|
289
|
+
`Received: ${inspect(eventStream)}.`,
|
|
290
|
+
);
|
|
285
291
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
} catch (error) {
|
|
293
|
-
// As with reportGraphQLError above, if the error is a GraphQLError, report
|
|
294
|
-
// it as an ExecutionResult; otherwise treat it as a system-class error and
|
|
295
|
-
// re-throw it.
|
|
296
|
-
return error instanceof GraphQLError
|
|
297
|
-
? Promise.resolve({ errors: [error] })
|
|
298
|
-
: Promise.reject(error);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* Returns true if the provided object implements the AsyncIterator protocol via
|
|
304
|
-
* either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method.
|
|
305
|
-
*/
|
|
306
|
-
function isAsyncIterable(maybeAsyncIterable: mixed): boolean {
|
|
307
|
-
if (maybeAsyncIterable == null || typeof maybeAsyncIterable !== 'object') {
|
|
308
|
-
return false;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
return typeof maybeAsyncIterable[SYMBOL_ASYNC_ITERATOR] === 'function';
|
|
292
|
+
return eventStream;
|
|
293
|
+
},
|
|
294
|
+
(error) => {
|
|
295
|
+
throw locatedError(error, fieldNodes, pathToArray(path));
|
|
296
|
+
},
|
|
297
|
+
);
|
|
312
298
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
-
|
|
3
|
-
import { SYMBOL_ASYNC_ITERATOR } from "../polyfills/symbols.mjs";
|
|
4
1
|
import inspect from "../jsutils/inspect.mjs";
|
|
2
|
+
import isAsyncIterable from "../jsutils/isAsyncIterable.mjs";
|
|
5
3
|
import { addPath, pathToArray } from "../jsutils/Path.mjs";
|
|
6
4
|
import { GraphQLError } from "../error/GraphQLError.mjs";
|
|
7
5
|
import { locatedError } from "../error/locatedError.mjs";
|
|
8
|
-
import {
|
|
6
|
+
import { getArgumentValues } from "../execution/values.mjs";
|
|
7
|
+
import { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef } from "../execution/execute.mjs";
|
|
9
8
|
import { getOperationRootType } from "../utilities/getOperationRootType.mjs";
|
|
10
9
|
import mapAsyncIterator from "./mapAsyncIterator.mjs";
|
|
11
10
|
export function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
|
|
@@ -108,77 +107,66 @@ export function createSourceEventStream(schema, document, rootValue, contextValu
|
|
|
108
107
|
// If arguments are missing or incorrectly typed, this is an internal
|
|
109
108
|
// developer mistake which should throw an early error.
|
|
110
109
|
assertValidExecutionArguments(schema, document, variableValues);
|
|
111
|
-
|
|
112
|
-
try {
|
|
113
|
-
var _fieldDef$subscribe;
|
|
114
|
-
|
|
110
|
+
return new Promise(function (resolve) {
|
|
115
111
|
// If a valid context cannot be created due to incorrect arguments,
|
|
116
112
|
// this will throw an error.
|
|
117
|
-
var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
113
|
+
var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
|
|
114
|
+
resolve( // Return early errors if execution context failed.
|
|
115
|
+
Array.isArray(exeContext) ? {
|
|
116
|
+
errors: exeContext
|
|
117
|
+
} : executeSubscription(exeContext));
|
|
118
|
+
}).catch(reportGraphQLError);
|
|
119
|
+
}
|
|
124
120
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
121
|
+
function executeSubscription(exeContext) {
|
|
122
|
+
var schema = exeContext.schema,
|
|
123
|
+
operation = exeContext.operation,
|
|
124
|
+
variableValues = exeContext.variableValues,
|
|
125
|
+
rootValue = exeContext.rootValue;
|
|
126
|
+
var type = getOperationRootType(schema, operation);
|
|
127
|
+
var fields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null));
|
|
128
|
+
var responseNames = Object.keys(fields);
|
|
129
|
+
var responseName = responseNames[0];
|
|
130
|
+
var fieldNodes = fields[responseName];
|
|
131
|
+
var fieldNode = fieldNodes[0];
|
|
132
|
+
var fieldName = fieldNode.name.value;
|
|
133
|
+
var fieldDef = getFieldDef(schema, type, fieldName);
|
|
134
|
+
|
|
135
|
+
if (!fieldDef) {
|
|
136
|
+
throw new GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes);
|
|
137
|
+
}
|
|
138
138
|
|
|
139
|
+
var path = addPath(undefined, responseName, type.name);
|
|
140
|
+
var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type.
|
|
139
141
|
|
|
140
|
-
|
|
141
|
-
var
|
|
142
|
-
var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the "ResolveFieldEventStream"
|
|
143
|
-
// algorithm from GraphQL specification. It differs from
|
|
144
|
-
// "ResolveFieldValue" due to providing a different `resolveFn`.
|
|
142
|
+
return new Promise(function (resolveResult) {
|
|
143
|
+
var _fieldDef$subscribe;
|
|
145
144
|
|
|
146
|
-
|
|
145
|
+
// Implements the "ResolveFieldEventStream" algorithm from GraphQL specification.
|
|
146
|
+
// It differs from "ResolveFieldValue" due to providing a different `resolveFn`.
|
|
147
|
+
// Build a JS object of arguments from the field.arguments AST, using the
|
|
148
|
+
// variables scope to fulfill any variable references.
|
|
149
|
+
var args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that
|
|
150
|
+
// is provided to every resolve function within an execution. It is commonly
|
|
151
|
+
// used to represent an authenticated user, or request-specific caches.
|
|
147
152
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (eventStream instanceof Error) {
|
|
151
|
-
return {
|
|
152
|
-
errors: [locatedError(eventStream, fieldNodes, pathToArray(path))]
|
|
153
|
-
};
|
|
154
|
-
} // Assert field returned an event stream, otherwise yield an error.
|
|
153
|
+
var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an
|
|
154
|
+
// AsyncIterable yielding raw payloads.
|
|
155
155
|
|
|
156
|
+
var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;
|
|
157
|
+
resolveResult(resolveFn(rootValue, args, contextValue, info));
|
|
158
|
+
}).then(function (eventStream) {
|
|
159
|
+
if (eventStream instanceof Error) {
|
|
160
|
+
throw locatedError(eventStream, fieldNodes, pathToArray(path));
|
|
161
|
+
} // Assert field returned an event stream, otherwise yield an error.
|
|
156
162
|
|
|
157
|
-
if (isAsyncIterable(eventStream)) {
|
|
158
|
-
// Note: isAsyncIterable above ensures this will be correct.
|
|
159
|
-
return eventStream;
|
|
160
|
-
}
|
|
161
163
|
|
|
164
|
+
if (!isAsyncIterable(eventStream)) {
|
|
162
165
|
throw new Error('Subscription field must return Async Iterable. ' + "Received: ".concat(inspect(eventStream), "."));
|
|
163
|
-
}
|
|
164
|
-
} catch (error) {
|
|
165
|
-
// As with reportGraphQLError above, if the error is a GraphQLError, report
|
|
166
|
-
// it as an ExecutionResult; otherwise treat it as a system-class error and
|
|
167
|
-
// re-throw it.
|
|
168
|
-
return error instanceof GraphQLError ? Promise.resolve({
|
|
169
|
-
errors: [error]
|
|
170
|
-
}) : Promise.reject(error);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Returns true if the provided object implements the AsyncIterator protocol via
|
|
175
|
-
* either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method.
|
|
176
|
-
*/
|
|
177
|
-
|
|
178
|
-
function isAsyncIterable(maybeAsyncIterable) {
|
|
179
|
-
if (maybeAsyncIterable == null || _typeof(maybeAsyncIterable) !== 'object') {
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
166
|
+
}
|
|
182
167
|
|
|
183
|
-
|
|
168
|
+
return eventStream;
|
|
169
|
+
}, function (error) {
|
|
170
|
+
throw locatedError(error, fieldNodes, pathToArray(path));
|
|
171
|
+
});
|
|
184
172
|
}
|