UNPKG

@napp/dti-server

Version:

data transaction interface server library

73 lines (72 loc) 3.19 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BundlerServer = void 0; const dti_core_1 = require("@napp/dti-core"); class BundlerServer { constructor(server) { this.server = server; this.base62 = new dti_core_1.Base62(); } action(meta, ctx) { return __awaiter(this, void 0, void 0, function* () { let actions = []; for (let it of meta) { let action = this.server.getActionByName(it.name); if (action) { action.validation(it.param); // console.log('call', it.name, it.param, await action?.action(it.param, ctx)) actions.push(() => __awaiter(this, void 0, void 0, function* () { return yield (action === null || action === void 0 ? void 0 : action.action(it.param, ctx)); })); } else { throw new Error('not defined action. name=' + it.name); } } return yield Promise.all(actions.map(it => it())); }); } setup(expressRoute, setuper) { if (setuper.factoryBodyparseJson) { expressRoute.post('/__bundler_post__', setuper.factoryBodyparseJson(), (req, res, next) => __awaiter(this, void 0, void 0, function* () { try { let meta = req.body || []; let result = yield this.action(meta, { req, res }); res.json(result); } catch (error) { next(error); } })); expressRoute.get('/__bundler_get__', (req, res, next) => __awaiter(this, void 0, void 0, function* () { var _a; try { let p = (_a = req.query) === null || _a === void 0 ? void 0 : _a.p; if (p) { let json = this.base62.decode(p); let meta = JSON.parse(json); let result = yield this.action(meta, { req, res }); res.json(result); } else { res.json([]); } } catch (error) { next(error); } })); } else { throw new Error('not defined server.factoryBodyparseJson'); } } } exports.BundlerServer = BundlerServer;