11 个版本
0.11.10 | 2019 年 3 月 21 日 |
---|---|
0.11.9 | 2019 年 3 月 18 日 |
0.11.7 | 2019 年 2 月 26 日 |
在 配置 中排名 #426
125KB
3.5K SLoC
Jelly Schema
由 balena.io 提供的开源 📡 项目
提供以下功能:
- 将 Jelly Schema 转换为 JSON Schema & UI Schema 对象,具有自定义扩展
- 解析 Jelly Schema
- 根据 Jelly Schema 验证 JSON 数据
当前 crate 状态为 实验性。
目标
jellyschema
crate 是 balena.io 配置项目的一部分。该项目目前还没有公开/开放规范,但我们正在努力工作,一旦完成,它将公开。
支持的平台
此库是用 Rust 语言编写的,可以直接使用
- 作为 Rust crate
- 作为一个同构的 NPM 包(NodeJS & 浏览器)
文档
用法
Rust
在 Cargo.toml
中添加依赖项
[dependencies]
jellyschema = "0"
评估简单的 JSON
let input_schema: serde_yaml::Value = serde_yaml::from_str(
include_str!("configuration.yml")).
unwrap();
let (json_schema, ui_object) = Generator::with(input_schema)?.generate();
JavaScript
通过 npm 安装
npm install --save jellyschema
生成简单的 JSON Schema & UI Object Schema
const jellyschema = require('jellyschema');
const initialValue = `
title: demo
version: 1
properties:
- network:
title: Network
properties:
- ssid:
title: Network SSID
type: string
minLength: 1
maxLength: 32
- passphrase:
title: Network Key
type: password
minLength: 8
`;
var schema = new jels.JellySchema(initialValue);
const result = schema.jsonAndUiSchema();
console.log(JSON.stringify(result, null, 2));
console.log(schema.validate({network: { ssid: 'foo', passphrase: 123 }}));
console.log(schema.errors());
在 examples/node
文件夹中可以找到在 nodeJS 中使用此模块的示例
cd examples/node
npm install
npm start
在 examples/browser
文件夹中可以找到在浏览器中使用此模块的示例
cd examples/browser
npm install
npm start
在您的浏览器中打开 localhost:8080
支持
如果您有任何问题,请在 GitHub 上提出问题或联系我们,balena.io 团队将很高兴帮助您。
许可证
jellyschema
是开源软件,可以在指定于 许可证 的条款下重新分发。
依赖关系
~8–11MB
~196K SLoC