UNPKG

2.62 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const commands_1 = require("@akala/commands");
4const router_1 = require("../router");
5const core_1 = require("@akala/core");
6const processors_1 = require("@akala/commands/dist/processors");
7function wrapHttp(container, command) {
8 return function (req, res, next) {
9 var result = processCommand(container, command, { '$request': req, $next: next, $response: res });
10 if (core_1.isPromiseLike(result)) {
11 result.then(function (r) {
12 res.json(r);
13 }, function (err) {
14 res.status(500).json(err);
15 });
16 }
17 else if (typeof result != 'undefined')
18 res.json(result);
19 else
20 res.sendStatus(201);
21 };
22}
23async function processCommand(container, c, injected) {
24 var req = injected.$request;
25 return processors_1.Local.execute(c, function (...args) {
26 container.dispatch(c.name, ...args);
27 }, container, { param: [], route: req.params, query: req.query, body: req.body, headers: req.headers, ...injected });
28}
29function wrapWorker(container, c) {
30 return function (req, res) {
31 var result = processCommand(container, c, { '$request': req, $callback: res });
32 if (core_1.isPromiseLike(result)) {
33 result.then(function (r) {
34 res(200, r);
35 }, function (err) {
36 res(500, err);
37 });
38 }
39 else if (typeof result != 'undefined')
40 res(result);
41 else
42 res(201);
43 };
44}
45exports.trigger = new commands_1.Trigger('http', function register(container, router) {
46 var commandRouter = new router_1.HttpRouter();
47 if (!(router instanceof router_1.HttpRouter))
48 commandRouter.attachTo(router);
49 commands_1.metadata(container).commands.forEach(command => {
50 if (!command.config || !command.config.http)
51 return;
52 var config = command.config.http;
53 if (config.method === 'use' || !config.method) {
54 if (commandRouter instanceof router_1.HttpRouter)
55 commandRouter.use(config.route, wrapHttp(container, command));
56 else
57 commandRouter.use(config.route, wrapWorker(container, command));
58 }
59 else if (router instanceof router_1.HttpRouter)
60 commandRouter[config.method](config.route, wrapHttp(container, command));
61 else
62 commandRouter[config.method](config.route, wrapWorker(container, command));
63 });
64 return commandRouter;
65});
66//# sourceMappingURL=http.js.map
\No newline at end of file