@vtex/api
Version:
VTEX I/O API client
35 lines (34 loc) • 1.61 kB
JavaScript
;
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
`;