Skip to content

Browserify transform for compiling JSON schemas at build time using AJV

License

Notifications You must be signed in to change notification settings

offen/schemaify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

offen.software logo

schemaify

Browserify transform for compiling JSON schemas at build time using AJV and ajv-pack

Installation

The package is released to npm as @offen/schemaify:

npm install @offen/schemaify -D

Usage

In the default configuration, the transform is applied to all files with a .schema extension. The transformed module will export the packed AJV validate function.

In your application:

var validateFoo = require('./foo.schema')

var ok = validateFoo({ foo: true })
if (!ok) {
  console.log(validateFoo.errors)
  throw new Error('Foo did not validate')
}

When bundling:

var browserify = require('browserify')

var b = browserify()
b.add('app.js')
b.transform('@offen/schemaify')
b.bundle(function (err, src) {
  // consume bundle
})

Defining schemas

Schemas are expected to be defined in JSON format and saved as .schema files:

{
  "type": "string",
  "maxLength": 128
}

Options

The transform accepts the following options as its 2nd arguments:

secure

By default, schemaify only compiles "secure" schemas. This can be disabled by passing secure: false to the transform.

matcher

By default, schemaify only compiles files with a .schema extension. If you have different requirements you can pass a Regexp string to matcher for the transform to use.

Important caveat: Due to the way that Browserify handles JSON files, you currently cannot use .json files for storing your schemas, as this would make these files subject to another set of rules that would conflict with.

Releasing a new version

New versions can be released using npm version <patch|minor|major>. Make sure you are authenticated against the @offen scope with npm.

License

Copyright 2020 Frederik Ring - Available under the MIT License