@napp/dti-server
Version:
data transaction interface server library
50 lines (49 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DtiServer = void 0;
const route_1 = require("./route");
const bundler_1 = require("./bundler");
class DtiServer {
constructor(root) {
this.root = root;
this._actions = new Map();
this._raws = new Map();
}
register(...actions) {
for (let action of actions) {
let name = action.meta.getFullname();
if (this._actions.has(name)) {
throw new Error(`already registed(${name})`);
}
this._actions.set(name, action);
}
return this;
}
rawRegister(route, ...handlers) {
let name = route.getFullname();
if (this._raws.has(name)) {
let olds = this._raws.get(name) || [];
this._raws.set(name, [...olds, ...handlers]);
}
else {
this._raws.set(name, [...handlers]);
}
return this;
}
getActionByName(name) {
return this._actions.get(name);
}
getRawByName(name) {
return this._raws.get(name);
}
static setup(server, setuper) {
let route = setuper.factoryExpressRouter(server.root);
new bundler_1.BundlerServer(server).setup(route, setuper);
route.use(server.root.getLocalPath(), new route_1.DtiServerRoute(server.root, server).setup(setuper));
if (setuper.errorHandle) {
route.use(setuper.errorHandle);
}
return route;
}
}
exports.DtiServer = DtiServer;