UNPKG

graphile-build

Version:

Build a GraphQL schema from plugins

77 lines (76 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const AddQueriesToSubscriptionsPlugin = function (builder, { subscriptions, live }) { if (!subscriptions || !live) { return; } builder.hook("GraphQLObjectType:fields", (fields, build, context) => { const { extend, getTypeByName, inflection } = build; const { scope: { isRootSubscription }, fieldWithHooks } = context; if (!isRootSubscription) { return fields; } const Query = getTypeByName(inflection.builtin("Query")); const queryFields = Query.getFields(); const subscriptionFields = Object.keys(queryFields).reduce((memo, queryFieldName) => { const queryField = queryFields[queryFieldName]; const oldResolve = queryField.resolve; memo[queryFieldName] = fieldWithHooks(inflection.live(queryFieldName), { description: (queryField.description || "") + " (live)", type: queryField.type, args: (queryField.args || []).reduce((newArgs, arg) => { const { name, description, type, defaultValue } = arg; newArgs[name] = { description, type, defaultValue }; return newArgs; }, {}), ...(oldResolve ? { resolve: async (...args) => { try { return await oldResolve(...args); } catch (e) { const info = args[3]; if (info.rootValue && typeof info.rootValue.liveAbort === "function") { info.rootValue.liveAbort(e); } throw e; } } } : null), subscribe: build.liveCoordinator.subscribe, deprecationReason: queryField.isDeprecated ? queryField.deprecationReason : undefined }, { isLiveField: true, originalField: queryField }); return memo; }, {}); return extend(fields, subscriptionFields); }, ["AddQueriesToSubscriptions"]); }; var _default = AddQueriesToSubscriptionsPlugin; exports.default = _default; //# sourceMappingURL=AddQueriesToSubscriptionsPlugin.js.map