import * as session from 'express-session'; import {Store} from 'express-session'; import {DefaultConfig, Redis} from '.'; import * as redisStore from "connect-redis"; import {RequestHandler} from 'express'; let sessionStore: Store|undefined = undefined; function getRouter(options?: Partial): RequestHandler { DefaultConfig.requireEnv('SESSION_SECRET', true); if (Redis.client && sessionStore !== undefined) { const RedisStore = redisStore(session); sessionStore = new RedisStore({client: Redis.client}); } return session({ store: sessionStore, secret: DefaultConfig.SESSION_SECRET || 'keyboard cat', resave: false, saveUninitialized: true, cookie: {secure: false}, ...options, }); } export const Session = { getRouter, };