diff options
author | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
commit | 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch) | |
tree | 75be5fba4368472fb11c8015aee026b2b9a71888 /school/node_modules/graphql/subscription | |
parent | 8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff) | |
download | pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2 pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip |
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'school/node_modules/graphql/subscription')
12 files changed, 0 insertions, 1020 deletions
diff --git a/school/node_modules/graphql/subscription/index.d.ts b/school/node_modules/graphql/subscription/index.d.ts deleted file mode 100644 index ba8835f..0000000 --- a/school/node_modules/graphql/subscription/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { - subscribe, - createSourceEventStream, - SubscriptionArgs, -} from './subscribe'; diff --git a/school/node_modules/graphql/subscription/index.js b/school/node_modules/graphql/subscription/index.js deleted file mode 100644 index 845d944..0000000 --- a/school/node_modules/graphql/subscription/index.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "subscribe", { - enumerable: true, - get: function get() { - return _subscribe.subscribe; - } -}); -Object.defineProperty(exports, "createSourceEventStream", { - enumerable: true, - get: function get() { - return _subscribe.createSourceEventStream; - } -}); - -var _subscribe = require("./subscribe.js"); diff --git a/school/node_modules/graphql/subscription/index.js.flow b/school/node_modules/graphql/subscription/index.js.flow deleted file mode 100644 index 9f37bfd..0000000 --- a/school/node_modules/graphql/subscription/index.js.flow +++ /dev/null @@ -1,3 +0,0 @@ -// @flow strict -export { subscribe, createSourceEventStream } from './subscribe'; -export type { SubscriptionArgs } from './subscribe'; diff --git a/school/node_modules/graphql/subscription/index.mjs b/school/node_modules/graphql/subscription/index.mjs deleted file mode 100644 index 8983f84..0000000 --- a/school/node_modules/graphql/subscription/index.mjs +++ /dev/null @@ -1 +0,0 @@ -export { subscribe, createSourceEventStream } from "./subscribe.mjs"; diff --git a/school/node_modules/graphql/subscription/mapAsyncIterator.d.ts b/school/node_modules/graphql/subscription/mapAsyncIterator.d.ts deleted file mode 100644 index 22e8a34..0000000 --- a/school/node_modules/graphql/subscription/mapAsyncIterator.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PromiseOrValue } from '../jsutils/PromiseOrValue'; - -/** - * Given an AsyncIterable and a callback function, return an AsyncIterator - * which produces values mapped via calling the callback function. - */ -export default function mapAsyncIterator<T, U>( - iterable: AsyncIterable<T>, - callback: (arg: T) => PromiseOrValue<U>, - rejectCallback?: (arg: any) => PromiseOrValue<U>, -): any; // TS_SPECIFIC: AsyncGenerator requires typescript@3.6 diff --git a/school/node_modules/graphql/subscription/mapAsyncIterator.js b/school/node_modules/graphql/subscription/mapAsyncIterator.js deleted file mode 100644 index 4fd37cd..0000000 --- a/school/node_modules/graphql/subscription/mapAsyncIterator.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = mapAsyncIterator; - -var _symbols = require("../polyfills/symbols.js"); - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * Given an AsyncIterable and a callback function, return an AsyncIterator - * which produces values mapped via calling the callback function. - */ -function mapAsyncIterator(iterable, callback, rejectCallback) { - // $FlowFixMe[prop-missing] - var iteratorMethod = iterable[_symbols.SYMBOL_ASYNC_ITERATOR]; - var iterator = iteratorMethod.call(iterable); - var $return; - var abruptClose; - - if (typeof iterator.return === 'function') { - $return = iterator.return; - - abruptClose = function abruptClose(error) { - var rethrow = function rethrow() { - return Promise.reject(error); - }; - - return $return.call(iterator).then(rethrow, rethrow); - }; - } - - function mapResult(result) { - return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose); - } - - var mapReject; - - if (rejectCallback) { - // Capture rejectCallback to ensure it cannot be null. - var reject = rejectCallback; - - mapReject = function mapReject(error) { - return asyncMapValue(error, reject).then(iteratorResult, abruptClose); - }; - } - /* TODO: Flow doesn't support symbols as keys: - https://github.com/facebook/flow/issues/3258 */ - - - return _defineProperty({ - next: function next() { - return iterator.next().then(mapResult, mapReject); - }, - return: function _return() { - return $return ? $return.call(iterator).then(mapResult, mapReject) : Promise.resolve({ - value: undefined, - done: true - }); - }, - throw: function _throw(error) { - if (typeof iterator.throw === 'function') { - return iterator.throw(error).then(mapResult, mapReject); - } - - return Promise.reject(error).catch(abruptClose); - } - }, _symbols.SYMBOL_ASYNC_ITERATOR, function () { - return this; - }); -} - -function asyncMapValue(value, callback) { - return new Promise(function (resolve) { - return resolve(callback(value)); - }); -} - -function iteratorResult(value) { - return { - value: value, - done: false - }; -} diff --git a/school/node_modules/graphql/subscription/mapAsyncIterator.js.flow b/school/node_modules/graphql/subscription/mapAsyncIterator.js.flow deleted file mode 100644 index 8b1d1d8..0000000 --- a/school/node_modules/graphql/subscription/mapAsyncIterator.js.flow +++ /dev/null @@ -1,74 +0,0 @@ -// @flow strict -import { SYMBOL_ASYNC_ITERATOR } from '../polyfills/symbols'; - -import type { PromiseOrValue } from '../jsutils/PromiseOrValue'; - -/** - * Given an AsyncIterable and a callback function, return an AsyncIterator - * which produces values mapped via calling the callback function. - */ -export default function mapAsyncIterator<T, U>( - iterable: AsyncIterable<T> | AsyncGenerator<T, void, void>, - callback: (T) => PromiseOrValue<U>, - rejectCallback?: (any) => PromiseOrValue<U>, -): AsyncGenerator<U, void, void> { - // $FlowFixMe[prop-missing] - const iteratorMethod = iterable[SYMBOL_ASYNC_ITERATOR]; - const iterator: any = iteratorMethod.call(iterable); - let $return: any; - let abruptClose; - if (typeof iterator.return === 'function') { - $return = iterator.return; - abruptClose = (error: mixed) => { - const rethrow = () => Promise.reject(error); - return $return.call(iterator).then(rethrow, rethrow); - }; - } - - function mapResult(result: IteratorResult<T, void>) { - return result.done - ? result - : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose); - } - - let mapReject; - if (rejectCallback) { - // Capture rejectCallback to ensure it cannot be null. - const reject = rejectCallback; - mapReject = (error: mixed) => - asyncMapValue(error, reject).then(iteratorResult, abruptClose); - } - - /* TODO: Flow doesn't support symbols as keys: - https://github.com/facebook/flow/issues/3258 */ - return ({ - next(): Promise<IteratorResult<U, void>> { - return iterator.next().then(mapResult, mapReject); - }, - return() { - return $return - ? $return.call(iterator).then(mapResult, mapReject) - : Promise.resolve({ value: undefined, done: true }); - }, - throw(error?: mixed): Promise<IteratorResult<U, void>> { - if (typeof iterator.throw === 'function') { - return iterator.throw(error).then(mapResult, mapReject); - } - return Promise.reject(error).catch(abruptClose); - }, - [SYMBOL_ASYNC_ITERATOR]() { - return this; - }, - }: $FlowFixMe); -} - -function asyncMapValue<T, U>( - value: T, - callback: (T) => PromiseOrValue<U>, -): Promise<U> { - return new Promise((resolve) => resolve(callback(value))); -} - -function iteratorResult<T>(value: T): IteratorResult<T, void> { - return { value, done: false }; -} diff --git a/school/node_modules/graphql/subscription/mapAsyncIterator.mjs b/school/node_modules/graphql/subscription/mapAsyncIterator.mjs deleted file mode 100644 index ffe23e0..0000000 --- a/school/node_modules/graphql/subscription/mapAsyncIterator.mjs +++ /dev/null @@ -1,79 +0,0 @@ -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -import { SYMBOL_ASYNC_ITERATOR } from "../polyfills/symbols.mjs"; - -/** - * Given an AsyncIterable and a callback function, return an AsyncIterator - * which produces values mapped via calling the callback function. - */ -export default function mapAsyncIterator(iterable, callback, rejectCallback) { - // $FlowFixMe[prop-missing] - var iteratorMethod = iterable[SYMBOL_ASYNC_ITERATOR]; - var iterator = iteratorMethod.call(iterable); - var $return; - var abruptClose; - - if (typeof iterator.return === 'function') { - $return = iterator.return; - - abruptClose = function abruptClose(error) { - var rethrow = function rethrow() { - return Promise.reject(error); - }; - - return $return.call(iterator).then(rethrow, rethrow); - }; - } - - function mapResult(result) { - return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose); - } - - var mapReject; - - if (rejectCallback) { - // Capture rejectCallback to ensure it cannot be null. - var reject = rejectCallback; - - mapReject = function mapReject(error) { - return asyncMapValue(error, reject).then(iteratorResult, abruptClose); - }; - } - /* TODO: Flow doesn't support symbols as keys: - https://github.com/facebook/flow/issues/3258 */ - - - return _defineProperty({ - next: function next() { - return iterator.next().then(mapResult, mapReject); - }, - return: function _return() { - return $return ? $return.call(iterator).then(mapResult, mapReject) : Promise.resolve({ - value: undefined, - done: true - }); - }, - throw: function _throw(error) { - if (typeof iterator.throw === 'function') { - return iterator.throw(error).then(mapResult, mapReject); - } - - return Promise.reject(error).catch(abruptClose); - } - }, SYMBOL_ASYNC_ITERATOR, function () { - return this; - }); -} - -function asyncMapValue(value, callback) { - return new Promise(function (resolve) { - return resolve(callback(value)); - }); -} - -function iteratorResult(value) { - return { - value: value, - done: false - }; -} diff --git a/school/node_modules/graphql/subscription/subscribe.d.ts b/school/node_modules/graphql/subscription/subscribe.d.ts deleted file mode 100644 index 3ed750a..0000000 --- a/school/node_modules/graphql/subscription/subscribe.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Maybe } from '../jsutils/Maybe'; - -import { DocumentNode } from '../language/ast'; -import { ExecutionResult } from '../execution/execute'; -import { GraphQLSchema } from '../type/schema'; -import { GraphQLFieldResolver } from '../type/definition'; - -export interface SubscriptionArgs { - schema: GraphQLSchema; - document: DocumentNode; - rootValue?: any; - contextValue?: any; - variableValues?: Maybe<Record<string, any>>; - operationName?: Maybe<string>; - fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>; - subscribeFieldResolver?: Maybe<GraphQLFieldResolver<any, any>>; -} - -/** - * Implements the "Subscribe" algorithm described in the GraphQL specification. - * - * Returns a Promise which resolves to either an AsyncIterator (if successful) - * or an ExecutionResult (client error). The promise will be rejected if a - * server error occurs. - * - * 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 an AsyncIterator, which - * yields a stream of ExecutionResults representing the response stream. - * - * Accepts either an object with named arguments, or individual arguments. - */ -export function subscribe( - args: SubscriptionArgs, -): Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult>; - -export function subscribe( - schema: GraphQLSchema, - document: DocumentNode, - rootValue?: any, - contextValue?: any, - variableValues?: Maybe<{ [key: string]: any }>, - operationName?: Maybe<string>, - fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>, - subscribeFieldResolver?: Maybe<GraphQLFieldResolver<any, any>>, -): Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult>; - -/** - * Implements the "CreateSourceEventStream" algorithm described in the - * GraphQL specification, resolving the subscription source event stream. - * - * Returns a Promise<AsyncIterable>. - * - * If the client-provided invalid arguments, the source stream could not be - * created, or the resolver did not return an AsyncIterable, this function will - * will throw an error, which should be caught and handled by the caller. - * - * 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( - schema: GraphQLSchema, - document: DocumentNode, - rootValue?: any, - contextValue?: any, - variableValues?: { [key: string]: any }, - operationName?: Maybe<string>, - fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>, -): Promise<AsyncIterable<any> | ExecutionResult>; diff --git a/school/node_modules/graphql/subscription/subscribe.js b/school/node_modules/graphql/subscription/subscribe.js deleted file mode 100644 index 9f8225d..0000000 --- a/school/node_modules/graphql/subscription/subscribe.js +++ /dev/null @@ -1,192 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.subscribe = subscribe; -exports.createSourceEventStream = createSourceEventStream; - -var _inspect = _interopRequireDefault(require("../jsutils/inspect.js")); - -var _isAsyncIterable = _interopRequireDefault(require("../jsutils/isAsyncIterable.js")); - -var _Path = require("../jsutils/Path.js"); - -var _GraphQLError = require("../error/GraphQLError.js"); - -var _locatedError = require("../error/locatedError.js"); - -var _values = require("../execution/values.js"); - -var _execute = require("../execution/execute.js"); - -var _getOperationRootType = require("../utilities/getOperationRootType.js"); - -var _mapAsyncIterator = _interopRequireDefault(require("./mapAsyncIterator.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) { - /* eslint-enable no-redeclare */ - // Extract arguments from object args if provided. - return arguments.length === 1 ? subscribeImpl(argsOrSchema) : subscribeImpl({ - schema: argsOrSchema, - document: document, - rootValue: rootValue, - contextValue: contextValue, - variableValues: variableValues, - operationName: operationName, - fieldResolver: fieldResolver, - subscribeFieldResolver: subscribeFieldResolver - }); -} -/** - * This function checks if the error is a GraphQLError. If it is, report it as - * an ExecutionResult, containing only errors and no data. Otherwise treat the - * error as a system-class error and re-throw it. - */ - - -function reportGraphQLError(error) { - if (error instanceof _GraphQLError.GraphQLError) { - return { - errors: [error] - }; - } - - throw error; -} - -function subscribeImpl(args) { - var schema = args.schema, - document = args.document, - rootValue = args.rootValue, - contextValue = args.contextValue, - variableValues = args.variableValues, - operationName = args.operationName, - fieldResolver = args.fieldResolver, - subscribeFieldResolver = args.subscribeFieldResolver; - var sourcePromise = createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver); // For each payload yielded from a subscription, map it over the normal - // GraphQL `execute` function, with `payload` as the rootValue. - // This implements the "MapSourceToResponseEvent" algorithm described in - // the GraphQL specification. The `execute` function provides the - // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the - // "ExecuteQuery" algorithm, for which `execute` is also used. - - var mapSourceToResponse = function mapSourceToResponse(payload) { - return (0, _execute.execute)({ - schema: schema, - document: document, - rootValue: payload, - contextValue: contextValue, - variableValues: variableValues, - operationName: operationName, - fieldResolver: fieldResolver - }); - }; // Resolve the Source Stream, then map every source value to a - // ExecutionResult value as described above. - - - return sourcePromise.then(function (resultOrStream) { - return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used. - (0, _isAsyncIterable.default)(resultOrStream) ? (0, _mapAsyncIterator.default)(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream - ); - }); -} -/** - * 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(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) { - // If arguments are missing or incorrectly typed, this is an internal - // developer mistake which should throw an early error. - (0, _execute.assertValidExecutionArguments)(schema, document, variableValues); - return new Promise(function (resolve) { - // If a valid context cannot be created due to incorrect arguments, - // this will throw an error. - var exeContext = (0, _execute.buildExecutionContext)(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); - resolve( // Return early errors if execution context failed. - Array.isArray(exeContext) ? { - errors: exeContext - } : executeSubscription(exeContext)); - }).catch(reportGraphQLError); -} - -function executeSubscription(exeContext) { - var schema = exeContext.schema, - operation = exeContext.operation, - variableValues = exeContext.variableValues, - rootValue = exeContext.rootValue; - var type = (0, _getOperationRootType.getOperationRootType)(schema, operation); - var fields = (0, _execute.collectFields)(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null)); - var responseNames = Object.keys(fields); - var responseName = responseNames[0]; - var fieldNodes = fields[responseName]; - var fieldNode = fieldNodes[0]; - var fieldName = fieldNode.name.value; - var fieldDef = (0, _execute.getFieldDef)(schema, type, fieldName); - - if (!fieldDef) { - throw new _GraphQLError.GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes); - } - - var path = (0, _Path.addPath)(undefined, responseName, type.name); - var info = (0, _execute.buildResolveInfo)(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type. - - return new Promise(function (resolveResult) { - var _fieldDef$subscribe; - - // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification. - // It differs from "ResolveFieldValue" due to providing a different `resolveFn`. - // Build a JS object of arguments from the field.arguments AST, using the - // variables scope to fulfill any variable references. - var args = (0, _values.getArgumentValues)(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that - // is provided to every resolve function within an execution. It is commonly - // used to represent an authenticated user, or request-specific caches. - - var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an - // AsyncIterable yielding raw payloads. - - var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver; - resolveResult(resolveFn(rootValue, args, contextValue, info)); - }).then(function (eventStream) { - if (eventStream instanceof Error) { - throw (0, _locatedError.locatedError)(eventStream, fieldNodes, (0, _Path.pathToArray)(path)); - } // Assert field returned an event stream, otherwise yield an error. - - - if (!(0, _isAsyncIterable.default)(eventStream)) { - throw new Error('Subscription field must return Async Iterable. ' + "Received: ".concat((0, _inspect.default)(eventStream), ".")); - } - - return eventStream; - }, function (error) { - throw (0, _locatedError.locatedError)(error, fieldNodes, (0, _Path.pathToArray)(path)); - }); -} diff --git a/school/node_modules/graphql/subscription/subscribe.js.flow b/school/node_modules/graphql/subscription/subscribe.js.flow deleted file mode 100644 index 7d21367..0000000 --- a/school/node_modules/graphql/subscription/subscribe.js.flow +++ /dev/null @@ -1,298 +0,0 @@ -// @flow strict -import inspect from '../jsutils/inspect'; -import isAsyncIterable from '../jsutils/isAsyncIterable'; -import { addPath, pathToArray } from '../jsutils/Path'; - -import { GraphQLError } from '../error/GraphQLError'; -import { locatedError } from '../error/locatedError'; - -import type { DocumentNode } from '../language/ast'; - -import type { ExecutionResult, ExecutionContext } from '../execution/execute'; -import { getArgumentValues } from '../execution/values'; -import { - assertValidExecutionArguments, - buildExecutionContext, - buildResolveInfo, - collectFields, - execute, - getFieldDef, -} from '../execution/execute'; - -import type { GraphQLSchema } from '../type/schema'; -import type { GraphQLFieldResolver } from '../type/definition'; - -import { getOperationRootType } from '../utilities/getOperationRootType'; - -import mapAsyncIterator from './mapAsyncIterator'; - -export type SubscriptionArgs = {| - schema: GraphQLSchema, - document: DocumentNode, - rootValue?: mixed, - contextValue?: mixed, - variableValues?: ?{ +[variable: string]: mixed, ... }, - operationName?: ?string, - fieldResolver?: ?GraphQLFieldResolver<any, any>, - subscribeFieldResolver?: ?GraphQLFieldResolver<any, any>, -|}; - -/** - * Implements the "Subscribe" algorithm described in the GraphQL specification. - * - * Returns a Promise which resolves to either an AsyncIterator (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 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 an AsyncIterator, which - * yields a stream of ExecutionResults representing the response stream. - * - * Accepts either an object with named arguments, or individual arguments. - */ -declare function subscribe( - SubscriptionArgs, - ..._: [] -): Promise<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult>; -/* eslint-disable no-redeclare */ -declare function subscribe( - schema: GraphQLSchema, - document: DocumentNode, - rootValue?: mixed, - contextValue?: mixed, - variableValues?: ?{ +[variable: string]: mixed, ... }, - operationName?: ?string, - fieldResolver?: ?GraphQLFieldResolver<any, any>, - subscribeFieldResolver?: ?GraphQLFieldResolver<any, any>, -): Promise<AsyncIterator<ExecutionResult> | ExecutionResult>; -export function subscribe( - argsOrSchema, - document, - rootValue, - contextValue, - variableValues, - operationName, - fieldResolver, - subscribeFieldResolver, -) { - /* eslint-enable no-redeclare */ - // Extract arguments from object args if provided. - return arguments.length === 1 - ? subscribeImpl(argsOrSchema) - : subscribeImpl({ - schema: argsOrSchema, - document, - rootValue, - contextValue, - variableValues, - operationName, - fieldResolver, - subscribeFieldResolver, - }); -} - -/** - * This function checks if the error is a GraphQLError. If it is, report it as - * an ExecutionResult, containing only errors and no data. Otherwise treat the - * error as a system-class error and re-throw it. - */ -function reportGraphQLError(error: mixed): ExecutionResult { - if (error instanceof GraphQLError) { - return { errors: [error] }; - } - throw error; -} - -function subscribeImpl( - args: SubscriptionArgs, -): Promise<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult> { - const { - schema, - document, - rootValue, - contextValue, - variableValues, - operationName, - fieldResolver, - subscribeFieldResolver, - } = args; - - const sourcePromise = createSourceEventStream( - schema, - document, - rootValue, - contextValue, - variableValues, - operationName, - subscribeFieldResolver, - ); - - // For each payload yielded from a subscription, map it over the normal - // GraphQL `execute` function, with `payload` as the rootValue. - // This implements the "MapSourceToResponseEvent" algorithm described in - // the GraphQL specification. The `execute` function provides the - // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the - // "ExecuteQuery" algorithm, for which `execute` is also used. - const mapSourceToResponse = (payload) => - execute({ - schema, - document, - rootValue: payload, - contextValue, - variableValues, - operationName, - fieldResolver, - }); - - // Resolve the Source Stream, then map every source value to a - // ExecutionResult value as described above. - return sourcePromise.then((resultOrStream) => - // Note: Flow can't refine isAsyncIterable, so explicit casts are used. - isAsyncIterable(resultOrStream) - ? mapAsyncIterator( - resultOrStream, - mapSourceToResponse, - reportGraphQLError, - ) - : ((resultOrStream: any): ExecutionResult), - ); -} - -/** - * 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( - schema: GraphQLSchema, - document: DocumentNode, - rootValue?: mixed, - contextValue?: mixed, - variableValues?: ?{ +[variable: string]: mixed, ... }, - operationName?: ?string, - fieldResolver?: ?GraphQLFieldResolver<any, any>, -): Promise<AsyncIterable<mixed> | ExecutionResult> { - // If arguments are missing or incorrectly typed, this is an internal - // developer mistake which should throw an early error. - assertValidExecutionArguments(schema, document, variableValues); - - return new Promise((resolve) => { - // If a valid context cannot be created due to incorrect arguments, - // this will throw an error. - const exeContext = buildExecutionContext( - schema, - document, - rootValue, - contextValue, - variableValues, - operationName, - fieldResolver, - ); - - resolve( - // Return early errors if execution context failed. - Array.isArray(exeContext) - ? { errors: exeContext } - : executeSubscription(exeContext), - ); - }).catch(reportGraphQLError); -} - -function executeSubscription( - exeContext: ExecutionContext, -): Promise<AsyncIterable<mixed>> { - const { schema, operation, variableValues, rootValue } = exeContext; - const type = getOperationRootType(schema, operation); - const fields = collectFields( - exeContext, - type, - operation.selectionSet, - Object.create(null), - Object.create(null), - ); - const responseNames = Object.keys(fields); - const responseName = responseNames[0]; - const fieldNodes = fields[responseName]; - const fieldNode = fieldNodes[0]; - const fieldName = fieldNode.name.value; - const fieldDef = getFieldDef(schema, type, fieldName); - - if (!fieldDef) { - throw new GraphQLError( - `The subscription field "${fieldName}" is not defined.`, - fieldNodes, - ); - } - - const path = addPath(undefined, responseName, type.name); - const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); - - // Coerce to Promise for easier error handling and consistent return type. - return new Promise((resolveResult) => { - // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification. - // It differs from "ResolveFieldValue" due to providing a different `resolveFn`. - - // Build a JS object of arguments from the field.arguments AST, using the - // variables scope to fulfill any variable references. - const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); - - // The resolve function's optional third argument is a context value that - // is provided to every resolve function within an execution. It is commonly - // used to represent an authenticated user, or request-specific caches. - const contextValue = exeContext.contextValue; - - // Call the `subscribe()` resolver or the default resolver to produce an - // AsyncIterable yielding raw payloads. - const resolveFn = fieldDef.subscribe ?? exeContext.fieldResolver; - resolveResult(resolveFn(rootValue, args, contextValue, info)); - }).then( - (eventStream) => { - if (eventStream instanceof Error) { - throw locatedError(eventStream, fieldNodes, pathToArray(path)); - } - - // Assert field returned an event stream, otherwise yield an error. - if (!isAsyncIterable(eventStream)) { - throw new Error( - 'Subscription field must return Async Iterable. ' + - `Received: ${inspect(eventStream)}.`, - ); - } - return eventStream; - }, - (error) => { - throw locatedError(error, fieldNodes, pathToArray(path)); - }, - ); -} diff --git a/school/node_modules/graphql/subscription/subscribe.mjs b/school/node_modules/graphql/subscription/subscribe.mjs deleted file mode 100644 index a35acf9..0000000 --- a/school/node_modules/graphql/subscription/subscribe.mjs +++ /dev/null @@ -1,172 +0,0 @@ -import inspect from "../jsutils/inspect.mjs"; -import isAsyncIterable from "../jsutils/isAsyncIterable.mjs"; -import { addPath, pathToArray } from "../jsutils/Path.mjs"; -import { GraphQLError } from "../error/GraphQLError.mjs"; -import { locatedError } from "../error/locatedError.mjs"; -import { getArgumentValues } from "../execution/values.mjs"; -import { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef } from "../execution/execute.mjs"; -import { getOperationRootType } from "../utilities/getOperationRootType.mjs"; -import mapAsyncIterator from "./mapAsyncIterator.mjs"; -export function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) { - /* eslint-enable no-redeclare */ - // Extract arguments from object args if provided. - return arguments.length === 1 ? subscribeImpl(argsOrSchema) : subscribeImpl({ - schema: argsOrSchema, - document: document, - rootValue: rootValue, - contextValue: contextValue, - variableValues: variableValues, - operationName: operationName, - fieldResolver: fieldResolver, - subscribeFieldResolver: subscribeFieldResolver - }); -} -/** - * This function checks if the error is a GraphQLError. If it is, report it as - * an ExecutionResult, containing only errors and no data. Otherwise treat the - * error as a system-class error and re-throw it. - */ - -function reportGraphQLError(error) { - if (error instanceof GraphQLError) { - return { - errors: [error] - }; - } - - throw error; -} - -function subscribeImpl(args) { - var schema = args.schema, - document = args.document, - rootValue = args.rootValue, - contextValue = args.contextValue, - variableValues = args.variableValues, - operationName = args.operationName, - fieldResolver = args.fieldResolver, - subscribeFieldResolver = args.subscribeFieldResolver; - var sourcePromise = createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver); // For each payload yielded from a subscription, map it over the normal - // GraphQL `execute` function, with `payload` as the rootValue. - // This implements the "MapSourceToResponseEvent" algorithm described in - // the GraphQL specification. The `execute` function provides the - // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the - // "ExecuteQuery" algorithm, for which `execute` is also used. - - var mapSourceToResponse = function mapSourceToResponse(payload) { - return execute({ - schema: schema, - document: document, - rootValue: payload, - contextValue: contextValue, - variableValues: variableValues, - operationName: operationName, - fieldResolver: fieldResolver - }); - }; // Resolve the Source Stream, then map every source value to a - // ExecutionResult value as described above. - - - return sourcePromise.then(function (resultOrStream) { - return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used. - isAsyncIterable(resultOrStream) ? mapAsyncIterator(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream - ); - }); -} -/** - * 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(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) { - // If arguments are missing or incorrectly typed, this is an internal - // developer mistake which should throw an early error. - assertValidExecutionArguments(schema, document, variableValues); - return new Promise(function (resolve) { - // If a valid context cannot be created due to incorrect arguments, - // this will throw an error. - var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); - resolve( // Return early errors if execution context failed. - Array.isArray(exeContext) ? { - errors: exeContext - } : executeSubscription(exeContext)); - }).catch(reportGraphQLError); -} - -function executeSubscription(exeContext) { - var schema = exeContext.schema, - operation = exeContext.operation, - variableValues = exeContext.variableValues, - rootValue = exeContext.rootValue; - var type = getOperationRootType(schema, operation); - var fields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null)); - var responseNames = Object.keys(fields); - var responseName = responseNames[0]; - var fieldNodes = fields[responseName]; - var fieldNode = fieldNodes[0]; - var fieldName = fieldNode.name.value; - var fieldDef = getFieldDef(schema, type, fieldName); - - if (!fieldDef) { - throw new GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes); - } - - var path = addPath(undefined, responseName, type.name); - var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type. - - return new Promise(function (resolveResult) { - var _fieldDef$subscribe; - - // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification. - // It differs from "ResolveFieldValue" due to providing a different `resolveFn`. - // Build a JS object of arguments from the field.arguments AST, using the - // variables scope to fulfill any variable references. - var args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that - // is provided to every resolve function within an execution. It is commonly - // used to represent an authenticated user, or request-specific caches. - - var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an - // AsyncIterable yielding raw payloads. - - var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver; - resolveResult(resolveFn(rootValue, args, contextValue, info)); - }).then(function (eventStream) { - if (eventStream instanceof Error) { - throw locatedError(eventStream, fieldNodes, pathToArray(path)); - } // Assert field returned an event stream, otherwise yield an error. - - - if (!isAsyncIterable(eventStream)) { - throw new Error('Subscription field must return Async Iterable. ' + "Received: ".concat(inspect(eventStream), ".")); - } - - return eventStream; - }, function (error) { - throw locatedError(error, fieldNodes, pathToArray(path)); - }); -} |