UNPKG

rjweb-server

Version:

Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS

79 lines (78 loc) 2.32 kB
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; } } } export { handleEvent as default };