UNPKG

@vtex/api

Version:
35 lines (34 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.translateToDirectiveTypeDefs = exports.TranslateTo = void 0; const graphql_1 = require("graphql"); const graphql_tools_1 = require("graphql-tools"); const translations_1 = require("../../utils/translations"); const messagesLoaderV2_1 = require("../messagesLoaderV2"); class TranslateTo extends graphql_tools_1.SchemaDirectiveVisitor { visitFieldDefinition(field) { const { resolve = graphql_1.defaultFieldResolver } = field; const { language, behavior = 'FULL' } = this.args; field.resolve = async (root, args, ctx, info) => { var _a; if (!((_a = ctx.loaders) === null || _a === void 0 ? void 0 : _a.immutableMessagesV2)) { const dependencies = await ctx.clients.apps.getAppsMetaInfos(); ctx.loaders = { ...ctx.loaders, immutableMessagesV2: (0, messagesLoaderV2_1.createMessagesLoader)(ctx.clients, language, dependencies), }; } const response = (await resolve(root, args, ctx, info)); const { vtex, loaders: { immutableMessagesV2 }, } = ctx; const handler = (0, translations_1.handleSingleString)(vtex, immutableMessagesV2, behavior, 'translateTo'); return Array.isArray(response) ? Promise.all(response.map(handler)) : handler(response); }; } } exports.TranslateTo = TranslateTo; exports.translateToDirectiveTypeDefs = ` directive @translateTo( language: String! behavior: String ) on FIELD_DEFINITION `;