@ssbc/ssb-schema-validation
Validating SSB messages with JSON schema using multiple versions
Last updated 2 years ago by kyphae .
ISC · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @ssbc/ssb-schema-validation 
SYNC missed versions from official npm registry.

ssb-schema-validation

Returns a function that takes an ssb message and will check first against version, search for a matching schema, then validate against the correct schema and return truthy or falsey with an errorset.

Here's how to use it:

Organise your schemas in version directories, and draw each set together with an index.js that returns an object which contains all the schemas stores by their name as key e.g. 'post'

Ensure our message declares a verision, else we'll get an error.

{
  type: 'post',
  version: '1.0.0',
  body: 'tra-lala-lala-lala'
}

And export a schema for each version.

Example project structure could look like this...

├── index.js
├── package.json
├── package-lock.json
├── README.md
├── schemas
│   ├── index.js
│   ├── v1
│   │   ├── index.js
│   │   ├── post.js
│   │   └── version.js
│   └── v2
│       ├── index.js
│       ├── post.js
│       └── version.js
└── validators
    ├── isPost.js
    └── index.js

Make sure we export the relevant schemas in index.js.

// schemas/v1/index.js

module.exports = {
  post: require('./post')
}

// schemas/v2/index.js

module.exports = {
  post: require('./post')
}

Draw all schemas together with their versions and export from schemas/index.js

// schemas/index.js
module.exports = {
  "1.0.0": require('./v1'),
  "2.0.0": require('./v2')
}

Then create a new validator which passes the schemas to the validator along with the name of the schema. This will return your validator that takes an ssb message and options, and returns a boolean.

// isPost.js
const schemas = require('./schemas')
const validate = require('ssb-schema-validation')

// Returns a function that takes an obj and opts.
module.exports = validate(schemas).with('post')

The result being when used...

const isPost = require('./isPost')
var valid = isPost(msg, { attachErrors: true })
if (valid) {
  render(msg)
} else {
  render(msg.errors)
}

Current Tags

  • 1.0.1                                ...           latest (2 years ago)

2 Versions

  • 1.0.1                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (2)
Dev Dependencies (1)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |