medusa-plugin-tolgee
Version:
Medusa V2 Plugin to easily add translations to your models with Tolgee
48 lines • 4.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = tolgeeClientLoader;
const utils_1 = require("@medusajs/utils");
const axios_1 = __importDefault(require("axios"));
const axios_cache_interceptor_1 = require("axios-cache-interceptor");
const awilix_1 = require("awilix");
const batching_adapter_1 = require("./utils/batching-adapter");
async function tolgeeClientLoader({ container, options, }) {
if (!options)
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to load Tolgee module: no options provided`);
try {
// If the result is cached, axios-cache-interceptor simply replaces the adapter with one that resolves immediately
// We can do the same with the default adapter, which will be called for cache misses.
const client = axios_1.default.create({
baseURL: `${options.baseURL}/v2/projects/${options.projectId}`,
headers: {
Accept: "application/json",
"X-API-Key": options.apiKey,
},
maxBodyLength: Infinity,
});
(0, batching_adapter_1.setupBatchingAdapter)(client, container.resolve("logger"), {
batchUrl: "/translations",
batchQueryParam: "filterNamespace",
batchingDelayMilliseconds: options.batchingDelayMilliseconds ?? 50,
rateLimit: {
maxRequests: options.rateLimit?.maxRequests ?? 15,
perMilliseconds: options.rateLimit?.perMilliseconds ?? 3000
}
});
const cachedClient = (0, axios_cache_interceptor_1.setupCache)(client, {
ttl: options.ttl ?? 1000 * 60 * 5, // default 5min
methods: ['get'],
// If the server sends `Cache-Control: no-cache` or `no-store`, this can prevent caching.
// Set to false for the ttl to always take precedence.
interpretHeader: false,
});
container.register("tolgeeClient", (0, awilix_1.asValue)(cachedClient));
}
catch (error) {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to instantiate the axios client for Tolgee: ${error.message}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9sZ2VlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3RvbGdlZS9sb2FkZXJzL3RvbGdlZS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxxQ0E4Q0M7QUFyREQsMkNBQXVEO0FBQ3ZELGtEQUEwQjtBQUMxQixxRUFBcUQ7QUFFckQsbUNBQWlDO0FBQ2pDLCtEQUFnRTtBQUVqRCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsRUFDL0MsU0FBUyxFQUNULE9BQU8sR0FDMkI7SUFDbEMsSUFBSSxDQUFDLE9BQU87UUFDVixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLG1EQUFtRCxDQUNwRCxDQUFDO0lBRUosSUFBSSxDQUFDO1FBQ0gsa0hBQWtIO1FBQ2xILHNGQUFzRjtRQUN0RixNQUFNLE1BQU0sR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLGdCQUFnQixPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzlELE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU07YUFDNUI7WUFDRCxhQUFhLEVBQUUsUUFBUTtTQUN4QixDQUFDLENBQUE7UUFFRixJQUFBLHVDQUFvQixFQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3hELFFBQVEsRUFBRSxlQUFlO1lBQ3pCLGVBQWUsRUFBRSxpQkFBaUI7WUFDbEMseUJBQXlCLEVBQUUsT0FBTyxDQUFDLHlCQUF5QixJQUFJLEVBQUU7WUFDbEUsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFdBQVcsSUFBSSxFQUFFO2dCQUNqRCxlQUFlLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxlQUFlLElBQUksSUFBSTthQUM1RDtTQUNGLENBQUMsQ0FBQTtRQUNGLE1BQU0sWUFBWSxHQUFHLElBQUEsb0NBQVUsRUFBQyxNQUFhLEVBQUU7WUFDN0MsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsZUFBZTtZQUNsRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDaEIseUZBQXlGO1lBQ3pGLHNEQUFzRDtZQUN0RCxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUE7UUFFRixTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxJQUFBLGdCQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsc0RBQXNELEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FDdEUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIn0=