@maskedeng-tom/ssrsx
Version:
server side renderer with tsx
106 lines • 3.48 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendData = void 0;
const log_1 = require("../lib/log");
const types_1 = require("../types");
const support_1 = require("./support");
////////////////////////////////////////////////////////////////////////////////
const sendDataKoa = (httpServer, data) => {
const server = httpServer.koa;
if (!server) {
(0, log_1.logError)('server is not Koa');
return;
}
/*
for(const header of data.headers ?? []){
server.ctx.set(header.name, header.value);
}
*/
server.ctx.status = data.status;
server.ctx.type = data.type;
//
if (data.lastModified) {
server.ctx.set('ETag', (0, support_1.getUrl)(httpServer));
server.ctx.set('Cache-Control', 'max-age=0');
server.ctx.set('Last-Modified', data.lastModified.toUTCString());
if (server.ctx.fresh) {
server.ctx.status = 304;
(0, log_1.logHttp)(server.ctx.method, data.status, server.ctx.url, data.source);
return;
}
}
//
server.ctx.body = data.body;
//
if (data.errorLog) {
(0, log_1.logError)(server.ctx.method, data.status, server.ctx.url, data.source);
}
else {
(0, log_1.logHttp)(server.ctx.method, data.status, server.ctx.url, data.source);
}
};
////////////////////////////////////////////////////////////////////////////////
const sendDataExpress = (httpServer, data) => {
const server = httpServer.express;
if (!server) {
(0, log_1.logError)('server is not express');
return;
}
/*
for(const header of data.headers ?? []){
server.res.set(header.name, header.value);
}
*/
server.res.set('content-type', data.type);
//
if (data.lastModified) {
server.res.set('ETag', (0, support_1.getUrl)(httpServer));
server.res.set('Cache-Control', 'max-age=0');
server.res.set('Last-Modified', data.lastModified.toUTCString());
}
//
server.res.status(data.status).send(data.body);
//
if (data.errorLog) {
(0, log_1.logError)(server.req.method, data.status, server.req.url, data.source);
}
else {
(0, log_1.logHttp)(server.req.method, data.status, server.req.url, data.source);
}
};
////////////////////////////////////////////////////////////////////////////////
const sendDataDump = (httpServer, data) => {
const server = httpServer.dumb;
if (!server) {
(0, log_1.logError)('server is not dumb');
return;
}
server.res(data);
};
////////////////////////////////////////////////////////////////////////////////
const sendData = (server, data) => {
var _a, _b;
//
if (data.serviceStart.getTime() > ((_b = (_a = data.lastModified) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0)) {
data.lastModified = data.serviceStart;
}
//
if ((0, types_1.isKoaServer)(server)) {
if (data.redirect) {
return;
}
return sendDataKoa(server, data);
}
if ((0, types_1.isExpressServer)(server)) {
if (data.redirect) {
return;
}
return sendDataExpress(server, data);
}
if ((0, types_1.isDumbServer)(server)) {
return sendDataDump(server, data);
}
throw new Error('server is not Koa or Express');
};
exports.sendData = sendData;
//# sourceMappingURL=sendData.js.map