UNPKG

@cran/gql.core

Version:

Cran/GraphQL Core Utilities

55 lines (54 loc) 2.26 kB
"use strict"; /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", { value: true }); exports.composePlugins = exports.PluginPhase = void 0; var PluginPhase; (function (PluginPhase) { PluginPhase[PluginPhase["PREPARE"] = 0] = "PREPARE"; PluginPhase[PluginPhase["DEFAULT"] = 1] = "DEFAULT"; PluginPhase[PluginPhase["FINALIZE"] = 2] = "FINALIZE"; })(PluginPhase = exports.PluginPhase || (exports.PluginPhase = {})); // eslint-disable-next-line max-lines-per-function function composePlugins(plugins) { return { typeDefs: plugins.map(function mapTypeDefs(plugin) { return plugin.typeDefs; }), resolvers: plugins.reduce(function reduceResolvers(acc, plugin) { return Object.assign(acc, plugin.resolvers); }, {}), transformer: { [PluginPhase.PREPARE](schema) { for (const plugin of plugins) { if ("object" === typeof plugin.transformer && PluginPhase.PREPARE in plugin.transformer) { schema = plugin.transformer[PluginPhase.PREPARE](schema); } } return schema; }, [PluginPhase.DEFAULT](schema) { for (const plugin of plugins) { if ("function" === typeof plugin.transformer) { schema = plugin.transformer(schema); } else if ("object" === typeof plugin.transformer && PluginPhase.DEFAULT in plugin.transformer) { schema = plugin.transformer[PluginPhase.DEFAULT](schema); } } return schema; }, [PluginPhase.FINALIZE](schema) { for (const plugin of plugins) { if ("object" === typeof plugin.transformer && PluginPhase.FINALIZE in plugin.transformer) { schema = plugin.transformer[PluginPhase.FINALIZE](schema); } } return schema; }, }, }; } exports.composePlugins = composePlugins;