API middleware

If you create a file named middleware.js or middleware.ts in the src/routes directory or one of its subdirectories, it will become a middleware for API routes in that directory or its subdirectories. Middleware modules default export a middleware function that takes a HatTip RequestContext. It can either return a response or undefined to pass the request to the next middleware or API handler. It can also call await context.next() to call the next handler to be able to modify the response.

import { RequestContext } from "rakkasjs";
import { Session, getSession } from "./session";

declare module "rakkasjs" {
  // Redefine to provide types for ctx.locals
  interface ServerSideLocals {
    session: Session;

export default async function sessionMiddleware(ctx: RequestContext) {
  ctx.locals.session = await getSession(ctx);
  // The session will be available as ctx.locals in subsequent handlers