11 个版本

0.11.10 2019 年 3 月 21 日
0.11.9 2019 年 3 月 18 日
0.11.7 2019 年 2 月 26 日

配置 中排名 #426

Apache-2.0

125KB
3.5K SLoC

Jelly Schema

Build Status Current Release License Issues

balena.io 提供的开源 📡 项目

提供以下功能:

  • 将 Jelly Schema 转换为 JSON Schema & UI Schema 对象,具有自定义扩展
  • 解析 Jelly Schema
  • 根据 Jelly Schema 验证 JSON 数据

当前 crate 状态为 实验性

目标

jellyschema crate 是 balena.io 配置项目的一部分。该项目目前还没有公开/开放规范,但我们正在努力工作,一旦完成,它将公开。

支持的平台

此库是用 Rust 语言编写的,可以直接使用

文档

用法

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