0.0.1 • Published 10 months ago

esbuild-ajv v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

esbuild-ajv

NPM Version NPM Downloads Known Vulnerabilities MIT License

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

0.0.1

10 months ago