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 ssb-schema-validation 
SYNC missed versions from official npm registry.


Builds message validators for ssb based on JSON-schema. Specifically designed for handling multiple different versions of a schema for a particular message type (e.g. when you add new requirements, or change the encoding of a particular field and publish a new version of the schema)

NOTE - this requires schemas which have both type and version fields.

Example Usage

Here's an example message that could validate as truthy...

  type: 'reply',
  version: '1.0.0'

We inject all the relevant schemas into the validator. Any message passed will be validated based on the type and the version as determined by your schema.

var Validator = require('ssb-schema-validation')

var replySchemas = [

var isReply = Validator(replySchemas)

// => true / false
// => some errors

For a live example see e.g. ssb-dark-crystal-schema


Validator(schemas) => fn

Takes argument

  • schemas - an array of JSON-schema. These schemas must require messages to have type and version fields

Returns a function validator based on those schemas.

validator(msg, opts) => Bool

Takes arguments:

  • msg - a full ssb message, or the content field of such a message. Supporting both means you can use this validator to easily validate content either before writing to the database, or for reading from the database.
  • opts (optional) - an object of form { attachErrors: Boolean }, settings attachErrors: true mutates the original message by attaching any errors found during in validation. This option is false by default i.e. disabled.

Returns a Boolean: true/ false

Note - if the validator returns false, then details about why the message didn't pass validation can be found under validator.errors. This is reset after each message is passed in.

Current Tags

  • 2.0.0                                ...           latest (2 years ago)

3 Versions

  • 2.0.0                                ...           2 years ago
  • 1.1.0                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (2)
Dev Dependencies (1)
Dependents (1)

Copyright 2014 - 2016 © |