@graphql-tools/executor
Advanced tools
Comparing version 1.2.1 to 1.2.2-alpha-20240308131035-b93681813190312fb0bda74e0b88fce1034edeea
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.isIncrementalResult = exports.getFieldDef = exports.flattenIncrementalResults = exports.subscribe = exports.defaultFieldResolver = exports.defaultTypeResolver = exports.buildResolveInfo = exports.buildExecutionContext = exports.getFragmentsFromDocument = exports.assertValidExecutionArguments = exports.executeSync = exports.execute = void 0; | ||
exports.isIncrementalResult = exports.getFieldDef = exports.createSourceEventStream = exports.flattenIncrementalResults = exports.subscribe = exports.defaultFieldResolver = exports.defaultTypeResolver = exports.buildResolveInfo = exports.buildExecutionContext = exports.getFragmentsFromDocument = exports.assertValidExecutionArguments = exports.executeSync = exports.execute = void 0; | ||
const graphql_1 = require("graphql"); | ||
@@ -869,12 +869,56 @@ const value_or_promise_1 = require("value-or-promise"); | ||
// "ExecuteQuery" algorithm, for which `execute` is also used. | ||
return (0, flattenAsyncIterable_js_1.flattenAsyncIterable)((0, utils_1.mapAsyncIterator)(resultOrStream[Symbol.asyncIterator](), async (payload) => ensureAsyncIterable(await executeImpl(buildPerEventExecutionContext(exeContext, payload)), exeContext.signal), async function* (error) { | ||
const wrappedError = (0, utils_1.createGraphQLError)(error.message, { | ||
originalError: error, | ||
nodes: [exeContext.operation], | ||
}); | ||
yield { | ||
errors: [wrappedError], | ||
return (0, flattenAsyncIterable_js_1.flattenAsyncIterable)((0, utils_1.mapAsyncIterator)(resultOrStream[Symbol.asyncIterator](), async (payload) => ensureAsyncIterable(await executeImpl(buildPerEventExecutionContext(exeContext, payload))))); | ||
} | ||
/** | ||
* Implements the "CreateSourceEventStream" algorithm described in the | ||
* GraphQL specification, resolving the subscription source event stream. | ||
* | ||
* Returns a Promise which resolves to either an AsyncIterable (if successful) | ||
* or an ExecutionResult (error). The promise will be rejected if the schema or | ||
* other arguments to this function are invalid, or if the resolved event stream | ||
* is not an async iterable. | ||
* | ||
* If the client-provided arguments to this function do not result in a | ||
* compliant subscription, a GraphQL Response (ExecutionResult) with | ||
* descriptive errors and no data will be returned. | ||
* | ||
* If the the source stream could not be created due to faulty subscription | ||
* resolver logic or underlying systems, the promise will resolve to a single | ||
* ExecutionResult containing `errors` and no `data`. | ||
* | ||
* If the operation succeeded, the promise resolves to the AsyncIterable for the | ||
* event stream returned by the resolver. | ||
* | ||
* A Source Event Stream represents a sequence of events, each of which triggers | ||
* a GraphQL execution for that event. | ||
* | ||
* This may be useful when hosting the stateful subscription service in a | ||
* different process or machine than the stateless GraphQL execution engine, | ||
* or otherwise separating these two steps. For more on this, see the | ||
* "Supporting Subscriptions at Scale" information in the GraphQL specification. | ||
*/ | ||
function createSourceEventStream(args) { | ||
// If a valid execution context cannot be created due to incorrect arguments, | ||
// a "Response" with only errors is returned. | ||
const exeContext = buildExecutionContext(args); | ||
// Return early errors if execution context failed. | ||
if (!('schema' in exeContext)) { | ||
return { | ||
errors: exeContext.map(e => { | ||
Object.defineProperty(e, 'extensions', { | ||
value: { | ||
...e.extensions, | ||
http: { | ||
...e.extensions?.['http'], | ||
status: 400, | ||
}, | ||
}, | ||
}); | ||
return e; | ||
}), | ||
}; | ||
})); | ||
} | ||
return createSourceEventStreamImpl(exeContext); | ||
} | ||
exports.createSourceEventStream = createSourceEventStream; | ||
function createSourceEventStreamImpl(exeContext) { | ||
@@ -881,0 +925,0 @@ try { |
@@ -857,11 +857,54 @@ import { assertValidSchema, getDirectiveValues, GraphQLError, isAbstractType, isLeafType, isListType, isNonNullType, isObjectType, Kind, locatedError, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, } from 'graphql'; | ||
// "ExecuteQuery" algorithm, for which `execute` is also used. | ||
return flattenAsyncIterable(mapAsyncIterator(resultOrStream[Symbol.asyncIterator](), async (payload) => ensureAsyncIterable(await executeImpl(buildPerEventExecutionContext(exeContext, payload)), exeContext.signal), async function* (error) { | ||
const wrappedError = createGraphQLError(error.message, { | ||
originalError: error, | ||
nodes: [exeContext.operation], | ||
}); | ||
yield { | ||
errors: [wrappedError], | ||
return flattenAsyncIterable(mapAsyncIterator(resultOrStream[Symbol.asyncIterator](), async (payload) => ensureAsyncIterable(await executeImpl(buildPerEventExecutionContext(exeContext, payload))))); | ||
} | ||
/** | ||
* Implements the "CreateSourceEventStream" algorithm described in the | ||
* GraphQL specification, resolving the subscription source event stream. | ||
* | ||
* Returns a Promise which resolves to either an AsyncIterable (if successful) | ||
* or an ExecutionResult (error). The promise will be rejected if the schema or | ||
* other arguments to this function are invalid, or if the resolved event stream | ||
* is not an async iterable. | ||
* | ||
* If the client-provided arguments to this function do not result in a | ||
* compliant subscription, a GraphQL Response (ExecutionResult) with | ||
* descriptive errors and no data will be returned. | ||
* | ||
* If the the source stream could not be created due to faulty subscription | ||
* resolver logic or underlying systems, the promise will resolve to a single | ||
* ExecutionResult containing `errors` and no `data`. | ||
* | ||
* If the operation succeeded, the promise resolves to the AsyncIterable for the | ||
* event stream returned by the resolver. | ||
* | ||
* A Source Event Stream represents a sequence of events, each of which triggers | ||
* a GraphQL execution for that event. | ||
* | ||
* This may be useful when hosting the stateful subscription service in a | ||
* different process or machine than the stateless GraphQL execution engine, | ||
* or otherwise separating these two steps. For more on this, see the | ||
* "Supporting Subscriptions at Scale" information in the GraphQL specification. | ||
*/ | ||
export function createSourceEventStream(args) { | ||
// If a valid execution context cannot be created due to incorrect arguments, | ||
// a "Response" with only errors is returned. | ||
const exeContext = buildExecutionContext(args); | ||
// Return early errors if execution context failed. | ||
if (!('schema' in exeContext)) { | ||
return { | ||
errors: exeContext.map(e => { | ||
Object.defineProperty(e, 'extensions', { | ||
value: { | ||
...e.extensions, | ||
http: { | ||
...e.extensions?.['http'], | ||
status: 400, | ||
}, | ||
}, | ||
}); | ||
return e; | ||
}), | ||
}; | ||
})); | ||
} | ||
return createSourceEventStreamImpl(exeContext); | ||
} | ||
@@ -868,0 +911,0 @@ function createSourceEventStreamImpl(exeContext) { |
{ | ||
"name": "@graphql-tools/executor", | ||
"version": "1.2.1", | ||
"version": "1.2.2-alpha-20240308131035-b93681813190312fb0bda74e0b88fce1034edeea", | ||
"sideEffects": false, | ||
@@ -5,0 +5,0 @@ "peerDependencies": { |
@@ -208,2 +208,31 @@ import { DocumentNode, FieldNode, FragmentDefinitionNode, GraphQLError, GraphQLField, GraphQLFieldResolver, GraphQLFormattedError, GraphQLObjectType, GraphQLResolveInfo, GraphQLSchema, GraphQLTypeResolver, OperationDefinitionNode } from 'graphql'; | ||
export declare function flattenIncrementalResults<TData>(incrementalResults: IncrementalExecutionResults<TData>, signal?: AbortSignal): AsyncGenerator<SubsequentIncrementalExecutionResult<TData, Record<string, unknown>>, void, void>; | ||
/** | ||
* Implements the "CreateSourceEventStream" algorithm described in the | ||
* GraphQL specification, resolving the subscription source event stream. | ||
* | ||
* Returns a Promise which resolves to either an AsyncIterable (if successful) | ||
* or an ExecutionResult (error). The promise will be rejected if the schema or | ||
* other arguments to this function are invalid, or if the resolved event stream | ||
* is not an async iterable. | ||
* | ||
* If the client-provided arguments to this function do not result in a | ||
* compliant subscription, a GraphQL Response (ExecutionResult) with | ||
* descriptive errors and no data will be returned. | ||
* | ||
* If the the source stream could not be created due to faulty subscription | ||
* resolver logic or underlying systems, the promise will resolve to a single | ||
* ExecutionResult containing `errors` and no `data`. | ||
* | ||
* If the operation succeeded, the promise resolves to the AsyncIterable for the | ||
* event stream returned by the resolver. | ||
* | ||
* A Source Event Stream represents a sequence of events, each of which triggers | ||
* a GraphQL execution for that event. | ||
* | ||
* This may be useful when hosting the stateful subscription service in a | ||
* different process or machine than the stateless GraphQL execution engine, | ||
* or otherwise separating these two steps. For more on this, see the | ||
* "Supporting Subscriptions at Scale" information in the GraphQL specification. | ||
*/ | ||
export declare function createSourceEventStream(args: ExecutionArgs): MaybePromise<AsyncIterable<unknown> | SingularExecutionResult>; | ||
declare class DeferredFragmentRecord { | ||
@@ -210,0 +239,0 @@ type: 'defer'; |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
171138
3487
2