@intuitionrobotics/ts-common
Version:
36 lines (35 loc) • 2.35 kB
TypeScript
import { CustomException } from "../core/exceptions";
import { ArrayType, AuditBy, ObjectTS, RangeTimestamp } from "../utils/types";
export type ValidatorTypeResolver<K> = K extends any[] ? Validator<K> : K extends object ? TypeValidator<K> | Validator<K> : Validator<K>;
export type Validator<P> = undefined | ((path: string, p?: P) => void);
export type TypeValidator<T extends ObjectTS> = {
[P in keyof T]: ValidatorTypeResolver<T[P]>;
};
export declare class ValidationException extends CustomException {
path: string;
input?: string;
constructor(debugMessage: string, path: string, input?: any);
}
export declare const validateExists: (mandatory?: boolean) => Validator<any>;
export declare const validateType: (type: "undefined" | "object" | "boolean" | "number" | "string" | "function" | "symbol" | "bigint", mandatory?: boolean) => Validator<any>;
export declare const validateString: (mandatory?: boolean) => Validator<any>;
export declare const validateNumber: (mandatory?: boolean) => Validator<any>;
export declare const validateBoolean: (mandatory?: boolean) => Validator<any>;
export declare const validateObjectValues: <V, T extends {
[k: string]: V;
} = {
[k: string]: V;
}>(validator: ValidatorTypeResolver<V>, mandatory?: boolean) => Validator<T>;
export declare const validateArray: <T extends any[], I = ArrayType<T>>(validator: ValidatorTypeResolver<I>, mandatory?: boolean) => Validator<I[]>;
export declare const validateRegexp: (regexp: RegExp, mandatory?: boolean) => Validator<string>;
export declare const validateValue: (values: string[], mandatory?: boolean) => Validator<string>;
export declare const validateRange: (ranges: [number, number][], mandatory?: boolean) => Validator<number>;
export declare const validate: <T>(instance: T, _validator: ValidatorTypeResolver<T>, path?: string) => void;
export declare const validateObject: <T>(__validator: TypeValidator<object>, instance: T, path?: string) => void;
export declare const isTimestampValid: (time: number, range?: {
min: number;
max: number;
}) => boolean;
export declare const auditValidator: (range?: RangeTimestamp) => (_path: string, audit?: AuditBy) => void;
export declare const timestampValidator: (range?: RangeTimestamp) => (_path: string, timestamp?: number) => void;
export declare const validateEmail: Validator<string>;