Comparing version 1.4.6 to 1.5.0
@@ -26,2 +26,4 @@ export declare abstract class Type<T> { | ||
export declare type Infer<T> = T extends AnyType ? (T extends Type<infer K> ? Eval<K> : any) : T; | ||
declare const allowUnknownSymbol: unique symbol; | ||
declare const shapekeysSymbol: unique symbol; | ||
export declare const coercionTypeSymbol: unique symbol; | ||
@@ -210,3 +212,6 @@ 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>; | ||
private readonly defaultValue?; | ||
private readonly allowUnknown; | ||
[allowUnknownSymbol]: boolean; | ||
[shapekeysSymbol]: string[]; | ||
[coercionTypeSymbol]: boolean; | ||
[keySignature]: AnyType | undefined; | ||
private shouldCollectErrors; | ||
@@ -253,2 +258,3 @@ constructor(objectShape: T, opts?: ObjectOptions<T>); | ||
collectErrors(value?: boolean): ObjectType<T>; | ||
allowUnknownKeys(value?: boolean): ObjectType<T>; | ||
} | ||
@@ -255,0 +261,0 @@ export declare type ArrayOptions<T extends AnyType> = { |
@@ -488,10 +488,10 @@ "use strict"; | ||
this.defaultValue = opts === null || opts === void 0 ? void 0 : opts.default; | ||
this.allowUnknown = (opts === null || opts === void 0 ? void 0 : opts.allowUnknown) === true; | ||
this.shouldCollectErrors = (opts === null || opts === void 0 ? void 0 : opts.collectErrors) === true; | ||
const keys = Object.keys(this.objectShape); | ||
this[exports.keySignature] = this.objectShape[exports.keySignature]; | ||
this[allowUnknownSymbol] = this.allowUnknown; | ||
this[allowUnknownSymbol] = (opts === null || opts === void 0 ? void 0 : opts.allowUnknown) === true; | ||
this[shapekeysSymbol] = keys; | ||
this[exports.coercionTypeSymbol] = | ||
this.defaultValue !== undefined || | ||
this[allowUnknownSymbol] || | ||
Object.values(this.objectShape).some(schema => schema[exports.coercionTypeSymbol]) || | ||
@@ -511,3 +511,3 @@ !!(this.objectShape[exports.keySignature] && this.objectShape[exports.keySignature][exports.coercionTypeSymbol]); | ||
const keys = this[shapekeysSymbol]; | ||
const allowUnknown = typeof parseOpts.allowUnknown === 'boolean' ? parseOpts.allowUnknown : this.allowUnknown; | ||
const allowUnknown = parseOpts.allowUnknown || this[allowUnknownSymbol]; | ||
const keySig = this.objectShape[exports.keySignature]; | ||
@@ -865,3 +865,3 @@ if (!allowUnknown && !keySig) { | ||
// Do not transfer predicates or default value to new object shape as this would not be type-safe | ||
return new ObjectType(shape, { allowUnknown: this.allowUnknown }); | ||
return new ObjectType(shape, { allowUnknown: this[allowUnknownSymbol] }); | ||
} | ||
@@ -882,2 +882,8 @@ shape() { | ||
} | ||
allowUnknownKeys(value = true) { | ||
const cpy = clone(this); | ||
cpy[allowUnknownSymbol] = value; | ||
cpy[exports.coercionTypeSymbol] = cpy[exports.coercionTypeSymbol] || value; | ||
return cpy; | ||
} | ||
} | ||
@@ -884,0 +890,0 @@ exports.ObjectType = ObjectType; |
{ | ||
"name": "myzod", | ||
"version": "1.4.6", | ||
"version": "1.5.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "./libs/index.js", |
@@ -449,2 +449,12 @@ # myzod | ||
#### object.allowUnknownKeys | ||
A new schema can be build via fluent syntax to allow for unknown keys | ||
```typescript | ||
const schema = z.object({ name: z.string(), age: z.number() }).allowUnknownKeys() | ||
const value = schema.try({ name: 'myzod', age: 1, cool: true }); // value is { name: 'myzod', age: 1 } | ||
``` | ||
#### object.withPredicate | ||
@@ -451,0 +461,0 @@ |
104269
1796
896