gather-ts
Version:
A powerful code analysis and packaging tool designed for creating AI-friendly code representations for javascript and typescript projects.
45 lines (44 loc) • 1.63 kB
TypeScript
import { IService } from "@/types/services";
import { ILogger } from "@/utils/logging/interfaces/ILogger";
export interface IValidationResult {
isValid: boolean;
errors: string[];
warnings: string[];
}
export interface IValidationOptions {
optional?: boolean;
allowEmpty?: boolean;
type?: string;
minLength?: number;
maxLength?: number;
min?: number;
max?: number;
integer?: boolean;
pattern?: RegExp;
arrayType?: string;
requiredFields?: string[];
customValidator?: (value: any) => boolean;
}
export interface IValidatorDeps {
logger: ILogger;
}
export interface IValidatorOptions {
debug?: boolean;
}
export interface ITypeValidator {
isString(value: unknown): value is string;
isNumber(value: unknown): value is number;
isBoolean(value: unknown): value is boolean;
isObject(value: unknown): value is object;
isArray(value: unknown): value is unknown[];
isDate(value: unknown): value is Date;
}
export interface IValidator extends IService, ITypeValidator {
validate<T>(value: unknown, fieldName: string, options?: IValidationOptions): IValidationResult;
validateNotEmpty<T>(value: T | null | undefined, fieldName: string): T;
validateType(value: unknown, expectedType: string, fieldName: string): void;
validateRange(value: number, min: number, max: number, fieldName: string): void;
validateEnum<T extends string>(value: string, enumValues: readonly T[], fieldName: string): T;
validatePattern(value: string, pattern: RegExp, fieldName: string): void;
validatePath(path: string, context: string): void;
}