UNPKG

medusa-plugin-tolgee

Version:

Medusa V2 Plugin to easily add translations to your models with Tolgee

60 lines 6.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupBatchingAdapter = setupBatchingAdapter; const axios_1 = __importDefault(require("axios")); const bottleneck_1 = __importDefault(require("bottleneck")); const dataloader_1 = __importDefault(require("dataloader")); function setupBatchingAdapter(client, logger, options) { const originalAdapter = client.defaults.adapter; const limiter = new bottleneck_1.default({ reservoirRefreshAmount: options.rateLimit?.maxRequests ?? 15, reservoirRefreshInterval: options.rateLimit?.perMilliseconds ?? 3000, }); const loader = new dataloader_1.default(async (configs) => { const queryValues = configs.map(r => r.params[options.batchQueryParam]).join(','); const batchConfig = { ...configs[0], adapter: originalAdapter }; batchConfig.params = { ...batchConfig.params, [options.batchQueryParam]: queryValues }; try { logger.debug(`medusal-plugin-tolgee: Sending batched request for ${queryValues}`); // Schedule the API call through the rate limiter and execute with axios. // Note: we use the default axios client with the default adapter here to avoid infinite loops. const response = await limiter.schedule(() => axios_1.default.request(batchConfig)); return configs.map(config => { const queryValue = config.params[options.batchQueryParam]; const individualResponseData = { ...response.data, _embedded: { keys: response.data._embedded?.keys?.filter(k => k.keyNamespace == queryValue) ?? [] } }; return { ...response, data: individualResponseData, // the whole function should take an AxiosCacheInstance, but the type is outdated // TODO: remove type cast when type is fixed config: { ...response.config, id: config.id } }; }); } catch (error) { logger.error(`Batch request failed for ${batchConfig.url}:`, error); const batchError = error instanceof Error ? error : new Error('Batch request failed'); return configs.map(() => batchError); } }, { batchScheduleFn: (callback) => setTimeout(callback, options.batchingDelayMilliseconds), }); client.defaults.adapter = (config) => { const queryValue = config?.params?.[options.batchQueryParam]; if (!queryValue || !config.url?.match(options.batchUrl) || config.method != "get") { // fallback to the client's original adapter return axios_1.default.getAdapter(originalAdapter)(config); } logger.debug(`medusa-plugin-tolgee: Requesting batch for ${queryValue}`); return loader.load(config); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hpbmctYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3RvbGdlZS9sb2FkZXJzL3V0aWxzL2JhdGNoaW5nLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpQkEsb0RBMkRDO0FBM0VELGtEQUF3RjtBQUV4Riw0REFBb0M7QUFDcEMsNERBQW9DO0FBYXBDLFNBQWdCLG9CQUFvQixDQUFDLE1BQXFCLEVBQUUsTUFBYyxFQUFFLE9BQXdCO0lBQ2xHLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO0lBRS9DLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQVUsQ0FBQztRQUM3QixzQkFBc0IsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFdBQVcsSUFBSSxFQUFFO1FBQzVELHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxJQUFJLElBQUk7S0FDckUsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSxvQkFBVSxDQUMzQixLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pGLE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFBO1FBQy9ELFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUE7UUFFdEYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLEtB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