@ fastify/merge-json-schemas (英语)
合并- json- schemas 是一个 JavaScript 库,用于构建逻辑产品( AND) JSON 计划。 。 。 .
安装
npm i @fastify/merge-json-schemas
使用量
const assert = require('node:assert')
const { mergeSchemas } = require('@fastify/merge-json-schemas');
const schema1 = {
$id: 'schema1',
type: 'object',
properties: {
foo: { type: 'string', enum: ['foo1', 'foo2'] },
bar: { type: 'string', minLength: 3 }
}
}
const schema2 = {
$id: 'schema1',
type: 'object',
properties: {
foo: { type: 'string', enum: ['foo1', 'foo3'] },
bar: { type: 'string', minLength: 5 }
},
required: ['foo']
}
const mergedSchema = mergeSchemas([schema1, schema2])
assert.deepStrictEqual(mergedSchema, {
$id: 'schema1',
type: 'object',
properties: {
foo: { type: 'string', enum: ['foo1'] },
bar: { type: 'string', minLength: 5 }
},
required: ['foo']
})
API 密码
合并计划( 计划, 选项)
构建多个逻辑组合( AND) JSON 计划。 。 。 .
schemas对象 [] - JSON计划合并列表options<对象> - 可选选项
解析器
默认解析器列表 合并- json- schema 用于合并JSON schemas. 您可以通过在 options 论点 mergeSchemas。见 关键字解析器。 。 。 .
默认解析器
默认解析器 合并- json- schema 用于合并JSON schemas. 当JSON关键词没有定义自定义解析器时,会使用默认解析器. 默认情况下,默认解析器工作如下:
- 如果只有一个方案包含关键词,关键词的值作为合并值
- 如果多个方案包含关键词的完全相同值,则关键词的值作为合并值
- 如果多个方案包含关键字的不同值,则会丢出错误
关键词解析器( 关键词、 值、 合并的Schema、 父系统、 选项)
合并- json- schema 使用一组解析器将JSON schemas合并. 每个解析器都与 JSON 关键词相关. 当关键字在要合并的策略中找到时,解析器被调用. 解决者有以下论点:
keyword< 字符串> - 要合并的关键词名称values任意[ ] - 要合并的关键字的值。 数组的长度等于要合并的计数. 如果一个计划没有包含关键词,则数值为undefinedmergedSchema<对象> - 合并计划的一个实例parentSchemas<对象[]> - 母计划清单options<对象> - 转到mergeSchemas
解析器必须设置 keyword 输入 mergedSchema 对象.
示例 解析器 minNumber 关键词.
function minNumberResolver (keyword, values, mergedSchema) {
mergedSchema[keyword] = Math.min(...values)
}
许可证
许可证根据 麻省理工学院。 。 。 .