Comparing version 1.4.0 to 1.4.1
@@ -25,3 +25,3 @@ export declare abstract class Type<T> { | ||
export declare type AnyType = Type<any>; | ||
export declare type Infer<T extends AnyType> = T extends Type<infer K> ? Eval<K> : any; | ||
export declare type Infer<T> = T extends AnyType ? (T extends Type<infer K> ? Eval<K> : any) : T; | ||
export declare const coercionTypeSymbol: unique symbol; | ||
@@ -49,4 +49,4 @@ export declare type IntersectionResult<T extends AnyType, K extends AnyType> = T extends ObjectType<any> ? K extends ObjectType<any> ? T extends ObjectType<infer Shape1> ? K extends ObjectType<infer Shape2> ? ObjectType<Eval<MergeShapes<Shape1, Shape2>>> : never : never : IntersectionType<T, K> : T extends ArrayType<any> ? K extends ArrayType<any> ? T extends ArrayType<infer S1> ? K extends ArrayType<infer S2> ? ArrayType<IntersectionResult<S1, S2>> : never : never : IntersectionType<T, K> : T extends TupleType<any> ? K extends TupleType<any> ? T extends TupleType<infer S1> ? K extends TupleType<infer S2> ? TupleType<Join<S1, S2>> : never : never : IntersectionType<T, K> : IntersectionType<T, K>; | ||
export declare class StringType extends Type<string> implements WithPredicate<string>, Defaultable<string> { | ||
private readonly predicates; | ||
private readonly defaultValue?; | ||
private predicates; | ||
private defaultValue?; | ||
constructor(opts?: StringOptions); | ||
@@ -63,3 +63,3 @@ parse(value?: unknown): string; | ||
export declare class BooleanType extends Type<boolean> implements Defaultable<boolean> { | ||
private readonly defaultValue?; | ||
private defaultValue?; | ||
constructor(defaultValue?: boolean | (() => boolean) | undefined); | ||
@@ -78,5 +78,5 @@ parse(value?: unknown): boolean; | ||
export declare class NumberType extends Type<number> implements WithPredicate<number>, Defaultable<number> { | ||
private readonly predicates; | ||
private readonly defaultValue?; | ||
private readonly coerceFlag?; | ||
private predicates; | ||
private defaultValue?; | ||
private coerceFlag?; | ||
constructor(opts?: NumberOptions); | ||
@@ -113,4 +113,4 @@ parse(value?: unknown): number; | ||
export declare class NullType extends Type<null> implements Defaultable<null> { | ||
private readonly defaulted?; | ||
constructor(defaulted?: boolean | undefined); | ||
private defaultValue; | ||
constructor(); | ||
parse(value?: unknown): null; | ||
@@ -124,3 +124,3 @@ and<K extends AnyType>(schema: K): IntersectionType<this, K>; | ||
private readonly defaultValue?; | ||
constructor(literal: T, defaulted?: boolean); | ||
constructor(literal: T); | ||
parse(value?: unknown): T; | ||
@@ -132,6 +132,6 @@ and<K extends AnyType>(schema: K): IntersectionType<this, K>; | ||
private readonly defaultValue?; | ||
constructor(defaultValue?: any); | ||
constructor(); | ||
parse(value?: unknown): unknown; | ||
and<K extends AnyType>(schema: K): IntersectionType<this, K>; | ||
default(value: any | (() => any)): UnknownType; | ||
default(value: any | (() => any)): any; | ||
} | ||
@@ -148,6 +148,6 @@ export declare class OptionalType<T extends AnyType> extends Type<Infer<T> | undefined> { | ||
private readonly defaultValue?; | ||
constructor(schema: T, defaultValue?: Infer<T> | (() => Nullable<Infer<T>>) | null | undefined); | ||
constructor(schema: T); | ||
parse(value?: unknown): Infer<T> | null; | ||
and<K extends AnyType>(schema: K): IntersectionType<this, K>; | ||
default(value: Nullable<Infer<T>> | (() => Nullable<Infer<T>>)): NullableType<T>; | ||
default(value: Nullable<Infer<T>> | (() => Nullable<Infer<T>>)): any; | ||
} | ||
@@ -215,3 +215,3 @@ export declare type DateOptions = { | ||
private readonly allowUnknown; | ||
private readonly shouldCollectErrors; | ||
private shouldCollectErrors; | ||
constructor(objectShape: T, opts?: ObjectOptions<T>); | ||
@@ -351,3 +351,3 @@ parse(value?: unknown, parseOpts?: ObjectOptions<any> & PathOptions): InferObjectShape<T>; | ||
and<K extends AnyType>(schema: K): IntersectionType<this, K>; | ||
default(defaultValue: ValueOf<T> | (() => ValueOf<T>)): EnumType<T>; | ||
default(value: ValueOf<T> | (() => ValueOf<T>)): EnumType<T>; | ||
coerce(opt: EnumCoerceOptions): EnumType<T>; | ||
@@ -354,0 +354,0 @@ } |
@@ -153,2 +153,13 @@ "use strict"; | ||
}; | ||
const withPredicate = (schema, predicate) => { | ||
const cpy = clone(schema); | ||
cpy.predicates = appendPredicate(cpy.predicates, predicate); | ||
return cpy; | ||
}; | ||
const withDefault = (schema, value) => { | ||
const cpy = clone(schema); | ||
cpy[exports.coercionTypeSymbol] = true; | ||
cpy.defaultValue = value; | ||
return cpy; | ||
}; | ||
class StringType extends Type { | ||
@@ -202,12 +213,6 @@ constructor(opts) { | ||
withPredicate(fn, errMsg) { | ||
return new StringType({ | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
default: this.defaultValue, | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new StringType({ | ||
predicate: this.predicates || undefined, | ||
default: value, | ||
}); | ||
return withDefault(this, value); | ||
} | ||
@@ -232,3 +237,3 @@ } | ||
default(value) { | ||
return new BooleanType(value); | ||
return withDefault(this, value); | ||
} | ||
@@ -286,14 +291,6 @@ } | ||
withPredicate(fn, errMsg) { | ||
return new NumberType({ | ||
coerce: this.coerceFlag, | ||
default: this.defaultValue, | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new NumberType({ | ||
coerce: this.coerceFlag, | ||
default: value, | ||
predicate: this.predicates || undefined, | ||
}); | ||
return withDefault(this, value); | ||
} | ||
@@ -334,9 +331,6 @@ } | ||
withPredicate(fn, errMsg) { | ||
return new BigIntType({ | ||
default: this.defaultValue, | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new BigIntType({ predicate: this.predicates || undefined, default: value }); | ||
return withDefault(this, value); | ||
} | ||
@@ -358,8 +352,6 @@ } | ||
class NullType extends Type { | ||
constructor(defaulted) { | ||
constructor() { | ||
super(); | ||
this.defaulted = defaulted; | ||
this[exports.coercionTypeSymbol] = !!defaulted; | ||
} | ||
parse(value = this.defaulted ? null : undefined) { | ||
parse(value = this.defaultValue) { | ||
if (value !== null) { | ||
@@ -374,3 +366,3 @@ throw this.typeError('expected type to be null but got ' + typeOf(value)); | ||
default() { | ||
return new NullType(true); | ||
return withDefault(this, null); | ||
} | ||
@@ -380,7 +372,5 @@ } | ||
class LiteralType extends Type { | ||
constructor(literal, defaulted) { | ||
constructor(literal) { | ||
super(); | ||
this.literal = literal; | ||
this.defaultValue = defaulted ? this.literal : undefined; | ||
this[exports.coercionTypeSymbol] = !!defaulted; | ||
} | ||
@@ -398,3 +388,3 @@ parse(value = this.defaultValue) { | ||
default() { | ||
return new LiteralType(this.literal, true); | ||
return withDefault(this, this.literal); | ||
} | ||
@@ -404,6 +394,4 @@ } | ||
class UnknownType extends Type { | ||
constructor(defaultValue) { | ||
constructor() { | ||
super(); | ||
this.defaultValue = defaultValue; | ||
this[exports.coercionTypeSymbol] = defaultValue !== undefined; | ||
} | ||
@@ -417,3 +405,3 @@ parse(value = typeof this.defaultValue === 'function' ? this.defaultValue() : this.defaultValue) { | ||
default(value) { | ||
return new UnknownType(value); | ||
return withDefault(this, value); | ||
} | ||
@@ -443,7 +431,6 @@ } | ||
class NullableType extends Type { | ||
constructor(schema, defaultValue) { | ||
constructor(schema) { | ||
super(); | ||
this.schema = schema; | ||
this.defaultValue = defaultValue; | ||
this[exports.coercionTypeSymbol] = this.defaultValue !== undefined || this.schema[exports.coercionTypeSymbol]; | ||
this[exports.coercionTypeSymbol] = this.schema[exports.coercionTypeSymbol]; | ||
this[shapekeysSymbol] = this.schema[shapekeysSymbol]; | ||
@@ -464,3 +451,3 @@ this[allowUnknownSymbol] = this.schema[allowUnknownSymbol]; | ||
default(value) { | ||
return new NullableType(this.schema, value); | ||
return withDefault(this, value); | ||
} | ||
@@ -487,9 +474,6 @@ } | ||
withPredicate(fn, errMsg) { | ||
return new DateType({ | ||
default: this.defaultValue, | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new DateType({ default: value, predicate: this.predicates || undefined }); | ||
return withDefault(this, value); | ||
} | ||
@@ -899,24 +883,11 @@ stringToDate(str) { | ||
withPredicate(fn, errMsg) { | ||
return new ObjectType(this.objectShape, { | ||
default: this.defaultValue, | ||
allowUnknown: this.allowUnknown, | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
collectErrors: this.shouldCollectErrors, | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new ObjectType(this.objectShape, { | ||
default: value, | ||
allowUnknown: this.allowUnknown, | ||
predicate: this.predicates || undefined, | ||
collectErrors: this.shouldCollectErrors, | ||
}); | ||
return withDefault(this, value); | ||
} | ||
collectErrors(value = true) { | ||
return new ObjectType(this.objectShape, { | ||
default: this.defaultValue, | ||
allowUnknown: this.allowUnknown, | ||
predicate: this.predicates || undefined, | ||
collectErrors: value, | ||
}); | ||
const cpy = clone(this); | ||
cpy.shouldCollectErrors = value; | ||
return cpy; | ||
} | ||
@@ -1031,13 +1002,6 @@ } | ||
withPredicate(fn, errMsg) { | ||
return new ArrayType(this.schema, { | ||
default: this.defaultValue, | ||
coerce: this.coerceFn, | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new ArrayType(this.schema, { | ||
default: value, | ||
predicate: this.predicates || undefined, | ||
}); | ||
return withDefault(this, value); | ||
} | ||
@@ -1103,12 +1067,6 @@ } | ||
withPredicate(fn, errMsg) { | ||
return new TupleType(this.schemas, { | ||
default: this.defaultValue, | ||
predicate: appendPredicate(this.predicates, { func: fn, errMsg }), | ||
}); | ||
return withPredicate(this, { func: fn, errMsg }); | ||
} | ||
default(value) { | ||
return new TupleType(this.schemas, { | ||
default: value, | ||
predicate: this.predicates || undefined, | ||
}); | ||
return withDefault(this, value); | ||
} | ||
@@ -1152,3 +1110,3 @@ } | ||
default(value) { | ||
return new UnionType(this.schemas, { strict: this.strict, default: value }); | ||
return withDefault(this, value); | ||
} | ||
@@ -1240,4 +1198,4 @@ } | ||
} | ||
default(defaultValue) { | ||
return new EnumType(this.enumeration, { defaultValue }); | ||
default(value) { | ||
return withDefault(this, value); | ||
} | ||
@@ -1244,0 +1202,0 @@ coerce(opt) { |
{ | ||
"name": "myzod", | ||
"version": "1.4.0", | ||
"version": "1.4.1", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "./libs/index.js", |
103403
1780