UNPKG

@crowdin/app-project-module

Version:

Module that generates for you all common endpoints for serving standalone Crowdin App

56 lines (55 loc) 2.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AiRequestProcessorModuleWithoutStream = exports.AiRequestProcessorModuleWithStream = void 0; exports.generateModuleSlugFromType = generateModuleSlugFromType; exports.register = register; const json_response_1 = __importDefault(require("../../middlewares/json-response")); const crowdin_client_1 = __importDefault(require("../../middlewares/crowdin-client")); const normalize_module_1 = require("../../util/normalize-module"); const handler_1 = __importDefault(require("./handler")); var AiRequestProcessorModuleWithStream; (function (AiRequestProcessorModuleWithStream) { AiRequestProcessorModuleWithStream["aiRequestPreParse"] = "aiRequestPreParse"; })(AiRequestProcessorModuleWithStream || (exports.AiRequestProcessorModuleWithStream = AiRequestProcessorModuleWithStream = {})); var AiRequestProcessorModuleWithoutStream; (function (AiRequestProcessorModuleWithoutStream) { AiRequestProcessorModuleWithoutStream["aiRequestPreCompile"] = "aiRequestPreCompile"; AiRequestProcessorModuleWithoutStream["aiRequestPostCompile"] = "aiRequestPostCompile"; AiRequestProcessorModuleWithoutStream["aiRequestPostParse"] = "aiRequestPostParse"; })(AiRequestProcessorModuleWithoutStream || (exports.AiRequestProcessorModuleWithoutStream = AiRequestProcessorModuleWithoutStream = {})); function generateModuleSlugFromType(moduleType) { return moduleType .split(/\.?(?=[A-Z])/) .join('-') .toLowerCase(); } function registerProcessorModuleByTypeKey(moduleKey, { config, app }) { var _a; const moduleValue = config[moduleKey]; if (!moduleValue) { return; } const moduleSlug = generateModuleSlugFromType(moduleKey); const items = (0, normalize_module_1.normalizeToArray)(moduleValue); const isSingle = items.length === 1; const isStream = moduleKey in AiRequestProcessorModuleWithStream; for (const [index, module] of items.entries()) { const key = (_a = module.key) !== null && _a !== void 0 ? _a : (0, normalize_module_1.resolveInstanceKey)({ identifier: config.identifier, suffix: moduleSlug, item: module, index, isSingle }); const url = isSingle ? '/ai-request-processor/' + moduleSlug : `/ai-request-processor/${moduleSlug}/${key}`; app.post(url, json_response_1.default, (0, crowdin_client_1.default)({ config, optional: false, checkSubscriptionExpiration: true, moduleKey: key, }), (0, handler_1.default)(module, isStream)); } } function register({ config, app }) { [ ...Object.values(AiRequestProcessorModuleWithoutStream), ...Object.values(AiRequestProcessorModuleWithStream), ].forEach((moduleTypeKey) => registerProcessorModuleByTypeKey(moduleTypeKey, { config, app })); }