UNPKG

4.08 kBJavaScriptView Raw
1"use strict";
2var __importStar = (this && this.__importStar) || function (mod) {
3 if (mod && mod.__esModule) return mod;
4 var result = {};
5 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
6 result["default"] = mod;
7 return result;
8};
9var __importDefault = (this && this.__importDefault) || function (mod) {
10 return (mod && mod.__esModule) ? mod : { "default": mod };
11};
12Object.defineProperty(exports, "__esModule", { value: true });
13const akala = __importStar(require("@akala/core"));
14const router = __importStar(require("./router"));
15const stream = __importStar(require("stream"));
16const send_1 = __importDefault(require("send"));
17var log = akala.log('akala:master');
18var httpRouter = router.HttpRouter;
19exports.Router = httpRouter;
20function serveStatic(path, options) {
21 if (!options)
22 options = {};
23 if (typeof (options.fallthrough) == 'undefined')
24 options.fallthrough = true;
25 return function (req, res, ...next) {
26 var sendstr = send_1.default(req, path || req.url, options);
27 sendstr.on('error', function (error) {
28 if (error && error.code == "ENOENT")
29 if (options.fallthrough)
30 next[next.length - 1]();
31 else
32 res.status(404).end();
33 else
34 next[next.length - 1](error);
35 });
36 sendstr.pipe(res);
37 };
38}
39exports.serveStatic = serveStatic;
40function expressWrap(handler) {
41 return function (req, response, ...rest) {
42 handler(req, response, rest[rest.length - 1]);
43 };
44}
45exports.expressWrap = expressWrap;
46function expressWrapError(handler) {
47 return function (error, req, response, ...rest) {
48 handler(error, req, response, rest[rest.length - 1]);
49 };
50}
51exports.expressWrapError = expressWrapError;
52function translateRequest(req) {
53 return {
54 url: req.url,
55 headers: req.headers,
56 httpVersion: req.httpVersion,
57 httpVersionMajor: req.httpVersionMajor,
58 httpVersionMinor: req.httpVersionMinor,
59 ip: req.ip,
60 method: req.method,
61 params: req.params,
62 path: req.path,
63 protocol: req.protocol,
64 query: req.query,
65 rawHeaders: req.rawHeaders,
66 rawTrailers: req.rawTrailers,
67 statusCode: req.statusCode,
68 statusMessage: req.statusMessage,
69 trailers: req.trailers,
70 body: req['body'],
71 user: req['user']
72 };
73}
74exports.translateRequest = translateRequest;
75function handleResponse(res, locationReplacer, defaultStatus) {
76 return function (response) {
77 var status = response.statusCode || defaultStatus;
78 if (response.headers)
79 Object.keys(response.headers).forEach(function (header) {
80 if (header.toLowerCase() == 'location' && locationReplacer != null)
81 response.headers[header] = locationReplacer(response.headers[header]);
82 res.setHeader(header, response.headers[header]);
83 });
84 res.writeHead(status, response.statusMessage, response.headers);
85 if (response instanceof stream.Readable)
86 response.pipe(res);
87 else {
88 if (Buffer.isBuffer(response.data)) {
89 log('sending buffer');
90 res.write(response.data);
91 }
92 else if (Array.isArray(response.data)) {
93 log('sending array');
94 response.data.forEach(function (chunk) {
95 res.write(chunk);
96 });
97 }
98 else {
99 log('sending object');
100 if (typeof (response.data) !== 'string' && typeof response.data != 'number' && typeof (response.data) !== 'undefined')
101 res.write(JSON.stringify(response.data));
102 else if (typeof (response.data) != 'undefined')
103 res.write(response.data);
104 }
105 res.end();
106 }
107 };
108}
109exports.handleResponse = handleResponse;
110//# sourceMappingURL=master-meta.js.map
\No newline at end of file