@dcl/schemas

中文文档
27.4.0发布于 2026/10/29Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 5.8万

基于TypeScript的项目的分权数据结构接口和验证器.

中文使用文档
文档目录4 节
  1. 范围验证链的采用(ADR-162)
  2. 设计准则
  3. 合作者指南
  4. 版本和出版

共性计划

基于TypeScript的项目的分权数据结构接口和验证器.

安装于 :

npm i @dcl/schemas

范围验证链的采用(ADR-162)

AuthLink 财务报告和审定财务报表 AuthChain 确认 ECDSA_SCOPED_EPHEMERAL 财务报告和审定财务报表 ECDSA_EIP_1654_SCOPED_EPHEMERAL。仅验证链接结构;消费者 仍须验证签名并授权服务、操作和资源 使用范围识别验证器.

在升级后,带有这些类型的链会通过chema enum检查. 服务 不接受范围登录,包括使用 稍后在加密验证时拒绝批准。 这个 因此出错消息从chema enum出错变为校验错误.

一旦这个chemas版本发布,core-libs可以采用这些enum成员并 替换其临时员额 ScopedAuthLinkType 定义和铸造。 消费者应 在接受范围登录之前,更新计划及范围认知授权.

设计准则

  • 跨项目预防类型问题
  • 尽快失败, 瞄准编译时间
  • 通过运行时帮助保存用户可选性
  • 优先执行无费用,允许不依赖进口
  • 代码是写过一次,读过几百次

执行决定:

  • 主要入境点只应出口类型
  • 每个类型也是命名空间
  • 类型名称为 PascalCase
  • 校验器和计程器是骆驼 Case

合作者指南

生成类型、验证符和计划

此库导出类型也起到值的作用 。 这是通过 TypeScript 实现的 namespaces这意味着从该图书馆进口的每一种类型也可用作JS对象。 这些类型包括两个属性 schema 财务报告和审定财务报表 validate。 。 。 . namespaces 在打字符中可以考虑 "cost 进口).

示例类型定义

// Declare type
export type MyType = {
  value: number;
};

// Declare namespace for the type
export namespace MyType {
  export const schema: Schema<MyType> = {
    type: "object",
    properties: {
      value: { type: number },
    },
    additionalProperties: false,
    required: ["value"],
  };

  export const validate = generateValidator<MyType>(schema);
}

MyType 现在可同时用作类型 const a: MyType 或作为对象 MyType.validate(a)。 。 。 .

小心点 validate 有类型 ValidateFunction<T> 哪个 ajv 自动创建。 在写出新的验证时,总是尝试把它作为ajv验证执行,即使需要自定义代码. 见 这里。 。 。 .

尤其要注意这样使用图书馆,因为 validator.validate 函数已丢失,从未返回呼叫者.

const validator = generateValidator<MyType>(schema);
export const validate = (mt: MyType) =>
  validator.validate(mt) && otherValidations(mt);

代码所有权

请在 src/<team> 文件夹,也可以将您的团队添加到 消费者 存储器,以确保没有人不小心改变它,除非你的团队注意到它.

通报变化

请通过增加整个团队(即:. @decentraland/dapps作为拉力请求的审查者.

建议订阅该存储器(使用 Watch 功能)),如果使用Dechentrand生态系统的任何内部部分.

作出改变

为了让相关人员和团体了解这些类型的变化,执行了一个Api-extraction进程 https://api-extractor.com (英语) 创建 报表文件 在承诺之间进行审查。 它被作为公关的一部分 更容易读取.

在提交 PR 之前生成文件, 运行 npm run refresh-api。由 runnig 执行 npm run check-api。它也验证生成的文件是否与导出的类型相匹配.

版本和出版

版本使用Github释放和分解处理.

主分支自动发布到 @next 在最终发布之前, dict tag 测试集成 .

版本与发布记录

@dcl/schemas 共发布 720 个版本,首次发布于 2021/02/12;过去 12 个月发布了 84 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
27.4.0latest2026/10/2913 天前
27.3.1-20261028210140.commit-fe4730c2026/10/2913 天前
27.3.02026/10/1230 天前
27.2.1-20261012104125.commit-7d0fc172026/10/1230 天前
27.2.02026/09/181 个月前
27.1.1-20260917155347.commit-2f306502026/09/171 个月前

其他发布通道:rc → 1.3.0-rc,tag-add-emotes → 4.14.2-20220608182026.commit-46a9277,tag-5.14 → 5.13.2-20220829183340.commit-a539bbf,tag-fast-bootstrapping → 5.28.1-20221108202320.commit-a93fe13,tag-fast-bootstrapping-2 → 5.28.1-20221108203808.commit-3da75ad,tag-fast-bootstrapping-3 → 5.28.1-20221108204939.commit-131a7d3。

关于 @dcl/schemas 的常见问题

@dcl/schemas 是什么?

基于TypeScript的项目的分权数据结构接口和验证器.

如何安装 @dcl/schemas?

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

@dcl/schemas 支持 TypeScript 吗?

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

@dcl/schemas 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dcl/schemas 可以商用吗?

@dcl/schemas 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@dcl/schemas 的下载量有多少?

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

@dcl/schemas 还在维护吗?

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