@palmares/schemas
Version:
This defines a default schema definition for validation of data, it abstract popular schema validation libraries like zod, yup, valibot and others"
154 lines • 5.95 kB
TypeScript
import type { Schema } from '../schema/schema';
import type { SupportedSchemas } from '../types';
import type { withFallbackFactory } from '../utils';
export type NonToTranslateArgs<TType extends SupportedSchemas> = {
withFallback: ReturnType<typeof withFallbackFactory<TType>>;
};
export type AdapterToStringArgs = {
parsers: {
optional: Schema['__optional']['allow'];
nullable: Schema['__nullable']['allow'];
};
type: Schema['__type'];
optional: Schema['__optional'];
nullable: Schema['__nullable'];
};
export type AdapterTranslateArgs<TType extends SupportedSchemas = SupportedSchemas> = AdapterToStringArgs & NonToTranslateArgs<TType>;
export type DatetimeAdapterTranslateArgs = {
allowString: boolean | undefined;
above: {
value: Date;
inclusive: boolean;
message: string;
} | undefined;
below: {
value: Date;
inclusive: boolean;
message: string;
} | undefined;
} & AdapterTranslateArgs<'datetime'>;
export type BooleanAdapterTranslateArgs = {
parsers: {
allowString: boolean | undefined;
allowNumber: boolean | undefined;
trueValues: any[] | undefined;
falseValues: any[] | undefined;
} & AdapterTranslateArgs<'boolean'>['parsers'];
is: {
value: boolean;
message: string;
} | undefined;
} & AdapterTranslateArgs<'boolean'>;
export type ArrayAdapterTranslateArgs = {
schemas: any[];
minLength: {
value: number;
inclusive: boolean;
message: string;
} | undefined;
maxLength: {
value: number;
inclusive: boolean;
message: string;
} | undefined;
nonEmpty: {
message: string;
} | undefined;
isTuple: boolean;
} & ({
isTuple: true;
schemas: [any, ...any[]];
} | {
isTuple: false;
schemas: [any];
}) & AdapterTranslateArgs<'array'>;
export type NumberAdapterTranslateArgs = {
parsers: {
allowString: boolean | undefined;
} & AdapterTranslateArgs<'number'>['parsers'];
is: {
value: number[];
message: string;
} | undefined;
min: {
value: number;
inclusive: boolean;
message: string;
} | undefined;
max: {
value: number;
inclusive: boolean;
message: string;
} | undefined;
maxDigits: {
value: number;
message: string;
} | undefined;
decimalPlaces: {
value: number;
message: string;
} | undefined;
integer: {
message: string;
} | undefined;
} & AdapterTranslateArgs<'number'>;
export type StringAdapterToStringArgs = Omit<StringAdapterTranslateArgs, keyof NonToTranslateArgs<'string'>>;
export type StringAdapterTranslateArgsWithoutNonTranslateArgs = Omit<StringAdapterTranslateArgs, keyof NonToTranslateArgs<'string'>>;
export type StringAdapterTranslateArgs = {
is: {
value: string[] | string;
message: string;
} | undefined;
uuid: {
message: string;
} | undefined;
email: {
message: string;
} | undefined;
minLength: {
value: number;
message: string;
} | undefined;
maxLength: {
value: number;
message: string;
} | undefined;
regex: {
value: RegExp;
message: string;
} | undefined;
endsWith: {
value: string;
message: string;
} | undefined;
startsWith: {
value: string;
message: string;
} | undefined;
includes: {
value: string;
message: string;
} | undefined;
} & AdapterTranslateArgs<'string'>;
export type NumberAdapterToStringArgs = Omit<NumberAdapterTranslateArgs, keyof NonToTranslateArgs<'number'>>;
export type NumberAdapterTranslateArgsWithoutNonTranslateArgs = Omit<NumberAdapterTranslateArgs, keyof NonToTranslateArgs<'number'>>;
export type ObjectAdapterTranslateArgs = {
data: Record<string, any>;
} & AdapterTranslateArgs<'object'>;
export type ObjectAdapterToStringArgs = {
data: Record<string, string>;
} & AdapterToStringArgs;
export type UnionAdapterTranslateArgs<TSchemasType = any> = {
schemas: TSchemasType;
} & AdapterTranslateArgs<'union'>;
export type UnionAdapterToStringArgs = {
schemas: [string, string, ...string[]];
} & AdapterToStringArgs;
export type UnionAdapterTranslateArgsWithoutNonTranslateArgs = Omit<UnionAdapterTranslateArgs, keyof NonToTranslateArgs<'union'>>;
export type ObjectAdapterTranslateArgsWithoutNonTranslateArgs = Omit<ObjectAdapterTranslateArgs, keyof NonToTranslateArgs<'object'>>;
export type ArrayAdapterTranslateArgsWithoutNonTranslateArgs = Omit<ArrayAdapterTranslateArgs, keyof NonToTranslateArgs<'array'>>;
export type BooleanAdapterTranslateArgsWithoutNonTranslateArgs = Omit<BooleanAdapterTranslateArgs, keyof NonToTranslateArgs<'boolean'>>;
export type DatetimeAdapterTranslateArgsWithoutNonTranslateArgs = Omit<DatetimeAdapterTranslateArgs, keyof NonToTranslateArgs<'datetime'>>;
export type ValidationDataBasedOnType<TType> = TType extends 'number' ? NumberAdapterTranslateArgsWithoutNonTranslateArgs : TType extends 'union' ? UnionAdapterTranslateArgsWithoutNonTranslateArgs : TType extends 'string' ? StringAdapterTranslateArgsWithoutNonTranslateArgs : TType extends 'array' ? ArrayAdapterTranslateArgsWithoutNonTranslateArgs : TType extends 'boolean' ? BooleanAdapterTranslateArgsWithoutNonTranslateArgs : TType extends 'datetime' ? DatetimeAdapterTranslateArgsWithoutNonTranslateArgs : ObjectAdapterTranslateArgsWithoutNonTranslateArgs;
export type ErrorCodes = 'max' | 'maxDigits' | 'decimalPlaces' | 'min' | 'integer' | 'required' | 'null' | 'object' | 'number' | 'string' | 'array' | 'tuple' | 'nonEmpty' | 'datetime' | 'is' | 'above' | 'below' | 'boolean' | 'minLength' | 'maxLength' | 'regex' | 'uuid' | 'email' | 'includes' | 'endsWith' | 'startsWith' | `customError${string}`;
//# sourceMappingURL=types.d.ts.map