共性计划
基于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 测试集成 .