ajv-formats
Advanced tools
Comparing version 2.0.2 to 2.1.0
import type { Format } from "ajv"; | ||
export declare type FormatMode = "fast" | "full"; | ||
export declare type FormatName = "date" | "time" | "date-time" | "duration" | "uri" | "uri-reference" | "uri-template" | "url" | "email" | "hostname" | "ipv4" | "ipv6" | "regex" | "uuid" | "json-pointer" | "json-pointer-uri-fragment" | "relative-json-pointer"; | ||
export declare type FormatName = "date" | "time" | "date-time" | "duration" | "uri" | "uri-reference" | "uri-template" | "url" | "email" | "hostname" | "ipv4" | "ipv6" | "regex" | "uuid" | "json-pointer" | "json-pointer-uri-fragment" | "relative-json-pointer" | "byte" | "int32" | "int64" | "float" | "double" | "password" | "binary"; | ||
export declare type DefinedFormats = { | ||
@@ -5,0 +5,0 @@ [key in FormatName]: Format; |
@@ -36,2 +36,17 @@ "use strict"; | ||
"relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/, | ||
// the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types | ||
// byte: https://github.com/miguelmota/is-base64 | ||
byte: /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm, | ||
// signed 32 bit integer | ||
int32: { type: "number", validate: validateInt32 }, | ||
// signed 64 bit integer | ||
int64: { type: "number", validate: validateInt64 }, | ||
// C-type float | ||
float: { type: "number", validate: validateNumber }, | ||
// C-type double | ||
double: { type: "number", validate: validateNumber }, | ||
// hint to the UI to hide input strings | ||
password: true, | ||
// unchecked string payload | ||
binary: true, | ||
}; | ||
@@ -130,2 +145,14 @@ exports.fastFormats = { | ||
} | ||
const MIN_INT32 = -(2 ** 31); | ||
const MAX_INT32 = 2 ** 31 - 1; | ||
function validateInt32(value) { | ||
return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32; | ||
} | ||
function validateInt64(value) { | ||
// JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64 | ||
return Number.isInteger(value); | ||
} | ||
function validateNumber() { | ||
return true; | ||
} | ||
const Z_ANCHOR = /[^\\]\\Z/; | ||
@@ -132,0 +159,0 @@ function regex(str) { |
{ | ||
"name": "ajv-formats", | ||
"version": "2.0.2", | ||
"version": "2.1.0", | ||
"description": "Format validation for Ajv v7+", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -44,2 +44,9 @@ # ajv-formats | ||
- _relative-json-pointer_: relative JSON-pointer according to [this draft](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00). | ||
- _byte_: base64 encoded data according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
- _int32_: signed 32 bits integer according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
- _int64_: signed 64 bits according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
- _float_: float according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
- _double_: double according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
- _password_: password string according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
- _binary_: binary string according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types) | ||
@@ -46,0 +53,0 @@ See regular expressions used for format validation and the sources that were used in [formats.ts](https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts). |
@@ -24,2 +24,9 @@ import type {Format, FormatDefinition} from "ajv" | ||
| "relative-json-pointer" | ||
| "byte" | ||
| "int32" | ||
| "int64" | ||
| "float" | ||
| "double" | ||
| "password" | ||
| "binary" | ||
@@ -66,2 +73,17 @@ export type DefinedFormats = { | ||
"relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/, | ||
// the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types | ||
// byte: https://github.com/miguelmota/is-base64 | ||
byte: /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm, | ||
// signed 32 bit integer | ||
int32: {type: "number", validate: validateInt32}, | ||
// signed 64 bit integer | ||
int64: {type: "number", validate: validateInt64}, | ||
// C-type float | ||
float: {type: "number", validate: validateNumber}, | ||
// C-type double | ||
double: {type: "number", validate: validateNumber}, | ||
// hint to the UI to hide input strings | ||
password: true, | ||
// unchecked string payload | ||
binary: true, | ||
} | ||
@@ -174,2 +196,18 @@ | ||
const MIN_INT32 = -(2 ** 31) | ||
const MAX_INT32 = 2 ** 31 - 1 | ||
function validateInt32(value: number): boolean { | ||
return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32 | ||
} | ||
function validateInt64(value: number): boolean { | ||
// JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64 | ||
return Number.isInteger(value) | ||
} | ||
function validateNumber(): boolean { | ||
return true | ||
} | ||
const Z_ANCHOR = /[^\\]\\Z/ | ||
@@ -176,0 +214,0 @@ function regex(str: string): boolean { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
51881
663
124