rjweb-server
Version:
Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS
99 lines (98 loc) • 3.23 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var handleEvent_exports = {};
__export(handleEvent_exports, {
default: () => handleEvent
});
module.exports = __toCommonJS(handleEvent_exports);
async function handleEvent(event, ctr, ctx, ctg) {
ctx.execute.event = "none";
switch (event) {
case "httpError":
case "wsConnectError":
case "wsMessageError":
case "wsCloseError": {
ctx.executeCode = false;
try {
if (!await ctg.controller.emitSafe(event, ctr, ctx.error)) {
if (ctr.type === "http" || ctr.type === "upgrade" || ctr.type === "close") {
ctx.response.status = 500;
ctx.response.statusMessage = void 0;
ctx.response.content = [`An Error occured:
${ctx.error}`];
console.error(`An Error occured:
`, ctx.error);
} else {
ctr.print(`An Error occured:
${ctx.error}`);
ctg.logger.error(`An Error while handling request occured:
`, ctx.error);
}
}
} catch (err) {
if (ctr.type === "http" || ctr.type === "upgrade" || ctr.type === "close") {
ctx.response.status = 500;
ctx.response.statusMessage = void 0;
ctx.response.content = [`An Error occured in the ${event} event:
${err}`];
console.error(`An Error occured in the ${event} event:
`, err);
} else {
ctr.print(`An Error occured in the ${event} event:
${err}`);
console.error(`An Error occured in the ${event} event:
`, err);
}
}
break;
}
case "route404": {
try {
ctx.response.status = 404;
ctx.response.statusMessage = void 0;
ctx.response.content = [`Cannot ${ctr.url.method} ${ctr.url.path}`];
await ctg.controller.emitSafe(event, ctr);
} catch (err) {
ctx.error = err;
await handleEvent("httpError", ctr, ctx, ctg);
}
break;
}
case "httpRequest": {
try {
await ctg.controller.emitSafe(event, ctr, () => ctx.executeCode = false);
} catch (err) {
ctx.error = err;
await handleEvent("httpError", ctr, ctx, ctg);
}
break;
}
case "wsConnect":
case "wsMessage":
case "wsClose": {
try {
await ctg.controller.emitSafe(event, ctr, () => ctx.executeCode = false);
} catch (err) {
ctx.error = err;
await handleEvent(event.concat("Error"), ctr, ctx, ctg);
}
break;
}
}
}