@ 格式/ spec
成型形式为: 它的TypeScript类型, 它的JSON Schema, 一个验证器, 单体内容散列,和 diff 分类 改变的成本 数据已经收集.
这个软件包对于任何框架,节点或DOM都没有依赖性. 这个 相同的构建在浏览器,服务器和构建脚本中运行.
两项负载决定
克能克散列是该版本的身份. schemaHash(schema) 是一个
SHA -256通过犬科序列化, 所以两个文件只有钥匙不同
命令是同一个版本. canonicalize 拒绝 undefined, (中文(简体) ), NaN 财务报告和审定财务报表
Infinity 而不是让 JSON.stringify 放弃或胁迫他们——放弃
字段会让两个不同的计划 共享一个散列, 它会悄悄地打破
每一份呈文都依赖篡改证据.
diffSchemas 按成本分类,在数据路径之上. 每一个变化都是
compatible, (中文(简体) ), lossy 或者说 breaking,行走则遵循数据路径而不是
字段列表:在组合或中继器模板内看到更改,移动
字段在向导页面之间是完全没有变化的,将一个移动到一个组就是一个
删除外加添加——因为提交形状确实有变化。 键
未宣布的更改 renamedFrom 报告为去除后加
而非猜测; 猜测错误 悄悄地移动一个字段的答案
另一个领域.
使用
import { schemaHash, diffSchemas, modelDataPaths } from '@formancy/spec'
import { validateSchema } from '@formancy/spec/validate'
const result = validateSchema(document)
if (!result.valid) {
for (const error of result.errors) console.log(error.path, error.message)
}
for (const change of diffSchemas(published, draft)) {
console.log(change.severity, change.kind, change.path)
}
validateSchema 生活在自己的后路 因为它拉入了ajv
渲染器只为类型和散列导入此包 。 验证器本身
实值 编写时预编译 ——在运行时间进行编译将到达
new Function,它扔在严格的不..unsafe-eval 政策
由浏览器嵌入的构建器运行在下.
文档 : apps/docs (概念-计划).