canonize 0.1.0 → 0.1.1

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/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  **Aggressive type coercion for Zod schemas.**
4
4
 
5
+ Canonize exists for the messy middle ground between "invalid" and "usable." When working with LLM tool calls, you might get a parameters object that does not match your schema exactly, but it is close enough to work. Canonize takes any Zod schema and returns a version that tries its hardest to coerce incoming input into the shape you expect.
6
+
5
7
  ## The Problem
6
8
 
7
9
  You've defined a beautiful Zod schema:
@@ -92,6 +94,28 @@ schema.parse({ name: 123, age: '30', active: 'yes', tags: 'a,b,c' });
92
94
  // { name: '123', age: 30, active: true, tags: ['a', 'b', 'c'] }
93
95
  ```
94
96
 
97
+ ## Armorer Integration
98
+
99
+ Canonize works cleanly with Armorer tool schemas. Wrap the schema (or raw shape) with `canonize` so LLM arguments are coerced before execution.
100
+
101
+ ```typescript
102
+ import { createTool } from 'armorer';
103
+ import { canonize } from 'canonize';
104
+ import { z } from 'zod';
105
+
106
+ const addNumbers = createTool({
107
+ name: 'add-numbers',
108
+ description: 'Add two numbers together',
109
+ schema: canonize({
110
+ a: z.number(),
111
+ b: z.number(),
112
+ }),
113
+ async execute({ a, b }) {
114
+ return a + b;
115
+ },
116
+ });
117
+ ```
118
+
95
119
  ---
96
120
 
97
121
  ## API Reference
@@ -132,6 +156,41 @@ arraySchema.parse(42); // [42]
132
156
 
133
157
  ---
134
158
 
159
+ ### Diagnostics
160
+
161
+ #### `safeParseWithReport(schema, input)`
162
+
163
+ Coerces inputs and returns a report of what changed alongside the parse result.
164
+
165
+ ```typescript
166
+ import { safeParseWithReport } from 'canonize';
167
+ import { z } from 'zod';
168
+
169
+ const schema = z.object({ count: z.number(), enabled: z.boolean() });
170
+ const result = safeParseWithReport(schema, { count: '42', enabled: 'yes' });
171
+
172
+ if (result.success) {
173
+ console.log(result.data);
174
+ }
175
+ console.log(result.report.warnings);
176
+ ```
177
+
178
+ #### `coerceWithReport(schema, input)`
179
+
180
+ Returns the coerced value plus warnings without running validation.
181
+
182
+ #### `createRepairHints(error, options?)`
183
+
184
+ Generates compact, LLM-friendly suggestions from a `ZodError`.
185
+
186
+ ```typescript
187
+ import { createRepairHints } from 'canonize';
188
+
189
+ const hints = createRepairHints(result.error);
190
+ ```
191
+
192
+ ---
193
+
135
194
  ### Type Detection Utilities
136
195
 
137
196
  #### `getZodTypeName(schema: ZodTypeAny): string`
@@ -3,5 +3,5 @@ import { CircularTracker } from '../utilities/circular.js';
3
3
  /**
4
4
  * Coerce value to array with element type coercion
5
5
  */
6
- export declare function coerceToArray(value: unknown, _elementSchema: z.ZodTypeAny, coerceElement: (v: unknown, tracker: CircularTracker) => unknown, tracker?: CircularTracker): unknown[];
6
+ export declare function coerceToArray(value: unknown, _elementSchema: z.ZodTypeAny, coerceElement: (index: number, v: unknown, tracker: CircularTracker) => unknown, tracker?: CircularTracker): unknown[];
7
7
  //# sourceMappingURL=array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/coercers/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAiB,eAAe,EAAiB,MAAM,0BAA0B,CAAC;AAIzF;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,CAAC,CAAC,UAAU,EAC5B,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,EAChE,OAAO,kBAAwB,GAC9B,OAAO,EAAE,CA4FX"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/coercers/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAiB,eAAe,EAAiB,MAAM,0BAA0B,CAAC;AAIzF;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,CAAC,CAAC,UAAU,EAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,EAC/E,OAAO,kBAAwB,GAC9B,OAAO,EAAE,CA4FX"}
@@ -3,5 +3,5 @@ import { CircularTracker } from '../utilities/circular.js';
3
3
  /**
4
4
  * Coerce value to record (Record<K, V>) with value type coercion
5
5
  */
6
- export declare function coerceToRecord(value: unknown, valueSchema: z.ZodTypeAny, coerceValue: (v: unknown, tracker: CircularTracker) => unknown, tracker?: CircularTracker): Record<string, unknown>;
6
+ export declare function coerceToRecord(value: unknown, valueSchema: z.ZodTypeAny, coerceValue: (key: string, v: unknown, tracker: CircularTracker) => unknown, tracker?: CircularTracker): Record<string, unknown>;
7
7
  //# sourceMappingURL=record.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/coercers/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAiB,eAAe,EAAiB,MAAM,0BAA0B,CAAC;AAIzF;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,CAAC,CAAC,UAAU,EACzB,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,EAC9D,OAAO,kBAAwB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoHzB"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/coercers/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAiB,eAAe,EAAiB,MAAM,0BAA0B,CAAC;AAIzF;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,CAAC,CAAC,UAAU,EACzB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,EAC3E,OAAO,kBAAwB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoHzB"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,35 @@ export { ZodType } from './constants.js';
3
3
  export { type CanonizePrimitive, createCanonizePrimitive, createCanonizeSchema, } from './create-schema.js';
4
4
  export { CircularTracker } from './utilities/circular.js';
5
5
  export { getZodTypeName, unwrapSchema } from './utilities/type-detection.js';
6
+ export type CanonizePath = Array<string | number>;
7
+ export type CanonizeWarningCode = 'coerced' | 'defaulted' | 'parsed';
8
+ export type CanonizeWarning = {
9
+ path: CanonizePath;
10
+ code: CanonizeWarningCode;
11
+ from: unknown;
12
+ to: unknown;
13
+ via: string;
14
+ };
15
+ export type CanonizeReport = {
16
+ warnings: CanonizeWarning[];
17
+ cost: number;
18
+ };
19
+ export type CanonizeSafeParseResult<T> = {
20
+ success: true;
21
+ data: T;
22
+ report: CanonizeReport;
23
+ } | {
24
+ success: false;
25
+ error: z.ZodError;
26
+ report: CanonizeReport;
27
+ };
28
+ export type CanonizeRepairHint = {
29
+ path: string;
30
+ message: string;
31
+ suggestion: string;
32
+ };
6
33
  export type CanonizeSchema<T extends z.ZodTypeAny> = T & {};
34
+ type CanonizeNormalizedSchema<T extends z.ZodTypeAny | z.ZodRawShape> = T extends z.ZodTypeAny ? T : T extends z.ZodRawShape ? z.ZodObject<T> : z.ZodTypeAny;
7
35
  /**
8
36
  * Wrap a Zod schema with aggressive type coercion.
9
37
  *
@@ -31,6 +59,7 @@ export type CanonizeSchema<T extends z.ZodTypeAny> = T & {};
31
59
  * Overloads preserve specific Zod types (e.g., ZodObject) so callers
32
60
  * retain exact schema types without needing casts.
33
61
  */
62
+ export declare function canonize<T extends z.ZodRawShape>(schema: T): z.ZodObject<T>;
34
63
  export declare function canonize<T extends z.ZodObject<any>>(schema: T): T;
35
64
  export declare function canonize<T extends z.ZodArray<any>>(schema: T): T;
36
65
  export declare function canonize<T extends z.ZodRecord<any, any>>(schema: T): T;
@@ -48,4 +77,12 @@ export declare function canonize<T extends z.ZodDate>(schema: T): T;
48
77
  export declare function canonize<T extends z.ZodNull>(schema: T): T;
49
78
  export declare function canonize<T extends z.ZodNaN>(schema: T): T;
50
79
  export declare function canonize<T extends z.ZodTypeAny>(schema: T): CanonizeSchema<T>;
80
+ export declare function coerceWithReport<T extends z.ZodTypeAny | z.ZodRawShape>(schema: T, value: unknown): {
81
+ value: unknown;
82
+ report: CanonizeReport;
83
+ };
84
+ export declare function safeParseWithReport<T extends z.ZodTypeAny | z.ZodRawShape>(schema: T, value: unknown): CanonizeSafeParseResult<z.infer<CanonizeNormalizedSchema<T>>>;
85
+ export declare function createRepairHints(error: z.ZodError, options?: {
86
+ rootLabel?: string;
87
+ }): CanonizeRepairHint[];
51
88
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AA4BzB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAgS7E,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAEnE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAElE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAExE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAEvE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAErE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAEhE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAElE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAEpF,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAE9E,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -211,7 +211,7 @@ function coerceToArray(value, _elementSchema, coerceElement, tracker = new Circu
211
211
  if (canBeCircular(value[i]) && tracker.has(value[i])) {
212
212
  throwCircular();
213
213
  }
214
- result[i] = coerceElement(value[i], tracker);
214
+ result[i] = coerceElement(i, value[i], tracker);
215
215
  }
216
216
  }
217
217
  return result;
@@ -225,22 +225,22 @@ function coerceToArray(value, _elementSchema, coerceElement, tracker = new Circu
225
225
  return [];
226
226
  const json = tryParseJSON(trimmed);
227
227
  if (Array.isArray(json)) {
228
- return json.map((v) => coerceElement(v, tracker));
228
+ return json.map((v, index) => coerceElement(index, v, tracker));
229
229
  }
230
230
  const csv = tryParseCSV(trimmed);
231
231
  if (csv) {
232
- return csv.map((v) => coerceElement(v, tracker));
232
+ return csv.map((v, index) => coerceElement(index, v, tracker));
233
233
  }
234
- return [coerceElement(trimmed, tracker)];
234
+ return [coerceElement(0, trimmed, tracker)];
235
235
  }
236
236
  if (value instanceof Set) {
237
- return Array.from(value).map((v) => coerceElement(v, tracker));
237
+ return Array.from(value).map((v, index) => coerceElement(index, v, tracker));
238
238
  }
239
239
  if (value instanceof Map) {
240
- return Array.from(value.values()).map((v) => coerceElement(v, tracker));
240
+ return Array.from(value.values()).map((v, index) => coerceElement(index, v, tracker));
241
241
  }
242
242
  if (ArrayBuffer.isView(value)) {
243
- return Array.from(value).map((v) => coerceElement(v, tracker));
243
+ return Array.from(value).map((v, index) => coerceElement(index, v, tracker));
244
244
  }
245
245
  if (isArrayLike(value)) {
246
246
  const obj = value;
@@ -248,16 +248,16 @@ function coerceToArray(value, _elementSchema, coerceElement, tracker = new Circu
248
248
  const result = [];
249
249
  for (let i = 0;i < length; i++) {
250
250
  if (i in obj) {
251
- result[i] = coerceElement(obj[i], tracker);
251
+ result[i] = coerceElement(i, obj[i], tracker);
252
252
  }
253
253
  }
254
254
  return result;
255
255
  }
256
256
  if (isPlainObject(value)) {
257
257
  const values = Object.values(value);
258
- return values.map((v) => coerceElement(v, tracker));
258
+ return values.map((v, index) => coerceElement(index, v, tracker));
259
259
  }
260
- return [coerceElement(value, tracker)];
260
+ return [coerceElement(0, value, tracker)];
261
261
  }
262
262
 
263
263
  // src/utilities/special-methods.ts
@@ -1115,7 +1115,7 @@ function coerceToRecord(value, valueSchema, coerceValue, tracker = new CircularT
1115
1115
  if (canBeCircular(val) && tracker.has(val)) {
1116
1116
  throwCircular();
1117
1117
  }
1118
- result[key] = coerceValue(val, tracker);
1118
+ result[key] = coerceValue(key, val, tracker);
1119
1119
  }
1120
1120
  return result;
1121
1121
  }
@@ -1138,7 +1138,7 @@ function coerceToRecord(value, valueSchema, coerceValue, tracker = new CircularT
1138
1138
  if (canBeCircular(val) && tracker.has(val)) {
1139
1139
  throwCircular();
1140
1140
  }
1141
- result2[String(key)] = coerceValue(val, tracker);
1141
+ result2[String(key)] = coerceValue(String(key), val, tracker);
1142
1142
  }
1143
1143
  return result2;
1144
1144
  }
@@ -1147,7 +1147,7 @@ function coerceToRecord(value, valueSchema, coerceValue, tracker = new CircularT
1147
1147
  if (canBeCircular(val) && tracker.has(val)) {
1148
1148
  throwCircular();
1149
1149
  }
1150
- result[String(index)] = coerceValue(val, tracker);
1150
+ result[String(index)] = coerceValue(String(index), val, tracker);
1151
1151
  });
1152
1152
  return result;
1153
1153
  }
@@ -1157,7 +1157,7 @@ function coerceToRecord(value, valueSchema, coerceValue, tracker = new CircularT
1157
1157
  if (canBeCircular(val) && tracker.has(val)) {
1158
1158
  throwCircular();
1159
1159
  }
1160
- result[String(key)] = coerceValue(val, tracker);
1160
+ result[String(key)] = coerceValue(String(key), val, tracker);
1161
1161
  }
1162
1162
  return result;
1163
1163
  }
@@ -1168,7 +1168,7 @@ function coerceToRecord(value, valueSchema, coerceValue, tracker = new CircularT
1168
1168
  if (canBeCircular(val) && tracker.has(val)) {
1169
1169
  throwCircular();
1170
1170
  }
1171
- result[String(index)] = coerceValue(val, tracker);
1171
+ result[String(index)] = coerceValue(String(index), val, tracker);
1172
1172
  index++;
1173
1173
  }
1174
1174
  return result;
@@ -1182,7 +1182,7 @@ function coerceToRecord(value, valueSchema, coerceValue, tracker = new CircularT
1182
1182
  if (canBeCircular(val) && tracker.has(val)) {
1183
1183
  throwCircular();
1184
1184
  }
1185
- result[key] = coerceValue(val, tracker);
1185
+ result[key] = coerceValue(key, val, tracker);
1186
1186
  }
1187
1187
  return result;
1188
1188
  }
@@ -1432,31 +1432,80 @@ function getNullCoercion() {
1432
1432
  }
1433
1433
 
1434
1434
  // src/index.ts
1435
- function coerceValue(schema, value, tracker = new CircularTracker) {
1435
+ function getKind(value) {
1436
+ if (value === null)
1437
+ return "null";
1438
+ if (value === undefined)
1439
+ return "undefined";
1440
+ if (Array.isArray(value))
1441
+ return "array";
1442
+ if (value instanceof Map)
1443
+ return "map";
1444
+ if (value instanceof Set)
1445
+ return "set";
1446
+ if (value instanceof Date)
1447
+ return "date";
1448
+ return typeof value;
1449
+ }
1450
+ function recordChange(report, path, from, to, via, code = "coerced") {
1451
+ if (!report)
1452
+ return;
1453
+ if (Object.is(from, to))
1454
+ return;
1455
+ report.warnings.push({ path: [...path], code, from, to, via });
1456
+ }
1457
+ function recordContainerChange(report, path, from, to) {
1458
+ if (!report)
1459
+ return;
1460
+ const fromKind = getKind(from);
1461
+ const toKind = getKind(to);
1462
+ if (fromKind === toKind)
1463
+ return;
1464
+ const code = fromKind === "string" && ["array", "object", "map", "set"].includes(toKind) ? "parsed" : "coerced";
1465
+ report.warnings.push({
1466
+ path: [...path],
1467
+ code,
1468
+ from,
1469
+ to,
1470
+ via: `${fromKind}->${toKind}`
1471
+ });
1472
+ }
1473
+ function coerceValue(schema, value, tracker = new CircularTracker, report, path = []) {
1436
1474
  const typeName = getZodTypeName(schema);
1475
+ if (typeName === "pipe") {
1476
+ const outSchema = schema._def?.out ?? schema._def?.schema;
1477
+ if (outSchema) {
1478
+ return coerceValue(outSchema, value, tracker, report, path);
1479
+ }
1480
+ }
1437
1481
  if (typeName === ZodType.OPTIONAL) {
1438
1482
  if (value === undefined)
1439
1483
  return;
1440
- return coerceValue(schema._def.innerType, value, tracker);
1484
+ return coerceValue(schema._def.innerType, value, tracker, report, path);
1441
1485
  }
1442
1486
  if (typeName === ZodType.NULLABLE) {
1443
1487
  if (value === null)
1444
1488
  return null;
1445
1489
  if (value === "") {
1446
- return null;
1490
+ const coerced = null;
1491
+ recordChange(report, path, value, coerced, "empty-string->null");
1492
+ return coerced;
1447
1493
  }
1448
- return coerceValue(schema._def.innerType, value, tracker);
1494
+ return coerceValue(schema._def.innerType, value, tracker, report, path);
1449
1495
  }
1450
1496
  if (typeName === ZodType.DEFAULT) {
1451
- if (value === undefined)
1452
- return schema._def.defaultValue();
1453
- return coerceValue(schema._def.innerType, value, tracker);
1497
+ if (value === undefined) {
1498
+ const defaultValue = schema._def.defaultValue();
1499
+ recordChange(report, path, value, defaultValue, "default", "defaulted");
1500
+ return defaultValue;
1501
+ }
1502
+ return coerceValue(schema._def.innerType, value, tracker, report, path);
1454
1503
  }
1455
1504
  if (typeName === ZodType.CATCH) {
1456
- return coerceValue(schema._def.innerType, value, tracker);
1505
+ return coerceValue(schema._def.innerType, value, tracker, report, path);
1457
1506
  }
1458
1507
  if (typeName === ZodType.READONLY) {
1459
- const result = coerceValue(schema._def.innerType, value, tracker);
1508
+ const result = coerceValue(schema._def.innerType, value, tracker, report, path);
1460
1509
  if (typeof result === "object" && result !== null) {
1461
1510
  return Object.freeze(result);
1462
1511
  }
@@ -1464,66 +1513,92 @@ function coerceValue(schema, value, tracker = new CircularTracker) {
1464
1513
  }
1465
1514
  if (typeName === ZodType.LAZY) {
1466
1515
  const lazySchema = schema._def.getter();
1467
- return coerceValue(lazySchema, value, tracker);
1516
+ return coerceValue(lazySchema, value, tracker, report, path);
1468
1517
  }
1469
1518
  if (typeName === ZodType.STRING) {
1470
- return coerceToString(value, tracker);
1519
+ const coerced = coerceToString(value, tracker);
1520
+ recordChange(report, path, value, coerced, `${getKind(value)}->string`);
1521
+ return coerced;
1471
1522
  }
1472
1523
  if (typeName === ZodType.NUMBER) {
1473
1524
  const num = coerceToNumber(value);
1525
+ let result = num;
1474
1526
  const defData = schema._def;
1475
1527
  if (defData.check === "number_format" && defData.format === "safeint") {
1476
- return coerceToInteger(num);
1528
+ result = coerceToInteger(num);
1529
+ recordChange(report, path, value, result, `${getKind(value)}->number`);
1530
+ return result;
1477
1531
  }
1478
1532
  if (defData.check === "number_format" && defData.format === "int32") {
1479
- return coerceToInt32(num);
1533
+ result = coerceToInt32(num);
1534
+ recordChange(report, path, value, result, `${getKind(value)}->number`);
1535
+ return result;
1480
1536
  }
1481
- return num;
1537
+ recordChange(report, path, value, result, `${getKind(value)}->number`);
1538
+ return result;
1482
1539
  }
1483
1540
  if (typeName === ZodType.BOOLEAN) {
1484
- return coerceToBoolean(value);
1541
+ const coerced = coerceToBoolean(value);
1542
+ recordChange(report, path, value, coerced, `${getKind(value)}->boolean`);
1543
+ return coerced;
1485
1544
  }
1486
1545
  if (typeName === ZodType.DATE) {
1487
- return coerceToDate(value);
1546
+ const coerced = coerceToDate(value);
1547
+ recordChange(report, path, value, coerced, `${getKind(value)}->date`);
1548
+ return coerced;
1488
1549
  }
1489
1550
  if (typeName === ZodType.BIGINT) {
1490
- return coerceToBigInt(value);
1551
+ const coerced = coerceToBigInt(value);
1552
+ recordChange(report, path, value, coerced, `${getKind(value)}->bigint`);
1553
+ return coerced;
1491
1554
  }
1492
1555
  if (typeName === ZodType.NULL) {
1493
- return coerceToNull(value);
1556
+ const coerced = coerceToNull(value);
1557
+ recordChange(report, path, value, coerced, `${getKind(value)}->null`);
1558
+ return coerced;
1494
1559
  }
1495
1560
  if (typeName === ZodType.NAN) {
1496
- return coerceToNaN(value);
1561
+ const coerced = coerceToNaN(value);
1562
+ recordChange(report, path, value, coerced, `${getKind(value)}->nan`);
1563
+ return coerced;
1497
1564
  }
1498
1565
  if (typeName === ZodType.ANY || typeName === ZodType.UNKNOWN) {
1499
1566
  return value;
1500
1567
  }
1501
1568
  if (typeName === ZodType.CUSTOM) {
1502
- return coerceCustomSchema(schema, value, tracker);
1569
+ return coerceCustomSchema(schema, value, tracker, report, path);
1503
1570
  }
1504
1571
  if (typeName === ZodType.NEVER) {
1505
1572
  throw new Error("Cannot coerce to never type");
1506
1573
  }
1507
1574
  if (typeName === ZodType.ARRAY) {
1508
1575
  const elementSchema = schema._def.element;
1509
- return coerceToArray(value, elementSchema, (v, t) => coerceValue(elementSchema, v, t), tracker);
1576
+ const coerced = coerceToArray(value, elementSchema, (index, v, t) => coerceValue(elementSchema, v, t, report, [...path, index]), tracker);
1577
+ recordContainerChange(report, path, value, coerced);
1578
+ return coerced;
1510
1579
  }
1511
1580
  if (typeName === ZodType.OBJECT) {
1512
1581
  const shape = schema._def.shape;
1513
- return coerceToObject(value, shape, (key, v, t) => {
1582
+ const coerced = coerceToObject(value, shape, (key, v, t) => {
1514
1583
  if (key in shape) {
1515
- return coerceValue(shape[key], v, t);
1584
+ return coerceValue(shape[key], v, t, report, [...path, key]);
1516
1585
  }
1517
1586
  return v;
1518
1587
  }, tracker);
1588
+ recordContainerChange(report, path, value, coerced);
1589
+ return coerced;
1519
1590
  }
1520
1591
  if (typeName === ZodType.TUPLE) {
1521
1592
  const items = schema._def.items;
1522
- return coerceToTuple(value, items, (index, v, t) => coerceValue(items[index], v, t), tracker);
1593
+ const coerced = coerceToTuple(value, items, (index, v, t) => coerceValue(items[index], v, t, report, [...path, index]), tracker);
1594
+ recordContainerChange(report, path, value, coerced);
1595
+ return coerced;
1523
1596
  }
1524
1597
  if (typeName === ZodType.RECORD) {
1525
1598
  const valueType = schema._def.valueType;
1526
- return coerceToRecord(value, valueType, (v, t) => coerceValue(valueType, v, t), tracker);
1599
+ const coerced = coerceToRecord(value, valueType, (key, v, t) => coerceValue(valueType, v, t, report, [...path, key]), tracker);
1600
+ recordContainerChange(report, path, value, coerced);
1601
+ return coerced;
1527
1602
  }
1528
1603
  if (typeName === ZodType.ENUM) {
1529
1604
  const defData = schema._def;
@@ -1531,56 +1606,64 @@ function coerceValue(schema, value, tracker = new CircularTracker) {
1531
1606
  const allValues = Object.values(entries);
1532
1607
  const hasNumbers = allValues.some((v) => typeof v === "number");
1533
1608
  const validValues = hasNumbers ? allValues.filter((v) => typeof v === "number") : Array.from(new Set(allValues));
1534
- return coerceToEnum(value, validValues, entries);
1609
+ const coerced = coerceToEnum(value, validValues, entries);
1610
+ recordChange(report, path, value, coerced, `${getKind(value)}->enum`);
1611
+ return coerced;
1535
1612
  }
1536
1613
  if (typeName === ZodType.LITERAL) {
1537
1614
  const defData = schema._def;
1538
1615
  const literalValue = defData.values[0];
1539
- return coerceToLiteral(value, literalValue);
1616
+ const coerced = coerceToLiteral(value, literalValue);
1617
+ recordChange(report, path, value, coerced, `${getKind(value)}->literal`);
1618
+ return coerced;
1540
1619
  }
1541
1620
  if (typeName === ZodType.UNION && schema._def.discriminator) {
1542
1621
  const discriminator = schema._def.discriminator;
1543
1622
  const options = schema._def.options;
1544
- return coerceToDiscriminatedUnion(value, discriminator, options, (index, v, t) => coerceValue(options[index], v, t), tracker);
1623
+ return coerceToDiscriminatedUnion(value, discriminator, options, (index, v, t) => coerceValue(options[index], v, t, report, path), tracker);
1545
1624
  }
1546
1625
  if (typeName === ZodType.UNION) {
1547
1626
  const options = schema._def.options;
1548
- return coerceToUnion(value, options, (index, v, t) => coerceValue(options[index], v, t), tracker);
1627
+ return coerceToUnion(value, options, (index, v, t) => coerceValue(options[index], v, t, report, path), tracker);
1549
1628
  }
1550
1629
  if (typeName === ZodType.INTERSECTION) {
1551
1630
  const left = schema._def.left;
1552
1631
  const right = schema._def.right;
1553
- return coerceToIntersection(value, left, right, (v, t) => coerceValue(left, v, t), (v, t) => coerceValue(right, v, t), tracker);
1632
+ return coerceToIntersection(value, left, right, (v, t) => coerceValue(left, v, t, report, path), (v, t) => coerceValue(right, v, t, report, path), tracker);
1554
1633
  }
1555
1634
  if (typeName === ZodType.MAP) {
1556
1635
  const keyType = schema._def.keyType;
1557
1636
  const valueType = schema._def.valueType;
1558
- return coerceToMap(value, keyType, valueType, (v, t) => coerceValue(keyType, v, t), (v, t) => coerceValue(valueType, v, t), tracker);
1637
+ const coerced = coerceToMap(value, keyType, valueType, (v, t) => coerceValue(keyType, v, t), (v, t) => coerceValue(valueType, v, t), tracker);
1638
+ recordContainerChange(report, path, value, coerced);
1639
+ return coerced;
1559
1640
  }
1560
1641
  if (typeName === ZodType.SET) {
1561
- return coerceSetSchema(value, schema, tracker);
1642
+ const coerced = coerceSetSchema(value, schema, tracker, report, path);
1643
+ recordContainerChange(report, path, value, coerced);
1644
+ return coerced;
1562
1645
  }
1563
1646
  return value;
1564
1647
  }
1565
- function coerceSetSchema(value, schema, tracker) {
1648
+ function coerceSetSchema(value, schema, tracker, report, path = []) {
1566
1649
  const valueType = schema._def.valueType;
1567
- return coerceToSet(value, valueType, (v, t) => coerceValue(valueType, v, t), tracker);
1650
+ return coerceToSet(value, valueType, (v, t) => coerceValue(valueType, v, t, report, path), tracker);
1568
1651
  }
1569
- function coerceCustomSchema(schema, value, tracker) {
1652
+ function coerceCustomSchema(schema, value, tracker, report, path = []) {
1570
1653
  const defData = schema._def;
1571
1654
  const predicate = typeof defData?.fn === "function" ? defData.fn : null;
1572
1655
  if (!predicate) {
1573
1656
  return value;
1574
1657
  }
1575
1658
  const attempts = [
1576
- () => value,
1577
- () => coerceToDate(value),
1578
- () => coerceToNumber(value),
1579
- () => coerceToBigInt(value),
1580
- () => coerceToBoolean(value),
1581
- () => coerceToString(value, tracker)
1659
+ { via: "custom", attempt: () => value },
1660
+ { via: "date", attempt: () => coerceToDate(value) },
1661
+ { via: "number", attempt: () => coerceToNumber(value) },
1662
+ { via: "bigint", attempt: () => coerceToBigInt(value) },
1663
+ { via: "boolean", attempt: () => coerceToBoolean(value) },
1664
+ { via: "string", attempt: () => coerceToString(value, tracker) }
1582
1665
  ];
1583
- for (const attempt of attempts) {
1666
+ for (const { attempt, via } of attempts) {
1584
1667
  let coerced;
1585
1668
  try {
1586
1669
  coerced = attempt();
@@ -1589,6 +1672,7 @@ function coerceCustomSchema(schema, value, tracker) {
1589
1672
  }
1590
1673
  try {
1591
1674
  if (predicate(coerced)) {
1675
+ recordChange(report, path, value, coerced, `custom:${via}`);
1592
1676
  return coerced;
1593
1677
  }
1594
1678
  } catch {
@@ -1597,27 +1681,134 @@ function coerceCustomSchema(schema, value, tracker) {
1597
1681
  }
1598
1682
  return value;
1599
1683
  }
1684
+ function isZodSchema(value) {
1685
+ return typeof value === "object" && value !== null && typeof value.safeParse === "function";
1686
+ }
1687
+ function normalizeSchema(schema) {
1688
+ return isZodSchema(schema) ? schema : z2.object(schema);
1689
+ }
1600
1690
  function canonize(schema) {
1691
+ const normalizedSchema = normalizeSchema(schema);
1601
1692
  const preprocessed = z2.preprocess((value) => {
1602
1693
  try {
1603
- return coerceValue(schema, value);
1694
+ return coerceValue(normalizedSchema, value);
1604
1695
  } catch (error) {
1605
1696
  if (error instanceof Error && error.message.includes("Circular reference")) {
1606
1697
  throw error;
1607
1698
  }
1608
1699
  return value;
1609
1700
  }
1610
- }, schema);
1701
+ }, normalizedSchema);
1611
1702
  return preprocessed;
1612
1703
  }
1704
+ function coerceWithReport(schema, value) {
1705
+ const normalizedSchema = normalizeSchema(schema);
1706
+ const report = { warnings: [], cost: 0 };
1707
+ let coerced;
1708
+ try {
1709
+ coerced = coerceValue(normalizedSchema, value, new CircularTracker, report);
1710
+ } catch (error) {
1711
+ if (error instanceof Error && error.message.includes("Circular reference")) {
1712
+ throw error;
1713
+ }
1714
+ coerced = value;
1715
+ }
1716
+ report.cost = report.warnings.length;
1717
+ return { value: coerced, report };
1718
+ }
1719
+ function safeParseWithReport(schema, value) {
1720
+ const normalizedSchema = normalizeSchema(schema);
1721
+ const { value: coerced, report } = coerceWithReport(normalizedSchema, value);
1722
+ const parsed = normalizedSchema.safeParse(coerced);
1723
+ if (parsed.success) {
1724
+ return {
1725
+ success: true,
1726
+ data: parsed.data,
1727
+ report
1728
+ };
1729
+ }
1730
+ return { success: false, error: parsed.error, report };
1731
+ }
1732
+ function createRepairHints(error, options = {}) {
1733
+ const rootLabel = options.rootLabel ?? "input";
1734
+ return error.issues.map((issue) => {
1735
+ const safePath = issue.path.filter((segment) => typeof segment === "string" || typeof segment === "number");
1736
+ const path = formatPath(safePath, rootLabel);
1737
+ return {
1738
+ path,
1739
+ message: issue.message,
1740
+ suggestion: buildSuggestion(issue, path)
1741
+ };
1742
+ });
1743
+ }
1744
+ function formatPath(path, rootLabel) {
1745
+ if (!path.length)
1746
+ return rootLabel;
1747
+ let result = "";
1748
+ for (const segment of path) {
1749
+ if (typeof segment === "number") {
1750
+ result += `[${segment}]`;
1751
+ continue;
1752
+ }
1753
+ result = result ? `${result}.${segment}` : segment;
1754
+ }
1755
+ return result;
1756
+ }
1757
+ function buildSuggestion(issue, pathLabel) {
1758
+ const issueData = issue;
1759
+ const expected = issueData?.expected;
1760
+ if (issue.code === "invalid_type") {
1761
+ if (/received undefined/i.test(issue.message)) {
1762
+ return `Add required field ${pathLabel}.`;
1763
+ }
1764
+ if (expected) {
1765
+ return `Provide a ${expected} for ${pathLabel}.`;
1766
+ }
1767
+ return `Provide a valid value for ${pathLabel}.`;
1768
+ }
1769
+ if (issue.code === "invalid_value" && Array.isArray(issueData?.values)) {
1770
+ return `Use one of ${issueData.values.join(", ")} for ${pathLabel}.`;
1771
+ }
1772
+ if (issue.code === "too_small") {
1773
+ const minimum = issueData?.minimum;
1774
+ if (issueData?.origin === "string") {
1775
+ return `Provide a longer string for ${pathLabel} (min ${minimum}).`;
1776
+ }
1777
+ if (issueData?.origin === "array") {
1778
+ return `Provide at least ${minimum} item(s) for ${pathLabel}.`;
1779
+ }
1780
+ if (issueData?.origin === "number") {
1781
+ return `Provide a number >= ${minimum} for ${pathLabel}.`;
1782
+ }
1783
+ }
1784
+ if (issue.code === "too_big") {
1785
+ const maximum = issueData?.maximum;
1786
+ if (issueData?.origin === "string") {
1787
+ return `Provide a shorter string for ${pathLabel} (max ${maximum}).`;
1788
+ }
1789
+ if (issueData?.origin === "array") {
1790
+ return `Provide no more than ${maximum} item(s) for ${pathLabel}.`;
1791
+ }
1792
+ if (issueData?.origin === "number") {
1793
+ return `Provide a number <= ${maximum} for ${pathLabel}.`;
1794
+ }
1795
+ }
1796
+ if (issue.code === "invalid_union") {
1797
+ return `Provide a value that matches one of the supported shapes for ${pathLabel}.`;
1798
+ }
1799
+ return issue.message;
1800
+ }
1613
1801
  export {
1614
1802
  unwrapSchema,
1803
+ safeParseWithReport,
1615
1804
  getZodTypeName,
1805
+ createRepairHints,
1616
1806
  createCanonizeSchema,
1617
1807
  createCanonizePrimitive,
1808
+ coerceWithReport,
1618
1809
  canonize,
1619
1810
  ZodType,
1620
1811
  CircularTracker
1621
1812
  };
1622
1813
 
1623
- //# debugId=4135B5B30AC609E164756E2164756E21
1814
+ //# debugId=C838E26F3AF618BD64756E2164756E21
package/dist/index.js.map CHANGED
@@ -2,12 +2,12 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/utilities/circular.ts", "../src/utilities/parsers.ts", "../src/constants.ts", "../src/utilities/type-detection.ts", "../src/coercers/array.ts", "../src/utilities/special-methods.ts", "../src/coercers/bigint.ts", "../src/coercers/boolean.ts", "../src/coercers/number.ts", "../src/coercers/date.ts", "../src/coercers/discriminated-union.ts", "../src/coercers/enum.ts", "../src/coercers/intersection.ts", "../src/coercers/string.ts", "../src/coercers/literal.ts", "../src/coercers/map-set.ts", "../src/coercers/nan.ts", "../src/coercers/null.ts", "../src/coercers/object.ts", "../src/coercers/record.ts", "../src/coercers/tuple.ts", "../src/coercers/union.ts", "../src/create-schema.ts"],
4
4
  "sourcesContent": [
5
- "import * as z from 'zod';\n\n// Collection coercers\nimport { coerceToArray } from './coercers/array.js';\nimport { coerceToBigInt } from './coercers/bigint.js';\nimport { coerceToBoolean } from './coercers/boolean.js';\nimport { coerceToDate } from './coercers/date.js';\nimport { coerceToDiscriminatedUnion } from './coercers/discriminated-union.js';\n// Special type coercers\nimport { coerceToEnum } from './coercers/enum.js';\nimport { coerceToIntersection } from './coercers/intersection.js';\nimport { coerceToLiteral } from './coercers/literal.js';\n// Map & Set coercers\nimport { coerceToMap, coerceToSet } from './coercers/map-set.js';\nimport { coerceToNaN } from './coercers/nan.js';\nimport { coerceToNull } from './coercers/null.js';\nimport { coerceToInt32, coerceToInteger, coerceToNumber } from './coercers/number.js';\nimport { coerceToObject } from './coercers/object.js';\nimport { coerceToRecord } from './coercers/record.js';\n// Primitive coercers\nimport { coerceToString } from './coercers/string.js';\nimport { coerceToTuple } from './coercers/tuple.js';\nimport { coerceToUnion } from './coercers/union.js';\nimport { ZodType } from './constants.js';\nimport { CircularTracker } from './utilities/circular.js';\nimport { getZodTypeName } from './utilities/type-detection.js';\n\n// Re-export utilities for advanced use cases\nexport { ZodType } from './constants.js';\nexport {\n type CanonizePrimitive,\n createCanonizePrimitive,\n createCanonizeSchema,\n} from './create-schema.js';\nexport { CircularTracker } from './utilities/circular.js';\nexport { getZodTypeName, unwrapSchema } from './utilities/type-detection.js';\n\n/**\n * Main coercion dispatcher\n */\nfunction coerceValue(\n schema: z.ZodTypeAny,\n value: unknown,\n tracker = new CircularTracker(),\n): unknown {\n const typeName = getZodTypeName(schema);\n\n // Handle wrappers first\n if (typeName === ZodType.OPTIONAL) {\n if (value === undefined) return undefined;\n return coerceValue((schema._def as any).innerType, value, tracker);\n }\n\n if (typeName === ZodType.NULLABLE) {\n if (value === null) return null;\n // Aggressive coercion: coerce empty string to null (prevents '' → {} for objects)\n if (value === '') {\n return null;\n }\n return coerceValue((schema._def as any).innerType, value, tracker);\n }\n\n if (typeName === ZodType.DEFAULT) {\n if (value === undefined) return (schema._def as any).defaultValue();\n return coerceValue((schema._def as any).innerType, value, tracker);\n }\n\n if (typeName === ZodType.CATCH) {\n // Just coerce the inner type and let Zod's native .catch() handle validation errors\n return coerceValue((schema._def as any).innerType, value, tracker);\n }\n\n if (typeName === ZodType.READONLY) {\n const result = coerceValue((schema._def as any).innerType, value, tracker);\n // Freeze the result\n if (typeof result === 'object' && result !== null) {\n return Object.freeze(result);\n }\n return result;\n }\n\n if (typeName === ZodType.LAZY) {\n const lazySchema = (schema._def as any).getter();\n return coerceValue(lazySchema, value, tracker);\n }\n\n // Primitive types\n if (typeName === ZodType.STRING) {\n return coerceToString(value, tracker);\n }\n\n if (typeName === ZodType.NUMBER) {\n const num = coerceToNumber(value);\n\n // Check for Zod v4 number format\n const defData = schema._def as any;\n if (defData.check === 'number_format' && defData.format === 'safeint') {\n // z.int() - safe integer\n return coerceToInteger(num);\n }\n if (defData.check === 'number_format' && defData.format === 'int32') {\n // z.int32() - 32-bit integer\n return coerceToInt32(num);\n }\n\n return num;\n }\n\n if (typeName === ZodType.BOOLEAN) {\n return coerceToBoolean(value);\n }\n\n if (typeName === ZodType.DATE) {\n return coerceToDate(value);\n }\n\n if (typeName === ZodType.BIGINT) {\n return coerceToBigInt(value);\n }\n\n if (typeName === ZodType.NULL) {\n return coerceToNull(value);\n }\n\n if (typeName === ZodType.NAN) {\n return coerceToNaN(value);\n }\n\n if (typeName === ZodType.ANY || typeName === ZodType.UNKNOWN) {\n // Pass through as-is\n return value;\n }\n\n if (typeName === ZodType.CUSTOM) {\n return coerceCustomSchema(schema, value, tracker);\n }\n\n if (typeName === ZodType.NEVER) {\n throw new Error('Cannot coerce to never type');\n }\n\n // Array\n if (typeName === ZodType.ARRAY) {\n const elementSchema = (schema._def as any).element;\n return coerceToArray(\n value,\n elementSchema,\n (v, t) => coerceValue(elementSchema, v, t),\n tracker,\n );\n }\n\n // Object\n if (typeName === ZodType.OBJECT) {\n const shape = (schema._def as any).shape;\n return coerceToObject(\n value,\n shape,\n (key, v, t) => {\n if (key in shape) {\n return coerceValue(shape[key], v, t);\n }\n return v;\n },\n tracker,\n );\n }\n\n // Tuple\n if (typeName === ZodType.TUPLE) {\n const items = (schema._def as any).items;\n return coerceToTuple(\n value,\n items,\n (index, v, t) => coerceValue(items[index], v, t),\n tracker,\n );\n }\n\n // Record\n if (typeName === ZodType.RECORD) {\n const valueType = (schema._def as any).valueType;\n return coerceToRecord(\n value,\n valueType,\n (v, t) => coerceValue(valueType, v, t),\n tracker,\n );\n }\n\n // Enum\n if (typeName === ZodType.ENUM) {\n const defData = schema._def as any;\n const entries = defData.entries;\n\n // Determine if this is a numeric enum by checking if any value is a number\n const allValues = Object.values(entries);\n const hasNumbers = allValues.some((v) => typeof v === 'number');\n\n // For numeric enums, Zod only validates against the numeric values\n // Filter to only numeric values if it's a numeric enum\n const validValues = hasNumbers\n ? allValues.filter((v) => typeof v === 'number')\n : Array.from(new Set(allValues));\n\n return coerceToEnum(value, validValues, entries);\n }\n\n // Literal\n if (typeName === ZodType.LITERAL) {\n const defData = schema._def as any;\n const literalValue = defData.values[0];\n return coerceToLiteral(value, literalValue);\n }\n\n // Discriminated Union (check before regular union, as discriminated unions have type === \"union\" in Zod v4)\n if (typeName === ZodType.UNION && (schema._def as any).discriminator) {\n const discriminator = (schema._def as any).discriminator;\n const options = (schema._def as any).options;\n return coerceToDiscriminatedUnion(\n value,\n discriminator,\n options,\n (index, v, t) => coerceValue(options[index], v, t),\n tracker,\n );\n }\n\n // Union\n if (typeName === ZodType.UNION) {\n const options = (schema._def as any).options;\n return coerceToUnion(\n value,\n options,\n (index, v, t) => coerceValue(options[index], v, t),\n tracker,\n );\n }\n\n // Intersection\n if (typeName === ZodType.INTERSECTION) {\n const left = (schema._def as any).left;\n const right = (schema._def as any).right;\n return coerceToIntersection(\n value,\n left,\n right,\n (v, t) => coerceValue(left, v, t),\n (v, t) => coerceValue(right, v, t),\n tracker,\n );\n }\n\n // Map\n if (typeName === ZodType.MAP) {\n const keyType = (schema._def as any).keyType;\n const valueType = (schema._def as any).valueType;\n return coerceToMap(\n value,\n keyType,\n valueType,\n (v, t) => coerceValue(keyType, v, t),\n (v, t) => coerceValue(valueType, v, t),\n tracker,\n );\n }\n\n // Set\n if (typeName === ZodType.SET) {\n return coerceSetSchema(value, schema, tracker);\n }\n\n // Fallback: return as-is\n return value;\n}\n\nfunction coerceSetSchema(value: unknown, schema: z.ZodTypeAny, tracker: CircularTracker) {\n const valueType = (schema._def as any).valueType;\n return coerceToSet(value, valueType, (v, t) => coerceValue(valueType, v, t), tracker);\n}\n\nfunction coerceCustomSchema(\n schema: z.ZodTypeAny,\n value: unknown,\n tracker: CircularTracker,\n) {\n const defData = schema._def as any;\n const predicate = typeof defData?.fn === 'function' ? defData.fn : null;\n\n if (!predicate) {\n return value;\n }\n\n const attempts: Array<() => unknown> = [\n () => value,\n () => coerceToDate(value),\n () => coerceToNumber(value),\n () => coerceToBigInt(value),\n () => coerceToBoolean(value),\n () => coerceToString(value, tracker),\n ];\n\n for (const attempt of attempts) {\n let coerced: unknown;\n\n try {\n coerced = attempt();\n } catch {\n continue;\n }\n\n try {\n if (predicate(coerced)) {\n return coerced;\n }\n } catch {\n continue;\n }\n }\n\n return value;\n}\n\nexport type CanonizeSchema<T extends z.ZodTypeAny> = T & {};\n\n/**\n * Wrap a Zod schema with aggressive type coercion.\n *\n * This is the main export of the canonize library. It takes any Zod schema\n * and returns a new schema that will automatically coerce inputs to the\n * expected types before validation.\n *\n * @example\n * ```typescript\n * import { canonize } from 'canonize';\n * import { z } from 'zod';\n *\n * const schema = canonize(z.object({\n * name: z.string(),\n * age: z.number(),\n * active: z.boolean()\n * }));\n *\n * // All of these will succeed:\n * schema.parse({ name: 'Alice', age: '30', active: 'yes' });\n * schema.parse({ name: 123, age: 30, active: 1 });\n * schema.parse({ name: ['Alice'], age: '30.5', active: 'true' });\n * ```\n *\n * Overloads preserve specific Zod types (e.g., ZodObject) so callers\n * retain exact schema types without needing casts.\n */\n// Object\nexport function canonize<T extends z.ZodObject<any>>(schema: T): T;\n// Array\nexport function canonize<T extends z.ZodArray<any>>(schema: T): T;\n// Record\nexport function canonize<T extends z.ZodRecord<any, any>>(schema: T): T;\n// Tuple\nexport function canonize<T extends z.ZodTuple<any, any>>(schema: T): T;\n// Map\nexport function canonize<T extends z.ZodMap<any, any>>(schema: T): T;\n// Set\nexport function canonize<T extends z.ZodSet<any>>(schema: T): T;\n// Union\nexport function canonize<T extends z.ZodUnion<any>>(schema: T): T;\n// Discriminated Union\nexport function canonize<T extends z.ZodDiscriminatedUnion<any, any>>(schema: T): T;\n// Intersection\nexport function canonize<T extends z.ZodIntersection<any, any>>(schema: T): T;\n// Primitives\nexport function canonize<T extends z.ZodString>(schema: T): T;\nexport function canonize<T extends z.ZodNumber>(schema: T): T;\nexport function canonize<T extends z.ZodBoolean>(schema: T): T;\nexport function canonize<T extends z.ZodBigInt>(schema: T): T;\nexport function canonize<T extends z.ZodDate>(schema: T): T;\nexport function canonize<T extends z.ZodNull>(schema: T): T;\nexport function canonize<T extends z.ZodNaN>(schema: T): T;\nexport function canonize<T extends z.ZodTypeAny>(schema: T): CanonizeSchema<T>;\nexport function canonize<T extends z.ZodTypeAny>(schema: T): CanonizeSchema<T> {\n // Use preprocess to coerce BEFORE validation\n const preprocessed = z.preprocess((value) => {\n try {\n return coerceValue(schema, value);\n } catch (error) {\n // Re-throw circular reference errors\n if (error instanceof Error && error.message.includes('Circular reference')) {\n throw error;\n }\n // For other coercion failures, return the original value\n // and let Zod validation handle it\n return value;\n }\n }, schema);\n\n return preprocessed as any as CanonizeSchema<T>;\n}\n",
5
+ "import * as z from 'zod';\n\n// Collection coercers\nimport { coerceToArray } from './coercers/array.js';\nimport { coerceToBigInt } from './coercers/bigint.js';\nimport { coerceToBoolean } from './coercers/boolean.js';\nimport { coerceToDate } from './coercers/date.js';\nimport { coerceToDiscriminatedUnion } from './coercers/discriminated-union.js';\n// Special type coercers\nimport { coerceToEnum } from './coercers/enum.js';\nimport { coerceToIntersection } from './coercers/intersection.js';\nimport { coerceToLiteral } from './coercers/literal.js';\n// Map & Set coercers\nimport { coerceToMap, coerceToSet } from './coercers/map-set.js';\nimport { coerceToNaN } from './coercers/nan.js';\nimport { coerceToNull } from './coercers/null.js';\nimport { coerceToInt32, coerceToInteger, coerceToNumber } from './coercers/number.js';\nimport { coerceToObject } from './coercers/object.js';\nimport { coerceToRecord } from './coercers/record.js';\n// Primitive coercers\nimport { coerceToString } from './coercers/string.js';\nimport { coerceToTuple } from './coercers/tuple.js';\nimport { coerceToUnion } from './coercers/union.js';\nimport { ZodType } from './constants.js';\nimport { CircularTracker } from './utilities/circular.js';\nimport { getZodTypeName } from './utilities/type-detection.js';\n\n// Re-export utilities for advanced use cases\nexport { ZodType } from './constants.js';\nexport {\n type CanonizePrimitive,\n createCanonizePrimitive,\n createCanonizeSchema,\n} from './create-schema.js';\nexport { CircularTracker } from './utilities/circular.js';\nexport { getZodTypeName, unwrapSchema } from './utilities/type-detection.js';\n\nexport type CanonizePath = Array<string | number>;\n\nexport type CanonizeWarningCode = 'coerced' | 'defaulted' | 'parsed';\n\nexport type CanonizeWarning = {\n path: CanonizePath;\n code: CanonizeWarningCode;\n from: unknown;\n to: unknown;\n via: string;\n};\n\nexport type CanonizeReport = {\n warnings: CanonizeWarning[];\n cost: number;\n};\n\nexport type CanonizeSafeParseResult<T> =\n | { success: true; data: T; report: CanonizeReport }\n | { success: false; error: z.ZodError; report: CanonizeReport };\n\nexport type CanonizeRepairHint = {\n path: string;\n message: string;\n suggestion: string;\n};\n\nfunction getKind(value: unknown): string {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Map) return 'map';\n if (value instanceof Set) return 'set';\n if (value instanceof Date) return 'date';\n return typeof value;\n}\n\nfunction recordChange(\n report: CanonizeReport | undefined,\n path: CanonizePath,\n from: unknown,\n to: unknown,\n via: string,\n code: CanonizeWarningCode = 'coerced',\n) {\n if (!report) return;\n if (Object.is(from, to)) return;\n report.warnings.push({ path: [...path], code, from, to, via });\n}\n\nfunction recordContainerChange(\n report: CanonizeReport | undefined,\n path: CanonizePath,\n from: unknown,\n to: unknown,\n) {\n if (!report) return;\n const fromKind = getKind(from);\n const toKind = getKind(to);\n if (fromKind === toKind) return;\n const code: CanonizeWarningCode =\n fromKind === 'string' && ['array', 'object', 'map', 'set'].includes(toKind)\n ? 'parsed'\n : 'coerced';\n report.warnings.push({\n path: [...path],\n code,\n from,\n to,\n via: `${fromKind}->${toKind}`,\n });\n}\n\n/**\n * Main coercion dispatcher\n */\nfunction coerceValue(\n schema: z.ZodTypeAny,\n value: unknown,\n tracker = new CircularTracker(),\n report?: CanonizeReport,\n path: CanonizePath = [],\n): unknown {\n const typeName = getZodTypeName(schema);\n\n if (typeName === 'pipe') {\n const outSchema = (schema._def as any)?.out ?? (schema._def as any)?.schema;\n if (outSchema) {\n return coerceValue(outSchema, value, tracker, report, path);\n }\n }\n\n // Handle wrappers first\n if (typeName === ZodType.OPTIONAL) {\n if (value === undefined) return undefined;\n return coerceValue((schema._def as any).innerType, value, tracker, report, path);\n }\n\n if (typeName === ZodType.NULLABLE) {\n if (value === null) return null;\n // Aggressive coercion: coerce empty string to null (prevents '' → {} for objects)\n if (value === '') {\n const coerced = null;\n recordChange(report, path, value, coerced, 'empty-string->null');\n return coerced;\n }\n return coerceValue((schema._def as any).innerType, value, tracker, report, path);\n }\n\n if (typeName === ZodType.DEFAULT) {\n if (value === undefined) {\n const defaultValue = (schema._def as any).defaultValue();\n recordChange(report, path, value, defaultValue, 'default', 'defaulted');\n return defaultValue;\n }\n return coerceValue((schema._def as any).innerType, value, tracker, report, path);\n }\n\n if (typeName === ZodType.CATCH) {\n // Just coerce the inner type and let Zod's native .catch() handle validation errors\n return coerceValue((schema._def as any).innerType, value, tracker, report, path);\n }\n\n if (typeName === ZodType.READONLY) {\n const result = coerceValue(\n (schema._def as any).innerType,\n value,\n tracker,\n report,\n path,\n );\n // Freeze the result\n if (typeof result === 'object' && result !== null) {\n return Object.freeze(result);\n }\n return result;\n }\n\n if (typeName === ZodType.LAZY) {\n const lazySchema = (schema._def as any).getter();\n return coerceValue(lazySchema, value, tracker, report, path);\n }\n\n // Primitive types\n if (typeName === ZodType.STRING) {\n const coerced = coerceToString(value, tracker);\n recordChange(report, path, value, coerced, `${getKind(value)}->string`);\n return coerced;\n }\n\n if (typeName === ZodType.NUMBER) {\n const num = coerceToNumber(value);\n let result = num;\n\n // Check for Zod v4 number format\n const defData = schema._def as any;\n if (defData.check === 'number_format' && defData.format === 'safeint') {\n // z.int() - safe integer\n result = coerceToInteger(num);\n recordChange(report, path, value, result, `${getKind(value)}->number`);\n return result;\n }\n if (defData.check === 'number_format' && defData.format === 'int32') {\n // z.int32() - 32-bit integer\n result = coerceToInt32(num);\n recordChange(report, path, value, result, `${getKind(value)}->number`);\n return result;\n }\n\n recordChange(report, path, value, result, `${getKind(value)}->number`);\n return result;\n }\n\n if (typeName === ZodType.BOOLEAN) {\n const coerced = coerceToBoolean(value);\n recordChange(report, path, value, coerced, `${getKind(value)}->boolean`);\n return coerced;\n }\n\n if (typeName === ZodType.DATE) {\n const coerced = coerceToDate(value);\n recordChange(report, path, value, coerced, `${getKind(value)}->date`);\n return coerced;\n }\n\n if (typeName === ZodType.BIGINT) {\n const coerced = coerceToBigInt(value);\n recordChange(report, path, value, coerced, `${getKind(value)}->bigint`);\n return coerced;\n }\n\n if (typeName === ZodType.NULL) {\n const coerced = coerceToNull(value);\n recordChange(report, path, value, coerced, `${getKind(value)}->null`);\n return coerced;\n }\n\n if (typeName === ZodType.NAN) {\n const coerced = coerceToNaN(value);\n recordChange(report, path, value, coerced, `${getKind(value)}->nan`);\n return coerced;\n }\n\n if (typeName === ZodType.ANY || typeName === ZodType.UNKNOWN) {\n // Pass through as-is\n return value;\n }\n\n if (typeName === ZodType.CUSTOM) {\n return coerceCustomSchema(schema, value, tracker, report, path);\n }\n\n if (typeName === ZodType.NEVER) {\n throw new Error('Cannot coerce to never type');\n }\n\n // Array\n if (typeName === ZodType.ARRAY) {\n const elementSchema = (schema._def as any).element;\n const coerced = coerceToArray(\n value,\n elementSchema,\n (index, v, t) => coerceValue(elementSchema, v, t, report, [...path, index]),\n tracker,\n );\n recordContainerChange(report, path, value, coerced);\n return coerced;\n }\n\n // Object\n if (typeName === ZodType.OBJECT) {\n const shape = (schema._def as any).shape;\n const coerced = coerceToObject(\n value,\n shape,\n (key, v, t) => {\n if (key in shape) {\n return coerceValue(shape[key], v, t, report, [...path, key]);\n }\n return v;\n },\n tracker,\n );\n recordContainerChange(report, path, value, coerced);\n return coerced;\n }\n\n // Tuple\n if (typeName === ZodType.TUPLE) {\n const items = (schema._def as any).items;\n const coerced = coerceToTuple(\n value,\n items,\n (index, v, t) => coerceValue(items[index], v, t, report, [...path, index]),\n tracker,\n );\n recordContainerChange(report, path, value, coerced);\n return coerced;\n }\n\n // Record\n if (typeName === ZodType.RECORD) {\n const valueType = (schema._def as any).valueType;\n const coerced = coerceToRecord(\n value,\n valueType,\n (key, v, t) => coerceValue(valueType, v, t, report, [...path, key]),\n tracker,\n );\n recordContainerChange(report, path, value, coerced);\n return coerced;\n }\n\n // Enum\n if (typeName === ZodType.ENUM) {\n const defData = schema._def as any;\n const entries = defData.entries;\n\n // Determine if this is a numeric enum by checking if any value is a number\n const allValues = Object.values(entries);\n const hasNumbers = allValues.some((v) => typeof v === 'number');\n\n // For numeric enums, Zod only validates against the numeric values\n // Filter to only numeric values if it's a numeric enum\n const validValues = hasNumbers\n ? allValues.filter((v) => typeof v === 'number')\n : Array.from(new Set(allValues));\n\n const coerced = coerceToEnum(value, validValues, entries);\n recordChange(report, path, value, coerced, `${getKind(value)}->enum`);\n return coerced;\n }\n\n // Literal\n if (typeName === ZodType.LITERAL) {\n const defData = schema._def as any;\n const literalValue = defData.values[0];\n const coerced = coerceToLiteral(value, literalValue);\n recordChange(report, path, value, coerced, `${getKind(value)}->literal`);\n return coerced;\n }\n\n // Discriminated Union (check before regular union, as discriminated unions have type === \"union\" in Zod v4)\n if (typeName === ZodType.UNION && (schema._def as any).discriminator) {\n const discriminator = (schema._def as any).discriminator;\n const options = (schema._def as any).options;\n return coerceToDiscriminatedUnion(\n value,\n discriminator,\n options,\n (index, v, t) => coerceValue(options[index], v, t, report, path),\n tracker,\n );\n }\n\n // Union\n if (typeName === ZodType.UNION) {\n const options = (schema._def as any).options;\n return coerceToUnion(\n value,\n options,\n (index, v, t) => coerceValue(options[index], v, t, report, path),\n tracker,\n );\n }\n\n // Intersection\n if (typeName === ZodType.INTERSECTION) {\n const left = (schema._def as any).left;\n const right = (schema._def as any).right;\n return coerceToIntersection(\n value,\n left,\n right,\n (v, t) => coerceValue(left, v, t, report, path),\n (v, t) => coerceValue(right, v, t, report, path),\n tracker,\n );\n }\n\n // Map\n if (typeName === ZodType.MAP) {\n const keyType = (schema._def as any).keyType;\n const valueType = (schema._def as any).valueType;\n const coerced = coerceToMap(\n value,\n keyType,\n valueType,\n (v, t) => coerceValue(keyType, v, t),\n (v, t) => coerceValue(valueType, v, t),\n tracker,\n );\n recordContainerChange(report, path, value, coerced);\n return coerced;\n }\n\n // Set\n if (typeName === ZodType.SET) {\n const coerced = coerceSetSchema(value, schema, tracker, report, path);\n recordContainerChange(report, path, value, coerced);\n return coerced;\n }\n\n // Fallback: return as-is\n return value;\n}\n\nfunction coerceSetSchema(\n value: unknown,\n schema: z.ZodTypeAny,\n tracker: CircularTracker,\n report?: CanonizeReport,\n path: CanonizePath = [],\n) {\n const valueType = (schema._def as any).valueType;\n return coerceToSet(\n value,\n valueType,\n (v, t) => coerceValue(valueType, v, t, report, path),\n tracker,\n );\n}\n\nfunction coerceCustomSchema(\n schema: z.ZodTypeAny,\n value: unknown,\n tracker: CircularTracker,\n report?: CanonizeReport,\n path: CanonizePath = [],\n) {\n const defData = schema._def as any;\n const predicate = typeof defData?.fn === 'function' ? defData.fn : null;\n\n if (!predicate) {\n return value;\n }\n\n const attempts: Array<{ via: string; attempt: () => unknown }> = [\n { via: 'custom', attempt: () => value },\n { via: 'date', attempt: () => coerceToDate(value) },\n { via: 'number', attempt: () => coerceToNumber(value) },\n { via: 'bigint', attempt: () => coerceToBigInt(value) },\n { via: 'boolean', attempt: () => coerceToBoolean(value) },\n { via: 'string', attempt: () => coerceToString(value, tracker) },\n ];\n\n for (const { attempt, via } of attempts) {\n let coerced: unknown;\n\n try {\n coerced = attempt();\n } catch {\n continue;\n }\n\n try {\n if (predicate(coerced)) {\n recordChange(report, path, value, coerced, `custom:${via}`);\n return coerced;\n }\n } catch {\n continue;\n }\n }\n\n return value;\n}\n\nexport type CanonizeSchema<T extends z.ZodTypeAny> = T & {};\n\nfunction isZodSchema(value: unknown): value is z.ZodTypeAny {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as any).safeParse === 'function'\n );\n}\n\ntype CanonizeNormalizedSchema<T extends z.ZodTypeAny | z.ZodRawShape> =\n T extends z.ZodTypeAny ? T : T extends z.ZodRawShape ? z.ZodObject<T> : z.ZodTypeAny;\n\nfunction normalizeSchema<T extends z.ZodTypeAny | z.ZodRawShape>(\n schema: T,\n): CanonizeNormalizedSchema<T> {\n return (isZodSchema(schema) ? schema : z.object(schema)) as CanonizeNormalizedSchema<T>;\n}\n\n/**\n * Wrap a Zod schema with aggressive type coercion.\n *\n * This is the main export of the canonize library. It takes any Zod schema\n * and returns a new schema that will automatically coerce inputs to the\n * expected types before validation.\n *\n * @example\n * ```typescript\n * import { canonize } from 'canonize';\n * import { z } from 'zod';\n *\n * const schema = canonize(z.object({\n * name: z.string(),\n * age: z.number(),\n * active: z.boolean()\n * }));\n *\n * // All of these will succeed:\n * schema.parse({ name: 'Alice', age: '30', active: 'yes' });\n * schema.parse({ name: 123, age: 30, active: 1 });\n * schema.parse({ name: ['Alice'], age: '30.5', active: 'true' });\n * ```\n *\n * Overloads preserve specific Zod types (e.g., ZodObject) so callers\n * retain exact schema types without needing casts.\n */\n// Raw shape\nexport function canonize<T extends z.ZodRawShape>(schema: T): z.ZodObject<T>;\n// Object\nexport function canonize<T extends z.ZodObject<any>>(schema: T): T;\n// Array\nexport function canonize<T extends z.ZodArray<any>>(schema: T): T;\n// Record\nexport function canonize<T extends z.ZodRecord<any, any>>(schema: T): T;\n// Tuple\nexport function canonize<T extends z.ZodTuple<any, any>>(schema: T): T;\n// Map\nexport function canonize<T extends z.ZodMap<any, any>>(schema: T): T;\n// Set\nexport function canonize<T extends z.ZodSet<any>>(schema: T): T;\n// Union\nexport function canonize<T extends z.ZodUnion<any>>(schema: T): T;\n// Discriminated Union\nexport function canonize<T extends z.ZodDiscriminatedUnion<any, any>>(schema: T): T;\n// Intersection\nexport function canonize<T extends z.ZodIntersection<any, any>>(schema: T): T;\n// Primitives\nexport function canonize<T extends z.ZodString>(schema: T): T;\nexport function canonize<T extends z.ZodNumber>(schema: T): T;\nexport function canonize<T extends z.ZodBoolean>(schema: T): T;\nexport function canonize<T extends z.ZodBigInt>(schema: T): T;\nexport function canonize<T extends z.ZodDate>(schema: T): T;\nexport function canonize<T extends z.ZodNull>(schema: T): T;\nexport function canonize<T extends z.ZodNaN>(schema: T): T;\nexport function canonize<T extends z.ZodTypeAny>(schema: T): CanonizeSchema<T>;\nexport function canonize<T extends z.ZodTypeAny | z.ZodRawShape>(schema: T): any {\n const normalizedSchema = normalizeSchema(schema);\n\n // Use preprocess to coerce BEFORE validation\n const preprocessed = z.preprocess((value) => {\n try {\n return coerceValue(normalizedSchema, value);\n } catch (error) {\n // Re-throw circular reference errors\n if (error instanceof Error && error.message.includes('Circular reference')) {\n throw error;\n }\n // For other coercion failures, return the original value\n // and let Zod validation handle it\n return value;\n }\n }, normalizedSchema);\n\n return preprocessed as any;\n}\n\nexport function coerceWithReport<T extends z.ZodTypeAny | z.ZodRawShape>(\n schema: T,\n value: unknown,\n): { value: unknown; report: CanonizeReport } {\n const normalizedSchema = normalizeSchema(schema);\n const report: CanonizeReport = { warnings: [], cost: 0 };\n let coerced: unknown;\n\n try {\n coerced = coerceValue(normalizedSchema, value, new CircularTracker(), report);\n } catch (error) {\n if (error instanceof Error && error.message.includes('Circular reference')) {\n throw error;\n }\n coerced = value;\n }\n\n report.cost = report.warnings.length;\n return { value: coerced, report };\n}\n\nexport function safeParseWithReport<T extends z.ZodTypeAny | z.ZodRawShape>(\n schema: T,\n value: unknown,\n): CanonizeSafeParseResult<z.infer<CanonizeNormalizedSchema<T>>> {\n const normalizedSchema = normalizeSchema(schema);\n const { value: coerced, report } = coerceWithReport(normalizedSchema, value);\n const parsed = (normalizedSchema as z.ZodTypeAny).safeParse(coerced);\n\n if (parsed.success) {\n return {\n success: true,\n data: parsed.data as z.infer<CanonizeNormalizedSchema<T>>,\n report,\n };\n }\n return { success: false, error: parsed.error, report };\n}\n\nexport function createRepairHints(\n error: z.ZodError,\n options: { rootLabel?: string } = {},\n): CanonizeRepairHint[] {\n const rootLabel = options.rootLabel ?? 'input';\n return error.issues.map((issue) => {\n const safePath = issue.path.filter(\n (segment): segment is string | number =>\n typeof segment === 'string' || typeof segment === 'number',\n );\n const path = formatPath(safePath, rootLabel);\n return {\n path,\n message: issue.message,\n suggestion: buildSuggestion(issue, path),\n };\n });\n}\n\nfunction formatPath(path: CanonizePath, rootLabel: string): string {\n if (!path.length) return rootLabel;\n let result = '';\n for (const segment of path) {\n if (typeof segment === 'number') {\n result += `[${segment}]`;\n continue;\n }\n result = result ? `${result}.${segment}` : segment;\n }\n return result;\n}\n\nfunction buildSuggestion(issue: z.ZodIssue, pathLabel: string): string {\n const issueData = issue as any;\n const expected = issueData?.expected;\n\n if (issue.code === 'invalid_type') {\n if (/received undefined/i.test(issue.message)) {\n return `Add required field ${pathLabel}.`;\n }\n if (expected) {\n return `Provide a ${expected} for ${pathLabel}.`;\n }\n return `Provide a valid value for ${pathLabel}.`;\n }\n\n if (issue.code === 'invalid_value' && Array.isArray(issueData?.values)) {\n return `Use one of ${issueData.values.join(', ')} for ${pathLabel}.`;\n }\n\n if (issue.code === 'too_small') {\n const minimum = issueData?.minimum;\n if (issueData?.origin === 'string') {\n return `Provide a longer string for ${pathLabel} (min ${minimum}).`;\n }\n if (issueData?.origin === 'array') {\n return `Provide at least ${minimum} item(s) for ${pathLabel}.`;\n }\n if (issueData?.origin === 'number') {\n return `Provide a number >= ${minimum} for ${pathLabel}.`;\n }\n }\n\n if (issue.code === 'too_big') {\n const maximum = issueData?.maximum;\n if (issueData?.origin === 'string') {\n return `Provide a shorter string for ${pathLabel} (max ${maximum}).`;\n }\n if (issueData?.origin === 'array') {\n return `Provide no more than ${maximum} item(s) for ${pathLabel}.`;\n }\n if (issueData?.origin === 'number') {\n return `Provide a number <= ${maximum} for ${pathLabel}.`;\n }\n }\n\n if (issue.code === 'invalid_union') {\n return `Provide a value that matches one of the supported shapes for ${pathLabel}.`;\n }\n\n return issue.message;\n}\n",
6
6
  "/**\n * Circular reference tracker using WeakSet\n */\nexport class CircularTracker {\n private seen = new WeakSet<object>();\n\n /**\n * Check if object has been seen before\n */\n has(obj: object): boolean {\n return this.seen.has(obj);\n }\n\n /**\n * Mark object as seen\n */\n add(obj: object): void {\n this.seen.add(obj);\n }\n\n /**\n * Create a child tracker (for nested coercion)\n */\n child(): CircularTracker {\n const child = new CircularTracker();\n // Copy parent's seen objects to child\n return child;\n }\n}\n\n/**\n * Check if a value can have circular references\n */\nexport function canBeCircular(value: unknown): value is object {\n return typeof value === 'object' && value !== null;\n}\n\n/**\n * Throw error for circular reference\n */\nexport function throwCircular(): never {\n throw new Error('Circular reference detected');\n}\n",
7
7
  "/**\n * Try to parse a JSON string\n */\nexport function tryParseJSON(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n}\n\n/**\n * Try to parse a delimited string to array (CSV, semicolon, pipe)\n */\nexport function tryParseCSV(value: string): string[] | null {\n // Try comma first\n if (value.includes(',')) {\n return value.split(',').map((s) => s.trim());\n }\n // Try semicolon\n if (value.includes(';')) {\n return value.split(';').map((s) => s.trim());\n }\n // Try pipe\n if (value.includes('|')) {\n return value.split('|').map((s) => s.trim());\n }\n return null;\n}\n\n/**\n * Try to parse a hex/octal/binary number string\n */\nexport function tryParseSpecialNumber(value: string): number | null {\n const trimmed = value.trim();\n\n // Hex: 0x or 0X\n if (/^0x[0-9a-f]+$/i.test(trimmed)) {\n return parseInt(trimmed, 16);\n }\n\n // Octal: 0o or 0O\n if (/^0o[0-7]+$/i.test(trimmed)) {\n return parseInt(trimmed.slice(2), 8);\n }\n\n // Binary: 0b or 0B\n if (/^0b[01]+$/i.test(trimmed)) {\n return parseInt(trimmed.slice(2), 2);\n }\n\n return null;\n}\n\n/**\n * Try to parse a string to number\n */\nexport function tryParseNumber(value: string): number | null {\n // Try special formats first\n const special = tryParseSpecialNumber(value);\n if (special !== null) return special;\n\n // Try regular number parsing\n const trimmed = value.trim();\n if (trimmed === '') return null;\n\n const num = Number(trimmed);\n if (isNaN(num)) return null;\n\n return num;\n}\n\n/**\n * Check if a string looks like a boolean\n */\nexport function isBooleanLikeString(value: string): boolean {\n const lower = value.trim().toLowerCase();\n return (\n lower === 'true' ||\n lower === 'false' ||\n lower === 'yes' ||\n lower === 'no' ||\n lower === 'on' ||\n lower === 'off' ||\n lower === 'y' ||\n lower === 'n' ||\n lower === 't' ||\n lower === 'f' ||\n lower === 'enabled' ||\n lower === 'disabled' ||\n lower === '1' ||\n lower === '0'\n );\n}\n\n/**\n * Normalize a string for case-insensitive comparison\n */\nexport function normalizeString(value: string): string {\n return value.trim().toLowerCase();\n}\n\n/**\n * Check if value is falsy for null coercion\n */\nexport function isFalsyForNull(value: unknown): boolean {\n if (value === null) return true;\n if (value === undefined) return true;\n if (value === false) return true;\n if (value === 0) return true;\n if (Object.is(value, -0)) return true;\n if (value === '') return true;\n if (typeof value === 'bigint' && value === 0n) return true;\n\n // String variations of null/undefined (case-insensitive)\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'null' || normalized === 'undefined') return true;\n }\n\n // Empty array\n if (Array.isArray(value) && value.length === 0) return true;\n\n // Empty object\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const keys = Object.keys(value);\n if (keys.length === 0) return true;\n }\n\n return false;\n}\n",
8
8
  "// Boolean string values for stringbool logic\nexport const TRUTHY_STRINGS = ['true', 'yes', 'on', 'y', 't', 'enabled', '1'];\n\nexport const FALSY_STRINGS = ['false', 'no', 'off', 'n', 'f', 'disabled', '0'];\n\n// Zod type names for schema detection (Zod v4 uses lowercase types)\nexport const ZodType = {\n STRING: 'string',\n NUMBER: 'number',\n BOOLEAN: 'boolean',\n DATE: 'date',\n BIGINT: 'bigint',\n NULL: 'null',\n UNDEFINED: 'undefined',\n NAN: 'nan',\n ARRAY: 'array',\n OBJECT: 'object',\n TUPLE: 'tuple',\n RECORD: 'record',\n ENUM: 'enum',\n NATIVE_ENUM: 'nativeEnum',\n LITERAL: 'literal',\n UNION: 'union',\n DISCRIMINATED_UNION: 'discriminatedUnion',\n INTERSECTION: 'intersection',\n MAP: 'map',\n SET: 'set',\n OPTIONAL: 'optional',\n NULLABLE: 'nullable',\n DEFAULT: 'default',\n CATCH: 'catch',\n LAZY: 'lazy',\n READONLY: 'readonly',\n BRANDED: 'branded',\n ANY: 'any',\n UNKNOWN: 'unknown',\n NEVER: 'never',\n CUSTOM: 'custom',\n} as const;\n",
9
9
  "import * as z from 'zod';\n\nimport { ZodType } from '../constants.js';\n\n/**\n * Get the Zod type name from a schema (Zod v4 uses _def.type)\n */\nexport function getZodTypeName(schema: z.ZodTypeAny): string {\n const candidates = [\n (schema._def as any).type,\n (schema._def as any).typeName,\n (schema as any).type,\n ];\n const rawType = candidates.find((candidate) => typeof candidate === 'string') ?? '';\n\n const withoutPrefix = rawType.replace(/^Zod/i, '');\n const lower = withoutPrefix.toLowerCase();\n const mapped: Record<string, string> = {\n nativeenum: ZodType.NATIVE_ENUM,\n discriminatedunion: ZodType.DISCRIMINATED_UNION,\n };\n\n return mapped[lower] ?? lower;\n}\n\n/**\n * Check if a schema is a specific Zod type\n */\nexport function isZodType(schema: z.ZodTypeAny, typeName: string): boolean {\n return getZodTypeName(schema) === typeName;\n}\n\n/**\n * Unwrap a schema from optional/nullable/default/catch wrappers\n */\nexport function unwrapSchema(schema: z.ZodTypeAny): z.ZodTypeAny {\n const typeName = getZodTypeName(schema);\n\n if (typeName === ZodType.OPTIONAL || typeName === ZodType.NULLABLE) {\n return unwrapSchema((schema._def as any).innerType);\n }\n\n if (typeName === ZodType.DEFAULT) {\n return unwrapSchema((schema._def as any).innerType);\n }\n\n if (typeName === ZodType.CATCH) {\n return unwrapSchema((schema._def as any).innerType);\n }\n\n if (typeName === ZodType.READONLY) {\n return unwrapSchema((schema._def as any).innerType);\n }\n\n return schema;\n}\n\n/**\n * Check if value is a plain object (not Date, Array, Map, Set, etc.)\n */\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null) return false;\n if (Array.isArray(value)) return false;\n if (value instanceof Date) return false;\n if (value instanceof Map) return false;\n if (value instanceof Set) return false;\n if (value instanceof RegExp) return false;\n if (value instanceof Error) return false;\n if (ArrayBuffer.isView(value)) return false; // TypedArrays\n\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\n/**\n * Check if value is an array-like object\n */\nexport function isArrayLike(value: unknown): boolean {\n if (!isPlainObject(value)) return false;\n const obj = value;\n return typeof obj['length'] === 'number' && obj['length'] >= 0;\n}\n\n/**\n * Check if value is iterable\n */\nexport function isIterable(value: unknown): value is Iterable<unknown> {\n if (value == null) return false;\n return typeof (value as any)[Symbol.iterator] === 'function';\n}\n",
10
- "import * as z from 'zod';\n\nimport { canBeCircular, CircularTracker, throwCircular } from '../utilities/circular.js';\nimport { tryParseCSV, tryParseJSON } from '../utilities/parsers.js';\nimport { isArrayLike, isPlainObject } from '../utilities/type-detection.js';\n\n/**\n * Coerce value to array with element type coercion\n */\nexport function coerceToArray(\n value: unknown,\n _elementSchema: z.ZodTypeAny,\n coerceElement: (v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): unknown[] {\n // null → empty array\n if (value === null) return [];\n\n // Check circular reference\n if (canBeCircular(value) && tracker.has(value)) {\n throwCircular();\n }\n\n // Already an array\n if (Array.isArray(value)) {\n tracker.add(value);\n // Use for loop to preserve sparse arrays (holes)\n const result: unknown[] = [];\n for (let i = 0; i < value.length; i++) {\n if (i in value) {\n // Check for circular reference before coercing element\n if (canBeCircular(value[i]) && tracker.has(value[i])) {\n throwCircular();\n }\n result[i] = coerceElement(value[i], tracker);\n }\n // Leave holes as undefined (sparse)\n }\n return result;\n }\n\n // Mark as seen\n if (canBeCircular(value)) {\n tracker.add(value);\n }\n\n // String: try JSON, CSV, or single value\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string → empty array\n if (trimmed === '') return [];\n\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (Array.isArray(json)) {\n return json.map((v) => coerceElement(v, tracker));\n }\n\n // Try CSV\n const csv = tryParseCSV(trimmed);\n if (csv) {\n return csv.map((v) => coerceElement(v, tracker));\n }\n\n // Single value\n return [coerceElement(trimmed, tracker)];\n }\n\n // Set → array\n if (value instanceof Set) {\n return Array.from(value).map((v) => coerceElement(v, tracker));\n }\n\n // Map → array of values\n if (value instanceof Map) {\n return Array.from(value.values()).map((v) => coerceElement(v, tracker));\n }\n\n // TypedArray → array\n if (ArrayBuffer.isView(value)) {\n return Array.from(value as any).map((v) => coerceElement(v, tracker));\n }\n\n // Array-like object → array\n if (isArrayLike(value)) {\n const obj = value as any;\n const length = obj.length;\n const result: unknown[] = [];\n for (let i = 0; i < length; i++) {\n if (i in obj) {\n result[i] = coerceElement(obj[i], tracker);\n }\n // Leave holes as undefined (sparse)\n }\n return result;\n }\n\n // Plain object → array of values\n if (isPlainObject(value)) {\n const values = Object.values(value);\n return values.map((v) => coerceElement(v, tracker));\n }\n\n // Single value → array with one element\n return [coerceElement(value, tracker)];\n}\n",
10
+ "import * as z from 'zod';\n\nimport { canBeCircular, CircularTracker, throwCircular } from '../utilities/circular.js';\nimport { tryParseCSV, tryParseJSON } from '../utilities/parsers.js';\nimport { isArrayLike, isPlainObject } from '../utilities/type-detection.js';\n\n/**\n * Coerce value to array with element type coercion\n */\nexport function coerceToArray(\n value: unknown,\n _elementSchema: z.ZodTypeAny,\n coerceElement: (index: number, v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): unknown[] {\n // null → empty array\n if (value === null) return [];\n\n // Check circular reference\n if (canBeCircular(value) && tracker.has(value)) {\n throwCircular();\n }\n\n // Already an array\n if (Array.isArray(value)) {\n tracker.add(value);\n // Use for loop to preserve sparse arrays (holes)\n const result: unknown[] = [];\n for (let i = 0; i < value.length; i++) {\n if (i in value) {\n // Check for circular reference before coercing element\n if (canBeCircular(value[i]) && tracker.has(value[i])) {\n throwCircular();\n }\n result[i] = coerceElement(i, value[i], tracker);\n }\n // Leave holes as undefined (sparse)\n }\n return result;\n }\n\n // Mark as seen\n if (canBeCircular(value)) {\n tracker.add(value);\n }\n\n // String: try JSON, CSV, or single value\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string → empty array\n if (trimmed === '') return [];\n\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (Array.isArray(json)) {\n return json.map((v, index) => coerceElement(index, v, tracker));\n }\n\n // Try CSV\n const csv = tryParseCSV(trimmed);\n if (csv) {\n return csv.map((v, index) => coerceElement(index, v, tracker));\n }\n\n // Single value\n return [coerceElement(0, trimmed, tracker)];\n }\n\n // Set → array\n if (value instanceof Set) {\n return Array.from(value).map((v, index) => coerceElement(index, v, tracker));\n }\n\n // Map → array of values\n if (value instanceof Map) {\n return Array.from(value.values()).map((v, index) => coerceElement(index, v, tracker));\n }\n\n // TypedArray → array\n if (ArrayBuffer.isView(value)) {\n return Array.from(value as any).map((v, index) => coerceElement(index, v, tracker));\n }\n\n // Array-like object → array\n if (isArrayLike(value)) {\n const obj = value as any;\n const length = obj.length;\n const result: unknown[] = [];\n for (let i = 0; i < length; i++) {\n if (i in obj) {\n result[i] = coerceElement(i, obj[i], tracker);\n }\n // Leave holes as undefined (sparse)\n }\n return result;\n }\n\n // Plain object → array of values\n if (isPlainObject(value)) {\n const values = Object.values(value);\n return values.map((v, index) => coerceElement(index, v, tracker));\n }\n\n // Single value → array with one element\n return [coerceElement(0, value, tracker)];\n}\n",
11
11
  "/**\n * Try to extract a primitive value from an object using special methods\n * Priority: Symbol.toPrimitive > toJSON > toString > valueOf\n */\nexport function extractPrimitiveValue(\n value: unknown,\n hint: 'string' | 'number' | 'default' = 'default',\n): unknown {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n\n const obj = value as any;\n\n // Special case: Date objects should use toJSON (ISO string) for consistency\n if (value instanceof Date && typeof obj.toJSON === 'function') {\n try {\n return obj.toJSON();\n } catch {\n // Continue to next method\n }\n }\n\n // 1. Symbol.toPrimitive (highest priority for non-Date objects)\n if (Symbol.toPrimitive in obj) {\n try {\n return obj[Symbol.toPrimitive](hint);\n } catch {\n // Continue to next method\n }\n }\n\n // 2. toJSON\n if (typeof obj.toJSON === 'function') {\n try {\n return obj.toJSON();\n } catch {\n // Continue to next method\n }\n }\n\n // 3. toString (prefer for string hint)\n if (hint === 'string' && typeof obj.toString === 'function') {\n try {\n const result = obj.toString();\n if (result !== '[object Object]') {\n return result;\n }\n } catch {\n // Continue to next method\n }\n }\n\n // 4. valueOf\n if (typeof obj.valueOf === 'function') {\n try {\n const result = obj.valueOf();\n if (result !== obj) {\n // valueOf returned a primitive\n return result;\n }\n } catch {\n // Continue to next method\n }\n }\n\n // 5. toString as fallback\n if (hint !== 'string' && typeof obj.toString === 'function') {\n try {\n const result = obj.toString();\n if (result !== '[object Object]') {\n return result;\n }\n } catch {\n // Continue\n }\n }\n\n return value;\n}\n\n/**\n * Check if object has a specific special method\n */\nexport function hasSpecialMethod(value: unknown, method: string): boolean {\n if (typeof value !== 'object' || value === null) return false;\n return typeof (value as any)[method] === 'function';\n}\n\n/**\n * Try to get a Date value from an object using getTime() or toISOString()\n */\nexport function extractDateValue(value: unknown): Date | null {\n if (value instanceof Date) return value;\n if (typeof value !== 'object' || value === null) return null;\n\n const obj = value as any;\n\n // Try getTime() method\n if (typeof obj.getTime === 'function') {\n try {\n const time = obj.getTime();\n if (typeof time === 'number' && !isNaN(time)) {\n return new Date(time);\n }\n } catch {\n // Continue\n }\n }\n\n // Try toISOString() method\n if (typeof obj.toISOString === 'function') {\n try {\n const iso = obj.toISOString();\n const date = new Date(iso);\n if (!isNaN(date.getTime())) {\n return date;\n }\n } catch {\n // Continue\n }\n }\n\n return null;\n}\n",
12
12
  "import { tryParseJSON } from '../utilities/parsers.js';\nimport { extractPrimitiveValue } from '../utilities/special-methods.js';\n\n/**\n * Coerce any value to BigInt\n */\nexport function coerceToBigInt(value: unknown): bigint {\n // Already a BigInt\n if (typeof value === 'bigint') return value;\n\n // Function/Symbol cannot be coerced to BigInt\n if (typeof value === 'function') {\n throw new Error('Cannot convert function to BigInt');\n }\n if (typeof value === 'symbol') {\n throw new Error('Cannot convert symbol to BigInt');\n }\n\n // Number\n if (typeof value === 'number') {\n // NaN, Infinity not allowed\n if (!isFinite(value)) {\n throw new Error('Cannot convert NaN or Infinity to BigInt');\n }\n\n // Truncate to integer\n return BigInt(Math.trunc(value));\n }\n\n // Boolean\n if (typeof value === 'boolean') return value ? 1n : 0n;\n\n // String\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string → 0n\n if (trimmed === '') return 0n;\n\n // Try parsing as BigInt\n try {\n return BigInt(trimmed);\n } catch {\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (json !== null) {\n return coerceToBigInt(json);\n }\n\n throw new Error(`Cannot convert \"${trimmed}\" to BigInt`);\n }\n }\n\n // Array\n if (Array.isArray(value)) {\n // Empty array → 0n\n if (value.length === 0) return 0n;\n\n // Single or multiple elements → coerce first element\n return coerceToBigInt(value[0]);\n }\n\n // null/undefined\n if (value === null) return 0n;\n if (value === undefined) {\n throw new Error('Cannot convert undefined to BigInt');\n }\n\n // Try special methods\n const extracted = extractPrimitiveValue(value, 'number');\n if (typeof extracted === 'bigint') return extracted;\n if (typeof extracted !== 'object' || extracted === null) {\n return coerceToBigInt(extracted);\n }\n\n throw new Error('Cannot convert object to BigInt');\n}\n",
13
13
  "import { FALSY_STRINGS, TRUTHY_STRINGS } from '../constants.js';\nimport { normalizeString } from '../utilities/parsers.js';\nimport { extractPrimitiveValue } from '../utilities/special-methods.js';\n\n/**\n * Coerce any value to boolean\n */\nexport function coerceToBoolean(value: unknown): boolean {\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'function' || typeof value === 'symbol') {\n return true;\n }\n\n if (value === null || value === undefined) {\n return false;\n }\n\n if (typeof value === 'number') {\n if (value === 0 || Object.is(value, -0) || isNaN(value)) {\n return false;\n }\n return true;\n }\n\n if (typeof value === 'bigint') {\n return value !== 0n;\n }\n\n if (typeof value === 'string') {\n const normalized = normalizeString(value);\n if (normalized === '') {\n return false;\n }\n if (TRUTHY_STRINGS.includes(normalized)) {\n return true;\n }\n if (FALSY_STRINGS.includes(normalized)) {\n return false;\n }\n throw new Error(`Cannot coerce string \"${value}\" to boolean`);\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return false;\n }\n if (value.length === 1) {\n return coerceToBoolean(value[0]);\n }\n return true;\n }\n\n const extracted = extractPrimitiveValue(value, 'default');\n if (typeof extracted === 'boolean') {\n return extracted;\n }\n if (typeof extracted !== 'object' || extracted === null) {\n return coerceToBoolean(extracted);\n }\n return Object.keys(value as Record<string, unknown>).length > 0;\n}\n",
@@ -22,12 +22,12 @@
22
22
  "/**\n * Coerce value to NaN (only accepts values that should be NaN)\n */\nexport function coerceToNaN(value: unknown): number {\n // Already NaN\n if (typeof value === 'number' && isNaN(value)) return NaN;\n\n // undefined → NaN\n if (value === undefined) return NaN;\n\n // Functions and Symbols → NaN (align with Number(fn) => NaN; Number(symbol) throws, treat as NaN)\n if (typeof value === 'function') return NaN;\n if (typeof value === 'symbol') return NaN;\n\n // String \"NaN\" or \"nan\"\n if (typeof value === 'string') {\n const trimmed = value.trim().toLowerCase();\n if (trimmed === 'nan') return NaN;\n\n // Try parsing as number, if it results in NaN, return NaN\n const num = Number(trimmed);\n if (isNaN(num)) return NaN;\n\n // Valid number → throw\n throw new Error('Cannot coerce valid number to NaN');\n }\n\n // Array/object → try converting to number, if NaN return NaN\n if (Array.isArray(value) || typeof value === 'object') {\n const num = Number(value as any);\n if (isNaN(num)) return NaN;\n\n throw new Error('Cannot coerce valid value to NaN');\n }\n\n // Actual number (not NaN) → throw\n throw new Error('Cannot coerce valid value to NaN');\n}\n",
23
23
  "import { isFalsyForNull } from '../utilities/parsers.js';\n\n/**\n * Coerce falsy values to null\n */\nexport function coerceToNull(value: unknown): null {\n // Already null\n if (value === null) return null;\n\n // Check if value is falsy for null coercion\n if (isFalsyForNull(value)) return null;\n\n // Non-falsy value → throw\n throw new Error('Cannot coerce non-falsy value to null');\n}\n",
24
24
  "import * as z from 'zod';\n\nimport { canBeCircular, CircularTracker, throwCircular } from '../utilities/circular.js';\nimport { tryParseJSON } from '../utilities/parsers.js';\nimport { extractPrimitiveValue } from '../utilities/special-methods.js';\nimport { isPlainObject } from '../utilities/type-detection.js';\n\n/**\n * Coerce value to object with property type coercion\n */\nexport function coerceToObject(\n value: unknown,\n shape: z.ZodRawShape,\n coerceProperty: (key: string, v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): Record<string, unknown> {\n // Check circular reference\n if (canBeCircular(value) && tracker.has(value)) {\n throwCircular();\n }\n\n // Mark as seen\n if (canBeCircular(value)) {\n tracker.add(value);\n }\n\n // Already a plain object\n if (isPlainObject(value)) {\n // Try special methods (toJSON, etc.) for plain objects\n const extracted = extractPrimitiveValue(value, 'default');\n if (extracted !== value) {\n // Special method returned something different, try coercing that\n return coerceToObject(extracted, shape, coerceProperty, tracker);\n }\n\n // Process as normal object\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = coerceProperty(key, val, tracker);\n }\n return result;\n }\n\n // String: try JSON parsing\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string → empty object\n if (trimmed === '') return {};\n\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (isPlainObject(json)) {\n return coerceToObject(json, shape, coerceProperty, tracker);\n }\n\n // Can't convert string to object\n throw new Error('Cannot convert string to object');\n }\n\n // Array → object (check before other object types to avoid toString coercion)\n if (Array.isArray(value)) {\n // Empty array → empty object\n if (value.length === 0) return {};\n\n // Array of [key, value] pairs → object\n if (value.every((item) => Array.isArray(item) && item.length === 2)) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of value) {\n const keyStr = String(key);\n result[keyStr] = coerceProperty(keyStr, val, tracker);\n }\n return result;\n }\n\n // Convert to object with numeric keys\n const result: Record<string, unknown> = {};\n value.forEach((val, i) => {\n const key = String(i);\n result[key] = coerceProperty(key, val, tracker);\n });\n return result;\n }\n\n // Map → object\n if (value instanceof Map) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of value.entries()) {\n const keyStr = String(key);\n result[keyStr] = coerceProperty(keyStr, val, tracker);\n }\n return result;\n }\n\n // Set → object with numeric indices\n if (value instanceof Set) {\n const result: Record<string, unknown> = {};\n let index = 0;\n for (const val of value) {\n const key = String(index);\n result[key] = coerceProperty(key, val, tracker);\n index++;\n }\n return result;\n }\n\n // null/undefined → empty object\n if (value === null || value === undefined) return {};\n\n // Other object types (Date, RegExp, etc.) → can't convert\n if (typeof value === 'object') {\n // Try to convert to plain object by enumerating properties\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n result[key] = coerceProperty(key, (value as any)[key], tracker);\n }\n return result;\n }\n\n throw new Error('Cannot convert primitive to object');\n}\n",
25
- "import * as z from 'zod';\n\nimport { canBeCircular, CircularTracker, throwCircular } from '../utilities/circular.js';\nimport { tryParseJSON } from '../utilities/parsers.js';\nimport { isPlainObject } from '../utilities/type-detection.js';\n\n/**\n * Coerce value to record (Record<K, V>) with value type coercion\n */\nexport function coerceToRecord(\n value: unknown,\n valueSchema: z.ZodTypeAny,\n coerceValue: (v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): Record<string, unknown> {\n // Check circular reference\n if (canBeCircular(value) && tracker.has(value)) {\n throwCircular();\n }\n\n // Mark as seen\n if (canBeCircular(value)) {\n tracker.add(value);\n }\n\n // Already a plain object\n if (isPlainObject(value)) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[key] = coerceValue(val, tracker);\n }\n return result;\n }\n\n // String: try JSON parsing\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string → empty object\n if (trimmed === '') return {};\n\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (isPlainObject(json)) {\n return coerceToRecord(json, valueSchema, coerceValue, tracker);\n }\n\n throw new Error('Cannot convert string to record');\n }\n\n // Array → record\n if (Array.isArray(value)) {\n // Empty array → empty record\n if (value.length === 0) return {};\n\n // Check if all elements are [key, value] pairs\n if (value.every((item) => Array.isArray(item) && item.length === 2)) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of value) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(key)] = coerceValue(val, tracker);\n }\n return result;\n }\n\n // Convert array to record with numeric keys\n const result: Record<string, unknown> = {};\n value.forEach((val, index) => {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(index)] = coerceValue(val, tracker);\n });\n return result;\n }\n\n // Map → record\n if (value instanceof Map) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of value.entries()) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(key)] = coerceValue(val, tracker);\n }\n return result;\n }\n\n // Set → record with numeric indices\n if (value instanceof Set) {\n const result: Record<string, unknown> = {};\n let index = 0;\n for (const val of value) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(index)] = coerceValue(val, tracker);\n index++;\n }\n return result;\n }\n\n // null/undefined → empty record\n if (value === null || value === undefined) return {};\n\n // Other object types → try to enumerate\n if (typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n const val = (value as any)[key];\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[key] = coerceValue(val, tracker);\n }\n return result;\n }\n\n throw new Error('Cannot convert primitive to record');\n}\n",
25
+ "import * as z from 'zod';\n\nimport { canBeCircular, CircularTracker, throwCircular } from '../utilities/circular.js';\nimport { tryParseJSON } from '../utilities/parsers.js';\nimport { isPlainObject } from '../utilities/type-detection.js';\n\n/**\n * Coerce value to record (Record<K, V>) with value type coercion\n */\nexport function coerceToRecord(\n value: unknown,\n valueSchema: z.ZodTypeAny,\n coerceValue: (key: string, v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): Record<string, unknown> {\n // Check circular reference\n if (canBeCircular(value) && tracker.has(value)) {\n throwCircular();\n }\n\n // Mark as seen\n if (canBeCircular(value)) {\n tracker.add(value);\n }\n\n // Already a plain object\n if (isPlainObject(value)) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[key] = coerceValue(key, val, tracker);\n }\n return result;\n }\n\n // String: try JSON parsing\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string → empty object\n if (trimmed === '') return {};\n\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (isPlainObject(json)) {\n return coerceToRecord(json, valueSchema, coerceValue, tracker);\n }\n\n throw new Error('Cannot convert string to record');\n }\n\n // Array → record\n if (Array.isArray(value)) {\n // Empty array → empty record\n if (value.length === 0) return {};\n\n // Check if all elements are [key, value] pairs\n if (value.every((item) => Array.isArray(item) && item.length === 2)) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of value) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(key)] = coerceValue(String(key), val, tracker);\n }\n return result;\n }\n\n // Convert array to record with numeric keys\n const result: Record<string, unknown> = {};\n value.forEach((val, index) => {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(index)] = coerceValue(String(index), val, tracker);\n });\n return result;\n }\n\n // Map → record\n if (value instanceof Map) {\n const result: Record<string, unknown> = {};\n for (const [key, val] of value.entries()) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(key)] = coerceValue(String(key), val, tracker);\n }\n return result;\n }\n\n // Set → record with numeric indices\n if (value instanceof Set) {\n const result: Record<string, unknown> = {};\n let index = 0;\n for (const val of value) {\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[String(index)] = coerceValue(String(index), val, tracker);\n index++;\n }\n return result;\n }\n\n // null/undefined → empty record\n if (value === null || value === undefined) return {};\n\n // Other object types → try to enumerate\n if (typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n const val = (value as any)[key];\n // Check for circular reference before coercing value\n if (canBeCircular(val) && tracker.has(val)) {\n throwCircular();\n }\n result[key] = coerceValue(key, val, tracker);\n }\n return result;\n }\n\n throw new Error('Cannot convert primitive to record');\n}\n",
26
26
  "import * as z from 'zod';\n\nimport { canBeCircular, CircularTracker, throwCircular } from '../utilities/circular.js';\nimport { tryParseCSV, tryParseJSON } from '../utilities/parsers.js';\nimport { isArrayLike } from '../utilities/type-detection.js';\n\n/**\n * Coerce value to tuple with element-specific type coercion\n */\nexport function coerceToTuple(\n value: unknown,\n items: z.ZodTypeAny[],\n coerceElement: (index: number, v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): unknown[] {\n // Check circular reference\n if (canBeCircular(value) && tracker.has(value)) {\n throwCircular();\n }\n\n // Already an array\n if (Array.isArray(value)) {\n tracker.add(value);\n const result: unknown[] = [];\n for (let i = 0; i < items.length; i++) {\n if (i < value.length) {\n result.push(coerceElement(i, value[i], tracker));\n } else {\n // Missing element, will be caught by Zod validation\n result.push(undefined);\n }\n }\n return result;\n }\n\n // Mark as seen\n if (canBeCircular(value)) {\n tracker.add(value);\n }\n\n // String: try JSON or CSV\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Empty string or 'null' -> empty tuple\n if (trimmed === '' || trimmed === 'null') {\n const result: unknown[] = [];\n for (let i = 0; i < items.length; i++) {\n result.push(undefined);\n }\n return result;\n }\n\n // Try JSON parsing\n const json = tryParseJSON(trimmed);\n if (Array.isArray(json)) {\n return coerceToTuple(json, items, coerceElement, tracker);\n }\n\n // Try CSV\n const csv = tryParseCSV(trimmed);\n if (csv) {\n return coerceToTuple(csv, items, coerceElement, tracker);\n }\n\n throw new Error('Cannot convert non-array string to tuple');\n }\n\n // null -> empty tuple\n if (value === null) {\n const result: unknown[] = [];\n for (let i = 0; i < items.length; i++) {\n result.push(undefined);\n }\n return result;\n }\n\n // Plain object (with or without length property)\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const obj = value as any;\n\n // Check if it's array-like (has length property)\n if (isArrayLike(value)) {\n const result: unknown[] = [];\n for (let i = 0; i < items.length; i++) {\n if (i in obj) {\n result.push(coerceElement(i, obj[i], tracker));\n } else {\n result.push(undefined);\n }\n }\n return result;\n }\n\n // Check if it has numeric keys matching tuple indices\n let hasNumericKeys = false;\n for (let i = 0; i < items.length; i++) {\n if (i in obj) {\n hasNumericKeys = true;\n break;\n }\n }\n\n if (hasNumericKeys)\n return items.map((_, i) =>\n i in obj ? coerceElement(i, obj[i], tracker) : undefined,\n );\n }\n\n throw new Error('Cannot convert non-array to tuple');\n}\n",
27
27
  "import * as z from 'zod';\n\nimport { CircularTracker } from '../utilities/circular.js';\n\n/**\n * Coerce value to union (tries coercion in order, with validation after each attempt)\n */\nexport function coerceToUnion(\n value: unknown,\n options: z.ZodTypeAny[],\n coerceOption: (index: number, v: unknown, tracker: CircularTracker) => unknown,\n tracker = new CircularTracker(),\n): unknown {\n // Strategy: prefer exact matches for primitives, then structural matches, then coerce by order\n // This balances exact match preservation, structural matching, and type order preference\n // 1. Check if primitive value matches any type exactly (preserve existing primitives)\n // 2. Check if value structurally matches any type (e.g., object matches object schema better than array)\n // 3. Try coercing to first type - if successful, use it\n // 4. Try coercing to remaining types in order\n\n const errors: Error[] = [];\n\n // Step 0a: For primitive values (except strings) and Date objects, check if they match any type exactly first\n // This prevents over-coercion (e.g., number 42 in string|number union should stay as number,\n // Date object in string|date union should stay as Date)\n // Strings are excluded because they're highly coercible and union order should take precedence\n const isPrimitive = typeof value !== 'object' || value === null;\n const isString = typeof value === 'string';\n const isDate = value instanceof Date;\n if ((isPrimitive && !isString) || isDate) {\n for (let i = 0; i < options.length; i++) {\n const directResult = options[i]!.safeParse(value);\n if (directResult.success) {\n return value;\n }\n }\n }\n\n // Step 0b: If value is a plain object (not Date, not other special objects) and one of the options is an object/record schema,\n // try the object/record schema first (before trying string coercion which would convert object to string)\n const objectCandidate = tryObjectFirstCoercion(value, options, tracker, coerceOption);\n if (objectCandidate !== undefined) {\n return objectCandidate;\n }\n\n // Step 0c: If value is an array and union contains array, try array first\n // This prevents arrays from being converted to strings prematurely\n if (Array.isArray(value)) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i]!;\n const type = (option._def as any)?.type || (option._def as any).typeName;\n if (type === 'array' || type === 'ZodArray') {\n try {\n const coerced = coerceOption(i, value, tracker);\n const coercedResult = options[i]!.safeParse(coerced);\n if (coercedResult.success) {\n return coerced;\n }\n } catch {\n // Continue to regular flow\n }\n }\n }\n }\n\n // Step 0d: If value is a string that looks like CSV/array and union contains array, try array first\n // This prevents '1,2,3' from being kept as string when it could be array\n if (typeof value === 'string' && value.trim() !== '') {\n const trimmed = value.trim();\n // Check if it looks like a CSV (has commas) or JSON array\n if (trimmed.includes(',') || (trimmed.startsWith('[') && trimmed.endsWith(']'))) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i]!;\n const type = (option._def as any)?.type || (option._def as any).typeName;\n if (type === 'array' || type === 'ZodArray') {\n try {\n const coerced = coerceOption(i, value, tracker);\n const coercedResult = options[i]!.safeParse(coerced);\n if (coercedResult.success) {\n return coerced;\n }\n } catch {\n // Continue to regular flow\n }\n }\n }\n }\n }\n\n // Step 0e: If value is a boolean-like string and union contains boolean, try boolean first\n // This prevents 'yes'/'true' from being kept as string when it could be boolean\n // But only for non-numeric boolean strings (avoid '1'/'0' which could be numbers or strings)\n if (typeof value === 'string' && value.trim() !== '') {\n const trimmed = value.trim().toLowerCase();\n // Non-numeric boolean strings only\n const nonNumericBooleanStrings = [\n 'true',\n 'false',\n 'yes',\n 'no',\n 'on',\n 'off',\n 'y',\n 'n',\n 't',\n 'f',\n 'enabled',\n 'disabled',\n ];\n if (nonNumericBooleanStrings.includes(trimmed)) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i]!;\n const type = (option._def as any)?.type || (option._def as any).typeName;\n if (type === 'boolean') {\n try {\n const coerced = coerceOption(i, value, tracker);\n const coercedResult = options[i]!.safeParse(coerced);\n if (coercedResult.success) {\n return coerced;\n }\n } catch {\n // Continue to regular flow\n }\n }\n }\n }\n }\n\n // Step 1: Try coercing to first type (aggressive coercion to preferred type)\n if (options.length > 0) {\n const attempt = executeUnionAttempt(0, value, options, tracker, coerceOption);\n if (attempt.status === 'success') {\n return attempt.value;\n }\n if (attempt.status === 'validation') {\n errors.push(new Error(`Coercion to first type failed validation`));\n } else if (attempt.error) {\n errors.push(attempt.error);\n }\n }\n\n // Step 2: Try coercing to remaining types in order\n for (let i = 1; i < options.length; i++) {\n const attempt = executeUnionAttempt(i, value, options, tracker, coerceOption);\n if (attempt.status === 'success') {\n return attempt.value;\n }\n if (attempt.status === 'validation') {\n errors.push(new Error(`Coerced value does not match schema`));\n } else if (attempt.error) {\n errors.push(attempt.error);\n }\n }\n\n // All options failed\n throw new Error(\n `Cannot coerce value to any union type: ${errors.map((e) => e.message).join(', ')}`,\n );\n}\n\nfunction tryObjectFirstCoercion(\n value: unknown,\n options: z.ZodTypeAny[],\n _tracker: CircularTracker,\n coerceOption: (index: number, v: unknown, tracker: CircularTracker) => unknown,\n): unknown | undefined {\n if (\n typeof value !== 'object' ||\n value === null ||\n Array.isArray(value) ||\n value instanceof Date\n ) {\n return undefined;\n }\n\n for (let i = 0; i < options.length; i++) {\n const option = options[i]!;\n const type = (option._def as any)?.type || (option._def as any).typeName;\n if (type === 'object' || type === 'ZodObject' || type === 'record') {\n try {\n const attemptTracker = new CircularTracker();\n const coerced = coerceOption(i, value, attemptTracker);\n const coercedResult = options[i]!.safeParse(coerced);\n if (coercedResult.success) {\n return coerced;\n }\n } catch {\n // Continue to regular flow\n }\n }\n }\n\n return undefined;\n}\n\ntype UnionAttemptResult =\n | { status: 'success'; value: unknown }\n | { status: 'validation'; error?: undefined }\n | { status: 'error'; error: Error };\n\nfunction executeUnionAttempt(\n index: number,\n value: unknown,\n options: z.ZodTypeAny[],\n tracker: CircularTracker,\n coerceOption: (idx: number, v: unknown, tracker: CircularTracker) => unknown,\n): UnionAttemptResult {\n try {\n const coerced = coerceOption(index, value, tracker);\n const coercedResult = options[index]!.safeParse(coerced);\n if (coercedResult.success) {\n return { status: 'success', value: coerced };\n }\n return { status: 'validation' };\n } catch (error) {\n if (error instanceof Error && error.message.includes('Circular reference')) {\n throw error;\n }\n return { status: 'error', error: error as Error };\n }\n}\n",
28
28
  "import * as z from 'zod';\n\nimport { coerceToBoolean } from './coercers/boolean.js';\nimport { coerceToNull } from './coercers/null.js';\n\nexport type CanonizePrimitive = 'string' | 'number' | 'boolean' | 'null';\n\nconst primitiveFactories: Record<CanonizePrimitive, () => z.ZodTypeAny> = {\n string: () => z.coerce.string(),\n number: () => z.coerce.number(),\n boolean: () => getStringBool(),\n null: () => getNullCoercion(),\n};\n\nexport function createCanonizePrimitive(primitive: CanonizePrimitive) {\n return primitiveFactories[primitive]();\n}\n\nexport function createCanonizeSchema<T extends Record<string, CanonizePrimitive>>(\n schema: T,\n) {\n const shape = Object.fromEntries(\n Object.entries(schema).map(([key, primitive]) => [\n key,\n createCanonizePrimitive(primitive),\n ]),\n ) as { [K in keyof T]: ReturnType<typeof createCanonizePrimitive> };\n\n return z.object(shape);\n}\n\ntype ExtendedCoerce = typeof z.coerce & {\n stringbool?: () => z.ZodType<boolean>;\n null?: () => z.ZodType<null>;\n};\n\nconst coerceHelpers = z.coerce as ExtendedCoerce;\n\nconst stringBoolFactory: () => z.ZodType<boolean> =\n typeof coerceHelpers.stringbool === 'function'\n ? () => coerceHelpers.stringbool!()\n : () => z.preprocess((value) => coerceToBoolean(value), z.boolean());\n\nconst nullFactory: () => z.ZodType<null> =\n typeof coerceHelpers.null === 'function'\n ? () => coerceHelpers.null!()\n : () => z.preprocess((value) => coerceToNull(value), z.null());\n\nfunction getStringBool() {\n return stringBoolFactory();\n}\n\nfunction getNullCoercion() {\n return nullFactory();\n}\n"
29
29
  ],
30
- "mappings": "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",
31
- "debugId": "4135B5B30AC609E164756E2164756E21",
30
+ "mappings": "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",
31
+ "debugId": "C838E26F3AF618BD64756E2164756E21",
32
32
  "names": []
33
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "canonize",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Aggressive type coercion for Zod schemas. Wrap any Zod schema with intelligent coercion that handles edge cases, maintains type safety, and lets validation focus on business logic.",
5
5
  "keywords": [
6
6
  "zod",
@@ -115,7 +115,7 @@
115
115
  "zod": "^4.2.1"
116
116
  },
117
117
  "peerDependencies": {
118
- "zod": ">=3.23.0"
118
+ "zod": ">=4.0.0"
119
119
  },
120
120
  "engines": {
121
121
  "node": ">=18.0.0"