app-template/packages/types/AGENTS.md

1.4 KiB
Raw Blame History

AGENTS.md — @app/types

职责

对外/跨层输入校验与共享类型的唯一源。只放 Zod schema 与纯类型,不依赖数据库、不跑 IO。

  • 入参 schema:userSchemas(create / update / get / list / delete)、authSchemas
  • 输出类型:User、UserListOutput 等(手写 DTO,供前端与 service 对齐)

结构

src/
  schemas.ts   # Zod schema + 输出类型(业务入口)
  index.ts     # export * from "./schemas.js"

修改指南

  • 新实体:在 schemas.ts 增加 xxxSchemas 对象(按 create/update/get/list/delete 分组),并在 index.ts 重导出。
  • schema 必须被 @app/trpc 的 procedure 直接使用,不要在 router 里再写一份校验。
  • 输出类型若与 Drizzle 行结构一致,可从 @app/models 的 $inferSelect 派生;若 API 形状与表不一致(如 UserListOutput),在此手写 DTO。
  • 错误消息用中文(与现有 userSchemas 一致)。

约束

  • 零运行时依赖除 zod 外的包;禁止 import @app/db / @app/models。
  • exactOptionalPropertyTypes:可选字段用 .optional(),TS 侧 ?: T | undefined。
  • src/ 下若有 *.js / *.d.ts 产物(历史编译输出),不要手改;真源是 .ts。新增代码只写 .ts。

命令

yarn workspace @app/types typecheck
yarn workspace @app/types lint
yarn workspace @app/types build   # 产出 dist/ 供下游