# @altnovatrail/contracts 中文文档

规范地址：https://npmcn.com/package/%40altnovatrail/contracts/

版本：0\.9\.6
npm 元数据更新时间：2026-11-07T15:29:32.887Z
中文译文更新时间：2026-11-06T12:50:31.488Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40altnovatrail/contracts
原文对照：https://npmcn.com/package/%40altnovatrail/contracts/?lang=original
项目主页：https://github.com/altnovatrail/spec#readme
源码仓库：https://github.com/altnovatrail/spec

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：890 kB，27 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-11-03T00:48:41.485Z
- 最新版本发布：2026-11-07T15:29:32.524Z
- 近 30 天下载量：3187（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：24（近 12 个月 24 个）

## 中文简介

NovaTrail的API合同代码为TypeScript,原生-gen-es从他们的原生-取出文件:每个合同的电文和enum,及其描述符,用于@bufbuilt/protobuf和Connect.

## 安装

```sh
npm install @altnovatrail/contracts
```

也可以使用：`pnpm add @altnovatrail/contracts`、`yarn add @altnovatrail/contracts`、`bun add @altnovatrail/contracts`

## README

# @altnovatrail/ 合同

代码 [新拖车](https://github.com/altnovatrail)API关于TypeScript的合同:每份合同的电文和语句及其描述词,用于 [原生出产](https://github.com/bufbuild/protobuf-es) 和连接。 合同是原生文件 [`contracts/`](https://github.com/altnovatrail/spec/tree/main/contracts) 内 `altnovatrail/spec`,他们的文本是 [`contracts/README.md`](https://github.com/altnovatrail/spec/blob/main/contracts/README.md)。 。 。 . `protoc-gen-es` 从它们生成此代码: JavaScript 及其声明。 Go 代码从 Go 模块中获取相同的合同 `github.com/altnovatrail/spec/contracts`标记 `contracts/vX.Y.Z` 成员数目相同.

代码文件的路径导出 `.proto` 文件为 `_pb.js` 改为: `.proto`数字 :

```ts
import { create, fromJson, toJson } from "@bufbuild/protobuf";
import { ObservationSchema, Unreadable } from "@altnovatrail/contracts/novatrail/observation/v1/observation_pb.js";

const observation = fromJson(ObservationSchema, json);
const written = toJson(ObservationSchema, observation, { useProtoFieldName: true });
```

密码输入了原生生物的运行时间, `@bufbuild/protobuf`,该软件包在准确版本中取决于 `protoc-gen-es` 写下来的 也使用该版本的运行时间,或者让 npm 用软件包安装它.

一个合同的JSON将每个字段命名为原生字段的名称,以蛇为例,作为文件 `spec` 做:不管它写了什么 `useProtoFieldName: true` 改为 `toJson`。阅读器既取原名,又取下CamelCase 的名,作为 `fromJson` 实际数([合同文本](https://github.com/altnovatrail/spec/blob/main/contracts/README.md)页:1 该套件没有JSON的类型: `protoc-gen-es` 会把它们拼入下卡梅尔Case.

该套件通过它的 `exports`下页 `"moduleResolution": "nodenext"`, (中文(简体) ), `"node16"` 或者说 `"bundler"`。 。 。 . `spec` 严格地用TypeScript 7来检查其申报,并在节点下运行其代码.

## 测试向量

套件带有设备与eval跑者共享的规则的测试向量——写作历史如何折叠,打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出打出出打出打出出[合同文本](https://github.com/altnovatrail/spec/blob/main/contracts/README.md),第12节)——按路径逐一输出,作为JSON:

```ts
import { fromJson } from "@bufbuild/protobuf";
import { HistorySchema } from "@altnovatrail/contracts/novatrail/eval/v1/sample_pb.js";
import groups from "@altnovatrail/contracts/vectors/eval/v1/groups.json" with { type: "json" };

for (const one of groups.cases) {
  const history = fromJson(HistorySchema, one.history);
  // fold the history, make its groups, and compare them with one.visible, one.groups, ...
}
```

他们的留言用原生取出的名字和每个字段来写,一个读者用它从这个包代码中发来的留言的图谋来取出每个字段. 遵循规则的守则通过每个案件。 观测的向量单在Go模块:TypeScript给出没有判断.

## 版本数

软件包的版本是: `altnovatrail/spec` 它来自,没有它的 `v`: 0.7.0为 `v0.7.0`. 0.7行的每放出一次,即使合同没有改变。 以准确的版本,相同的标签 `spec` 子模块和 Go模块 `spec` 你抱住他们,把他们都带走 离开Deptabot,作为Go模块:发布 `spec` 随其文件的修改而出。 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}看情况 `ignore` 匹配列表给出的名称的依赖关系, `@altnovatrail/contracts` 在这里,和 `github.com/altnovatrail/spec/contracts` 为GO模块.

在合同的最后一部分, `v1` ——只补充出. 一个打破它的变化 是一个新的一揽子, `v2`在旧的旁边 在一条新的线上 `spec` (单位:千美元)[合同文本](https://github.com/altnovatrail/spec/blob/main/contracts/README.md)页:1.

## 正在检查归档

Npm 中的归档是文件 `altnovatrail-contracts-<version>.tgz` 上面写着释放物的标志 并注明其名称 NovaTrail 寄存器只让软件包输入其代码一次 spec's `release-verify-npm` 已接受其锁文件,在更改它的拉力请求的CI中(Spec 第R77号决定; [规则.md](https://github.com/altnovatrail/spec/blob/main/RULES.md)硬规则). 它从仓库里流出 `spec` 子模块 :

```sh
just -f spec/justfile release-verify-npm package-lock.json
```

对于这个软件包,它从注册处下载了档案,并对照Sigstore的信任根和同名文件的同名签名捆绑来检查 `altnovatrail/spec`。归档必须由 spec 自己签名 `.github/workflows/release.yml` 打开 `main`,并按其版本与其标签绑定 `package.json` 别动 最后,锁文件 `integrity` 必须是所检查的字节的散列 。 检查一个档案,旁边有包 `just -f spec/justfile release-verify spec v0.7.0 altnovatrail-contracts-0.7.0.tgz`。 。 。 .

释放的证明将档案与释放联系起来,而不是与犯罪有关,以及 `gh release verify-asset` 检查它分开:

```sh
npm pack @altnovatrail/contracts@0.7.0
gh release verify-asset v0.7.0 altnovatrail-contracts-0.7.0.tgz -R altnovatrail/spec
```

发布会通过信任的出版方式,将文件发布给npm本身,npm给出每个版本,从而发布出处证明. 来源名称 `.github/workflows/release.yml` 联 合 国 `altnovatrail/spec` 以及发表它的运行,这是 `main` 当运行开始,而不是总是承诺 释放被切断。 0.7.0是手工出版的,没有出处. 运行未发布版本的发行者——发行前发布的发行者,或发布失败而未再运行的发行者——没有npm,故取其版本存在的标签.

## 许可证

[阿帕奇 - 2.0](https://github.com/altnovatrail/spec/blob/main/LICENSE)运行时间, `@bufbuild/protobuf`,位于Apache-2.0和BSD-3-Clause下.

## 常见问题

### @altnovatrail/contracts 是什么？

NovaTrail的API合同代码为TypeScript,原生-gen-es从他们的原生-取出文件:每个合同的电文和enum,及其描述符,用于@bufbuilt/protobuf和Connect\.

### 如何安装 @altnovatrail/contracts？

在项目目录运行 npm install @altnovatrail/contracts，或使用 pnpm add / yarn add / bun add。

### @altnovatrail/contracts 支持 TypeScript 吗？

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

### @altnovatrail/contracts 支持 ESM 还是 CommonJS？

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

### @altnovatrail/contracts 可以商用吗？

@altnovatrail/contracts 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @altnovatrail/contracts 的下载量有多少？

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

### @altnovatrail/contracts 还在维护吗？

最新版本 0\.9\.6 发布于 2026/11/07（今天）；至今共发布 24 个版本，其中过去 12 个月发布了 24 个；首次发布于 2026/11/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

