ssb-schema-validation

2.0.0 • Public • Published

ssb-schema-validation

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 = [
  require('./schemas/reply/v1')
  require('./schemas/reply/v2')
]
 
var isReply = Validator(replySchemas)
 
isReply(msg)
// => true / false
console.log(isReply.errors)
// => some errors

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

API

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.

/ssb-schema-validation/

    Package Sidebar

    Install

    npm i ssb-schema-validation

    Weekly Downloads

    0

    Version

    2.0.0

    License

    ISC

    Unpacked Size

    4.57 kB

    Total Files

    4

    Last publish

    Collaborators

    • powersource
    • arj03
    • staltz
    • mixmix
    • cel
    • kyphae
    • ameba23