UNPKG

@vtex/api

Version:
36 lines (35 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.settingsDirectiveTypeDefs = exports.SettingsDirective = void 0; const graphql_1 = require("graphql"); const graphql_tools_1 = require("graphql-tools"); const settings_1 = require("../../../http/middlewares/settings"); const addSettings = async (settings, ctx) => { if (settings === 'pure') { return ctx; } const { clients: { apps, assets } } = ctx; const dependenciesSettings = await (0, settings_1.getDependenciesSettings)(apps, assets); if (!ctx.vtex) { ctx.vtex = {}; } ctx.vtex.settings = { ...ctx.vtex.settings, dependenciesSettings }; }; class SettingsDirective extends graphql_tools_1.SchemaDirectiveVisitor { visitFieldDefinition(field) { const { resolve = graphql_1.defaultFieldResolver } = field; const { settingsType } = this.args; field.resolve = async (root, args, ctx, info) => { if (settingsType) { await addSettings(settingsType, ctx); } return resolve(root, args, ctx, info); }; } } exports.SettingsDirective = SettingsDirective; exports.settingsDirectiveTypeDefs = ` directive @settings( settingsType: String ) on FIELD_DEFINITION `;