@bob-kit/client

中文文档
0.0.34发布于 2026/05/01ISCTypeScriptESM + CJS近 30 天下载 7250

免责声明:
鲍勃正在开发中! 自己冒险使用.

中文使用文档
文档目录13 节
  1. 鲍勃是什么?
  2. 安装
  3. 环境要求
  4. 概念:驱动和缓存
  5. 快速启动( 节点 + SQLite)
  6. 高级实例
  7. 参数
  8. API 密码
  9. default export function bob(driver: Driver)
  10. bobQuery({ driver, input, id? })
  11. @bob-kit/client/cache
  12. 错误
  13. 重要说明

@bob- kit/ 客户端

免责声明:
鲍勃正在开发中! 自己冒险使用.

公务 鲍勃 消费者客户端 bob DSL 从 Java 脚本/ Type 脚本。 。 。 .

这个包装入了Bob的运行时间(WASM),并暴露出一个小API:

  • 翻译你的 bob 为给定的引擎输入SQL(SQLite,MariaDB/MySQL,PostgreSQL).
  • 使用一个 Driver 你提供.
  • 可选缓存转录结果.

鲍勃是什么?

鲍勃 是一个轻量级、 声明式的转录器, 可以定义数据库 计划 财务报告和审定财务报表 查询 使用一个简单的,人类可读的DSL bob。 。 。 .
Bob然后将这些定义转换成SQL,用于多个引擎,例如: SQL 点, (中文(简体) ), 马里亚DB/ MySQL,以及 邮递SQL。 。 。 .

与其用手写动词SQL,不如简洁地描述表格,关系,以及查询,而Bob生成相应的SQL.

安装

与 pnpm 连接 :

pnpm add @bob-kit/client

以 npm 为单位 :

npm i @bob-kit/client

用纱线:

yarn add @bob-kit/client

环境要求

现在, @bob-kit/client 使用节点API加载WASM(fs, (中文(简体) ), vm) (中文(简体) ).
也就是说现在 面向节点.js (不是浏览器)今天执行.

概念:驱动和缓存

客户需要一个 Driver (从) @bob-kit/types执行生成的 SQL :

  • 驱动程序:目标引擎("sqlite" | "mariadb" | "mysql" | "postgres") (中文(简体) ).
  • 等离子( 等离子): 执行 SQL 的async 函数(并返回行) SELECT) (中文(简体) ).
  • 缓存: 缓存转录结果的可选执行(memory, redis等).

此套件还导出一个现成的内存: MemoryCache。 。 。 .

快速启动( 节点 + SQLite)

使用完整示例 @bob-kit/sqlite 作为 querier数字 :

import bob from "@bob-kit/client";
import { MemoryCache } from "@bob-kit/client/cache";
import { sqlite } from "@bob-kit/sqlite";

const querier = sqlite(":memory:");

const client = bob({
  driver: "sqlite",
  querier,
  cache: new MemoryCache(),
});

// 1) Define multiple tables in a single query
await client.query`
  table Profile {
    id id
    avatar string
  }

  table Users {
    id id
    name string
    lastName string
    Profile
  }
`;

// 2) Insert one entity
await client.query`
  new Profile {
    avatar "bear"
  }
`;

// 3) Bulk insert with multiple rows and columns
await client.query`
  new Users name          lastName      Profile.id {
            "John"        "Doe"         1
            "Mary"        "Jane"        3
            "Robert"      "Smith"       3
  }
`;

// 4) Create reusable query functions with types
const getUserByName = (name: string) => client.query`
  get Users {
    name
    profile_id

    -> Profile {
        avatar
    }

    desc Profile.id
  }
`;

const users = await getUserByName("John");

高级实例

结合和关系

// Join with related table
const usersWithProfiles = await client.query`
  get Users {
    id
    name
    lastName

    -> Profile {
      avatar
    }
  }
`;

过滤和排序

const filteredUsers = await client.query`
  get Users {
    id
    name
    if name = "John" || "Mary"
  }
`;

const sortedUsers = await client.query`
  get Users {
    id
    name
    desc id
  }
`;

参数

API 接受参数作为参数 query(...)。在内部,模板文字将使用 ? 作为占位符.

const byEmail = await client.query`
  get Users {
    id
    name
    email
    if email == ?
  }
`("[email protected]");

API 密码

default export function bob(driver: Driver)

创建客户端实例.

以 :

  • query<A>(input, ...params): Promise<A[]>: 执行 a bob 输入。 为了方便,你可以调整结构: const { query: b } = bob(...)。 。 。 .
  • cache(id)(input, ...params): Promise<A[]>: 与 query,但缓存转换结果在一个固定 id。 。 。 .
  • factory.<id>(input, ...params): Promise<A[]>: 快捷键 cache("<id>")(...)。 。 。 .

bobQuery({ driver, input, id? })

低级函数,只执行转录(如果存在则应用缓存). 你通常不需要它.

@bob-kit/client/cache

包括:

  • MemoryCache: 内嵌 (映射)缓存 BobQueryResult。 。 。 .

错误

当Bob返回解析/验证/递译错误时,客户端会丢弃 BobError 改为:

  • name: 一个值来自 BobErrors (从) @bob-kit/types/errors(中文(简体) )
  • message: 错误细节

重要说明

  • 多重行动:如果您的输入生成超过1个 SQL 动作,客户端会丢出(MultipleActions) (中文(简体) ).
    当前流量假定 0或1个动作 每次执行.
  • 表格执行: 如果输出包含 tables,它们全部在动作/静音前被执行(顺序).

版本与发布记录

@bob-kit/client 共发布 35 个版本,首次发布于 2025/11/17;过去 12 个月发布了 35 个版本。

版本发布日期距今
0.0.34latest2026/05/016 个月前
0.0.332026/02/228 个月前
0.0.322026/01/249 个月前
0.0.312026/01/249 个月前
0.0.302026/01/229 个月前
0.0.292026/01/149 个月前

关于 @bob-kit/client 的常见问题

@bob-kit/client 是什么?

免责声明: 鲍勃正在开发中! 自己冒险使用.

如何安装 @bob-kit/client?

在项目目录运行 npm install @bob-kit/client,或使用 pnpm add / yarn add / bun add。

@bob-kit/client 支持 TypeScript 吗?

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

@bob-kit/client 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bob-kit/client 可以商用吗?

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

@bob-kit/client 的下载量有多少?

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

@bob-kit/client 还在维护吗?

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