q-ts
纯类型脚本执行 jq 查询语言. 为 V8 隔离系统安全(无节点.js内置,无文件系统/网络),使其与Temperal Workflows和其他沙盒运行时间相兼容.
特征
- 解析器 校验器 解译管道中存在大量跨度错误.
- 决定性评价:稳定对象密钥顺序;可配置步骤/深度/输出的限制;零运行时间依赖性.
- 从不单独地触及主机时钟,文件系统,网络,或环境. 只有在注射时才有时间(
options.now) (中文(简体) ). - 广泛的jq内建覆盖——类型/转换、收藏、字符串、数学、发电机、路径操作和可注射-小时日期套件(见 建筑) (中文(简体) ).
- 高级语言特性 :
reduce, (中文(简体) ),foreach, (中文(简体) ),try编号 :catch,递归后世(..),指定/更新运算符(=, (中文(简体) ),|=, (中文(简体) ),+=),并调整结构as装订. - 双重无害环境管理/CJS通过
tsdown与.d.ts类型.
安装
npm install @gabrielbryk/jq-ts
# or: pnpm add @gabrielbryk/jq-ts
使用量
import { run } from '@gabrielbryk/jq-ts'
const [result] = run('.foo // "fallback"', { foo: null })
// result === "fallback"
run(source, input, options?) 返回一系列结果(jq过滤器产生零或多值)。 选项包括 limits,预定义 vars,以及 now数字 :
// Seed variables (without the `$` prefix):
run('.[] | . + $bump', [1, 2], { vars: { bump: 10 } }) // => [11, 12]
// `now` and date builtins require an injected instant (a Date or epoch seconds).
// Without it, `now` throws — jq-ts never reads the host clock itself.
run('now | todate', null, { now: 1_700_000_000 }) // => ["2023-11-14T22:13:20Z"]
建筑
代表(不是详尽无遗的)对已执行内容的看法;见 planning-docs/compatibility.md 用于完整的jq 1.8矩阵.
- 类型转换( T)数字 :
type, (中文(简体) ),tostring, (中文(简体) ),tonumber, (中文(简体) ),toboolean, (中文(简体) ),length, (中文(简体) ),not, (中文(简体) ),has, (中文(简体) ),in, (中文(简体) ),keys, (中文(简体) ),keys_unsorted,和类型过滤器(arrays, (中文(简体) ),objects, (中文(简体) ),booleans, (中文(简体) ),numbers, (中文(简体) ),strings, (中文(简体) ),nulls, (中文(简体) ),values, (中文(简体) ),iterables, (中文(简体) ),scalars, (中文(简体) ),finites, (中文(简体) ),normals) (中文(简体) ). - 收款数字 :
map, (中文(简体) ),map_values, (中文(简体) ),select, (中文(简体) ),sort, (中文(简体) ),sort_by, (中文(简体) ),group_by, (中文(简体) ),unique, (中文(简体) ),unique_by, (中文(简体) ),reverse, (中文(简体) ),flatten, (中文(简体) ),add, (中文(简体) ),min编号 :max编号 :min_by编号 :max_by, (中文(简体) ),to_entries, (中文(简体) ),from_entries, (中文(简体) ),with_entries, (中文(简体) ),del, (中文(简体) ),pick, (中文(简体) ),transpose, (中文(简体) ),bsearch, (中文(简体) ),combinations, (中文(简体) ),contains, (中文(简体) ),inside。 。 。 . - 字符串数字 :
split, (中文(简体) ),join, (中文(简体) ),startswith, (中文(简体) ),endswith, (中文(简体) ),ltrimstr编号 :rtrimstr编号 :trimstr, (中文(简体) ),trim编号 :ltrim编号 :rtrim, (中文(简体) ),ascii_downcase, (中文(简体) ),ascii_upcase, (中文(简体) ),explode, (中文(简体) ),implode, (中文(简体) ),index, (中文(简体) ),rindex, (中文(简体) ),indices, (中文(简体) ),utf8bytelength, (中文(简体) ),tojson, (中文(简体) ),fromjson。 。 。 . - 数学数字 :
floor, (中文(简体) ),ceil, (中文(简体) ),round, (中文(简体) ),abs, (中文(简体) ),sqrt, (中文(简体) ),nan, (中文(简体) ),infinite, (中文(简体) ),isnan, (中文(简体) ),isinfinite, (中文(简体) ),isfinite, (中文(简体) ),isnormal。 。 。 . - 发电机和迭代数字 :
range, (中文(简体) ),limit, (中文(简体) ),skip, (中文(简体) ),first, (中文(简体) ),last, (中文(简体) ),nth, (中文(简体) ),while, (中文(简体) ),until, (中文(简体) ),repeat, (中文(简体) ),recurse, (中文(简体) ),isempty, (中文(简体) ),all, (中文(简体) ),any, (中文(简体) ),empty。 。 。 . - 路径数字 :
path, (中文(简体) ),paths, (中文(简体) ),getpath, (中文(简体) ),setpath, (中文(简体) ),delpaths。 。 。 . - 日期 (需要为
now:now, (中文(简体) ),gmtime, (中文(简体) ),localtime, (中文(简体) ),mktime, (中文(简体) ),strftime, (中文(简体) ),strflocaltime, (中文(简体) ),strptime, (中文(简体) ),todate编号 :todateiso8601, (中文(简体) ),fromdate编号 :fromdateiso8601。 。 。 . - 错误控制流量( C)数字 :
error, (中文(简体) ),try编号 :catch, (中文(简体) ),if编号 :then编号 :elif编号 :else编号 :end, (中文(简体) ),reduce, (中文(简体) ),foreach内置def, (中文(简体) ),as分解结构,备选//选择?。 。 。 .
文档
planning-docs/requirements.md——确定性与相容性约束planning-docs/compatibility.md——jq 1.8相容矩阵和帮助 API 注释planning-docs/workflow-dsl.md——将jq-ts作为表达引擎嵌入主机DSL(${...}邮袋)planning-docs/subset.md——支持语法和内建planning-docs/design.md- 口译设计和安全限制planning-docs/testing.md合规战略(包括jq整合装置)
发展
git clone https://github.com/gabrielbryk/jq-ts.git
cd jq-ts
pnpm install
pnpm run build
密钥命令 :
pnpm run dev- 维特表pnpm run test- 全套测试套件(包括jq集成;如果jq缺少)pnpm run test:coverage——覆盖检测pnpm run lint——ESLint公司pnpm run format:write- 初步格式化pnpm run build——建设CJS/ESM+型号pnpm run ci——构建+格式检查+输出+林特+测试
捐款
见 捐款额我们遵循常规承诺,并要求 pnpm run ci ưμ㼯A 一般事务人员(其他职等)。 。 。 .
许可证
麻省理工学院