import express, { Router } from "express"; import { EnumMap, CustomHandlers } from "@onebro/oba-common"; import { AppMasterCoreType } from "../../am-core"; export declare type GetCustomHandlers = (m: T) => CustomHandlers; export declare 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 declare enum AppMasterMiddlewareKeys { public = 0, views = 1, compression = 2, morgan = 3, cors = 4, cookieParser = 5, session = 6, lusca = 7, helmet = 8, csrf = 9, bodyParser = 10, passport = 11, flash = 12, errorhandler = 13, main = 14, custom = 15 } export declare type AppMasterMiddlewareKey = keyof typeof AppMasterMiddlewareKeys; export declare 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 declare 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 { }