UNPKG

@graphql-mesh/serve-runtime

Version:
42 lines (41 loc) 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCompleteSubscriptionsOnSchemaChange = useCompleteSubscriptionsOnSchemaChange; const graphql_yoga_1 = require("graphql-yoga"); function useCompleteSubscriptionsOnSchemaChange() { const activeSubs = []; return { onSchemaChange() { while (activeSubs.length) { activeSubs.pop()?.(); } }, onSubscribe() { return { onSubscribeResult({ result, setResult }) { if ((0, graphql_yoga_1.isAsyncIterable)(result)) { setResult(graphql_yoga_1.Repeater.race([ result, new graphql_yoga_1.Repeater((_push, stop) => { function complete() { stop((0, graphql_yoga_1.createGraphQLError)('subscription has been closed due to a schema reload', { extensions: { code: 'SUBSCRIPTION_SCHEMA_RELOAD', }, })); } activeSubs.push(complete); // eslint-disable-next-line @typescript-eslint/no-floating-promises stop.then(() => { // eslint-disable-next-line @typescript-eslint/no-floating-promises result.return?.(); activeSubs.splice(activeSubs.indexOf(complete), 1); }); }), ])); } }, }; }, }; }