Jelly Schema

Build Status Current Release License Issues

an open source :satellite: project by balena.io

Provides facilities to:

Current crate status is experimental.

Goal

jellyschema crate is one small piece of the [balena.io] configuration project. This project has no public / open specification yet, but we're working on it and it will be public once finished.

Supported platforms

This library is written in the Rust language and can be used:

Documentation

Usage

Rust

Add as a dependency to your Cargo.toml:

[dependencies] jellyschema = "0"

Evaluate simple JSON:

```rust let inputschema: serdeyaml::Value = serdeyaml::fromstr( include_str!("configuration.yml")). unwrap();

let (jsonschema, uiobject) = Generator::with(input_schema)?.generate(); ```

Javascript

Install via npm

npm install --save jellyschema

Generate simple JSON Schema & UI Object Schema:

```js 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()); ```

An example of using this module in nodeJS is available in the examples/node folder:

bash cd examples/node npm install npm start

An example of using this module in the browser is available in the examples/browser folder:

bash cd examples/browser npm install npm start

Open localhost:8080 in your browser.

Support

If you're having any problem, please [raise an issue] on GitHub or [contact us], and the [balena.io] team will be happy to help.

License

jellyschema is open source software, and may be redistributed under the terms specified in the [license].