用途:为 TanStack Start 的服务器函数与服务器路由定制行为,中间件可组合成链,也可被其他中间件依赖。
主要能力:两类中间件。请求中间件由 createMiddleware() 创建,仅用 .server(),作用于所有服务器请求(SSR、路由、函数),无输入校验与客户端逻辑。服务器函数中间件由 createMiddleware({ type: 'function' }) 创建,含 .client() 与 .server(),仅作用于 createServerFn,支持 .validator() 输入校验。请求中间件不能依赖服务器函数中间件,反之可以。
用法:方法顺序被 TypeScript 强制为 middleware() → validator() → client() → server(),顺序错误会报类型错误。用 next({ context }) 沿链向下传上下文;用 sendContext 在客户端与服务端之间传值。通过 createServerFn().middleware([...]) 挂载;服务器路由可在 server.middleware 或 createHandlers 中按处理器挂载。全局中间件在 src/start.ts 用 createStart 配置 requestMiddleware 与 functionMiddleware。客户端中间件可设置 headers(后者覆盖前者,调用点覆盖全部)与自定义 fetch,优先级为调用点 → 较晚中间件 → 较早中间件 → createStart 全局 → 默认 fetch。
限制与注意:客户端 sendContext 属于不可信输入,用 Zod 校验形状不等于授权,必须结合会话主体重新校验访问权限,会话须来自服务端可信来源(如 cookie)。SSR 期间 .client() 回调在服务端执行,使用 localStorage、window 等浏览器 API 会抛 ReferenceError,需用 cookie/headers 或 typeof window 判断。
适用场景:日志、鉴权、权限工厂、多租户工作区校验等。具体安装命令与版本信息暂未提供。