import { useCache } from ':src/cache/middleware.ts' import { useCsp } from ':src/csp/middleware.ts' import { useSecurityHeaders } from ':src/security_headers/middleware.ts' import { useSession } from ':src/session/middleware.ts' import { SessionStore } from ':src/session/mod.ts' import { define } from '../utils.ts' export default define.middleware(async (ctx) => { const request = ctx.req // Update fresh context state with session ctx.state.session = SessionStore.getFromRequest(request) // Get response const response = await ctx.next() if (ctx.state?.skipMiddlewares) { return response } // Use custom middleware hooks useSecurityHeaders(request, response, ctx) await useCsp(request, response, ctx) useSession(request, response, ctx) useCache(request, response, ctx) return response })