anyvali 0.3.5 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/parse/parser.d.ts +3 -3
- package/dist/parse/parser.d.ts.map +1 -1
- package/dist/parse/parser.js +4 -4
- package/dist/parse/parser.js.map +1 -1
- package/dist/schemas/base.d.ts +3 -3
- package/dist/schemas/base.d.ts.map +1 -1
- package/dist/schemas/base.js +4 -4
- package/dist/schemas/base.js.map +1 -1
- package/dist/schemas/object.d.ts.map +1 -1
- package/dist/schemas/object.js +15 -2
- package/dist/schemas/object.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +11 -5
- package/src/parse/parser.ts +10 -5
- package/src/schemas/base.ts +5 -4
- package/src/schemas/object.ts +15 -2
- package/src/types.ts +6 -0
- package/tests/unit/defaults.test.ts +69 -0
- package/tests/unit/object.test.ts +60 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.6](https://github.com/BetterCorp/AnyVali/compare/js-v0.3.5...js-v0.3.6) (2026-06-20)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* cascade unknown key policy ([7d21a51](https://github.com/BetterCorp/AnyVali/commit/7d21a51b0d7961c9089fdc92bb1c787c33186207))
|
|
9
|
+
|
|
3
10
|
## [0.3.5](https://github.com/BetterCorp/AnyVali/compare/js-v0.3.4...js-v0.3.5) (2026-06-17)
|
|
4
11
|
|
|
5
12
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { SchemaNode, SchemaKind, ParseResult, ValidationIssue, AnyValiDocument, ExportMode, UnknownKeyMode, CoercionConfig, StringFormat, ParseContext, MetadataOptions, DescribeOptions, } from "./types.js";
|
|
1
|
+
export type { SchemaNode, SchemaKind, ParseResult, ValidationIssue, AnyValiDocument, ExportMode, UnknownKeyMode, CoercionConfig, StringFormat, ParseContext, ParseOptions, MetadataOptions, DescribeOptions, } from "./types.js";
|
|
2
2
|
export { ISSUE_CODES } from "./issue-codes.js";
|
|
3
3
|
export type { IssueCode } from "./issue-codes.js";
|
|
4
4
|
export type { SchemaAny, Infer, InferInput } from "./infer.js";
|
|
@@ -23,7 +23,7 @@ import { IntersectionSchema } from "./schemas/intersection.js";
|
|
|
23
23
|
import { OptionalSchema } from "./schemas/optional.js";
|
|
24
24
|
import { NullableSchema } from "./schemas/nullable.js";
|
|
25
25
|
import { BaseSchema } from "./schemas/base.js";
|
|
26
|
-
import type { UnknownKeyMode, ParseResult, AnyValiDocument, ExportMode } from "./types.js";
|
|
26
|
+
import type { UnknownKeyMode, ParseResult, ParseOptions, AnyValiDocument, ExportMode } from "./types.js";
|
|
27
27
|
/** Create a string schema */
|
|
28
28
|
export declare function string(): StringSchema;
|
|
29
29
|
/** Create a number (float64) schema */
|
|
@@ -83,9 +83,9 @@ export declare function optional<T extends BaseSchema<any, any>>(schema: T): Opt
|
|
|
83
83
|
/** Wrap a schema as nullable */
|
|
84
84
|
export declare function nullable<T extends BaseSchema<any, any>>(schema: T): NullableSchema<T>;
|
|
85
85
|
/** Parse input using the given schema. Throws ValidationError on failure. */
|
|
86
|
-
export declare function parse<T>(schema: BaseSchema<unknown, T>, input: unknown): T;
|
|
86
|
+
export declare function parse<T>(schema: BaseSchema<unknown, T>, input: unknown, options?: ParseOptions): T;
|
|
87
87
|
/** Parse input using the given schema. Returns a result object. */
|
|
88
|
-
export declare function safeParse<T>(schema: BaseSchema<unknown, T>, input: unknown): ParseResult<T>;
|
|
88
|
+
export declare function safeParse<T>(schema: BaseSchema<unknown, T>, input: unknown, options?: ParseOptions): ParseResult<T>;
|
|
89
89
|
/** Export a schema to an AnyValiDocument */
|
|
90
90
|
export declare function exportSchema(schema: BaseSchema, mode?: ExportMode): AnyValiDocument;
|
|
91
91
|
/** Import an AnyValiDocument to a live schema */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,eAAe,EACf,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EACL,UAAU,EACV,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,SAAS,GACV,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -135,12 +135,12 @@ export function nullable(schema) {
|
|
|
135
135
|
}
|
|
136
136
|
// ---- Top-level parse functions ----
|
|
137
137
|
/** Parse input using the given schema. Throws ValidationError on failure. */
|
|
138
|
-
export function parse(schema, input) {
|
|
139
|
-
return schema.parse(input);
|
|
138
|
+
export function parse(schema, input, options) {
|
|
139
|
+
return schema.parse(input, options);
|
|
140
140
|
}
|
|
141
141
|
/** Parse input using the given schema. Returns a result object. */
|
|
142
|
-
export function safeParse(schema, input) {
|
|
143
|
-
return schema.safeParse(input);
|
|
142
|
+
export function safeParse(schema, input, options) {
|
|
143
|
+
return schema.safeParse(input, options);
|
|
144
144
|
}
|
|
145
145
|
// ---- Interchange functions ----
|
|
146
146
|
import { exportSchema as _exportSchema } from "./interchange/exporter.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/parse/parser.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { ParseResult } from "../types.js";
|
|
1
|
+
import type { ParseOptions, ParseResult } from "../types.js";
|
|
2
2
|
import { BaseSchema } from "../schemas/base.js";
|
|
3
3
|
/**
|
|
4
4
|
* Parse input with the given schema. Throws ValidationError on failure.
|
|
5
5
|
*/
|
|
6
|
-
export declare function parse<T>(schema: BaseSchema<unknown, T>, input: unknown): T;
|
|
6
|
+
export declare function parse<T>(schema: BaseSchema<unknown, T>, input: unknown, options?: ParseOptions): T;
|
|
7
7
|
/**
|
|
8
8
|
* Parse input with the given schema. Returns a result object.
|
|
9
9
|
*/
|
|
10
|
-
export declare function safeParse<T>(schema: BaseSchema<unknown, T>, input: unknown): ParseResult<T>;
|
|
10
|
+
export declare function safeParse<T>(schema: BaseSchema<unknown, T>, input: unknown, options?: ParseOptions): ParseResult<T>;
|
|
11
11
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,CAAC,CAEH;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,WAAW,CAAC,CAAC,CAAC,CAEhB"}
|
package/dist/parse/parser.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Parse input with the given schema. Throws ValidationError on failure.
|
|
3
3
|
*/
|
|
4
|
-
export function parse(schema, input) {
|
|
5
|
-
return schema.parse(input);
|
|
4
|
+
export function parse(schema, input, options) {
|
|
5
|
+
return schema.parse(input, options);
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Parse input with the given schema. Returns a result object.
|
|
9
9
|
*/
|
|
10
|
-
export function safeParse(schema, input) {
|
|
11
|
-
return schema.safeParse(input);
|
|
10
|
+
export function safeParse(schema, input, options) {
|
|
11
|
+
return schema.safeParse(input, options);
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=parser.js.map
|
package/dist/parse/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,KAAK,
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,MAA8B,EAC9B,KAAc,EACd,OAAsB;IAEtB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,MAA8B,EAC9B,KAAc,EACd,OAAsB;IAEtB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/schemas/base.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ParseResult, ParseContext, SchemaNode, AnyValiDocument, ExportMode, CoercionConfig, MetadataOptions, DescribeOptions } from "../types.js";
|
|
1
|
+
import type { ParseResult, ParseOptions, ParseContext, SchemaNode, AnyValiDocument, ExportMode, CoercionConfig, MetadataOptions, DescribeOptions } from "../types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Maximum validation recursion depth. Bounds recursion through recursive
|
|
4
4
|
* `$ref` schemas (and deeply nested data) so a malicious payload cannot
|
|
@@ -16,8 +16,8 @@ export declare abstract class BaseSchema<TInput = unknown, TOutput = TInput> {
|
|
|
16
16
|
/** @internal */ _coercionConfig: CoercionConfig | undefined;
|
|
17
17
|
/** @internal */ _isPortable: boolean;
|
|
18
18
|
/** @internal */ _metadata: Record<string, unknown> | undefined;
|
|
19
|
-
parse(input: unknown): TOutput;
|
|
20
|
-
safeParse(input: unknown): ParseResult<TOutput>;
|
|
19
|
+
parse(input: unknown, options?: ParseOptions): TOutput;
|
|
20
|
+
safeParse(input: unknown, options?: ParseOptions): ParseResult<TOutput>;
|
|
21
21
|
/** Internal: run the 5-step pipeline */
|
|
22
22
|
_runPipeline(input: unknown, ctx: ParseContext): unknown;
|
|
23
23
|
private _runPipelineInner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/schemas/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/schemas/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,YAAY,EACZ,UAAU,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAQrB;;;;;GAKG;AACH,eAAO,MAAM,SAAS,MAAM,CAAC;AAO7B,uCAAuC;AACvC,eAAO,MAAM,MAAM,eAA+B,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAiBnC,8BAAsB,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,MAAM;IACjE,gEAAgE;IAChE,SAAiB,OAAO,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAU;IAC1D,gBAAgB,CAAC,eAAe,EAAE,cAAc,GAAG,SAAS,CAAa;IACzE,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAQ;IAC7C,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAa;IAI5E,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAMtD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC;IA+BvE,wCAAwC;IACxC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAuBxD,OAAO,CAAC,iBAAiB;IAuDzB,sEAAsE;IACtE,kBAAkB,IAAI,MAAM;IAI5B,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAE9D,QAAQ,CAAC,OAAO,IAAI,UAAU;IAK9B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM7B,MAAM,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI;IAM1C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IAO3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IAyBrE,MAAM,CAAC,IAAI,GAAE,UAAuB,GAAG,eAAe;IAkBtD,OAAO,CAAC,qBAAqB;IAqD7B,SAAS,CAAC,MAAM,IAAI,IAAI;IAMxB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;CAYpD"}
|
package/dist/schemas/base.js
CHANGED
|
@@ -38,14 +38,14 @@ export class BaseSchema {
|
|
|
38
38
|
/** @internal */ _isPortable = true;
|
|
39
39
|
/** @internal */ _metadata = undefined;
|
|
40
40
|
// ---------- public API ----------
|
|
41
|
-
parse(input) {
|
|
42
|
-
const result = this.safeParse(input);
|
|
41
|
+
parse(input, options) {
|
|
42
|
+
const result = this.safeParse(input, options);
|
|
43
43
|
if (result.success)
|
|
44
44
|
return result.data;
|
|
45
45
|
throw new ValidationError(result.issues);
|
|
46
46
|
}
|
|
47
|
-
safeParse(input) {
|
|
48
|
-
const ctx = { path: [], issues: [] };
|
|
47
|
+
safeParse(input, options) {
|
|
48
|
+
const ctx = { path: [], issues: [], ...options };
|
|
49
49
|
let output;
|
|
50
50
|
try {
|
|
51
51
|
output = this._runPipeline(input, ctx);
|
package/dist/schemas/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/schemas/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/schemas/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAU,MAAM,WAAW,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAEjD,gGAAgG;AAChG,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAC5C,QAAQ,CACV;KACG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAChF,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,GAC7C,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAC7B,CACF,CAAC;AAOF,qBAAa,YAAY,CACvB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAC1D,MAAM,EACN,UAAU,CACX,CACD,SAAQ,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAU;gBAGpC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,cAAc,CAAA;KAAE;IAiB5C,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC;IAOvD,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAU,MAAM,WAAW,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAEjD,gGAAgG;AAChG,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAC5C,QAAQ,CACV;KACG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAChF,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,GAC7C,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAC7B,CACF,CAAC;AAOF,qBAAa,YAAY,CACvB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAC1D,MAAM,EACN,UAAU,CACX,CACD,SAAQ,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAU;gBAGpC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,cAAc,CAAA;KAAE;IAiB5C,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC;IAOvD,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,kBAAkB;IAI1B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IA0HrD,OAAO,IAAI,UAAU;CAoBtB"}
|
package/dist/schemas/object.js
CHANGED
|
@@ -25,7 +25,11 @@ export class ObjectSchema extends BaseSchema {
|
|
|
25
25
|
clone._unknownKeysExplicit = true;
|
|
26
26
|
return clone;
|
|
27
27
|
}
|
|
28
|
-
_effectiveUnknownKeys() {
|
|
28
|
+
_effectiveUnknownKeys(ctx) {
|
|
29
|
+
if (ctx.inheritedUnknownKeys !== undefined)
|
|
30
|
+
return ctx.inheritedUnknownKeys;
|
|
31
|
+
if (ctx.unknownKeys !== undefined)
|
|
32
|
+
return ctx.unknownKeys;
|
|
29
33
|
return this._unknownKeysExplicit ? this._unknownKeys : "strip";
|
|
30
34
|
}
|
|
31
35
|
_exportUnknownKeys() {
|
|
@@ -64,6 +68,13 @@ export class ObjectSchema extends BaseSchema {
|
|
|
64
68
|
inputKeys.add("__proto__");
|
|
65
69
|
}
|
|
66
70
|
// Validate declared properties
|
|
71
|
+
const unknownKeys = this._effectiveUnknownKeys(ctx);
|
|
72
|
+
const previousInheritedUnknownKeys = ctx.inheritedUnknownKeys;
|
|
73
|
+
const previousUnknownKeys = ctx.unknownKeys;
|
|
74
|
+
if (unknownKeys === "strip" || unknownKeys === "reject") {
|
|
75
|
+
ctx.inheritedUnknownKeys = unknownKeys;
|
|
76
|
+
}
|
|
77
|
+
ctx.unknownKeys = undefined;
|
|
67
78
|
for (const [key, prop] of this._properties) {
|
|
68
79
|
ctx.path.push(key);
|
|
69
80
|
const hasKey = Object.prototype.hasOwnProperty.call(obj, key);
|
|
@@ -96,9 +107,11 @@ export class ObjectSchema extends BaseSchema {
|
|
|
96
107
|
}
|
|
97
108
|
ctx.path.pop();
|
|
98
109
|
}
|
|
110
|
+
ctx.inheritedUnknownKeys = previousInheritedUnknownKeys;
|
|
111
|
+
ctx.unknownKeys = previousUnknownKeys;
|
|
99
112
|
// Handle unknown keys
|
|
100
113
|
for (const key of inputKeys) {
|
|
101
|
-
switch (
|
|
114
|
+
switch (unknownKeys) {
|
|
102
115
|
case "reject":
|
|
103
116
|
ctx.issues.push({
|
|
104
117
|
code: ISSUE_CODES.UNKNOWN_KEY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAwB1C,MAAM,OAAO,YAKX,SAAQ,UAAuD;IACvD,WAAW,CAA2B;IACtC,YAAY,CAAiB;IAC7B,oBAAoB,CAAU;IAEtC,YACE,KAAa,EACb,OAA0C;QAE1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC;QACpD,IAAI,CAAC,oBAAoB,GAAG,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC;QAE/D,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,mDAAmD;YACnD,MAAM,UAAU,GAAI,MAAc,CAAC,kBAAkB,KAAK,IAAI,CAAC;YAC/D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;gBACxB,MAAM;gBACN,QAAQ,EAAE,CAAC,UAAU;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAoB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -103,6 +103,9 @@ export type ParseResult<T> = {
|
|
|
103
103
|
success: false;
|
|
104
104
|
issues: ValidationIssue[];
|
|
105
105
|
};
|
|
106
|
+
export interface ParseOptions {
|
|
107
|
+
unknownKeys?: UnknownKeyMode;
|
|
108
|
+
}
|
|
106
109
|
export interface ValidationIssue {
|
|
107
110
|
code: string;
|
|
108
111
|
message: string;
|
|
@@ -123,6 +126,8 @@ export type UnknownKeyMode = "reject" | "strip" | "allow";
|
|
|
123
126
|
export interface ParseContext {
|
|
124
127
|
path: (string | number)[];
|
|
125
128
|
issues: ValidationIssue[];
|
|
129
|
+
unknownKeys?: UnknownKeyMode;
|
|
130
|
+
inheritedUnknownKeys?: Exclude<UnknownKeyMode, "allow">;
|
|
126
131
|
definitions?: Record<string, SchemaNode>;
|
|
127
132
|
/** Tracks objects already being validated to detect circular references. */
|
|
128
133
|
seen?: WeakSet<object>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type {
|
|
|
10
10
|
CoercionConfig,
|
|
11
11
|
StringFormat,
|
|
12
12
|
ParseContext,
|
|
13
|
+
ParseOptions,
|
|
13
14
|
MetadataOptions,
|
|
14
15
|
DescribeOptions,
|
|
15
16
|
} from "./types.js";
|
|
@@ -88,7 +89,7 @@ import { OptionalSchema } from "./schemas/optional.js";
|
|
|
88
89
|
import { NullableSchema } from "./schemas/nullable.js";
|
|
89
90
|
import { BaseSchema } from "./schemas/base.js";
|
|
90
91
|
|
|
91
|
-
import type { UnknownKeyMode, ParseResult, AnyValiDocument, ExportMode } from "./types.js";
|
|
92
|
+
import type { UnknownKeyMode, ParseResult, ParseOptions, AnyValiDocument, ExportMode } from "./types.js";
|
|
92
93
|
|
|
93
94
|
/** Create a string schema */
|
|
94
95
|
export function string(): StringSchema {
|
|
@@ -254,16 +255,21 @@ export function nullable<T extends BaseSchema<any, any>>(
|
|
|
254
255
|
// ---- Top-level parse functions ----
|
|
255
256
|
|
|
256
257
|
/** Parse input using the given schema. Throws ValidationError on failure. */
|
|
257
|
-
export function parse<T>(
|
|
258
|
-
|
|
258
|
+
export function parse<T>(
|
|
259
|
+
schema: BaseSchema<unknown, T>,
|
|
260
|
+
input: unknown,
|
|
261
|
+
options?: ParseOptions
|
|
262
|
+
): T {
|
|
263
|
+
return schema.parse(input, options);
|
|
259
264
|
}
|
|
260
265
|
|
|
261
266
|
/** Parse input using the given schema. Returns a result object. */
|
|
262
267
|
export function safeParse<T>(
|
|
263
268
|
schema: BaseSchema<unknown, T>,
|
|
264
|
-
input: unknown
|
|
269
|
+
input: unknown,
|
|
270
|
+
options?: ParseOptions
|
|
265
271
|
): ParseResult<T> {
|
|
266
|
-
return schema.safeParse(input);
|
|
272
|
+
return schema.safeParse(input, options);
|
|
267
273
|
}
|
|
268
274
|
|
|
269
275
|
// ---- Interchange functions ----
|
package/src/parse/parser.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import type { ParseResult } from "../types.js";
|
|
1
|
+
import type { ParseOptions, ParseResult } from "../types.js";
|
|
2
2
|
import { BaseSchema } from "../schemas/base.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Parse input with the given schema. Throws ValidationError on failure.
|
|
6
6
|
*/
|
|
7
|
-
export function parse<T>(
|
|
8
|
-
|
|
7
|
+
export function parse<T>(
|
|
8
|
+
schema: BaseSchema<unknown, T>,
|
|
9
|
+
input: unknown,
|
|
10
|
+
options?: ParseOptions
|
|
11
|
+
): T {
|
|
12
|
+
return schema.parse(input, options);
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
/**
|
|
@@ -13,7 +17,8 @@ export function parse<T>(schema: BaseSchema<unknown, T>, input: unknown): T {
|
|
|
13
17
|
*/
|
|
14
18
|
export function safeParse<T>(
|
|
15
19
|
schema: BaseSchema<unknown, T>,
|
|
16
|
-
input: unknown
|
|
20
|
+
input: unknown,
|
|
21
|
+
options?: ParseOptions
|
|
17
22
|
): ParseResult<T> {
|
|
18
|
-
return schema.safeParse(input);
|
|
23
|
+
return schema.safeParse(input, options);
|
|
19
24
|
}
|
package/src/schemas/base.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
ParseResult,
|
|
3
|
+
ParseOptions,
|
|
3
4
|
ValidationIssue,
|
|
4
5
|
ParseContext,
|
|
5
6
|
SchemaNode,
|
|
@@ -58,14 +59,14 @@ export abstract class BaseSchema<TInput = unknown, TOutput = TInput> {
|
|
|
58
59
|
|
|
59
60
|
// ---------- public API ----------
|
|
60
61
|
|
|
61
|
-
parse(input: unknown): TOutput {
|
|
62
|
-
const result = this.safeParse(input);
|
|
62
|
+
parse(input: unknown, options?: ParseOptions): TOutput {
|
|
63
|
+
const result = this.safeParse(input, options);
|
|
63
64
|
if (result.success) return result.data;
|
|
64
65
|
throw new ValidationError(result.issues);
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
safeParse(input: unknown): ParseResult<TOutput> {
|
|
68
|
-
const ctx: ParseContext = { path: [], issues: [] };
|
|
68
|
+
safeParse(input: unknown, options?: ParseOptions): ParseResult<TOutput> {
|
|
69
|
+
const ctx: ParseContext = { path: [], issues: [], ...options };
|
|
69
70
|
let output: unknown;
|
|
70
71
|
try {
|
|
71
72
|
output = this._runPipeline(input, ctx);
|
package/src/schemas/object.ts
CHANGED
|
@@ -61,7 +61,9 @@ export class ObjectSchema<
|
|
|
61
61
|
return clone;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
private _effectiveUnknownKeys(): UnknownKeyMode {
|
|
64
|
+
private _effectiveUnknownKeys(ctx: ParseContext): UnknownKeyMode {
|
|
65
|
+
if (ctx.inheritedUnknownKeys !== undefined) return ctx.inheritedUnknownKeys;
|
|
66
|
+
if (ctx.unknownKeys !== undefined) return ctx.unknownKeys;
|
|
65
67
|
return this._unknownKeysExplicit ? this._unknownKeys : "strip";
|
|
66
68
|
}
|
|
67
69
|
|
|
@@ -105,6 +107,14 @@ export class ObjectSchema<
|
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
// Validate declared properties
|
|
110
|
+
const unknownKeys = this._effectiveUnknownKeys(ctx);
|
|
111
|
+
const previousInheritedUnknownKeys = ctx.inheritedUnknownKeys;
|
|
112
|
+
const previousUnknownKeys = ctx.unknownKeys;
|
|
113
|
+
if (unknownKeys === "strip" || unknownKeys === "reject") {
|
|
114
|
+
ctx.inheritedUnknownKeys = unknownKeys;
|
|
115
|
+
}
|
|
116
|
+
ctx.unknownKeys = undefined;
|
|
117
|
+
|
|
108
118
|
for (const [key, prop] of this._properties) {
|
|
109
119
|
ctx.path.push(key);
|
|
110
120
|
const hasKey = Object.prototype.hasOwnProperty.call(obj, key);
|
|
@@ -142,9 +152,12 @@ export class ObjectSchema<
|
|
|
142
152
|
ctx.path.pop();
|
|
143
153
|
}
|
|
144
154
|
|
|
155
|
+
ctx.inheritedUnknownKeys = previousInheritedUnknownKeys;
|
|
156
|
+
ctx.unknownKeys = previousUnknownKeys;
|
|
157
|
+
|
|
145
158
|
// Handle unknown keys
|
|
146
159
|
for (const key of inputKeys) {
|
|
147
|
-
switch (
|
|
160
|
+
switch (unknownKeys) {
|
|
148
161
|
case "reject":
|
|
149
162
|
ctx.issues.push({
|
|
150
163
|
code: ISSUE_CODES.UNKNOWN_KEY,
|
package/src/types.ts
CHANGED
|
@@ -201,6 +201,10 @@ export type ParseResult<T> =
|
|
|
201
201
|
| { success: true; data: T }
|
|
202
202
|
| { success: false; issues: ValidationIssue[] };
|
|
203
203
|
|
|
204
|
+
export interface ParseOptions {
|
|
205
|
+
unknownKeys?: UnknownKeyMode;
|
|
206
|
+
}
|
|
207
|
+
|
|
204
208
|
export interface ValidationIssue {
|
|
205
209
|
code: string;
|
|
206
210
|
message: string;
|
|
@@ -231,6 +235,8 @@ export type UnknownKeyMode = "reject" | "strip" | "allow";
|
|
|
231
235
|
export interface ParseContext {
|
|
232
236
|
path: (string | number)[];
|
|
233
237
|
issues: ValidationIssue[];
|
|
238
|
+
unknownKeys?: UnknownKeyMode;
|
|
239
|
+
inheritedUnknownKeys?: Exclude<UnknownKeyMode, "allow">;
|
|
234
240
|
definitions?: Record<string, SchemaNode>;
|
|
235
241
|
/** Tracks objects already being validated to detect circular references. */
|
|
236
242
|
seen?: WeakSet<object>;
|
|
@@ -115,4 +115,73 @@ describe("Defaults", () => {
|
|
|
115
115
|
user: { name: "Bob", role: "guest" },
|
|
116
116
|
});
|
|
117
117
|
});
|
|
118
|
+
|
|
119
|
+
it("applies required object-field defaults across scalar types", () => {
|
|
120
|
+
const s = object({
|
|
121
|
+
host: string().minLength(1).default("0.0.0.0"),
|
|
122
|
+
port: int().min(1).default(3200),
|
|
123
|
+
timeoutMs: int().default(5000).min(1000),
|
|
124
|
+
enabled: bool().default(false),
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
expect(s.parse({})).toEqual({
|
|
128
|
+
host: "0.0.0.0",
|
|
129
|
+
port: 3200,
|
|
130
|
+
timeoutMs: 5000,
|
|
131
|
+
enabled: false,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it("applies defaults in optional inner and optional wrapper forms", () => {
|
|
136
|
+
const s = object({
|
|
137
|
+
innerDefault: optional(string().default("inner")),
|
|
138
|
+
wrapperDefault: optional(string()).default("wrapper"),
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
expect(s.parse({})).toEqual({
|
|
142
|
+
innerDefault: "inner",
|
|
143
|
+
wrapperDefault: "wrapper",
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it("applies defaults in a plugin-style config object", () => {
|
|
148
|
+
const BetterPortalConfigSchema = object({
|
|
149
|
+
tenantId: string().minLength(1),
|
|
150
|
+
authressApiUrl: string().minLength(1),
|
|
151
|
+
authressApplicationId: string().minLength(1),
|
|
152
|
+
});
|
|
153
|
+
const PluginConfigSchema = object({
|
|
154
|
+
host: string().minLength(1).default("0.0.0.0"),
|
|
155
|
+
port: int().min(1).default(3200),
|
|
156
|
+
betterportal: BetterPortalConfigSchema,
|
|
157
|
+
dbLocation: string().minLength(1).default("data"),
|
|
158
|
+
redisUrl: string().minLength(1).default("redis://localhost:6379"),
|
|
159
|
+
gotenbergBaseUrl: string().minLength(1).default("http://localhost:3000"),
|
|
160
|
+
gotenbergTimeoutMs: int().default(5000).min(1000),
|
|
161
|
+
}, { unknownKeys: "strip" });
|
|
162
|
+
|
|
163
|
+
expect(PluginConfigSchema.parse({
|
|
164
|
+
port: 3211,
|
|
165
|
+
betterportal: {
|
|
166
|
+
tenantId: "tenant-lorem",
|
|
167
|
+
authressApiUrl: "https://auth.example.test",
|
|
168
|
+
authressApplicationId: "app_loremIpsum123",
|
|
169
|
+
},
|
|
170
|
+
redisUrl: "redis://10.1.1.4:6379",
|
|
171
|
+
gotenbergBaseUrl: "http://10.1.1.16:3000",
|
|
172
|
+
extra: true,
|
|
173
|
+
})).toEqual({
|
|
174
|
+
host: "0.0.0.0",
|
|
175
|
+
port: 3211,
|
|
176
|
+
betterportal: {
|
|
177
|
+
tenantId: "tenant-lorem",
|
|
178
|
+
authressApiUrl: "https://auth.example.test",
|
|
179
|
+
authressApplicationId: "app_loremIpsum123",
|
|
180
|
+
},
|
|
181
|
+
dbLocation: "data",
|
|
182
|
+
redisUrl: "redis://10.1.1.4:6379",
|
|
183
|
+
gotenbergBaseUrl: "http://10.1.1.16:3000",
|
|
184
|
+
gotenbergTimeoutMs: 5000,
|
|
185
|
+
});
|
|
186
|
+
});
|
|
118
187
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { object, string, int, optional, bool, RefSchema } from "../../src/index.js";
|
|
2
|
+
import { object, string, int, optional, bool, RefSchema, parse } from "../../src/index.js";
|
|
3
3
|
|
|
4
4
|
describe("ObjectSchema", () => {
|
|
5
5
|
it("accepts valid objects", () => {
|
|
@@ -45,6 +45,65 @@ describe("ObjectSchema", () => {
|
|
|
45
45
|
expect(result).toEqual({ name: "Alice", extra: true });
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
+
it("parse-level strip overrides object-level allow recursively", () => {
|
|
49
|
+
const s = object({
|
|
50
|
+
user: object({ name: string() }).unknownKeys("allow"),
|
|
51
|
+
}).unknownKeys("allow");
|
|
52
|
+
|
|
53
|
+
expect(
|
|
54
|
+
s.parse(
|
|
55
|
+
{ user: { name: "Alice", role: "admin" }, rootExtra: true },
|
|
56
|
+
{ unknownKeys: "strip" }
|
|
57
|
+
)
|
|
58
|
+
).toEqual({ user: { name: "Alice" } });
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("top-level parse unknownKeys overrides schema unknownKeys", () => {
|
|
62
|
+
const s = object({ name: string() }).unknownKeys("strip");
|
|
63
|
+
|
|
64
|
+
expect(() =>
|
|
65
|
+
parse(s, { name: "Alice", extra: true }, { unknownKeys: "reject" })
|
|
66
|
+
).toThrow("unknown_key");
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("parent strip overrides nested allow", () => {
|
|
70
|
+
const s = object({
|
|
71
|
+
user: object({ name: string() }).unknownKeys("allow"),
|
|
72
|
+
}).unknownKeys("strip");
|
|
73
|
+
|
|
74
|
+
expect(s.parse({ user: { name: "Alice", role: "admin" } })).toEqual({
|
|
75
|
+
user: { name: "Alice" },
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("parent reject overrides nested allow", () => {
|
|
80
|
+
const s = object({
|
|
81
|
+
user: object({ name: string() }).unknownKeys("allow"),
|
|
82
|
+
}).unknownKeys("reject");
|
|
83
|
+
|
|
84
|
+
const result = s.safeParse({ user: { name: "Alice", role: "admin" } });
|
|
85
|
+
|
|
86
|
+
expect(result.success).toBe(false);
|
|
87
|
+
if (!result.success) {
|
|
88
|
+
expect(result.issues[0]).toEqual(
|
|
89
|
+
expect.objectContaining({
|
|
90
|
+
code: "unknown_key",
|
|
91
|
+
path: ["user", "role"],
|
|
92
|
+
})
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it("parent allow leaves nested unknown key policy alone", () => {
|
|
98
|
+
const s = object({
|
|
99
|
+
user: object({ name: string() }).unknownKeys("strip"),
|
|
100
|
+
}).unknownKeys("allow");
|
|
101
|
+
|
|
102
|
+
expect(
|
|
103
|
+
s.parse({ user: { name: "Alice", role: "admin" }, rootExtra: true })
|
|
104
|
+
).toEqual({ user: { name: "Alice" }, rootExtra: true });
|
|
105
|
+
});
|
|
106
|
+
|
|
48
107
|
it("handles optional fields", () => {
|
|
49
108
|
const s = object({
|
|
50
109
|
name: string(),
|