@brickkit/crud

中文文档
0.13.1发布于 2026/11/07MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2958

Brick 的 Opt- in 资源 CRUD 插件

中文使用文档
文档目录5 节
  1. 外地政策
  2. 业务和路线
  3. 钩子和交易
  4. 本地 vs HTTP 行精度
  5. 安全财产

@brickkit/ crud (英语)

Brick-TS 的 Opt- in 自动 CRUD 资源插件. 核心资源申报身份 和一张表格,但没有记录任何行动; crud() 添加已键入的列表/ get/ create/ 更新/删除/查找 One/计算/存在 HTTP 线路.

晚点再买一分钱 @brickkit/core 作为同伴的依赖.

bun add @brickkit/crud @brickkit/core
import { defineService } from "@brickkit/core";
import { crud } from "@brickkit/crud";

const service = defineService("pages");
const page = service.resource({ name: "page", table: pages, id: pages.id }).use(
  crud({
    access: "public",
    fields: {
      id: { read: true, filter: ["eq", "in"] },
      title: {
        read: true,
        create: true,
        update: true,
        filter: ["eq", "contains"],
        sort: true,
      },
    },
  }),
);

await page.list.run({ where: { field: "title", op: "contains", value: "Hi" } });

access 需要: 使用 "public" 或一个 authorize编号 :scope 政策.

authorize 接受作为行动歧视联盟的验证输入. 检查中 operation 缩进 input 该操作的形状:

crud({
  fields: { teamId: { read: true, filter: ["eq"] } },
  access: {
    authorize: ({ operation, input, ctx }) => {
      if (operation === "list" && input.where && "field" in input.where) {
        const filter = input.where;
        return filter.field === "teamId" && filter.value === ctx.teamId;
      }
      return false;
    },
  },
});

CrudAuthorizeArgs<F> 财务报告和审定财务报表 CrudInputs<F> 用于可重复使用的政策 与业务投入 F 以 typeof fields外地政策 限制选择、写、排序和过滤操作符。 明确领域 计划提供价值类型。 列衍生值和ID 保留 unknown 因为 crud() 仅在插件附加到资源时才收到表格. 创建属性仍然是可选的,因为列默认和可失效 也在配置时不可用 . scope 仍然只接收 { operation, ctx }。 。 。 . 未列出的字段和省略的允许保留禁用 .

外地政策

read, (中文(简体) ), create, (中文(简体) ), update, (中文(简体) ), filter,以及 sort 独立。 未列出 字段和省略权限被禁用. schema 覆盖验证 用于田地; scrub 转换返回的值(读取和写入结果) 不更改存储值.

每个字段必须启用筛选操作符并与列兼容 类型:文本运算符(contains, (中文(简体) ), startsWith, (中文(简体) ), endsWith需要字符串 列; 命令运算符 (gt, (中文(简体) ), gte, (中文(简体) ), lt, (中文(简体) ), lte, (中文(简体) ), between要求 字符串/ 数字/ 日期/ bigint 列。 排序为 字符串/ 数字/ boolean/ date/ bigint 列 .

业务和路线

方法路径行动
邮政/api/page/query列表
获取/api/page/:id起来
邮政/api/page创建
帕齐/api/page/:id更新
迪莱特/api/page/:id删除
邮政/api/page/find-one找到一个
邮政/api/page/count计数
邮政/api/page/exists已存在
邮政/api/page/bulk-create大块创造
邮政/api/page/bulk-update更新日期
邮政/api/page/bulk-delete批量删除

operations: { delete: false } (或 operations: false)删除本地 能力. routes: { list: false } (或 routes: false保持本地状态 无需HTTP、OpenAPI或浏览器曝光即可调用动作. defaultLimit (违约20)和 maxLimit (默认 100) 绑定的 pagination.

散装作业停止,直到 operations 设为 true。 。 。 . bulkCreate 带 { items }, (中文(简体) ), bulkUpdate 带 { items: [{ id, data }] } 财务报告和审定财务报表 bulkDelete 带 { ids }每个项目都经过验证、授权、范围 并钩上它的一排操作。 整批都是一个 交易: 当项目失败时, 无保留, 错误带有 项的代码和 details: { index, code, message }。 。 。 . maxBatchSize (默认为100) 封顶每个呼叫的项目.

钩子和交易

beforeCreate, (中文(简体) ), afterCreate, (中文(简体) ), beforeUpdate, (中文(简体) ), afterUpdate, (中文(简体) ), beforeDelete 财务报告和审定财务报表 afterDelete 在信件交易中运行并接收为 tx。 。 。 . 将其它表格写入 tx,或以 { ...ctx, db: tx },而写作承诺或随行而回. 钩子 这会把整个行动都推回去. afterCommit 运行于 承诺,用于缓存清理和实时出版. 它的错误被记录下来,不是 已经返回.

本地 vs HTTP 行精度

当地 list编号 :get 输入动作 Selected<T, F, S> - 那个 select 投影缩小返回类型。 超过 HTTP 每个可读密钥都是可选的 在行计划,因为 select 预测省略了密钥, 因此验证 使用时存在客户端 select。 。 。 .

安全财产

  • 只允许列表的字段、操作符和排序列到达 SQL; 未知 投影、写作、过滤和以400元命令失败验证.
  • where 支持嵌入 and编号 :or 阵列可达20级;更深的巢穴 在验证重现前,用400元拒绝.
  • contains编号 :startsWith编号 :endsWith 逃脱 LIKE 通配符( e)%, (中文(简体) ), _, (中文(简体) ), \) (中文(简体) ).
  • access.scope 限制每个读取和突变(包括局部行动) ; 范围化创建在没有明确的创建政策的情况下被拒绝.
  • 特异性违规回回409 不泄露司机出错.
  • 读取重新使用捆绑的查询(128-输入缓存) 驱动程序支持它们.

见 资源指南 全文 向导.

版本与发布记录

@brickkit/crud 共发布 23 个版本,首次发布于 2026/10/11;过去 12 个月发布了 23 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.13.1latest2026/11/071 天前
0.13.02026/11/071 天前
0.12.02026/11/053 天前
0.11.02026/10/309 天前
0.10.02026/10/309 天前
0.9.12026/10/2613 天前

其他发布通道:beta → 0.3.0-beta.5。

关于 @brickkit/crud 的常见问题

@brickkit/crud 是什么?

Brick 的 Opt- in 资源 CRUD 插件

如何安装 @brickkit/crud?

在项目目录运行 npm install @brickkit/crud,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:drizzle-orm(^0.45.2)、@brickkit/core(^0.13.1)、@sinclair/typebox(^0.34.52)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@brickkit/crud 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@brickkit/crud 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@brickkit/crud 可以商用吗?

@brickkit/crud 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@brickkit/crud 的下载量有多少?

根据 npm 官方下载统计,@brickkit/crud 在 2026/10/09 – 2026/11/07 这 30 天内被下载 2,958 次,日均约 99 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@brickkit/crud 还在维护吗?

最新版本 0.13.1 发布于 2026/11/07(1 天前);至今共发布 23 个版本,其中过去 12 个月发布了 23 个;首次发布于 2026/10/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。