@crowdin/app-project-module
Version:
Module that generates for you all common endpoints for serving standalone Crowdin App
36 lines (35 loc) • 1.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = register;
const crowdin_client_1 = require("../../middlewares/crowdin-client");
const json_response_1 = require("../../middlewares/json-response");
const render_ui_module_1 = __importDefault(require("../../middlewares/render-ui-module"));
const ui_module_1 = __importDefault(require("../../middlewares/ui-module"));
const recheck_1 = __importDefault(require("./handlers/recheck"));
const key_1 = require("./key");
function register({ config, app }) {
if (!config.advisorInspector) {
return;
}
const items = config.advisorInspector;
const isSingle = items.length === 1;
for (const [index, inspector] of items.entries()) {
const key = (0, key_1.resolveAdvisorInspectorKey)(config, inspector, index, isSingle);
const base = `/advisor-inspector/${key}`;
// Recheck nudge endpoint (BE → app, fire-and-forget).
// checkSubscriptionExpiration=false: nudges are platform traffic; 402-ing here
// would mask the async flow. App-paid features should gate inside onRecheck.
app.post(`${base}/recheck`, json_response_1.handle, (0, crowdin_client_1.handle)({
config,
optional: false,
checkSubscriptionExpiration: false,
moduleKey: key,
}), (0, recheck_1.default)(inspector, key));
if (inspector.uiPath || inspector.formSchema) {
app.use(`${base}/iframe`, (0, ui_module_1.default)({ config, moduleType: key }), (0, render_ui_module_1.default)(Object.assign(Object.assign({}, inspector), { key }), config));
}
}
}