38 lines
932 B
TypeScript
38 lines
932 B
TypeScript
import { Validator, Args } from "../mod.ts";
|
|
|
|
export function isNumber(
|
|
{ allowNaN = false }: { allowNaN?: boolean } = {},
|
|
): Validator {
|
|
return {
|
|
type: "isNumber",
|
|
check: (value: any) => {
|
|
if (value === null || value === undefined) return;
|
|
if (allowNaN && Number.isNaN(value)) return;
|
|
if (!Number.isFinite(value)) {
|
|
return {};
|
|
}
|
|
},
|
|
message: (value: any, args?: Args) => {
|
|
return `This value has to be a number.`;
|
|
},
|
|
};
|
|
}
|
|
|
|
export function isInteger(
|
|
{ allowNaN = false }: { allowNaN?: boolean } = {},
|
|
): Validator {
|
|
return {
|
|
type: "isInteger",
|
|
check: (value: any) => {
|
|
if (value === null || value === undefined) return;
|
|
if (allowNaN && Number.isNaN(value)) return;
|
|
if (!Number.isInteger(value)) {
|
|
return {};
|
|
}
|
|
},
|
|
message: (value: any, args?: Args) => {
|
|
return `This value has to be an integer.`;
|
|
},
|
|
};
|
|
}
|