UNPKG

@vtex/api

Version:
123 lines (122 loc) 4.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessagesGraphQL = void 0; const ramda_1 = require("ramda"); const AppGraphQLClient_1 = require("./AppGraphQLClient"); const MAX_BATCH_SIZE = 500; class MessagesGraphQL extends AppGraphQLClient_1.AppGraphQLClient { constructor(vtex, options) { super('vtex.messages@1.x', vtex, options); } translateV2(args, tracingConfig) { const { indexedByFrom, ...rest } = args; const allMessages = indexedByFrom.reduce((acc, { from, messages }) => { return acc.concat(messages.map(message => ({ from, message }))); }, []); const batchedMessages = (0, ramda_1.splitEvery)(MAX_BATCH_SIZE, allMessages); const metric = 'messages-translate-v2'; return Promise.all(batchedMessages.map(batch => { const indexedBatch = batch.reduce((acc, { from, message }) => { if (!acc[from]) { acc[from] = { from, messages: [], }; } acc[from].messages.push(message); return acc; }, {}); const batchArgs = { ...rest, indexedByFrom: (0, ramda_1.values)(indexedBatch), }; return this.graphql.query({ query: ` query Translate($args: TranslateArgs!) { translate(args: $args) } `, variables: { args: batchArgs }, }, { metric, tracing: { requestSpanNameSuffix: metric, ...tracingConfig === null || tracingConfig === void 0 ? void 0 : tracingConfig.tracing, }, }).then((0, ramda_1.path)(['data', 'translate'])); })).then(ramda_1.flatten); } async translate(args, tracingConfig) { const metric = 'messages-translate-v2'; const response = await this.graphql.query({ query: `query Translate($args: TranslateArgs!) { translate(args: $args) }`, variables: { args }, }, { metric, tracing: { requestSpanNameSuffix: metric, ...tracingConfig === null || tracingConfig === void 0 ? void 0 : tracingConfig.tracing, }, }); return response.data.translate; } async translateWithDependencies(args, tracingConfig) { const metric = 'messages-translate-with-deps-v2'; const response = await this.graphql.query({ query: `query TranslateWithDeps($args: TranslateWithDependenciesArgs!) { translateWithDependencies(args: $args) }`, variables: { args }, }, { metric, tracing: { requestSpanNameSuffix: metric, ...tracingConfig === null || tracingConfig === void 0 ? void 0 : tracingConfig.tracing, }, }); return response.data.translateWithDependencies; } async saveV2(args, tracingConfig) { const metric = 'messages-saveV2-translation'; const response = await this.graphql.mutate({ mutate: `mutation SaveV2($args: SaveArgsV2!) { saveV2(args: $args) }`, variables: { args }, }, { metric, tracing: { requestSpanNameSuffix: metric, ...tracingConfig === null || tracingConfig === void 0 ? void 0 : tracingConfig.tracing, }, }); return response.data.saveV2; } async userTranslations(args, tracingConfig) { const metric = 'messages-user-translations'; const response = await this.graphql.query({ query: `query UserTranslations($args: IndexedMessages!){ userTranslations(args: $args) { srcLang groupContext context translations { lang translation } } }`, variables: { args }, }, { metric, tracing: { requestSpanNameSuffix: metric, ...tracingConfig === null || tracingConfig === void 0 ? void 0 : tracingConfig.tracing, }, }); return response.data.userTranslations; } } exports.MessagesGraphQL = MessagesGraphQL;