ssb-schema-validation
v2.0.0
Published
Validating SSB messages with JSON schema using multiple versions
Downloads
15
Keywords
Readme
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 havetype
andversion
fields
Returns a function validator
based on those schemas.
validator(msg, opts) => Bool
Takes arguments:
msg
- a full ssb message, or thecontent
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 isfalse
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.