@jstarstech/ajv-openapi
TypeScript icon, indicating that this package has built-in type declarations

3.0.2 • Public • Published

ajv-openapi

License NPM version NPM download

This package forked from touchifyapp/ajv-openapi to add support of Ajv v7

Ajv plugin that adds Open API v3 data types (formats: int32, int64, float, double, byte) validation.

Installation

npm install ajv @jstarstech/ajv-openapi

Usage

const Ajv = require("ajv");
const openApi = require("@jstarstech/ajv-openapi");

const ajv = openApi(new Ajv());

Configuration for full OpenAPI compatibility

By default, the plugin only adds missing formats to Ajv validator. To configure Ajv to be fully Open API v3 compliant, you should configure the plugin like this:

const Ajv = require("ajv");
const openApi = require("@jstarstech/ajv-openapi");

const ajvOptions = {
    schemaId: "auto",
    format: "full",
    coerceTypes: true,
    unknownFormats: "ignore",
    useDefaults: true,
    nullable: true
};

const openApiOptions = {
    useDraft06: true
};

const ajv = openApi(
    new Ajv(ajvOptions),
    openApiOptions
);

Examples

console.log(ajv.compile({ type: "integer", format: "int32" })(2147483648));
console.log(ajv.compile({ type: "integer", format: "int32" })(-2147483649));
console.log(ajv.compile({ type: "integer", format: "int32" })(1.23));
console.log(ajv.compile({ type: "integer", format: "int32" })(123));
> false
> false
> false
> true

console.log(ajv.compile({ type: "integer", format: "int64" })(Number.MAX_VALUE));
console.log(ajv.compile({ type: "integer", format: "int64" })(Number.MIN_VALUE));
console.log(ajv.compile({ type: "integer", format: "int64" })(1.23));
console.log(ajv.compile({ type: "integer", format: "int64" })(123));
> false
> false
> false
> true

console.log(ajv.compile({ type: "number", format: "float" })(Number.MAX_VALUE));
console.log(ajv.compile({ type: "number", format: "float" })(Number.MIN_VALUE));
console.log(ajv.compile({ type: "number", format: "float" })(1.23));
console.log(ajv.compile({ type: "number", format: "float" })(123));
> false
> false
> true
> true

console.log(ajv.compile({ type: "number", format: "double" })(Number.MAX_VALUE));
console.log(ajv.compile({ type: "number", format: "double" })(Number.MIN_VALUE));
console.log(ajv.compile({ type: "number", format: "double" })(1.23));
console.log(ajv.compile({ type: "number", format: "double" })(123));
> true
> true
> true
> true

console.log(ajv.compile({ type: "string", format: "byte" })("MTIz"));
console.log(ajv.compile({ type: "string", format: "byte" })("abc"));
console.log(ajv.compile({ type: "string", format: "byte" })(1));
console.log(ajv.compile({ type: "string", format: "byte" })("5L2g5aW95ZWK"));
> true
> false
> false
> true

Readme

Keywords

none

Package Sidebar

Install

npm i @jstarstech/ajv-openapi

Weekly Downloads

0

Version

3.0.2

License

MIT

Unpacked Size

11.3 kB

Total Files

8

Last publish

Collaborators

  • jstarstech