@buritica/rootstock

中文文档
0.7.0发布于 2026/11/08MITES Module零依赖构建来源已验证近 30 天下载 2368

Bun + Postgres 知识系统的共享能力:摄取,分解,嵌入,检索,判断,以及证明提取的金子都改变不了什么.

中文使用文档
文档目录10 节
  1. 安装
  2. 能力
  3. 黄金在消费回购
  4. 运行运行锁、工作队列和光标
  5. 赠款
  6. 倒车
  7. 运行锁定
  8. 工作队列
  9. 规则
  10. 许可证

根存量

Bun + Postgres知识系统的共享能力:源适配器, 摄取、分解、嵌入、检索和版本判决。 几个 系统移植到一个测试的根上.

没有构建步骤的普通类型脚本 。 Bun直接运行源头.

安装

从 npm 键入精确版本 :

bun add --exact @buritica/rootstock

办公室文档提取器需要其可选的同位素(jszip, (中文(简体) ), mammoth, (中文(简体) ), unpdf没有别的东西能拉他们进来.

每个能力都是子路径导出:

import { runGoldenCli, type GoldenSuite } from "@buritica/rootstock/golden";

能力

子路径状态它会做什么
golden页:1证明重构或取出内容的金色快照没有改变:Canonic JSON、抓取/检查、录音 fetch、种子向量和丢弃的
golden/bun-test页:1将黄金套房登记为 bun test 个案

更多的分期抵达。 第一阶段提取必须同字节相同: 消费者只有在黄金不变的情况下才采用模块。 变化 可以改变后来的答案,一次一个量度的变化.

黄金在消费回购

// goldens/suites.ts
import type { GoldenSuite } from "@buritica/rootstock/golden";
import { chunkText } from "../src/chunk.ts";
import fixture from "./fixtures/chunk/basic.json";

export const suites: GoldenSuite[] = [
  {
    capability: "chunk.split",
    profile: "myrepo-v1",
    cases: [{ id: "basic", input: fixture, run: () => chunkText(fixture.text) }],
  },
];
// goldens/capture.ts — `bun goldens/capture.ts capture|check`
import { runGoldenCli } from "@buritica/rootstock/golden";
import { suites } from "./suites.ts";

process.exit(await runGoldenCli(suites, { dir: "goldens/data", repo: "myrepo" }));
// goldens/goldens.test.ts
import { registerGoldenTests } from "@buritica/rootstock/golden/bun-test";
import { suites } from "./suites.ts";

registerGoldenTests(suites, { dir: "goldens/data" });

capture 拒绝运行时 src/ 与合并基数不同 origin/main,所以黄金总是记录 未经修改的行为.

运行运行锁、工作队列和光标

这个 lock 财务报告和审定财务报表 queue 子路径 (0. 6.0) 在 rootstock 计划 : run_locks, (中文(简体) ), work_queue 财务报告和审定财务报表 cursors。下面的注释是: 操作员需要先打开.

赠款

迁移将表格作为运行它们的作用。 当 应用程序连接为不同的角色, 授予它 :

  • USAGE 计划 rootstock· ;
  • SELECT, (中文(简体) ), INSERT, (中文(简体) ), UPDATE 打开 rootstock.run_locks· ;
  • SELECT, (中文(简体) ), INSERT, (中文(简体) ), UPDATE, (中文(简体) ), DELETE 打开 rootstock.work_queue· ;
  • SELECT, (中文(简体) ), INSERT, (中文(简体) ), UPDATE 打开 rootstock.cursors。 。 。 .

没有他们,锁就拒绝 UNFENCED (栅栏不能写出行)和 队列和光标调用因驱动程序权限错误而失败.

倒车

在0.6.0迁移数据库叶后,将消费者卷回0.5.x 释放时没有文件的应用迁移 : migrate status 读取 数据库(因此是一个漂移显示器页)和 apply --manual 拒绝 直到消费者再次在0.6.0。 一个部署 apply --deploy 还是去 通过。 以出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出.

运行锁定

  • 使用直接终点. 锁定客户端必须是专用连接 改为直接(非集合) Postgres 端点。 通过交易池, 咨询锁及其围栏可以降落在后端 其他跑道 共享,所以一个锁可以共享或被困,而锁无法分辨.

  • 被包围的等待. 大门发出的每个声明(所有权探测器和 (b) 索赔人在索赔中要求赔偿的赔偿额(第34条) probeStallSeconds。探测器确实 不及时回答( 一个静静地丢掉的套接字, 一个已停顿的服务器) 花费一个 联 合 国 maxRecoveries数字 :

    1. 锁定关闭已停顿的会话( 以 endTimeoutSeconds 加号 一秒钟,打开一个新鲜的,发出 lock.session_replaced,以及 说到这里 守住者倒地等收复.
    2. 如果要求读到锁 和栅栏行仍然命名这个 运行中, 持有者最有可能是运行中自己已停顿的后端: a 黑洞连接的后端寿命, 只要服务器的 TCP 保持活动允许。 锁的结尾 pg_terminate_backend,仅限 时 pg_locks 显示后端( 上次运行的 pid 有锁) )在栅栏行仍保留此行名称时,持有此名,以及 发射 lock.stalled_backend_terminated编辑 锁入角色需要特权结束它自己的后端,这个角色有 默认;没有它,锁就会发出 lock.terminate_failed 仅限 等着 若为 pg_locks 显示另一个后端持有, 恢复 立即拒绝,而后端则被留下.
    3. 索赔每一次重审 wait.pollIntervalMs (至少100毫秒,以及 即使没有 opts.wait最多为 probeStallSeconds 再来.

    失败的恢复或被拖住的状态会让大门抛出 UNVERIFIABLE,以及 每一个后来的大门都重新推开它;当跑者自己的后端超过民意测验时, lock.recovery_refused 载出它作为 stalledPid。一个门呼叫可以 现在屏蔽最多6个 probeStallSeconds 加号 endTimeoutSeconds (调查、结案、索赔及其重审、终止、民意调查窗口和 最后一次索赔; 0.6.0在一次索赔之后被拒绝。 等待者获得其界限 尝试锁和栅栏,以等待所剩的(绝不少于) probeStallSeconds和它的信号. release() 以 endTimeoutSeconds 在关闭前释放进程内转动,所以 关闭挂接器,从不持有下一个服务员(数据库锁是, ))),该会话结束.

  • open 每个电话都必须给新客户端. 它为收购而运行过一次 并再次为每一次被停滞的复苏, 结束会话 替换。 一个 open 一个共享客户提出追偿要求 一个被关闭的客户端, 大门拒绝 UNVERIFIABLE。 。 。 .

  • 事件带有原始驱动错误 . 这个 error 锁定事件的字段是 驾驶员抛出的错误, 不变 。 有些司机把服务器的 host:port 在信息中,所以擦干净它 之前,某处航运事件 不应该看到它.

工作队列

  • 事件意味着声明成功,而不是承诺. 已调用 在呼叫器的交易中,队列呼叫以保存点运行并发送 它在语句返回时的事件。 如果电话商后来的交易 活动开始后,仍为从未登陆的改变而出动.
  • "contended" 意思是重试. enqueue 返回时 "contended" 当另一个 编剧们已经过了这行 enqueueLockTimeoutMs什么都没有写,所以 呼叫者重复(或故意放弃事件).
  • 已停放一个死钥匙上的排队装置. 当密钥是死字时 将组合成一行并报告 queue.enqueued 与 result: "on_dead"除非有人打来电话 否则什么也不说 retryDead这样 注意那个事件.
  • 通知失踪的人 queue.drained。 。 。 . 每个 claim 调用发送 queue.drained即使它什么也没有说 那个事件是工人的 活性信号:在几个排水间隔中缺失意味着工人 停下来.
  • 在运行锁定下写入光标 . setCursor 没有比较和设置 : 两个作家比赛,最后一个获胜。 锁定源代码 你推进的光标.

规则

  • 输入依赖( SQL 客户端, fetch计时器,记录器。 模块从未读取 process.env 永远不要打开他们自己的连接.
  • 测试装置是合成的。 消费者数据从不进入这回波.
  • 能力词汇 src/golden/capabilities.ts 由 每个消费者。 添加id是一种添加剂(在0.x上释放补丁); 重命名或删除一个是断裂.

许可证

麻省理工学院

版本与发布记录

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

版本发布日期距今
0.7.0latest2026/11/08今天
0.6.02026/11/071 天前
0.5.12026/11/071 天前
0.5.02026/11/044 天前
0.4.02026/10/2316 天前
0.3.02026/10/2317 天前

关于 @buritica/rootstock 的常见问题

@buritica/rootstock 是什么?

Bun + Postgres 知识系统的共享能力:摄取,分解,嵌入,检索,判断,以及证明提取的金子都改变不了什么.

如何安装 @buritica/rootstock?

在项目目录运行 npm install @buritica/rootstock,或使用 pnpm add / yarn add / bun add。

@buritica/rootstock 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/buritica__rootstock 是否存在。

@buritica/rootstock 支持 ESM 还是 CommonJS?

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

@buritica/rootstock 可以商用吗?

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

@buritica/rootstock 的下载量有多少?

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

@buritica/rootstock 还在维护吗?

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