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.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.0.0
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 2.0.0
    0
  • 1.1.0
    0
  • 1.0.0
    0

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