@foal/core
Version:
Full-featured Node.js framework, with no complexity
45 lines (44 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendResponse = sendResponse;
// std
const stream_1 = require("stream");
// FoalTS
const core_1 = require("../core");
/**
* Convert a FoalTS response to an Express response.
*
* @export
* @param {HttpResponse} response - FoalTS response.
* @param {any} res - Express response used in middlewares.
* @returns {void}
*/
function sendResponse(response, res, logger) {
res.status(response.statusCode);
res.set(response.getHeaders());
const cookies = response.getCookies();
for (const cookieName in cookies) {
const options = cookies[cookieName].options;
if (options.maxAge !== undefined) {
// Convert seconds to milliseconds to make it work with Express.
options.maxAge = options.maxAge * 1000;
}
res.cookie(cookieName, cookies[cookieName].value, options);
}
if ((0, core_1.isHttpResponseRedirect)(response) || (0, core_1.isHttpResponseMovedPermanently)(response)) {
res.redirect(response.statusCode, response.path);
return;
}
if (typeof response.body === 'number') {
response.body = response.body.toString();
}
if (response.stream === true) {
(0, stream_1.pipeline)(response.body, res, (error) => {
if (error) {
logger.error(error.message, { error });
}
});
return;
}
res.send(response.body);
}