esbuild-ajv
v0.0.1
Published
esbuild plugin to precompile json schema with ajv
Downloads
7
Maintainers
Readme
esbuild-ajv
This package provides a plugin for esbuild to pre-compile Ajv schemas at build time.
Table of Contents
Installation
Install using the node package registry:
npm install -D esbuild-ajv ajv
Use-cases
The motivation to pre-compile schemas1:
- avoids dynamic code evaluation with Function constructor (used for schema
compilation) - useful in browser environments where
'unsafe-eval'
is not allowed by CSP (Content Security Policy) - faster startup times
- lower memory footprint/bundle size
- compatible with strict content security policies
- almost no risk to compile schema more than once
- better for short-lived environments
Usage
Build config
import esbuild from 'esbuild'
import AjvPlugin from 'esbuild-ajv'
esbuild.build({
/* ... */
plugins: [
AjvPlugin({
extraKeywords: [
/* Ajv.CodeKeywordDefinition */
],
ajvOptions: {
coerceTypes: true,
},
}),
],
/* ... */
})
Precompile imported schema
import * as validationModule from './someJsonSchema.ajv.json'
/**
* @description use compiled schema in your code
*/
const validate = (x) => {
const { validator } = validationModule
if (!validator(x)) throw validator.errors
return x
}
Running Tests
The tests use mocha, istanbul and mochawesome. Run them using the node test script:
npm test
References
- [1]: Standalone Validation Code in Ajv documentation https://ajv.js.org/guide/managing-schemas.html#standalone-validation-code