/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/pakkasmarja-berries@1.0.42/app.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
(()=>{"use strict";const e=require("architect"),r=require("http"),s=require("path"),t=require("express"),i=require("body-parser"),o=require("nconf"),a=require("keycloak-connect"),n=require("express-session"),c=require("i18n"),l=require("cors"),u=require("connect-session-sequelize")(n.Store);o.env({separator:"__",lowerCase:!0,parseValues:!0,transform:e=>(e.key=e.key.replace(/base[uU]rl/g,"baseUrl"),e.key=e.key.replace(/client[iI]d/g,"clientId"),e.key=e.key.replace(/client[sS]ecret/g,"clientSecret"),e.key=e.key.replace(/([^_])_([^_])/g,"$1-$2"),e)}).file({file:__dirname+"/config.json"}).defaults(require(__dirname+"/default-config.json"));const d=require(__dirname+"/options"),g=e.loadConfig(__dirname+"/config.js");if(!d.isOk())return d.printUsage(),void(process.exitCode=1);process.on("unhandledRejection",(e=>{console.error("UNHANDLED REJECTION",e?e.stack:null)})),e.createApp(g,((e,g)=>{if(e)return console.error(e),void(process.exitCode=1);const k=g.getService("shady-sequelize").sequelize,p=g.getService("shady-messages"),m=g.getService("shady-worker"),v=g.getService("shady-websockets"),f=g.getService("pakkasmarja-berries-models"),_=g.getService("pakkasmarja-berries-routes"),h=g.getService("pakkasmarja-berries-rest"),y=g.getService("pakkasmarja-berries-ws-messages"),S=g.getService("pakkasmarja-berries-scheluders"),b=g.getService("pakkasmarja-berries-cluster-messages"),q=g.getService("logger"),j=d.getOption("port")||3e3,w=d.getOption("host")||"localhost";m.start(o.get("server-group"),j,w);const C=t(),$=r.createServer(C),x=new u({db:k,table:"ConnectSession"});x.sync();const I=new a({store:x},o.get("keycloak:rest"));$.listen(j,(()=>{q.info("Http server started")})),c.configure({locales:["fi"],directory:`${__dirname}/locales`,defaultLocale:"fi",autoReload:!1}),C.use(n({store:x,resave:!1,saveUninitialized:!0,secret:o.get("session-secret")})),C.use(I.middleware({logout:"/logout"})),C.use(((e,r,s)=>{e.pakkasmarjaBarries={isLoggedIn:e.kauth&&e.kauth.grant},s()})),C.set("trust proxy",!0),C.use(l()),C.use(i.urlencoded({extended:!0})),C.use(i.json()),C.use(t.static(s.join(__dirname,"webapp"))),C.use(t.static(s.join(__dirname,"public"))),C.use(c.init),C.set("views",s.join(__dirname,"views")),C.set("view engine","pug");const U=new v($,((e,r)=>{try{e?f.findSession(e).then((e=>{r(e&&e.userId)})).catch((e=>{q.error(e),r(!1)})):r(!1)}catch(e){q.error(`Websocket authentication failed ${e}`),r(!1)}}));U.on("close",(e=>{try{const r=e.client.getSessionId();console.log(`Websocket session ${r} closed`),setTimeout((()=>{f.deleteSession(r).then((()=>{q.info(`Session ${r} removed`)})).catch((e=>{q.error(`Failed to delete session ${e}`)}))}),15e3)}catch(e){console.log("Closing websocket session failed",e)}})),S.start(),_.register(C,I),h.register(C,I),y.register(U),b.register(p,U)}))})();
//# sourceMappingURL=/sm/6b37d88e80ff049fe45e83146b6654cd3dcf44b9ab51bba37c87b06eeb84aa83.map