@jcoreio/zod-forms 1.1.2 → 1.2.0

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.
@@ -0,0 +1,23 @@
1
+ import z from 'zod';
2
+ import { DeepPartial } from './util/DeepPartial';
3
+ type ConditionalCheck<T extends z.ZodTypeAny> = {
4
+ schema: T;
5
+ check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>;
6
+ async: boolean;
7
+ };
8
+ interface ConditionalValidatorDef<T extends z.ZodTypeAny> extends z.ZodEffectsDef<T> {
9
+ checks: ConditionalCheck<any>[];
10
+ }
11
+ type ConditionalRefineMessage<Output> = string | z.CustomErrorParams | z.CustomErrorParams[] | ((value: Output) => z.CustomErrorParams | z.CustomErrorParams[]);
12
+ type ConditionalRefineSchema<T extends z.ZodTypeAny> = z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>> | ((schema: T) => z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>);
13
+ export declare class ConditionalValidator<T extends z.ZodTypeAny, Output = z.output<T>, Input = z.input<T>> extends z.ZodEffects<T, Output, Input> {
14
+ _def: ConditionalValidatorDef<T>;
15
+ constructor(schema: T, checks: ConditionalCheck<any>[]);
16
+ conditionalRefine(schema: ConditionalRefineSchema<T>, check: (value: z.output<T>) => unknown, message: ConditionalRefineMessage<z.output<T>>): ConditionalValidator<T, z.output<T>, z.input<T>>;
17
+ conditionalRefineAsync(schema: ConditionalRefineSchema<T>, check: (value: z.output<T>) => unknown | Promise<unknown>, message: ConditionalRefineMessage<z.output<T>>): ConditionalValidator<T, z.output<T>, z.input<T>>;
18
+ conditionalSuperRefine(schema: ConditionalRefineSchema<T>, check: (value: z.output<T>, ctx: z.RefinementCtx) => void): ConditionalValidator<T, z.output<T>, z.input<T>>;
19
+ conditionalSuperRefineAsync(schema: ConditionalRefineSchema<T>, check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>): ConditionalValidator<T, z.output<T>, z.input<T>>;
20
+ }
21
+ export declare function conditionalValidate<T extends z.ZodTypeAny>(schema: T): ConditionalValidator<T>;
22
+ export {};
23
+ //# sourceMappingURL=ConditionalValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionalValidator.d.ts","sourceRoot":"","sources":["src/ConditionalValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ConditionalValidator = void 0;
8
+ exports.conditionalValidate = conditionalValidate;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
16
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
+ var _zod = _interopRequireDefault(require("zod"));
19
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
20
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
21
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
22
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
25
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
26
+ function resolveSchema(baseSchema, refineSchema) {
27
+ return typeof refineSchema === 'function' ? refineSchema(baseSchema) : refineSchema;
28
+ }
29
+ var ConditionalValidator = exports.ConditionalValidator = /*#__PURE__*/function (_z$ZodEffects) {
30
+ function ConditionalValidator(schema, checks) {
31
+ (0, _classCallCheck2["default"])(this, ConditionalValidator);
32
+ return _callSuper(this, ConditionalValidator, [_objectSpread(_objectSpread({}, makePreprocess(schema, checks)._def), {}, {
33
+ checks: checks
34
+ })]);
35
+ }
36
+ (0, _inherits2["default"])(ConditionalValidator, _z$ZodEffects);
37
+ return (0, _createClass2["default"])(ConditionalValidator, [{
38
+ key: "conditionalRefine",
39
+ value: function conditionalRefine(schema, check, message) {
40
+ return this.conditionalSuperRefine(schema, function (value, ctx) {
41
+ if (!check(value)) {
42
+ addIssues(ctx, value, message);
43
+ }
44
+ });
45
+ }
46
+ }, {
47
+ key: "conditionalRefineAsync",
48
+ value: function conditionalRefineAsync(schema, check, message) {
49
+ return this.conditionalSuperRefineAsync(schema, /*#__PURE__*/function () {
50
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(value, ctx) {
51
+ return _regenerator["default"].wrap(function _callee$(_context) {
52
+ while (1) switch (_context.prev = _context.next) {
53
+ case 0:
54
+ _context.next = 2;
55
+ return check(value);
56
+ case 2:
57
+ if (_context.sent) {
58
+ _context.next = 4;
59
+ break;
60
+ }
61
+ addIssues(ctx, value, message);
62
+ case 4:
63
+ case "end":
64
+ return _context.stop();
65
+ }
66
+ }, _callee);
67
+ }));
68
+ return function (_x, _x2) {
69
+ return _ref.apply(this, arguments);
70
+ };
71
+ }());
72
+ }
73
+ }, {
74
+ key: "conditionalSuperRefine",
75
+ value: function conditionalSuperRefine(schema, check) {
76
+ return new ConditionalValidator(this._def.schema, [].concat((0, _toConsumableArray2["default"])(this._def.checks), [{
77
+ schema: resolveSchema(this._def.schema, schema),
78
+ check: check,
79
+ async: false
80
+ }]));
81
+ }
82
+ }, {
83
+ key: "conditionalSuperRefineAsync",
84
+ value: function conditionalSuperRefineAsync(schema, check) {
85
+ return new ConditionalValidator(this._def.schema, [].concat((0, _toConsumableArray2["default"])(this._def.checks), [{
86
+ schema: resolveSchema(this._def.schema, schema),
87
+ check: check,
88
+ async: true
89
+ }]));
90
+ }
91
+ }]);
92
+ }(_zod["default"].ZodEffects);
93
+ function conditionalValidate(schema) {
94
+ return new ConditionalValidator(schema, []);
95
+ }
96
+ function makePreprocess(schema, checks) {
97
+ return _zod["default"].preprocess(function (input, ctx) {
98
+ var results = checks.map(function (_ref2) {
99
+ var schema = _ref2.schema,
100
+ check = _ref2.check,
101
+ async = _ref2.async;
102
+ function handleParsed(parsed) {
103
+ if (!parsed.success) return;
104
+ return check(parsed.data, ctx);
105
+ }
106
+ return async ? schema.safeParseAsync(input).then(handleParsed) : handleParsed(schema.safeParse(input));
107
+ });
108
+ return checks.some(function (c) {
109
+ return c.async;
110
+ }) ? Promise.all(results).then(function () {
111
+ return input;
112
+ }) : input;
113
+ }, schema);
114
+ }
115
+ var asArray = function asArray(value) {
116
+ return Array.isArray(value) ? value : [value];
117
+ };
118
+ function addIssues(ctx, value, message) {
119
+ var issues = asArray(typeof message === 'function' ? message(value) : typeof message === 'string' ? {
120
+ message: message
121
+ } : message);
122
+ var _iterator = _createForOfIteratorHelper(issues),
123
+ _step;
124
+ try {
125
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
126
+ var issue = _step.value;
127
+ ctx.addIssue(_objectSpread({
128
+ code: _zod["default"].ZodIssueCode.custom
129
+ }, issue));
130
+ }
131
+ } catch (err) {
132
+ _iterator.e(err);
133
+ } finally {
134
+ _iterator.f();
135
+ }
136
+ }
137
+ //# sourceMappingURL=ConditionalValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionalValidator.js","names":["_zod","_interopRequireDefault","require","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","ownKeys","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","Boolean","prototype","valueOf","resolveSchema","baseSchema","refineSchema","ConditionalValidator","exports","_z$ZodEffects","schema","checks","_classCallCheck2","makePreprocess","_def","_inherits2","_createClass2","key","conditionalRefine","check","message","conditionalSuperRefine","ctx","addIssues","conditionalRefineAsync","conditionalSuperRefineAsync","_ref","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","sent","stop","_x","_x2","concat","_toConsumableArray2","async","z","ZodEffects","conditionalValidate","preprocess","input","results","map","_ref2","handleParsed","parsed","success","data","safeParseAsync","then","safeParse","some","c","Promise","all","asArray","issues","_iterator","_step","issue","addIssue","code","ZodIssueCode","custom","err"],"sources":["src/ConditionalValidator.ts"],"sourcesContent":["import z from 'zod'\nimport { DeepPartial } from './util/DeepPartial'\n\ntype ConditionalCheck<T extends z.ZodTypeAny> = {\n schema: T\n check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>\n async: boolean\n}\n\ninterface ConditionalValidatorDef<T extends z.ZodTypeAny>\n extends z.ZodEffectsDef<T> {\n checks: ConditionalCheck<any>[]\n}\n\ntype ConditionalRefineMessage<Output> =\n | string\n | z.CustomErrorParams\n | z.CustomErrorParams[]\n | ((value: Output) => z.CustomErrorParams | z.CustomErrorParams[])\n\ntype ConditionalRefineSchema<T extends z.ZodTypeAny> =\n | z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>\n | ((\n schema: T\n ) => z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>)\n\nfunction resolveSchema<T extends z.ZodTypeAny>(\n baseSchema: T,\n refineSchema: ConditionalRefineSchema<T>\n) {\n return typeof refineSchema === 'function'\n ? refineSchema(baseSchema)\n : refineSchema\n}\n\nexport class ConditionalValidator<\n T extends z.ZodTypeAny,\n Output = z.output<T>,\n Input = z.input<T>\n> extends z.ZodEffects<T, Output, Input> {\n declare _def: ConditionalValidatorDef<T>\n\n constructor(schema: T, checks: ConditionalCheck<any>[]) {\n super({\n ...makePreprocess(schema, checks)._def,\n checks,\n } satisfies ConditionalValidatorDef<T> as z.ZodEffectsDef<T>)\n }\n\n conditionalRefine(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>) => unknown,\n message: ConditionalRefineMessage<z.output<T>>\n ) {\n return this.conditionalSuperRefine(schema, (value, ctx) => {\n if (!check(value)) {\n addIssues(ctx, value, message)\n }\n })\n }\n conditionalRefineAsync(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>) => unknown | Promise<unknown>,\n message: ConditionalRefineMessage<z.output<T>>\n ) {\n return this.conditionalSuperRefineAsync(schema, async (value, ctx) => {\n if (!(await check(value))) {\n addIssues(ctx, value, message)\n }\n })\n }\n conditionalSuperRefine(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>, ctx: z.RefinementCtx) => void\n ) {\n return new ConditionalValidator(this._def.schema, [\n ...this._def.checks,\n { schema: resolveSchema(this._def.schema, schema), check, async: false },\n ])\n }\n conditionalSuperRefineAsync(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>\n ) {\n return new ConditionalValidator(this._def.schema, [\n ...this._def.checks,\n { schema: resolveSchema(this._def.schema, schema), check, async: true },\n ])\n }\n}\n\nexport function conditionalValidate<T extends z.ZodTypeAny>(\n schema: T\n): ConditionalValidator<T> {\n return new ConditionalValidator(schema, [])\n}\n\nfunction makePreprocess<T extends z.ZodTypeAny>(\n schema: T,\n checks: ConditionalCheck<any>[]\n): z.ZodEffects<T> {\n return z.preprocess((input, ctx) => {\n const results = checks.map(({ schema, check, async }) => {\n function handleParsed(\n parsed: z.SafeParseReturnType<z.input<T>, z.output<T>>\n ) {\n if (!parsed.success) return\n return check(parsed.data, ctx)\n }\n return async\n ? schema.safeParseAsync(input).then(handleParsed)\n : handleParsed(schema.safeParse(input))\n })\n return checks.some((c) => c.async)\n ? Promise.all(results).then(() => input)\n : input\n }, schema)\n}\n\nconst asArray = <T>(value: T | T[]) => (Array.isArray(value) ? value : [value])\n\nfunction addIssues<Output>(\n ctx: z.RefinementCtx,\n value: Output,\n message: ConditionalRefineMessage<Output>\n) {\n const issues = asArray(\n typeof message === 'function'\n ? message(value)\n : typeof message === 'string'\n ? { message }\n : message\n )\n for (const issue of issues) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, ...issue })\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ import z from 'zod';
2
+ function resolveSchema(baseSchema, refineSchema) {
3
+ return typeof refineSchema === 'function' ? refineSchema(baseSchema) : refineSchema;
4
+ }
5
+ export class ConditionalValidator extends z.ZodEffects {
6
+ constructor(schema, checks) {
7
+ super({
8
+ ...makePreprocess(schema, checks)._def,
9
+ checks
10
+ });
11
+ }
12
+ conditionalRefine(schema, check, message) {
13
+ return this.conditionalSuperRefine(schema, (value, ctx) => {
14
+ if (!check(value)) {
15
+ addIssues(ctx, value, message);
16
+ }
17
+ });
18
+ }
19
+ conditionalRefineAsync(schema, check, message) {
20
+ return this.conditionalSuperRefineAsync(schema, async (value, ctx) => {
21
+ if (!(await check(value))) {
22
+ addIssues(ctx, value, message);
23
+ }
24
+ });
25
+ }
26
+ conditionalSuperRefine(schema, check) {
27
+ return new ConditionalValidator(this._def.schema, [...this._def.checks, {
28
+ schema: resolveSchema(this._def.schema, schema),
29
+ check,
30
+ async: false
31
+ }]);
32
+ }
33
+ conditionalSuperRefineAsync(schema, check) {
34
+ return new ConditionalValidator(this._def.schema, [...this._def.checks, {
35
+ schema: resolveSchema(this._def.schema, schema),
36
+ check,
37
+ async: true
38
+ }]);
39
+ }
40
+ }
41
+ export function conditionalValidate(schema) {
42
+ return new ConditionalValidator(schema, []);
43
+ }
44
+ function makePreprocess(schema, checks) {
45
+ return z.preprocess((input, ctx) => {
46
+ const results = checks.map(({
47
+ schema,
48
+ check,
49
+ async
50
+ }) => {
51
+ function handleParsed(parsed) {
52
+ if (!parsed.success) return;
53
+ return check(parsed.data, ctx);
54
+ }
55
+ return async ? schema.safeParseAsync(input).then(handleParsed) : handleParsed(schema.safeParse(input));
56
+ });
57
+ return checks.some(c => c.async) ? Promise.all(results).then(() => input) : input;
58
+ }, schema);
59
+ }
60
+ const asArray = value => Array.isArray(value) ? value : [value];
61
+ function addIssues(ctx, value, message) {
62
+ const issues = asArray(typeof message === 'function' ? message(value) : typeof message === 'string' ? {
63
+ message
64
+ } : message);
65
+ for (const issue of issues) {
66
+ ctx.addIssue({
67
+ code: z.ZodIssueCode.custom,
68
+ ...issue
69
+ });
70
+ }
71
+ }
72
+ //# sourceMappingURL=ConditionalValidator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionalValidator.mjs","names":["z","resolveSchema","baseSchema","refineSchema","ConditionalValidator","ZodEffects","constructor","schema","checks","makePreprocess","_def","conditionalRefine","check","message","conditionalSuperRefine","value","ctx","addIssues","conditionalRefineAsync","conditionalSuperRefineAsync","async","conditionalValidate","preprocess","input","results","map","handleParsed","parsed","success","data","safeParseAsync","then","safeParse","some","c","Promise","all","asArray","Array","isArray","issues","issue","addIssue","code","ZodIssueCode","custom"],"sources":["src/ConditionalValidator.ts"],"sourcesContent":["import z from 'zod'\nimport { DeepPartial } from './util/DeepPartial'\n\ntype ConditionalCheck<T extends z.ZodTypeAny> = {\n schema: T\n check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>\n async: boolean\n}\n\ninterface ConditionalValidatorDef<T extends z.ZodTypeAny>\n extends z.ZodEffectsDef<T> {\n checks: ConditionalCheck<any>[]\n}\n\ntype ConditionalRefineMessage<Output> =\n | string\n | z.CustomErrorParams\n | z.CustomErrorParams[]\n | ((value: Output) => z.CustomErrorParams | z.CustomErrorParams[])\n\ntype ConditionalRefineSchema<T extends z.ZodTypeAny> =\n | z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>\n | ((\n schema: T\n ) => z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>)\n\nfunction resolveSchema<T extends z.ZodTypeAny>(\n baseSchema: T,\n refineSchema: ConditionalRefineSchema<T>\n) {\n return typeof refineSchema === 'function'\n ? refineSchema(baseSchema)\n : refineSchema\n}\n\nexport class ConditionalValidator<\n T extends z.ZodTypeAny,\n Output = z.output<T>,\n Input = z.input<T>\n> extends z.ZodEffects<T, Output, Input> {\n declare _def: ConditionalValidatorDef<T>\n\n constructor(schema: T, checks: ConditionalCheck<any>[]) {\n super({\n ...makePreprocess(schema, checks)._def,\n checks,\n } satisfies ConditionalValidatorDef<T> as z.ZodEffectsDef<T>)\n }\n\n conditionalRefine(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>) => unknown,\n message: ConditionalRefineMessage<z.output<T>>\n ) {\n return this.conditionalSuperRefine(schema, (value, ctx) => {\n if (!check(value)) {\n addIssues(ctx, value, message)\n }\n })\n }\n conditionalRefineAsync(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>) => unknown | Promise<unknown>,\n message: ConditionalRefineMessage<z.output<T>>\n ) {\n return this.conditionalSuperRefineAsync(schema, async (value, ctx) => {\n if (!(await check(value))) {\n addIssues(ctx, value, message)\n }\n })\n }\n conditionalSuperRefine(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>, ctx: z.RefinementCtx) => void\n ) {\n return new ConditionalValidator(this._def.schema, [\n ...this._def.checks,\n { schema: resolveSchema(this._def.schema, schema), check, async: false },\n ])\n }\n conditionalSuperRefineAsync(\n schema: ConditionalRefineSchema<T>,\n check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>\n ) {\n return new ConditionalValidator(this._def.schema, [\n ...this._def.checks,\n { schema: resolveSchema(this._def.schema, schema), check, async: true },\n ])\n }\n}\n\nexport function conditionalValidate<T extends z.ZodTypeAny>(\n schema: T\n): ConditionalValidator<T> {\n return new ConditionalValidator(schema, [])\n}\n\nfunction makePreprocess<T extends z.ZodTypeAny>(\n schema: T,\n checks: ConditionalCheck<any>[]\n): z.ZodEffects<T> {\n return z.preprocess((input, ctx) => {\n const results = checks.map(({ schema, check, async }) => {\n function handleParsed(\n parsed: z.SafeParseReturnType<z.input<T>, z.output<T>>\n ) {\n if (!parsed.success) return\n return check(parsed.data, ctx)\n }\n return async\n ? schema.safeParseAsync(input).then(handleParsed)\n : handleParsed(schema.safeParse(input))\n })\n return checks.some((c) => c.async)\n ? Promise.all(results).then(() => input)\n : input\n }, schema)\n}\n\nconst asArray = <T>(value: T | T[]) => (Array.isArray(value) ? value : [value])\n\nfunction addIssues<Output>(\n ctx: z.RefinementCtx,\n value: Output,\n message: ConditionalRefineMessage<Output>\n) {\n const issues = asArray(\n typeof message === 'function'\n ? message(value)\n : typeof message === 'string'\n ? { message }\n : message\n )\n for (const issue of issues) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, ...issue })\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/FieldPath.js CHANGED
@@ -74,7 +74,9 @@ function subschema(schema, key) {
74
74
  unknownKeys = _ref2$_def.unknownKeys,
75
75
  catchall = _ref2$_def.catchall;
76
76
  if (key in shape) return shape[key];
77
- if (unknownKeys === 'passthrough') return catchall;
77
+ if (unknownKeys === 'passthrough') {
78
+ return catchall._def.typeName === _zod["default"].ZodFirstPartyTypeKind.ZodNever ? _zod["default"].unknown() : catchall;
79
+ }
78
80
  break;
79
81
  }
80
82
  case 'ZodUnion':
@@ -94,7 +96,7 @@ function subschema(schema, key) {
94
96
  }).filter(function (opt) {
95
97
  return opt != null;
96
98
  });
97
- return _options.length > 1 ? _zod["default"].discriminatedUnion(discUnion.discriminator, _options) : _options.length === 1 ? _options[0] : undefined;
99
+ return _options.length > 1 ? _zod["default"].union(_options) : _options.length === 1 ? _options[0] : undefined;
98
100
  break;
99
101
  }
100
102
  case 'ZodIntersection':
@@ -145,7 +147,13 @@ function subschema(schema, key) {
145
147
  case 'ZodBranded':
146
148
  return subschema(schema._def.type, key);
147
149
  case 'ZodPipeline':
148
- return subschema(schema._def["in"], key);
150
+ {
151
+ var _ref7 = schema,
152
+ _def = _ref7._def;
153
+ var _in = subschema(_def["in"], key);
154
+ var out = subschema(_def.out, key);
155
+ return _in && out ? _in.pipe(out) : _in || out;
156
+ }
149
157
  }
150
158
  return undefined;
151
159
  }
package/FieldPath.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPath.js","names":["_zod","_interopRequireDefault","require","_pathstring","_parsePathstring","FieldPath","exports","_ref","schema","path","_classCallCheck2","_defineProperty2","pathstring","_createClass2","key","value","get","parsePathstring","Array","isArray","Error","concat","reduce","field","subfield","_this$subfields","cached","subfields","subschema","_toConsumableArray2","Map","set","root","_def","typeName","z","ZodFirstPartyTypeKind","ZodAny","element","_ref2","shape","_ref2$_def","unknownKeys","catchall","options","map","opt","filter","length","union","undefined","discUnion","discriminatedUnion","discriminator","_ref3","items","rest","_ref4","keySchema","valueSchema","safeParse","success","_ref5","_ref6","innerSchema","unwrap","removeDefault","removeCatch","type"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') return catchall\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.discriminatedUnion(discUnion.discriminator, options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n return subschema(innerSchema, key)\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline':\n return subschema(\n (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.in,\n key\n )\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FieldPath.js","names":["_zod","_interopRequireDefault","require","_pathstring","_parsePathstring","FieldPath","exports","_ref","schema","path","_classCallCheck2","_defineProperty2","pathstring","_createClass2","key","value","get","parsePathstring","Array","isArray","Error","concat","reduce","field","subfield","_this$subfields","cached","subfields","subschema","_toConsumableArray2","Map","set","root","_def","typeName","z","ZodFirstPartyTypeKind","ZodAny","element","_ref2","shape","_ref2$_def","unknownKeys","catchall","ZodNever","unknown","options","map","opt","filter","length","union","undefined","discUnion","_ref3","items","rest","_ref4","keySchema","valueSchema","safeParse","success","_ref5","_ref6","innerSchema","unwrap","removeDefault","removeCatch","type","_ref7","_in","out","pipe"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') {\n return catchall._def.typeName === z.ZodFirstPartyTypeKind.ZodNever\n ? z.unknown()\n : catchall\n }\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n return subschema(innerSchema, key)\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline': {\n const { _def } = schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>\n const _in = subschema(_def.in, key)\n const out = subschema(_def.out, key)\n return _in && out ? _in.pipe(out) : _in || out\n }\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
package/FieldPath.mjs CHANGED
@@ -56,7 +56,9 @@ function subschema(schema, key) {
56
56
  }
57
57
  } = schema;
58
58
  if (key in shape) return shape[key];
59
- if (unknownKeys === 'passthrough') return catchall;
59
+ if (unknownKeys === 'passthrough') {
60
+ return catchall._def.typeName === z.ZodFirstPartyTypeKind.ZodNever ? z.unknown() : catchall;
61
+ }
60
62
  break;
61
63
  }
62
64
  case 'ZodUnion':
@@ -68,7 +70,7 @@ function subschema(schema, key) {
68
70
  {
69
71
  const discUnion = schema;
70
72
  const options = discUnion.options.map(opt => subschema(opt, key)).filter(opt => opt != null);
71
- return options.length > 1 ? z.discriminatedUnion(discUnion.discriminator, options) : options.length === 1 ? options[0] : undefined;
73
+ return options.length > 1 ? z.union(options) : options.length === 1 ? options[0] : undefined;
72
74
  break;
73
75
  }
74
76
  case 'ZodIntersection':
@@ -127,7 +129,14 @@ function subschema(schema, key) {
127
129
  case 'ZodBranded':
128
130
  return subschema(schema._def.type, key);
129
131
  case 'ZodPipeline':
130
- return subschema(schema._def.in, key);
132
+ {
133
+ const {
134
+ _def
135
+ } = schema;
136
+ const _in = subschema(_def.in, key);
137
+ const out = subschema(_def.out, key);
138
+ return _in && out ? _in.pipe(out) : _in || out;
139
+ }
131
140
  }
132
141
  return undefined;
133
142
  }
package/FieldPath.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPath.mjs","names":["z","pathstring","parsePathstring","FieldPath","path","schema","subfields","constructor","root","get","Array","isArray","Error","reduce","field","key","subfield","_this$subfields","cached","subschema","Map","set","_def","typeName","ZodFirstPartyTypeKind","ZodAny","element","shape","unknownKeys","catchall","options","map","opt","filter","length","union","undefined","discUnion","discriminatedUnion","discriminator","items","rest","keySchema","valueSchema","safeParse","success","innerSchema","unwrap","removeDefault","removeCatch","type","in"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') return catchall\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.discriminatedUnion(discUnion.discriminator, options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n return subschema(innerSchema, key)\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline':\n return subschema(\n (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.in,\n key\n )\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FieldPath.mjs","names":["z","pathstring","parsePathstring","FieldPath","path","schema","subfields","constructor","root","get","Array","isArray","Error","reduce","field","key","subfield","_this$subfields","cached","subschema","Map","set","_def","typeName","ZodFirstPartyTypeKind","ZodAny","element","shape","unknownKeys","catchall","ZodNever","unknown","options","map","opt","filter","length","union","undefined","discUnion","items","rest","keySchema","valueSchema","safeParse","success","innerSchema","unwrap","removeDefault","removeCatch","type","_in","in","out","pipe"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') {\n return catchall._def.typeName === z.ZodFirstPartyTypeKind.ZodNever\n ? z.unknown()\n : catchall\n }\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n return subschema(innerSchema, key)\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline': {\n const { _def } = schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>\n const _in = subschema(_def.in, key)\n const out = subschema(_def.out, key)\n return _in && out ? _in.pipe(out) : _in || out\n }\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
package/index.d.ts CHANGED
@@ -11,4 +11,5 @@ export { useFormValues } from './useFormValues';
11
11
  export { useHtmlField, type TypedUseHtmlField, type UseHtmlFieldOptions, type UseHtmlFieldProps, type HtmlFieldInputProps, type ValidUseHtmlFieldProps, } from './useHtmlField';
12
12
  export { useInitialize } from './useInitialize';
13
13
  export { useSubmit } from './useSubmit';
14
+ export { conditionalValidate, ConditionalValidator, } from './ConditionalValidator';
14
15
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA"}
package/index.js CHANGED
@@ -3,12 +3,24 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "ConditionalValidator", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ConditionalValidator.ConditionalValidator;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "FieldPath", {
7
13
  enumerable: true,
8
14
  get: function get() {
9
15
  return _FieldPath.FieldPath;
10
16
  }
11
17
  });
18
+ Object.defineProperty(exports, "conditionalValidate", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _ConditionalValidator.conditionalValidate;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "createZodForm", {
13
25
  enumerable: true,
14
26
  get: function get() {
@@ -73,4 +85,5 @@ var _useFormValues = require("./useFormValues.js");
73
85
  var _useHtmlField = require("./useHtmlField.js");
74
86
  var _useInitialize = require("./useInitialize.js");
75
87
  var _useSubmit = require("./useSubmit.js");
88
+ var _ConditionalValidator = require("./ConditionalValidator.js");
76
89
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_createZodForm","require","_FieldPath","_useField","_useArrayField","_useFormContext","_useFormStatus","_useFormValues","_useHtmlField","_useInitialize","_useSubmit"],"sources":["src/index.ts"],"sourcesContent":["export { createZodForm, type ZodForm } from './createZodForm'\nexport {\n type FieldMeta,\n type SubmitHandler,\n type SubmitSuccededHandler,\n type SubmitFailedHandler,\n} from './FormState'\nexport {\n FieldPath,\n type FieldPathForValue,\n type FieldPathForRawValue,\n} from './FieldPath'\nexport { useField, type UseFieldProps, type TypedUseField } from './useField'\nexport {\n useArrayField,\n type UseArrayFieldProps,\n type TypedUseArrayField,\n} from './useArrayField'\nexport { type FormContextProps } from './FormContext'\nexport { useFormContext } from './useFormContext'\nexport { type FormStatus } from './createSelectFormStatus'\nexport { useFormStatus } from './useFormStatus'\nexport { useFormValues } from './useFormValues'\nexport {\n useHtmlField,\n type TypedUseHtmlField,\n type UseHtmlFieldOptions,\n type UseHtmlFieldProps,\n type HtmlFieldInputProps,\n type ValidUseHtmlFieldProps,\n} from './useHtmlField'\nexport { useInitialize } from './useInitialize'\nexport { useSubmit } from './useSubmit'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAOA,IAAAC,UAAA,GAAAD,OAAA;AAKA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAMA,IAAAI,eAAA,GAAAJ,OAAA;AAEA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AAQA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_createZodForm","require","_FieldPath","_useField","_useArrayField","_useFormContext","_useFormStatus","_useFormValues","_useHtmlField","_useInitialize","_useSubmit","_ConditionalValidator"],"sources":["src/index.ts"],"sourcesContent":["export { createZodForm, type ZodForm } from './createZodForm'\nexport {\n type FieldMeta,\n type SubmitHandler,\n type SubmitSuccededHandler,\n type SubmitFailedHandler,\n} from './FormState'\nexport {\n FieldPath,\n type FieldPathForValue,\n type FieldPathForRawValue,\n} from './FieldPath'\nexport { useField, type UseFieldProps, type TypedUseField } from './useField'\nexport {\n useArrayField,\n type UseArrayFieldProps,\n type TypedUseArrayField,\n} from './useArrayField'\nexport { type FormContextProps } from './FormContext'\nexport { useFormContext } from './useFormContext'\nexport { type FormStatus } from './createSelectFormStatus'\nexport { useFormStatus } from './useFormStatus'\nexport { useFormValues } from './useFormValues'\nexport {\n useHtmlField,\n type TypedUseHtmlField,\n type UseHtmlFieldOptions,\n type UseHtmlFieldProps,\n type HtmlFieldInputProps,\n type ValidUseHtmlFieldProps,\n} from './useHtmlField'\nexport { useInitialize } from './useInitialize'\nexport { useSubmit } from './useSubmit'\nexport {\n conditionalValidate,\n ConditionalValidator,\n} from './ConditionalValidator'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAOA,IAAAC,UAAA,GAAAD,OAAA;AAKA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAMA,IAAAI,eAAA,GAAAJ,OAAA;AAEA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AAQA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA;AACA,IAAAU,qBAAA,GAAAV,OAAA","ignoreList":[]}
package/index.mjs CHANGED
@@ -8,4 +8,5 @@ export { useFormValues } from "./useFormValues.mjs";
8
8
  export { useHtmlField } from "./useHtmlField.mjs";
9
9
  export { useInitialize } from "./useInitialize.mjs";
10
10
  export { useSubmit } from "./useSubmit.mjs";
11
+ export { conditionalValidate, ConditionalValidator } from "./ConditionalValidator.mjs";
11
12
  //# sourceMappingURL=index.mjs.map
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createZodForm","FieldPath","useField","useArrayField","useFormContext","useFormStatus","useFormValues","useHtmlField","useInitialize","useSubmit"],"sources":["src/index.ts"],"sourcesContent":["export { createZodForm, type ZodForm } from './createZodForm'\nexport {\n type FieldMeta,\n type SubmitHandler,\n type SubmitSuccededHandler,\n type SubmitFailedHandler,\n} from './FormState'\nexport {\n FieldPath,\n type FieldPathForValue,\n type FieldPathForRawValue,\n} from './FieldPath'\nexport { useField, type UseFieldProps, type TypedUseField } from './useField'\nexport {\n useArrayField,\n type UseArrayFieldProps,\n type TypedUseArrayField,\n} from './useArrayField'\nexport { type FormContextProps } from './FormContext'\nexport { useFormContext } from './useFormContext'\nexport { type FormStatus } from './createSelectFormStatus'\nexport { useFormStatus } from './useFormStatus'\nexport { useFormValues } from './useFormValues'\nexport {\n useHtmlField,\n type TypedUseHtmlField,\n type UseHtmlFieldOptions,\n type UseHtmlFieldProps,\n type HtmlFieldInputProps,\n type ValidUseHtmlFieldProps,\n} from './useHtmlField'\nexport { useInitialize } from './useInitialize'\nexport { useSubmit } from './useSubmit'\n"],"mappings":"AAAA,SAASA,aAAa;AAOtB,SACEC,SAAS;AAIX,SAASC,QAAQ;AACjB,SACEC,aAAa;AAKf,SAASC,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,aAAa;AACtB,SACEC,YAAY;AAOd,SAASC,aAAa;AACtB,SAASC,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"index.mjs","names":["createZodForm","FieldPath","useField","useArrayField","useFormContext","useFormStatus","useFormValues","useHtmlField","useInitialize","useSubmit","conditionalValidate","ConditionalValidator"],"sources":["src/index.ts"],"sourcesContent":["export { createZodForm, type ZodForm } from './createZodForm'\nexport {\n type FieldMeta,\n type SubmitHandler,\n type SubmitSuccededHandler,\n type SubmitFailedHandler,\n} from './FormState'\nexport {\n FieldPath,\n type FieldPathForValue,\n type FieldPathForRawValue,\n} from './FieldPath'\nexport { useField, type UseFieldProps, type TypedUseField } from './useField'\nexport {\n useArrayField,\n type UseArrayFieldProps,\n type TypedUseArrayField,\n} from './useArrayField'\nexport { type FormContextProps } from './FormContext'\nexport { useFormContext } from './useFormContext'\nexport { type FormStatus } from './createSelectFormStatus'\nexport { useFormStatus } from './useFormStatus'\nexport { useFormValues } from './useFormValues'\nexport {\n useHtmlField,\n type TypedUseHtmlField,\n type UseHtmlFieldOptions,\n type UseHtmlFieldProps,\n type HtmlFieldInputProps,\n type ValidUseHtmlFieldProps,\n} from './useHtmlField'\nexport { useInitialize } from './useInitialize'\nexport { useSubmit } from './useSubmit'\nexport {\n conditionalValidate,\n ConditionalValidator,\n} from './ConditionalValidator'\n"],"mappings":"AAAA,SAASA,aAAa;AAOtB,SACEC,SAAS;AAIX,SAASC,QAAQ;AACjB,SACEC,aAAa;AAKf,SAASC,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,aAAa;AACtB,SACEC,YAAY;AAOd,SAASC,aAAa;AACtB,SAASC,SAAS;AAClB,SACEC,mBAAmB,EACnBC,oBAAoB","ignoreList":[]}
package/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "peerDependencies": {
31
31
  "react": "^18.0.0"
32
32
  },
33
- "version": "1.1.2",
33
+ "version": "1.2.0",
34
34
  "sideEffects": false,
35
35
  "engines": {
36
36
  "node": ">=16"
@@ -0,0 +1,137 @@
1
+ import z from 'zod'
2
+ import { DeepPartial } from './util/DeepPartial'
3
+
4
+ type ConditionalCheck<T extends z.ZodTypeAny> = {
5
+ schema: T
6
+ check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>
7
+ async: boolean
8
+ }
9
+
10
+ interface ConditionalValidatorDef<T extends z.ZodTypeAny>
11
+ extends z.ZodEffectsDef<T> {
12
+ checks: ConditionalCheck<any>[]
13
+ }
14
+
15
+ type ConditionalRefineMessage<Output> =
16
+ | string
17
+ | z.CustomErrorParams
18
+ | z.CustomErrorParams[]
19
+ | ((value: Output) => z.CustomErrorParams | z.CustomErrorParams[])
20
+
21
+ type ConditionalRefineSchema<T extends z.ZodTypeAny> =
22
+ | z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>
23
+ | ((
24
+ schema: T
25
+ ) => z.ZodType<DeepPartial<z.output<T>>, any, DeepPartial<z.input<T>>>)
26
+
27
+ function resolveSchema<T extends z.ZodTypeAny>(
28
+ baseSchema: T,
29
+ refineSchema: ConditionalRefineSchema<T>
30
+ ) {
31
+ return typeof refineSchema === 'function'
32
+ ? refineSchema(baseSchema)
33
+ : refineSchema
34
+ }
35
+
36
+ export class ConditionalValidator<
37
+ T extends z.ZodTypeAny,
38
+ Output = z.output<T>,
39
+ Input = z.input<T>
40
+ > extends z.ZodEffects<T, Output, Input> {
41
+ declare _def: ConditionalValidatorDef<T>
42
+
43
+ constructor(schema: T, checks: ConditionalCheck<any>[]) {
44
+ super({
45
+ ...makePreprocess(schema, checks)._def,
46
+ checks,
47
+ } satisfies ConditionalValidatorDef<T> as z.ZodEffectsDef<T>)
48
+ }
49
+
50
+ conditionalRefine(
51
+ schema: ConditionalRefineSchema<T>,
52
+ check: (value: z.output<T>) => unknown,
53
+ message: ConditionalRefineMessage<z.output<T>>
54
+ ) {
55
+ return this.conditionalSuperRefine(schema, (value, ctx) => {
56
+ if (!check(value)) {
57
+ addIssues(ctx, value, message)
58
+ }
59
+ })
60
+ }
61
+ conditionalRefineAsync(
62
+ schema: ConditionalRefineSchema<T>,
63
+ check: (value: z.output<T>) => unknown | Promise<unknown>,
64
+ message: ConditionalRefineMessage<z.output<T>>
65
+ ) {
66
+ return this.conditionalSuperRefineAsync(schema, async (value, ctx) => {
67
+ if (!(await check(value))) {
68
+ addIssues(ctx, value, message)
69
+ }
70
+ })
71
+ }
72
+ conditionalSuperRefine(
73
+ schema: ConditionalRefineSchema<T>,
74
+ check: (value: z.output<T>, ctx: z.RefinementCtx) => void
75
+ ) {
76
+ return new ConditionalValidator(this._def.schema, [
77
+ ...this._def.checks,
78
+ { schema: resolveSchema(this._def.schema, schema), check, async: false },
79
+ ])
80
+ }
81
+ conditionalSuperRefineAsync(
82
+ schema: ConditionalRefineSchema<T>,
83
+ check: (value: z.output<T>, ctx: z.RefinementCtx) => void | Promise<void>
84
+ ) {
85
+ return new ConditionalValidator(this._def.schema, [
86
+ ...this._def.checks,
87
+ { schema: resolveSchema(this._def.schema, schema), check, async: true },
88
+ ])
89
+ }
90
+ }
91
+
92
+ export function conditionalValidate<T extends z.ZodTypeAny>(
93
+ schema: T
94
+ ): ConditionalValidator<T> {
95
+ return new ConditionalValidator(schema, [])
96
+ }
97
+
98
+ function makePreprocess<T extends z.ZodTypeAny>(
99
+ schema: T,
100
+ checks: ConditionalCheck<any>[]
101
+ ): z.ZodEffects<T> {
102
+ return z.preprocess((input, ctx) => {
103
+ const results = checks.map(({ schema, check, async }) => {
104
+ function handleParsed(
105
+ parsed: z.SafeParseReturnType<z.input<T>, z.output<T>>
106
+ ) {
107
+ if (!parsed.success) return
108
+ return check(parsed.data, ctx)
109
+ }
110
+ return async
111
+ ? schema.safeParseAsync(input).then(handleParsed)
112
+ : handleParsed(schema.safeParse(input))
113
+ })
114
+ return checks.some((c) => c.async)
115
+ ? Promise.all(results).then(() => input)
116
+ : input
117
+ }, schema)
118
+ }
119
+
120
+ const asArray = <T>(value: T | T[]) => (Array.isArray(value) ? value : [value])
121
+
122
+ function addIssues<Output>(
123
+ ctx: z.RefinementCtx,
124
+ value: Output,
125
+ message: ConditionalRefineMessage<Output>
126
+ ) {
127
+ const issues = asArray(
128
+ typeof message === 'function'
129
+ ? message(value)
130
+ : typeof message === 'string'
131
+ ? { message }
132
+ : message
133
+ )
134
+ for (const issue of issues) {
135
+ ctx.addIssue({ code: z.ZodIssueCode.custom, ...issue })
136
+ }
137
+ }
package/src/FieldPath.ts CHANGED
@@ -118,7 +118,11 @@ function subschema(
118
118
  _def: { unknownKeys, catchall },
119
119
  } = schema as z.AnyZodObject
120
120
  if (key in shape) return shape[key]
121
- if (unknownKeys === 'passthrough') return catchall
121
+ if (unknownKeys === 'passthrough') {
122
+ return catchall._def.typeName === z.ZodFirstPartyTypeKind.ZodNever
123
+ ? z.unknown()
124
+ : catchall
125
+ }
122
126
  break
123
127
  }
124
128
  case 'ZodUnion': {
@@ -142,7 +146,7 @@ function subschema(
142
146
  .map((opt) => subschema(opt, key))
143
147
  .filter((opt): opt is z.ZodTypeAny => opt != null)
144
148
  return options.length > 1
145
- ? z.discriminatedUnion(discUnion.discriminator, options as any)
149
+ ? z.union(options as any)
146
150
  : options.length === 1
147
151
  ? options[0]
148
152
  : undefined
@@ -201,11 +205,12 @@ function subschema(
201
205
  (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,
202
206
  key
203
207
  )
204
- case 'ZodPipeline':
205
- return subschema(
206
- (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.in,
207
- key
208
- )
208
+ case 'ZodPipeline': {
209
+ const { _def } = schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>
210
+ const _in = subschema(_def.in, key)
211
+ const out = subschema(_def.out, key)
212
+ return _in && out ? _in.pipe(out) : _in || out
213
+ }
209
214
  }
210
215
  return undefined
211
216
  }
package/src/index.ts CHANGED
@@ -31,3 +31,7 @@ export {
31
31
  } from './useHtmlField'
32
32
  export { useInitialize } from './useInitialize'
33
33
  export { useSubmit } from './useSubmit'
34
+ export {
35
+ conditionalValidate,
36
+ ConditionalValidator,
37
+ } from './ConditionalValidator'
@@ -0,0 +1,3 @@
1
+ export type DeepPartial<T> = T extends object | any[]
2
+ ? { [K in keyof T]?: DeepPartial<T[K]> }
3
+ : T
@@ -0,0 +1,7 @@
1
+ export function isPromise<U>(value: any): value is Promise<U> {
2
+ return (
3
+ value != null &&
4
+ typeof value === 'object' &&
5
+ typeof value.then === 'function'
6
+ )
7
+ }
@@ -0,0 +1,4 @@
1
+ export type DeepPartial<T> = T extends object | any[] ? {
2
+ [K in keyof T]?: DeepPartial<T[K]>;
3
+ } : T;
4
+ //# sourceMappingURL=DeepPartial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepPartial.d.ts","sourceRoot":"","sources":["../../src/util/DeepPartial.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,GACjD;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=DeepPartial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepPartial.js","names":[],"sources":["../../src/util/DeepPartial.ts"],"sourcesContent":["export type DeepPartial<T> = T extends object | any[]\n ? { [K in keyof T]?: DeepPartial<T[K]> }\n : T\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DeepPartial.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepPartial.mjs","names":[],"sources":["../../src/util/DeepPartial.ts"],"sourcesContent":["export type DeepPartial<T> = T extends object | any[]\n ? { [K in keyof T]?: DeepPartial<T[K]> }\n : T\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare function isPromise<U>(value: any): value is Promise<U>;
2
+ //# sourceMappingURL=isPromise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPromise.d.ts","sourceRoot":"","sources":["../../src/util/isPromise.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAM5D"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isPromise = isPromise;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ function isPromise(value) {
10
+ return value != null && (0, _typeof2["default"])(value) === 'object' && typeof value.then === 'function';
11
+ }
12
+ //# sourceMappingURL=isPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPromise.js","names":["isPromise","value","_typeof2","then"],"sources":["../../src/util/isPromise.ts"],"sourcesContent":["export function isPromise<U>(value: any): value is Promise<U> {\n return (\n value != null &&\n typeof value === 'object' &&\n typeof value.then === 'function'\n )\n}\n"],"mappings":";;;;;;;;AAAO,SAASA,SAASA,CAAIC,KAAU,EAAuB;EAC5D,OACEA,KAAK,IAAI,IAAI,IACb,IAAAC,QAAA,aAAOD,KAAK,MAAK,QAAQ,IACzB,OAAOA,KAAK,CAACE,IAAI,KAAK,UAAU;AAEpC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export function isPromise(value) {
2
+ return value != null && typeof value === 'object' && typeof value.then === 'function';
3
+ }
4
+ //# sourceMappingURL=isPromise.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPromise.mjs","names":["isPromise","value","then"],"sources":["../../src/util/isPromise.ts"],"sourcesContent":["export function isPromise<U>(value: any): value is Promise<U> {\n return (\n value != null &&\n typeof value === 'object' &&\n typeof value.then === 'function'\n )\n}\n"],"mappings":"AAAA,OAAO,SAASA,SAASA,CAAIC,KAAU,EAAuB;EAC5D,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,KAAK,QAAQ,IACzB,OAAOA,KAAK,CAACC,IAAI,KAAK,UAAU;AAEpC","ignoreList":[]}
@@ -1,72 +0,0 @@
1
- import z from 'zod'
2
-
3
- export function acceptsArray(schema: z.ZodTypeAny): boolean {
4
- switch (schema._def.typeName) {
5
- case z.ZodFirstPartyTypeKind.ZodArray:
6
- case z.ZodFirstPartyTypeKind.ZodTuple:
7
- return true
8
- case z.ZodFirstPartyTypeKind.ZodUnion: {
9
- const { options } = schema as z.ZodUnion<z.ZodUnionOptions>
10
- return options.some(acceptsArray)
11
- }
12
- case z.ZodFirstPartyTypeKind.ZodIntersection: {
13
- const {
14
- _def: { left, right },
15
- } = schema as z.ZodIntersection<z.ZodTypeAny, z.ZodTypeAny>
16
- return acceptsArray(left) && acceptsArray(right)
17
- }
18
- case z.ZodFirstPartyTypeKind.ZodLazy: {
19
- const { schema: innerSchema } = schema as z.ZodLazy<z.ZodTypeAny>
20
- return acceptsArray(innerSchema)
21
- }
22
- case z.ZodFirstPartyTypeKind.ZodLiteral: {
23
- const { value } = schema as z.ZodLiteral<any>
24
- return typeof value === 'number'
25
- }
26
- case z.ZodFirstPartyTypeKind.ZodEffects: {
27
- const {
28
- _def: { schema: innerSchema },
29
- } = schema as z.ZodEffects<z.ZodTypeAny>
30
- return acceptsArray(innerSchema)
31
- }
32
- case z.ZodFirstPartyTypeKind.ZodOptional: {
33
- const innerSchema = (schema as z.ZodOptional<z.ZodTypeAny>).unwrap()
34
- return acceptsArray(innerSchema)
35
- }
36
- case z.ZodFirstPartyTypeKind.ZodNullable: {
37
- const innerSchema = (schema as z.ZodNullable<z.ZodTypeAny>).unwrap()
38
- return acceptsArray(innerSchema)
39
- }
40
- case z.ZodFirstPartyTypeKind.ZodDefault: {
41
- const {
42
- _def: { innerType },
43
- } = schema as z.ZodDefault<z.ZodTypeAny>
44
- return acceptsArray(innerType)
45
- }
46
- case z.ZodFirstPartyTypeKind.ZodCatch: {
47
- const {
48
- _def: { innerType },
49
- } = schema as z.ZodCatch<z.ZodTypeAny>
50
- return acceptsArray(innerType)
51
- }
52
- case z.ZodFirstPartyTypeKind.ZodBranded: {
53
- const {
54
- _def: { type: innerType },
55
- } = schema as z.ZodBranded<z.ZodTypeAny, string | number | symbol>
56
- return acceptsArray(innerType)
57
- }
58
- case z.ZodFirstPartyTypeKind.ZodPipeline: {
59
- const {
60
- _def: { in: input },
61
- } = schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>
62
- return acceptsArray(input)
63
- }
64
- case z.ZodFirstPartyTypeKind.ZodReadonly: {
65
- const {
66
- _def: { innerType },
67
- } = schema as z.ZodReadonly<z.ZodTypeAny>
68
- return acceptsArray(innerType)
69
- }
70
- }
71
- return false
72
- }
@@ -1,3 +0,0 @@
1
- import z from 'zod';
2
- export declare function acceptsArray(schema: z.ZodTypeAny): boolean;
3
- //# sourceMappingURL=acceptsArray.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptsArray.d.ts","sourceRoot":"","sources":["../../src/util/acceptsArray.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO,CAqE1D"}
@@ -1,89 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.acceptsArray = acceptsArray;
8
- var _zod = _interopRequireDefault(require("zod"));
9
- function acceptsArray(schema) {
10
- switch (schema._def.typeName) {
11
- case _zod["default"].ZodFirstPartyTypeKind.ZodArray:
12
- case _zod["default"].ZodFirstPartyTypeKind.ZodTuple:
13
- return true;
14
- case _zod["default"].ZodFirstPartyTypeKind.ZodUnion:
15
- {
16
- var _ref = schema,
17
- options = _ref.options;
18
- return options.some(acceptsArray);
19
- }
20
- case _zod["default"].ZodFirstPartyTypeKind.ZodIntersection:
21
- {
22
- var _ref2 = schema,
23
- _ref2$_def = _ref2._def,
24
- left = _ref2$_def.left,
25
- right = _ref2$_def.right;
26
- return acceptsArray(left) && acceptsArray(right);
27
- }
28
- case _zod["default"].ZodFirstPartyTypeKind.ZodLazy:
29
- {
30
- var _ref3 = schema,
31
- innerSchema = _ref3.schema;
32
- return acceptsArray(innerSchema);
33
- }
34
- case _zod["default"].ZodFirstPartyTypeKind.ZodLiteral:
35
- {
36
- var _ref4 = schema,
37
- value = _ref4.value;
38
- return typeof value === 'number';
39
- }
40
- case _zod["default"].ZodFirstPartyTypeKind.ZodEffects:
41
- {
42
- var _ref5 = schema,
43
- _innerSchema = _ref5._def.schema;
44
- return acceptsArray(_innerSchema);
45
- }
46
- case _zod["default"].ZodFirstPartyTypeKind.ZodOptional:
47
- {
48
- var _innerSchema2 = schema.unwrap();
49
- return acceptsArray(_innerSchema2);
50
- }
51
- case _zod["default"].ZodFirstPartyTypeKind.ZodNullable:
52
- {
53
- var _innerSchema3 = schema.unwrap();
54
- return acceptsArray(_innerSchema3);
55
- }
56
- case _zod["default"].ZodFirstPartyTypeKind.ZodDefault:
57
- {
58
- var _ref6 = schema,
59
- innerType = _ref6._def.innerType;
60
- return acceptsArray(innerType);
61
- }
62
- case _zod["default"].ZodFirstPartyTypeKind.ZodCatch:
63
- {
64
- var _ref7 = schema,
65
- _innerType = _ref7._def.innerType;
66
- return acceptsArray(_innerType);
67
- }
68
- case _zod["default"].ZodFirstPartyTypeKind.ZodBranded:
69
- {
70
- var _ref8 = schema,
71
- _innerType2 = _ref8._def.type;
72
- return acceptsArray(_innerType2);
73
- }
74
- case _zod["default"].ZodFirstPartyTypeKind.ZodPipeline:
75
- {
76
- var _ref9 = schema,
77
- input = _ref9._def["in"];
78
- return acceptsArray(input);
79
- }
80
- case _zod["default"].ZodFirstPartyTypeKind.ZodReadonly:
81
- {
82
- var _ref10 = schema,
83
- _innerType3 = _ref10._def.innerType;
84
- return acceptsArray(_innerType3);
85
- }
86
- }
87
- return false;
88
- }
89
- //# sourceMappingURL=acceptsArray.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptsArray.js","names":["_zod","_interopRequireDefault","require","acceptsArray","schema","_def","typeName","z","ZodFirstPartyTypeKind","ZodArray","ZodTuple","ZodUnion","_ref","options","some","ZodIntersection","_ref2","_ref2$_def","left","right","ZodLazy","_ref3","innerSchema","ZodLiteral","_ref4","value","ZodEffects","_ref5","ZodOptional","unwrap","ZodNullable","ZodDefault","_ref6","innerType","ZodCatch","_ref7","ZodBranded","_ref8","type","ZodPipeline","_ref9","input","ZodReadonly","_ref10"],"sources":["../../src/util/acceptsArray.ts"],"sourcesContent":["import z from 'zod'\n\nexport function acceptsArray(schema: z.ZodTypeAny): boolean {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodArray:\n case z.ZodFirstPartyTypeKind.ZodTuple:\n return true\n case z.ZodFirstPartyTypeKind.ZodUnion: {\n const { options } = schema as z.ZodUnion<z.ZodUnionOptions>\n return options.some(acceptsArray)\n }\n case z.ZodFirstPartyTypeKind.ZodIntersection: {\n const {\n _def: { left, right },\n } = schema as z.ZodIntersection<z.ZodTypeAny, z.ZodTypeAny>\n return acceptsArray(left) && acceptsArray(right)\n }\n case z.ZodFirstPartyTypeKind.ZodLazy: {\n const { schema: innerSchema } = schema as z.ZodLazy<z.ZodTypeAny>\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodLiteral: {\n const { value } = schema as z.ZodLiteral<any>\n return typeof value === 'number'\n }\n case z.ZodFirstPartyTypeKind.ZodEffects: {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny>\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodOptional: {\n const innerSchema = (schema as z.ZodOptional<z.ZodTypeAny>).unwrap()\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodNullable: {\n const innerSchema = (schema as z.ZodNullable<z.ZodTypeAny>).unwrap()\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodDefault: {\n const {\n _def: { innerType },\n } = schema as z.ZodDefault<z.ZodTypeAny>\n return acceptsArray(innerType)\n }\n case z.ZodFirstPartyTypeKind.ZodCatch: {\n const {\n _def: { innerType },\n } = schema as z.ZodCatch<z.ZodTypeAny>\n return acceptsArray(innerType)\n }\n case z.ZodFirstPartyTypeKind.ZodBranded: {\n const {\n _def: { type: innerType },\n } = schema as z.ZodBranded<z.ZodTypeAny, string | number | symbol>\n return acceptsArray(innerType)\n }\n case z.ZodFirstPartyTypeKind.ZodPipeline: {\n const {\n _def: { in: input },\n } = schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>\n return acceptsArray(input)\n }\n case z.ZodFirstPartyTypeKind.ZodReadonly: {\n const {\n _def: { innerType },\n } = schema as z.ZodReadonly<z.ZodTypeAny>\n return acceptsArray(innerType)\n }\n }\n return false\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,105 +0,0 @@
1
- import z from 'zod';
2
- export function acceptsArray(schema) {
3
- switch (schema._def.typeName) {
4
- case z.ZodFirstPartyTypeKind.ZodArray:
5
- case z.ZodFirstPartyTypeKind.ZodTuple:
6
- return true;
7
- case z.ZodFirstPartyTypeKind.ZodUnion:
8
- {
9
- const {
10
- options
11
- } = schema;
12
- return options.some(acceptsArray);
13
- }
14
- case z.ZodFirstPartyTypeKind.ZodIntersection:
15
- {
16
- const {
17
- _def: {
18
- left,
19
- right
20
- }
21
- } = schema;
22
- return acceptsArray(left) && acceptsArray(right);
23
- }
24
- case z.ZodFirstPartyTypeKind.ZodLazy:
25
- {
26
- const {
27
- schema: innerSchema
28
- } = schema;
29
- return acceptsArray(innerSchema);
30
- }
31
- case z.ZodFirstPartyTypeKind.ZodLiteral:
32
- {
33
- const {
34
- value
35
- } = schema;
36
- return typeof value === 'number';
37
- }
38
- case z.ZodFirstPartyTypeKind.ZodEffects:
39
- {
40
- const {
41
- _def: {
42
- schema: innerSchema
43
- }
44
- } = schema;
45
- return acceptsArray(innerSchema);
46
- }
47
- case z.ZodFirstPartyTypeKind.ZodOptional:
48
- {
49
- const innerSchema = schema.unwrap();
50
- return acceptsArray(innerSchema);
51
- }
52
- case z.ZodFirstPartyTypeKind.ZodNullable:
53
- {
54
- const innerSchema = schema.unwrap();
55
- return acceptsArray(innerSchema);
56
- }
57
- case z.ZodFirstPartyTypeKind.ZodDefault:
58
- {
59
- const {
60
- _def: {
61
- innerType
62
- }
63
- } = schema;
64
- return acceptsArray(innerType);
65
- }
66
- case z.ZodFirstPartyTypeKind.ZodCatch:
67
- {
68
- const {
69
- _def: {
70
- innerType
71
- }
72
- } = schema;
73
- return acceptsArray(innerType);
74
- }
75
- case z.ZodFirstPartyTypeKind.ZodBranded:
76
- {
77
- const {
78
- _def: {
79
- type: innerType
80
- }
81
- } = schema;
82
- return acceptsArray(innerType);
83
- }
84
- case z.ZodFirstPartyTypeKind.ZodPipeline:
85
- {
86
- const {
87
- _def: {
88
- in: input
89
- }
90
- } = schema;
91
- return acceptsArray(input);
92
- }
93
- case z.ZodFirstPartyTypeKind.ZodReadonly:
94
- {
95
- const {
96
- _def: {
97
- innerType
98
- }
99
- } = schema;
100
- return acceptsArray(innerType);
101
- }
102
- }
103
- return false;
104
- }
105
- //# sourceMappingURL=acceptsArray.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptsArray.mjs","names":["z","acceptsArray","schema","_def","typeName","ZodFirstPartyTypeKind","ZodArray","ZodTuple","ZodUnion","options","some","ZodIntersection","left","right","ZodLazy","innerSchema","ZodLiteral","value","ZodEffects","ZodOptional","unwrap","ZodNullable","ZodDefault","innerType","ZodCatch","ZodBranded","type","ZodPipeline","in","input","ZodReadonly"],"sources":["../../src/util/acceptsArray.ts"],"sourcesContent":["import z from 'zod'\n\nexport function acceptsArray(schema: z.ZodTypeAny): boolean {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodArray:\n case z.ZodFirstPartyTypeKind.ZodTuple:\n return true\n case z.ZodFirstPartyTypeKind.ZodUnion: {\n const { options } = schema as z.ZodUnion<z.ZodUnionOptions>\n return options.some(acceptsArray)\n }\n case z.ZodFirstPartyTypeKind.ZodIntersection: {\n const {\n _def: { left, right },\n } = schema as z.ZodIntersection<z.ZodTypeAny, z.ZodTypeAny>\n return acceptsArray(left) && acceptsArray(right)\n }\n case z.ZodFirstPartyTypeKind.ZodLazy: {\n const { schema: innerSchema } = schema as z.ZodLazy<z.ZodTypeAny>\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodLiteral: {\n const { value } = schema as z.ZodLiteral<any>\n return typeof value === 'number'\n }\n case z.ZodFirstPartyTypeKind.ZodEffects: {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny>\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodOptional: {\n const innerSchema = (schema as z.ZodOptional<z.ZodTypeAny>).unwrap()\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodNullable: {\n const innerSchema = (schema as z.ZodNullable<z.ZodTypeAny>).unwrap()\n return acceptsArray(innerSchema)\n }\n case z.ZodFirstPartyTypeKind.ZodDefault: {\n const {\n _def: { innerType },\n } = schema as z.ZodDefault<z.ZodTypeAny>\n return acceptsArray(innerType)\n }\n case z.ZodFirstPartyTypeKind.ZodCatch: {\n const {\n _def: { innerType },\n } = schema as z.ZodCatch<z.ZodTypeAny>\n return acceptsArray(innerType)\n }\n case z.ZodFirstPartyTypeKind.ZodBranded: {\n const {\n _def: { type: innerType },\n } = schema as z.ZodBranded<z.ZodTypeAny, string | number | symbol>\n return acceptsArray(innerType)\n }\n case z.ZodFirstPartyTypeKind.ZodPipeline: {\n const {\n _def: { in: input },\n } = schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>\n return acceptsArray(input)\n }\n case z.ZodFirstPartyTypeKind.ZodReadonly: {\n const {\n _def: { innerType },\n } = schema as z.ZodReadonly<z.ZodTypeAny>\n return acceptsArray(innerType)\n }\n }\n return false\n}\n"],"mappings":"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","ignoreList":[]}