UNPKG

handow-shm

Version:

E2E test server with Handow engine

1 lines 2.56 kB
"use strict";const e=require("handow"),s=require("./logger"),t=require("app-root-path"),o=require("express"),n=require("./services/shmSetting.js"),a=require("cookie-parser"),r=require("path"),i=require("express-session"),u=require("session-file-store")(i),d=require("morgan"),c=require("./router/router"),h=o(),p=()=>null;"development"===process.env.NODE_ENV&&h.use(d("dev")),h.get("/api/hdwsse",(s,t)=>{s.setTimeout(72e5);const o=e=>{t.write(`data: ${JSON.stringify({type:"data",data:e})}\n\n`)};t.writeHead(200,{"Access-Control-Allow-Origin":"*","Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),s.on("close",()=>{e.eventBus.off("SSE_HANDOW_STREAM",o),t.end()}),t.write(`data: ${JSON.stringify({type:"signal",data:"Connect-Echo"})}\n\n`),e.eventBus.on("SSE_HANDOW_STREAM",o)}),h.use(o.json()),h.use(o.urlencoded({extended:!1})),h.use(a()),h.set("staticRoot",r.join(__dirname,"/")),h.use(o.static(r.join(`${t}`,"/"))),h.use(o.static(r.join(`${t}`,"/node_modules/handow-shm/"))),h.use(i({secret:n.get().sessionSign,cookie:{maxAge:n.get().sessionExpire},resave:!1,saveUninitialized:!1,logFn:p,store:"production"===`${process.env.NODE_ENV}`?new u({logFn:p,retries:100}):void 0})),h.use(n.get().apiPath,c),h.use((e,s,t)=>{"/shmSetting.json"===e.path||"get"!==e.method.toLowerCase()||e.session.shmSetting&&"private"===e.session.shmSetting.shmMode&&!e.session.user.isSigned?s.status(403).json({status:{statusCode:"403000",message:"Resource is secured"}}):t()}),h.use((e,s)=>{if(`${e.path}`.startsWith("/api/"))s.status(404).json({status:{statusCode:"404000",message:"API endpoint not existed"}});else if(/\.[0-9a-z]+$/i.test(e.path))s.status(404).send('<h3 style="color: dimgrey">Resouce Not Found</h3>');else try{require.resolve(r.join(`${t}`,"/node_modules/handow-shm/index.html")),s.sendFile(r.join(`${t}`,"/node_modules/handow-shm/index.html"))}catch(e){s.redirect("/")}}),h.use((e,t,o)=>{if(s.error(e),`${t.path}`.startsWith("/api/"))try{t.exception&&t.exception.status?o.status(t.exception.status).json({status:{statusCode:`${t.exception.status}${t.exception.errCode}`,message:t.exception.error}}):e?e.status?o.status(e.status).json({status:{statusCode:`${e.status}${e.code?e.code:"000"}`,message:e.message?e.message:`${e}`}}):o.status(500).json({status:{statusCode:5e5,message:e.message?e.message:`${e}`}}):o.status(404).json({status:{statusCode:404e3,message:`No API existed for '${t.path}'`}})}catch(e){o.end()}else try{o.status(500).send('<h3 style="color: read">System Error</h3>')}catch(e){o.end()}}),module.exports=h;