Home

Awesome

gun-schema

Validate Gun data with JSON-Schema.

Validation is done by is-my-json-valid

Getting started

Browser

Download the js bundle from the releases page and add it to the page. As well as attaching the required methods to Gun, it will create a GunSchema global.

Server

Install from NPM

npm install --save gun-schema

Require the module to have it attach itself to GUN

var Gun = require("gun");
require("gun-schema");

Example

// Get a reference to your schema from wherever
// This one was taken from the is-my-json-valid page
var schema = {
    required: true,
    type: 'object',
    properties: {
        hello: {
            required: true,
            type: 'string'
        }
    }
};

var gun = Gun();

gun.schema("example", schema);

// This is valid so it'll get put into the graph
gun.save("example", {
    hello: "World!"
});

// This will throw an error because `hello` was set as `required`
gun.save("example", {
    goodbye: "World!"
});

API

After the plugin has been properly initialized, it adds the following methods on gun instances

gun.schema(name, schema, options)

Adds a new type that will be recognized by gun.save()

gun.schemas(map, options)

Adds a bunch of schemas in one go.

gun.save(name, value)

Similar to gun.put(), but uses the schema associated with name to ensure that value is valid.

If name does not point to a schema name that has been registered, then an error will be thrown. If value doesn't validate against the schema, then an error will be thrown with a errors property which contains the list of things that are wrong with value.

GunSchema(gun)

This is what gets exported by the module in CommonJS and what is added as the GunSchema global in the bundle. It takes a gun instance and adds schema functionality to it.

Building

You can build the browser bundle yourself by cloning the repo and executing:

`npm install`
`npm install gun`
`npm run bundle`

You will then have a file called bundle.js which you can embed in a webpage. The building is facilitated by Browserify