Comparing version 5.0.0-alpha.1 to 5.0.0-alpha.2
@@ -43,3 +43,3 @@ import { Criteria, CriteriaValidator, Schema, SchemaState, ValueComparator } from '../types'; | ||
/** | ||
* TODO | ||
* Validate with a specific schema when a condition is met. | ||
*/ | ||
@@ -46,0 +46,0 @@ export declare function when<T>(state: SchemaState<T>, condition: T | ValueComparator<T>, pass: Schema<T>, fail?: Schema<T>): Criteria<T>; |
@@ -1,2 +0,2 @@ | ||
import { AnySchema, ArrayCriterias, CommonCriterias, DefaultValue, InferNullable, InferSchemaType, Schema } from '../types'; | ||
import { ArrayCriterias, CommonCriterias, DefaultValue, InferNullable, Schema } from '../types'; | ||
export interface ArraySchema<T = unknown[]> extends Schema<T>, ArrayCriterias<ArraySchema<T>>, CommonCriterias<ArraySchema<T>> { | ||
@@ -6,5 +6,5 @@ never: () => ArraySchema<never>; | ||
nullable: () => ArraySchema<T | null>; | ||
of: <V extends AnySchema>(schema: V) => ArraySchema<InferNullable<T, InferSchemaType<V>[]>>; | ||
of: <V>(schema: Schema<V>) => ArraySchema<InferNullable<T, V[]>>; | ||
} | ||
export declare function array<T = unknown>(defaultValue?: DefaultValue<T[]>): ArraySchema<T[]>; | ||
//# sourceMappingURL=array.d.ts.map |
@@ -1,3 +0,3 @@ | ||
import { CommonCriterias, DateCriterias, DefaultValue, MaybeDate, Schema } from '../types'; | ||
export interface DateSchema<T = Date> extends Schema<T, MaybeDate>, DateCriterias<DateSchema<T>>, CommonCriterias<DateSchema<T>> { | ||
import { CommonCriterias, DateCriterias, DefaultValue, Schema } from '../types'; | ||
export interface DateSchema<T = Date> extends Schema<T>, DateCriterias<DateSchema<T>>, CommonCriterias<DateSchema<T>> { | ||
never: () => DateSchema<never>; | ||
@@ -4,0 +4,0 @@ notNullable: () => DateSchema<NonNullable<T>>; |
@@ -1,3 +0,3 @@ | ||
import { CommonCriterias, DefaultValue, Schema, UnknownFunction } from '../types'; | ||
export interface FunctionSchema<T = UnknownFunction> extends Schema<T>, CommonCriterias<FunctionSchema<T>> { | ||
import { AnyFunction, CommonCriterias, DefaultValue, Schema } from '../types'; | ||
export interface FunctionSchema<T = AnyFunction> extends Schema<T>, CommonCriterias<FunctionSchema<T>> { | ||
never: () => FunctionSchema<never>; | ||
@@ -7,3 +7,3 @@ notNullable: () => FunctionSchema<NonNullable<T>>; | ||
} | ||
export declare function func<T extends (...args: any[]) => any = UnknownFunction>(defaultValue?: DefaultValue<T>): FunctionSchema<T>; | ||
export declare function func<T extends (...args: any[]) => any = AnyFunction>(defaultValue?: DefaultValue<T>): FunctionSchema<T>; | ||
//# sourceMappingURL=func.d.ts.map |
@@ -1,2 +0,2 @@ | ||
import { AnySchema, CommonCriterias, DefaultValue, InferNullable, InferSchemaType, ObjectCriterias, Options, Schema } from '../types'; | ||
import { CommonCriterias, DefaultValue, InferNullable, ObjectCriterias, Options, Schema } from '../types'; | ||
import { StringSchema } from './string'; | ||
@@ -8,5 +8,5 @@ export interface ObjectSchema<T = object> extends Schema<T>, ObjectCriterias<ObjectSchema<T>>, CommonCriterias<ObjectSchema<T>> { | ||
nullable: () => ObjectSchema<T | null>; | ||
of: <V extends AnySchema, K extends PropertyKey = keyof T>(schema: V) => ObjectSchema<InferNullable<T, Record<K, InferSchemaType<V>>>>; | ||
of: <V, K extends PropertyKey = keyof T>(schema: Schema<V>) => ObjectSchema<InferNullable<T, Record<K, V>>>; | ||
} | ||
export declare function object<V = unknown, K extends PropertyKey = string>(defaultValue?: DefaultValue<Record<K, V>>): ObjectSchema<Record<K, V>>; | ||
//# sourceMappingURL=object.d.ts.map |
@@ -1,3 +0,3 @@ | ||
import { Blueprint, CommonCriterias, InferNullable, Schema, ShapeCriterias } from '../types'; | ||
export interface ShapeSchema<T> extends Schema<T, Partial<T>>, ShapeCriterias<ShapeSchema<T>>, CommonCriterias<ShapeSchema<T>> { | ||
import { Blueprint, CommonCriterias, Schema, ShapeCriterias } from '../types'; | ||
export interface ShapeSchema<T> extends Schema<T>, ShapeCriterias<ShapeSchema<T>>, CommonCriterias<ShapeSchema<T>> { | ||
never: () => ShapeSchema<never>; | ||
@@ -7,5 +7,5 @@ notNullable: () => ShapeSchema<NonNullable<T>>; | ||
/** @internal */ | ||
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<InferNullable<T, S>>; | ||
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<S>; | ||
} | ||
export declare function shape<T extends object>(blueprint: Blueprint<T>): ShapeSchema<T>; | ||
//# sourceMappingURL=shape.d.ts.map |
import { InferTupleItems } from '../criteria/tuples'; | ||
import { CommonCriterias, InferNullable, Schema } from '../types'; | ||
import { CommonCriterias, Schema } from '../types'; | ||
export interface TupleSchema<T> extends Schema<T>, CommonCriterias<TupleSchema<T>> { | ||
@@ -8,5 +8,5 @@ never: () => TupleSchema<never>; | ||
/** @internal */ | ||
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<InferNullable<T, I>>; | ||
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<I>; | ||
} | ||
export declare function tuple<T extends unknown[] = unknown[]>(schemas: InferTupleItems<T>): TupleSchema<T>; | ||
//# sourceMappingURL=tuple.d.ts.map |
@@ -1,7 +0,6 @@ | ||
export declare type UnknownFunction = (...args: unknown[]) => unknown; | ||
export declare type Primitive = bigint | boolean | number | string | symbol | null | undefined; | ||
export declare type Builtin = Date | Error | Function | RegExp; | ||
export declare type UnknownObject = Record<string, unknown>; | ||
export declare type MaybeDate = Date | number | string; | ||
export declare type Constructor<T> = (new (...args: unknown[]) => T) | (Function & { | ||
prototype: T; | ||
}); | ||
export declare type Constructor<T> = (abstract new (...args: any[]) => T) | (new (...args: any[]) => T); | ||
export declare type InferNullable<P, N> = P extends null ? N | null : N; | ||
@@ -82,6 +81,6 @@ export declare type DefaultValueInitializer<T> = (path: string, currentObject: UnknownObject, rootObject: UnknownObject) => T; | ||
} | ||
export interface Schema<Output, Input = Output> { | ||
export interface Schema<Output> { | ||
schema: () => string; | ||
type: () => string; | ||
validate: (value: Input | null | undefined, path?: string, options?: SchemaValidateOptions) => Output; | ||
validate: (value: unknown, path?: string, options?: SchemaValidateOptions) => Output; | ||
} | ||
@@ -107,3 +106,2 @@ export interface SchemaState<T> { | ||
export declare type Predicate<T> = (value: T | null | undefined) => boolean; | ||
export declare type AnySchema = Schema<any, any>; | ||
export declare type InferFromObject<T> = { | ||
@@ -113,5 +111,7 @@ [K in keyof T]: Infer<T[K]>; | ||
export declare type Infer<T> = T extends Schema<infer U> ? U : T extends Record<string, AnySchema> ? InferFromObject<T> : T extends AnySchema[] ? InferFromObject<T> : never; | ||
export declare type DeepPartial<T> = T extends Function ? T : T extends (infer U)[] ? DeepPartial<U>[] : T extends Record<string, unknown> ? { | ||
export declare type DeepPartial<T> = T extends Builtin | Primitive ? T : T extends (infer I)[] ? DeepPartial<I>[] : T extends object ? { | ||
[K in keyof T]?: DeepPartial<T[K]>; | ||
} : T | undefined; | ||
} : never; | ||
export declare type AnySchema = Schema<any>; | ||
export declare type AnyFunction = (...args: any[]) => any; | ||
//# sourceMappingURL=types.d.ts.map |
@@ -579,3 +579,3 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
/** | ||
* TODO | ||
* Validate with a specific schema when a condition is met. | ||
*/ | ||
@@ -582,0 +582,0 @@ |
{ | ||
"name": "optimal", | ||
"type": "module", | ||
"version": "5.0.0-alpha.1", | ||
"version": "5.0.0-alpha.2", | ||
"description": "A system for building and validating defined object structures with schemas.", | ||
@@ -6,0 +6,0 @@ "main": "./mjs/index.mjs", |
@@ -23,3 +23,3 @@ import { invalid, tryAndCollect } from './helpers'; | ||
validators: Criteria<T>[], | ||
initialValue: T | null | undefined, | ||
initialValue: unknown, | ||
path: string = '', | ||
@@ -34,3 +34,3 @@ { | ||
let value: T | null | undefined = initialValue; | ||
let value: unknown = initialValue; | ||
@@ -72,3 +72,3 @@ // Handle undefined | ||
() => { | ||
const result = test.validate(value!, path, { | ||
const result = test.validate(value as T, path, { | ||
collectErrors, | ||
@@ -92,3 +92,3 @@ currentObject, | ||
return value!; | ||
return value as T; | ||
} | ||
@@ -95,0 +95,0 @@ |
@@ -131,3 +131,3 @@ import { invalid, invariant, isSchema, isValidString, pathKey } from '../helpers'; | ||
/** | ||
* TODO | ||
* Validate with a specific schema when a condition is met. | ||
*/ | ||
@@ -134,0 +134,0 @@ export function when<T>( |
import { createSchema } from '../createSchema'; | ||
import { arrayCriteria, commonCriteria } from '../criteria'; | ||
import { createArray, invalid } from '../helpers'; | ||
import { | ||
AnySchema, | ||
ArrayCriterias, | ||
CommonCriterias, | ||
DefaultValue, | ||
InferNullable, | ||
InferSchemaType, | ||
Schema, | ||
} from '../types'; | ||
import { ArrayCriterias, CommonCriterias, DefaultValue, InferNullable, Schema } from '../types'; | ||
@@ -21,3 +13,3 @@ export interface ArraySchema<T = unknown[]> | ||
nullable: () => ArraySchema<T | null>; | ||
of: <V extends AnySchema>(schema: V) => ArraySchema<InferNullable<T, InferSchemaType<V>[]>>; | ||
of: <V>(schema: Schema<V>) => ArraySchema<InferNullable<T, V[]>>; | ||
} | ||
@@ -24,0 +16,0 @@ |
import { createSchema } from '../createSchema'; | ||
import { commonCriteria, dateCriteria } from '../criteria'; | ||
import { createDate, invalid, isValidDate } from '../helpers'; | ||
import { CommonCriterias, DateCriterias, DefaultValue, MaybeDate, Schema } from '../types'; | ||
import { CommonCriterias, DateCriterias, DefaultValue, Schema } from '../types'; | ||
export interface DateSchema<T = Date> | ||
extends Schema<T, MaybeDate>, | ||
extends Schema<T>, | ||
DateCriterias<DateSchema<T>>, | ||
@@ -9,0 +9,0 @@ CommonCriterias<DateSchema<T>> { |
import { createSchema } from '../createSchema'; | ||
import { commonCriteria } from '../criteria'; | ||
import { invalid } from '../helpers'; | ||
import { CommonCriterias, DefaultValue, Schema, UnknownFunction } from '../types'; | ||
import { AnyFunction,CommonCriterias, DefaultValue, Schema } from '../types'; | ||
export interface FunctionSchema<T = UnknownFunction> | ||
export interface FunctionSchema<T = AnyFunction> | ||
extends Schema<T>, | ||
@@ -15,3 +15,3 @@ CommonCriterias<FunctionSchema<T>> { | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
export function func<T extends (...args: any[]) => any = UnknownFunction>( | ||
export function func<T extends (...args: any[]) => any = AnyFunction>( | ||
defaultValue?: DefaultValue<T>, | ||
@@ -18,0 +18,0 @@ ) { |
@@ -5,7 +5,5 @@ import { createSchema } from '../createSchema'; | ||
import { | ||
AnySchema, | ||
CommonCriterias, | ||
DefaultValue, | ||
InferNullable, | ||
InferSchemaType, | ||
ObjectCriterias, | ||
@@ -25,5 +23,5 @@ Options, | ||
nullable: () => ObjectSchema<T | null>; | ||
of: <V extends AnySchema, K extends PropertyKey = keyof T>( | ||
schema: V, | ||
) => ObjectSchema<InferNullable<T, Record<K, InferSchemaType<V>>>>; | ||
of: <V, K extends PropertyKey = keyof T>( | ||
schema: Schema<V>, | ||
) => ObjectSchema<InferNullable<T, Record<K, V>>>; | ||
} | ||
@@ -30,0 +28,0 @@ |
import { createSchema } from '../createSchema'; | ||
import { commonCriteria, shapeCriteria } from '../criteria'; | ||
import { createObject, invalid, isObject } from '../helpers'; | ||
import { Blueprint, CommonCriterias, InferNullable, Schema, ShapeCriterias } from '../types'; | ||
import { Blueprint, CommonCriterias, Schema, ShapeCriterias } from '../types'; | ||
export interface ShapeSchema<T> | ||
extends Schema<T, Partial<T>>, | ||
extends Schema<T>, | ||
ShapeCriterias<ShapeSchema<T>>, | ||
@@ -14,3 +14,3 @@ CommonCriterias<ShapeSchema<T>> { | ||
/** @internal */ | ||
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<InferNullable<T, S>>; | ||
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<S>; | ||
} | ||
@@ -17,0 +17,0 @@ |
@@ -5,3 +5,3 @@ import { createSchema } from '../createSchema'; | ||
import { createArray, invalid } from '../helpers'; | ||
import { CommonCriterias, InferNullable, Schema } from '../types'; | ||
import { CommonCriterias, Schema } from '../types'; | ||
@@ -13,3 +13,3 @@ export interface TupleSchema<T> extends Schema<T>, CommonCriterias<TupleSchema<T>> { | ||
/** @internal */ | ||
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<InferNullable<T, I>>; | ||
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<I>; | ||
} | ||
@@ -16,0 +16,0 @@ |
@@ -1,3 +0,5 @@ | ||
export type UnknownFunction = (...args: unknown[]) => unknown; | ||
export type Primitive = bigint | boolean | number | string | symbol | null | undefined; | ||
export type Builtin = Date | Error | Function | RegExp; | ||
export type UnknownObject = Record<string, unknown>; | ||
@@ -7,3 +9,3 @@ | ||
export type Constructor<T> = (new (...args: unknown[]) => T) | (Function & { prototype: T }); | ||
export type Constructor<T> = (abstract new (...args: any[]) => T) | (new (...args: any[]) => T); | ||
@@ -132,10 +134,6 @@ export type InferNullable<P, N> = P extends null ? N | null : N; | ||
export interface Schema<Output, Input = Output> { | ||
export interface Schema<Output> { | ||
schema: () => string; | ||
type: () => string; | ||
validate: ( | ||
value: Input | null | undefined, | ||
path?: string, | ||
options?: SchemaValidateOptions, | ||
) => Output; | ||
validate: (value: unknown, path?: string, options?: SchemaValidateOptions) => Output; | ||
} | ||
@@ -165,8 +163,4 @@ | ||
// Any is required for generics to be typed correctly for consumers | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
export type AnySchema = Schema<any, any>; | ||
// INFER | ||
// INFERR | ||
export type InferFromObject<T> = { [K in keyof T]: Infer<T[K]> }; | ||
@@ -182,8 +176,15 @@ | ||
export type DeepPartial<T> = T extends Function | ||
export type DeepPartial<T> = T extends Builtin | Primitive | ||
? T | ||
: T extends (infer U)[] | ||
? DeepPartial<U>[] | ||
: T extends Record<string, unknown> | ||
: T extends (infer I)[] | ||
? DeepPartial<I>[] | ||
: T extends object | ||
? { [K in keyof T]?: DeepPartial<T[K]> } | ||
: T | undefined; | ||
: never; | ||
// Any is required for generics to be typed correctly for consumers | ||
/* eslint-disable @typescript-eslint/no-explicit-any */ | ||
export type AnySchema = Schema<any>; | ||
export type AnyFunction = (...args: any[]) => any; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
261783
5339