Ajv plugin that adds Open API v3 data types (formats: int32, int64, float, double, byte) validation.
npm install ajv ajv-openapiconstAjv=require("ajv");constopenApi=require("ajv-openapi");constajv=openApi(newAjv());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:
constAjv=require("ajv");constopenApi=require("ajv-openapi");constajvOptions={schemaId: "auto",format: "full",coerceTypes: true,unknownFormats: "ignore",useDefaults: true,nullable: true};constopenApiOptions={useDraft04: true};constajv=openApi(newAjv(ajvOptions),openApiOptions);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>trueconsole.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>trueconsole.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>trueconsole.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>trueconsole.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