import express,{Router} from "express"; import { EnumMap,CustomHandlers } from "@onebro/oba-common"; import { AppMasterCoreType } from "../../am-core"; export type GetCustomHandlers = (m:T) => CustomHandlers; export type AppMasterRouterConstructor = (m:T) => Router; export interface PublicOpts {maxAge:3000000;dirname:string;} export interface ViewsOpts {engine:string;dirname:string;} export interface CompressionOpts {} export interface MorganOpts {useDev?:boolean;useLogger?:boolean;} export interface CorsOpts { origins:string[]; preflightContinue:boolean; credentials:boolean;} export interface CookieParserOpts {secret?:string;} export interface MongoStoreOpts { url:string; collection?:string; autoRemove?:string; autoRemoveInterval?:number; autoReconnect?:boolean;} export interface SessionOpts { name:string; secret:string; resave?:boolean; saveUninitialized?:boolean; cookie?:{maxAge:number;}; store?:MongoStoreOpts;} export interface LuscaOpts { csrf?:boolean|{cookie?:string|any;}; csp?:any; xframe?:"SAMEORIGIN"|string; p3p?:string; hsts?:{ maxAge:number; includeSubDomains:boolean; preload:boolean;}; xssProtection?:boolean; nosniff?:boolean; referrerPolicy?:"same-origin"|string;} export interface CsrfOpts {cookie:boolean;} export interface HelmetOpts { csrf?:boolean|{cookie?:string|any;}; csp?:any; xframe?:"SAMEORIGIN"|string; p3p?:string; hsts?:{ maxAge:number; includeSubDomains:boolean; preload:boolean;}; xssProtection?:boolean; nosniff?:boolean; referrerPolicy?:"same-origin"|string;} export interface BodyParserOpts { json?:{limit?:string;}; urlencoded?:{extended?:boolean}; raw?:{type?:string;limit?:string;};} export interface PassportOpts {} export interface FlashOpts {} export interface ErrorHandlerOpts {} export enum AppMasterMiddlewareKeys { public,views,compression,morgan,cors,cookieParser, session,lusca,helmet,csrf,bodyParser,passport, flash,errorhandler,main,custom} export type AppMasterMiddlewareKey = keyof typeof AppMasterMiddlewareKeys; export type AppMasterMiddlewareObj = Partial>; export interface AppMasterMiddlewareConfig extends AppMasterMiddlewareObj { public?:PublicOpts; views?:ViewsOpts; compression?:CompressionOpts; morgan?:MorganOpts; cors?:CorsOpts; cookieParser?:CookieParserOpts; session?:SessionOpts; lusca?:LuscaOpts; helmet?:HelmetOpts; csrf?:CsrfOpts; bodyParser?:BodyParserOpts; passport?:PassportOpts; flash?:FlashOpts; errorhandler?:ErrorHandlerOpts; main?:AppMasterRouterConstructor; custom?:GetCustomHandlers;} export type AppMasterMiddlewareSetter = ( app:express.Application, opts?:AppMasterMiddlewareConfig[k], master?:AppMasterCoreType) => void; export interface AppMasterMiddlewareSetters extends AppMasterMiddlewareObj { public:AppMasterMiddlewareSetter<"public">; views:AppMasterMiddlewareSetter<"views">; compression:AppMasterMiddlewareSetter<"compression">; morgan:AppMasterMiddlewareSetter<"morgan">; cors:AppMasterMiddlewareSetter<"cors">; cookieParser:AppMasterMiddlewareSetter<"cookieParser">; bodyParser:AppMasterMiddlewareSetter<"bodyParser">; session:AppMasterMiddlewareSetter<"session">; lusca:AppMasterMiddlewareSetter<"lusca">; helmet:AppMasterMiddlewareSetter<"helmet">; csrf:AppMasterMiddlewareSetter<"csrf">; flash:AppMasterMiddlewareSetter<"flash">; errorhandler:AppMasterMiddlewareSetter<"errorhandler">; passport:AppMasterMiddlewareSetter<"passport">; pageNotFound:AppMasterMiddlewareSetter; finalHandler:AppMasterMiddlewareSetter;} export interface AppMasterMiddlewareType extends Partial {}