zod-nest 3.2.1 → 3.2.3

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.
Files changed (32) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-RTWHQFNA.mjs → chunk-47ML6LKE.mjs} +5 -5
  3. package/dist/{chunk-RTWHQFNA.mjs.map → chunk-47ML6LKE.mjs.map} +1 -1
  4. package/dist/{chunk-LXRBMFWD.js → chunk-4LOFWANL.js} +6 -6
  5. package/dist/{chunk-LXRBMFWD.js.map → chunk-4LOFWANL.js.map} +1 -1
  6. package/dist/{chunk-KSDHVGMB.js → chunk-6FL3HR4I.js} +45 -45
  7. package/dist/{chunk-KSDHVGMB.js.map → chunk-6FL3HR4I.js.map} +1 -1
  8. package/dist/{chunk-BAG3BDRM.mjs → chunk-7IPDYJNI.mjs} +37 -57
  9. package/dist/chunk-7IPDYJNI.mjs.map +1 -0
  10. package/dist/{chunk-T4KTFCJW.js → chunk-DUQLL62I.js} +94 -114
  11. package/dist/chunk-DUQLL62I.js.map +1 -0
  12. package/dist/chunk-EV5I5HGT.js +127 -0
  13. package/dist/chunk-EV5I5HGT.js.map +1 -0
  14. package/dist/{chunk-WI4JKXT6.mjs → chunk-IMEFMJTS.mjs} +3 -3
  15. package/dist/{chunk-WI4JKXT6.mjs.map → chunk-IMEFMJTS.mjs.map} +1 -1
  16. package/dist/chunk-MPNAA53V.mjs +119 -0
  17. package/dist/chunk-MPNAA53V.mjs.map +1 -0
  18. package/dist/express/index.js +20 -20
  19. package/dist/express/index.mjs +5 -5
  20. package/dist/fastify/index.js +11 -11
  21. package/dist/fastify/index.mjs +5 -5
  22. package/dist/helpers/index.js +24 -24
  23. package/dist/helpers/index.mjs +3 -3
  24. package/dist/index.js +203 -203
  25. package/dist/index.mjs +4 -4
  26. package/package.json +26 -33
  27. package/dist/chunk-4RXGLSPP.js +0 -73
  28. package/dist/chunk-4RXGLSPP.js.map +0 -1
  29. package/dist/chunk-BAG3BDRM.mjs.map +0 -1
  30. package/dist/chunk-T4KTFCJW.js.map +0 -1
  31. package/dist/chunk-ZZW54ETO.mjs +0 -67
  32. package/dist/chunk-ZZW54ETO.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk4RXGLSPP_js = require('./chunk-4RXGLSPP.js');
3
+ var chunkEV5I5HGT_js = require('./chunk-EV5I5HGT.js');
4
4
  var zod = require('zod');
5
5
  var common = require('@nestjs/common');
6
6
 
@@ -10,6 +10,8 @@ var DEFS_PREFIX = "#/$defs/";
10
10
  var ZOD_NEST_ERROR_EXTENSION = "x-zod-nest-error";
11
11
  var ZOD_NEST_ERROR_DUPLICATE_ID = "duplicate-id";
12
12
  var ZOD_NEST_DTO_EXTENSION = "x-zod-nest-dto";
13
+
14
+ // src/schema/discover-dependents.ts
13
15
  var INNER_TYPE_WRAPPERS = /* @__PURE__ */ new Set([
14
16
  "optional",
15
17
  "nullable",
@@ -21,15 +23,7 @@ var INNER_TYPE_WRAPPERS = /* @__PURE__ */ new Set([
21
23
  "readonly",
22
24
  "promise"
23
25
  ]);
24
- var readId = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
25
- const meta = zod.z.globalRegistry.get(schema);
26
- if (meta === void 0) {
27
- return void 0;
28
- }
29
- const id = meta.id;
30
- return typeof id === "string" ? id : void 0;
31
- }, "readId");
32
- var resolveLazyTarget = /* @__PURE__ */ chunk4RXGLSPP_js.__name((getter) => {
26
+ var resolveLazyTarget = /* @__PURE__ */ chunkEV5I5HGT_js.__name((getter) => {
33
27
  try {
34
28
  return [
35
29
  getter()
@@ -41,16 +35,13 @@ var resolveLazyTarget = /* @__PURE__ */ chunk4RXGLSPP_js.__name((getter) => {
41
35
  throw error;
42
36
  }
43
37
  }, "resolveLazyTarget");
44
- var collectChildren = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
38
+ var collectChildren = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => {
45
39
  const def = schema._zod.def;
46
40
  if (def.type === "object") {
47
- const out = [];
48
41
  const shape = def.shape;
49
- if (shape !== void 0) {
50
- for (const value of Object.values(shape)) {
51
- out.push(value);
52
- }
53
- }
42
+ const out = [
43
+ ...Object.values(shape)
44
+ ];
54
45
  if (def.catchall !== void 0) {
55
46
  out.push(def.catchall);
56
47
  }
@@ -104,7 +95,7 @@ var collectChildren = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
104
95
  }
105
96
  return [];
106
97
  }, "collectChildren");
107
- var discoverDependents = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
98
+ var discoverDependents = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => {
108
99
  const visited = /* @__PURE__ */ new WeakSet();
109
100
  const out = [];
110
101
  const stack = [
@@ -120,11 +111,11 @@ var discoverDependents = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
120
111
  if (child === void 0 || visited.has(child)) {
121
112
  continue;
122
113
  }
123
- const id = readId(child);
124
- if (id !== void 0) {
114
+ const named = chunkEV5I5HGT_js.findRefTarget(child);
115
+ if (named !== void 0) {
125
116
  out.push([
126
- child,
127
- id
117
+ named.owner,
118
+ named.id
128
119
  ]);
129
120
  }
130
121
  stack.push(child);
@@ -134,12 +125,12 @@ var discoverDependents = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
134
125
  }, "discoverDependents");
135
126
 
136
127
  // src/schema/registry.ts
137
- var createRegistry = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
128
+ var createRegistry = /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => {
138
129
  const seen = /* @__PURE__ */ new Map();
139
130
  const forceExposed = /* @__PURE__ */ new Set();
140
131
  const anonymous = /* @__PURE__ */ new Set();
141
132
  const pendingRoots = [];
142
- const recordOnce = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, id) => {
133
+ const recordOnce = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, id) => {
143
134
  let set = seen.get(id);
144
135
  if (set === void 0) {
145
136
  set = /* @__PURE__ */ new Set();
@@ -151,7 +142,7 @@ var createRegistry = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
151
142
  set.add(schema);
152
143
  return true;
153
144
  }, "recordOnce");
154
- const flushPendingDiscovery = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
145
+ const flushPendingDiscovery = /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => {
155
146
  for (const root of pendingRoots.splice(0)) {
156
147
  for (const [child, childId] of discoverDependents(root)) {
157
148
  recordOnce(child, childId);
@@ -160,7 +151,7 @@ var createRegistry = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
160
151
  }, "flushPendingDiscovery");
161
152
  return {
162
153
  zodRegistry: zod.z.globalRegistry,
163
- register: /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, id, flags) => {
154
+ register: /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, id, flags) => {
164
155
  if (flags?.expose === true) {
165
156
  forceExposed.add(id);
166
157
  }
@@ -168,10 +159,10 @@ var createRegistry = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
168
159
  anonymous.add(id);
169
160
  }
170
161
  if (zod.z.globalRegistry.has(schema)) {
171
- const existing = zod.z.globalRegistry.get(schema);
172
- if (existing?.id !== id) {
162
+ const existing = zod.z.globalRegistry.get(schema) ?? {};
163
+ if (existing.id !== id) {
173
164
  zod.z.globalRegistry.add(schema, {
174
- ...existing ?? {},
165
+ ...existing,
175
166
  id
176
167
  });
177
168
  }
@@ -185,12 +176,12 @@ var createRegistry = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
185
176
  }
186
177
  pendingRoots.push(schema);
187
178
  }, "register"),
188
- hasCollision: /* @__PURE__ */ chunk4RXGLSPP_js.__name((id) => {
179
+ hasCollision: /* @__PURE__ */ chunkEV5I5HGT_js.__name((id) => {
189
180
  flushPendingDiscovery();
190
181
  const set = seen.get(id);
191
182
  return set !== void 0 && set.size > 1;
192
183
  }, "hasCollision"),
193
- getCollisions: /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
184
+ getCollisions: /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => {
194
185
  flushPendingDiscovery();
195
186
  const out = /* @__PURE__ */ new Map();
196
187
  for (const [id, set] of seen) {
@@ -201,22 +192,22 @@ var createRegistry = /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
201
192
  }
202
193
  return out;
203
194
  }, "getCollisions"),
204
- ids: /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
195
+ ids: /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => {
205
196
  flushPendingDiscovery();
206
197
  return [
207
198
  ...seen.keys()
208
199
  ];
209
200
  }, "ids"),
210
- forceExposedIds: /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => [
201
+ forceExposedIds: /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => [
211
202
  ...forceExposed
212
203
  ], "forceExposedIds"),
213
- anonymousIds: /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => [
204
+ anonymousIds: /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => [
214
205
  ...anonymous
215
206
  ], "anonymousIds")
216
207
  };
217
208
  }, "createRegistry");
218
- var defaultRegistry = chunk4RXGLSPP_js.singleton("default-registry", createRegistry);
219
- var registerSchema = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, registry = defaultRegistry, options) => {
209
+ var defaultRegistry = chunkEV5I5HGT_js.singleton("default-registry", createRegistry);
210
+ var registerSchema = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, registry = defaultRegistry, options) => {
220
211
  const flags = {
221
212
  expose: options?.expose,
222
213
  anonymous: options?.anonymous
@@ -226,36 +217,29 @@ var registerSchema = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, registry =
226
217
  registry.register(schema, explicit, flags);
227
218
  return explicit;
228
219
  }
229
- const meta = registry.zodRegistry.get(schema);
230
- const metaId = meta === void 0 ? void 0 : meta.id;
231
- if (typeof metaId !== "string" || metaId === "") {
220
+ const named = chunkEV5I5HGT_js.findIdOwner(schema, registry.zodRegistry);
221
+ if (named === void 0) {
232
222
  return void 0;
233
223
  }
234
- registry.register(schema, metaId, flags);
235
- return metaId;
224
+ registry.register(named.owner, named.id, flags);
225
+ return named.id;
236
226
  }, "registerSchema");
237
227
 
238
228
  // src/schema/composition.ts
239
- var lineageMap = chunk4RXGLSPP_js.singleton("lineage-map", () => /* @__PURE__ */ new WeakMap());
240
- var propsMap = chunk4RXGLSPP_js.singleton("props-map", () => /* @__PURE__ */ new WeakMap());
229
+ var lineageMap = chunkEV5I5HGT_js.singleton("lineage-map", () => /* @__PURE__ */ new WeakMap());
241
230
  var OPTIONAL_WRAPPER_TYPES = /* @__PURE__ */ new Set([
242
231
  "optional",
243
232
  "default"
244
233
  ]);
245
- var isOptionalProp = /* @__PURE__ */ chunk4RXGLSPP_js.__name((propSchema) => OPTIONAL_WRAPPER_TYPES.has(propSchema._zod.def.type), "isOptionalProp");
246
- var computeShapeKeys = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
247
- const { shape } = schema;
248
- const properties = Object.keys(shape);
249
- const required = properties.filter((key) => {
250
- const propSchema = shape[key];
251
- return propSchema !== void 0 && !isOptionalProp(propSchema);
252
- });
234
+ var isOptionalProp = /* @__PURE__ */ chunkEV5I5HGT_js.__name((propSchema) => OPTIONAL_WRAPPER_TYPES.has(propSchema._zod.def.type), "isOptionalProp");
235
+ var computeShapeKeys = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => {
236
+ const entries = Object.entries(schema.shape);
253
237
  return {
254
- properties,
255
- required
238
+ properties: entries.map(([key]) => key),
239
+ required: entries.filter(([, propSchema]) => !isOptionalProp(propSchema)).map(([key]) => key)
256
240
  };
257
241
  }, "computeShapeKeys");
258
- var computeOverriddenKeys = /* @__PURE__ */ chunk4RXGLSPP_js.__name((parent, child) => {
242
+ var computeOverriddenKeys = /* @__PURE__ */ chunkEV5I5HGT_js.__name((parent, child) => {
259
243
  const overriddenKeys = /* @__PURE__ */ new Set();
260
244
  for (const key of Object.keys(child.shape)) {
261
245
  const parentProp = parent.shape[key];
@@ -265,23 +249,20 @@ var computeOverriddenKeys = /* @__PURE__ */ chunk4RXGLSPP_js.__name((parent, chi
265
249
  }
266
250
  return overriddenKeys;
267
251
  }, "computeOverriddenKeys");
268
- var extend = /* @__PURE__ */ chunk4RXGLSPP_js.__name((parent, build) => {
252
+ var extend = /* @__PURE__ */ chunkEV5I5HGT_js.__name((parent, build) => {
269
253
  const result = build(parent);
270
254
  lineageMap.set(result, {
271
255
  op: "extend",
272
256
  parent,
273
257
  overriddenKeys: computeOverriddenKeys(parent, result)
274
258
  });
275
- if (!propsMap.has(parent)) {
276
- propsMap.set(parent, computeShapeKeys(parent));
277
- }
278
259
  registerSchema(parent);
279
260
  registerSchema(result);
280
261
  return result;
281
262
  }, "extend");
282
- var getLineage = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => lineageMap.get(schema), "getLineage");
283
- var DEFAULT_BUILD_REF = /* @__PURE__ */ chunk4RXGLSPP_js.__name((id) => `${DEFS_PREFIX}${id}`, "DEFAULT_BUILD_REF");
284
- var createCompositionOverride = /* @__PURE__ */ chunk4RXGLSPP_js.__name((opts) => {
263
+ var getLineage = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => lineageMap.get(schema), "getLineage");
264
+ var DEFAULT_BUILD_REF = /* @__PURE__ */ chunkEV5I5HGT_js.__name((id) => `${DEFS_PREFIX}${id}`, "DEFAULT_BUILD_REF");
265
+ var createCompositionOverride = /* @__PURE__ */ chunkEV5I5HGT_js.__name((opts) => {
285
266
  const { buildRef, registry } = opts;
286
267
  return (ctx) => {
287
268
  const { jsonSchema, zodSchema } = ctx;
@@ -289,15 +270,11 @@ var createCompositionOverride = /* @__PURE__ */ chunk4RXGLSPP_js.__name((opts) =
289
270
  if (entry === void 0) {
290
271
  return;
291
272
  }
292
- const parentCache = propsMap.get(entry.parent);
293
- if (parentCache === void 0) {
294
- return;
295
- }
296
- const parentId = registry.zodRegistry.get(entry.parent)?.id;
273
+ const parentCache = computeShapeKeys(entry.parent);
274
+ const parentId = registerSchema(entry.parent, registry);
297
275
  if (parentId === void 0) {
298
276
  return;
299
277
  }
300
- registerSchema(entry.parent, registry);
301
278
  const childProps = jsonSchema.properties ?? {};
302
279
  const childRequired = jsonSchema.required ?? [];
303
280
  const parentPropSet = new Set(parentCache.properties);
@@ -334,7 +311,7 @@ var createCompositionOverride = /* @__PURE__ */ chunk4RXGLSPP_js.__name((opts) =
334
311
  // src/schema/errors.ts
335
312
  var ZodNestError = class extends Error {
336
313
  static {
337
- chunk4RXGLSPP_js.__name(this, "ZodNestError");
314
+ chunkEV5I5HGT_js.__name(this, "ZodNestError");
338
315
  }
339
316
  constructor(message) {
340
317
  super(message);
@@ -343,7 +320,7 @@ var ZodNestError = class extends Error {
343
320
  };
344
321
  var ZodNestUnrepresentableError = class extends ZodNestError {
345
322
  static {
346
- chunk4RXGLSPP_js.__name(this, "ZodNestUnrepresentableError");
323
+ chunkEV5I5HGT_js.__name(this, "ZodNestUnrepresentableError");
347
324
  }
348
325
  path;
349
326
  zodType;
@@ -354,7 +331,7 @@ var ZodNestUnrepresentableError = class extends ZodNestError {
354
331
  this.zodType = zodType;
355
332
  }
356
333
  };
357
- var formatPath = /* @__PURE__ */ chunk4RXGLSPP_js.__name((path) => {
334
+ var formatPath = /* @__PURE__ */ chunkEV5I5HGT_js.__name((path) => {
358
335
  if (path.length === 0) {
359
336
  return "<root>";
360
337
  }
@@ -362,7 +339,7 @@ var formatPath = /* @__PURE__ */ chunk4RXGLSPP_js.__name((path) => {
362
339
  }, "formatPath");
363
340
 
364
341
  // src/schema/override.ts
365
- var primitiveOverride = /* @__PURE__ */ chunk4RXGLSPP_js.__name(({ zodSchema, jsonSchema }) => {
342
+ var primitiveOverride = /* @__PURE__ */ chunkEV5I5HGT_js.__name(({ zodSchema, jsonSchema }) => {
366
343
  const type = zodSchema._zod.def.type;
367
344
  if (type === "bigint") {
368
345
  jsonSchema.type = "integer";
@@ -374,7 +351,7 @@ var primitiveOverride = /* @__PURE__ */ chunk4RXGLSPP_js.__name(({ zodSchema, js
374
351
  return;
375
352
  }
376
353
  }, "primitiveOverride");
377
- var combine = /* @__PURE__ */ chunk4RXGLSPP_js.__name((...overrides) => {
354
+ var combine = /* @__PURE__ */ chunkEV5I5HGT_js.__name((...overrides) => {
378
355
  const list = [];
379
356
  for (const candidate of overrides) {
380
357
  if (typeof candidate !== "function") {
@@ -390,7 +367,7 @@ var combine = /* @__PURE__ */ chunk4RXGLSPP_js.__name((...overrides) => {
390
367
  }, "combine");
391
368
 
392
369
  // src/schema/post-process.ts
393
- var rewriteRefs = /* @__PURE__ */ chunk4RXGLSPP_js.__name((node, rootRef) => {
370
+ var rewriteRefs = /* @__PURE__ */ chunkEV5I5HGT_js.__name((node, rootRef) => {
394
371
  if (Array.isArray(node)) {
395
372
  for (const item of node) {
396
373
  rewriteRefs(item, rootRef);
@@ -411,7 +388,7 @@ var rewriteRefs = /* @__PURE__ */ chunk4RXGLSPP_js.__name((node, rootRef) => {
411
388
  rewriteRefs(value, rootRef);
412
389
  }
413
390
  }, "rewriteRefs");
414
- var refsIn = /* @__PURE__ */ chunk4RXGLSPP_js.__name(function* (node) {
391
+ var refsIn = /* @__PURE__ */ chunkEV5I5HGT_js.__name(function* (node) {
415
392
  if (Array.isArray(node)) {
416
393
  for (const item of node) {
417
394
  yield* refsIn(item);
@@ -429,14 +406,14 @@ var refsIn = /* @__PURE__ */ chunk4RXGLSPP_js.__name(function* (node) {
429
406
  yield* refsIn(value);
430
407
  }
431
408
  }, "refsIn");
432
- var rootDefId = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw) => {
409
+ var rootDefId = /* @__PURE__ */ chunkEV5I5HGT_js.__name((raw) => {
433
410
  const ref = raw.$ref;
434
411
  if (typeof ref !== "string" || !ref.startsWith(DEFS_PREFIX)) {
435
412
  return void 0;
436
413
  }
437
414
  return ref.slice(DEFS_PREFIX.length);
438
415
  }, "rootDefId");
439
- var isReferenced = /* @__PURE__ */ chunk4RXGLSPP_js.__name((defs, id) => {
416
+ var isReferenced = /* @__PURE__ */ chunkEV5I5HGT_js.__name((defs, id) => {
440
417
  const ownRef = `${DEFS_PREFIX}${id}`;
441
418
  for (const ref of refsIn(defs)) {
442
419
  if (ref === "#" || ref === ownRef) {
@@ -445,7 +422,7 @@ var isReferenced = /* @__PURE__ */ chunk4RXGLSPP_js.__name((defs, id) => {
445
422
  }
446
423
  return false;
447
424
  }, "isReferenced");
448
- var referencesRoot = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw) => {
425
+ var referencesRoot = /* @__PURE__ */ chunkEV5I5HGT_js.__name((raw) => {
449
426
  for (const ref of refsIn(raw)) {
450
427
  if (ref === "#") {
451
428
  return true;
@@ -453,7 +430,7 @@ var referencesRoot = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw) => {
453
430
  }
454
431
  return false;
455
432
  }, "referencesRoot");
456
- var stripEnvelope = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw) => {
433
+ var stripEnvelope = /* @__PURE__ */ chunkEV5I5HGT_js.__name((raw) => {
457
434
  const root = {
458
435
  ...raw
459
436
  };
@@ -461,7 +438,7 @@ var stripEnvelope = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw) => {
461
438
  delete root.$defs;
462
439
  return root;
463
440
  }, "stripEnvelope");
464
- var resolveRoot = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw, refs, options) => {
441
+ var resolveRoot = /* @__PURE__ */ chunkEV5I5HGT_js.__name((raw, refs, options) => {
465
442
  const liftedId = rootDefId(raw);
466
443
  if (liftedId !== void 0) {
467
444
  const body = refs.get(liftedId);
@@ -503,7 +480,7 @@ var resolveRoot = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw, refs, options) =
503
480
  rootRef
504
481
  };
505
482
  }, "resolveRoot");
506
- var postProcess = /* @__PURE__ */ chunk4RXGLSPP_js.__name((raw, options) => {
483
+ var postProcess = /* @__PURE__ */ chunkEV5I5HGT_js.__name((raw, options) => {
507
484
  const refs = /* @__PURE__ */ new Map();
508
485
  const rawDefs = raw.$defs;
509
486
  if (rawDefs !== void 0) {
@@ -548,38 +525,47 @@ var ANNOTATION_ONLY_KEYS = /* @__PURE__ */ new Set([
548
525
  "$comment",
549
526
  "id"
550
527
  ]);
551
- var isStrictlyUnrepresentable = /* @__PURE__ */ chunk4RXGLSPP_js.__name((jsonSchema, zodSchema) => {
528
+ var isStrictlyUnrepresentable = /* @__PURE__ */ chunkEV5I5HGT_js.__name((jsonSchema, zodSchema) => {
552
529
  if (!STRICT_REQUIRES_OVERRIDE.has(zodSchema._zod.def.type)) {
553
530
  return false;
554
531
  }
555
532
  return Object.keys(jsonSchema).every((key) => ANNOTATION_ONLY_KEYS.has(key));
556
533
  }, "isStrictlyUnrepresentable");
557
- var markPipeCoverage = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, io, covered) => {
534
+ var descentTarget = /* @__PURE__ */ chunkEV5I5HGT_js.__name(($in, out, io) => {
535
+ if (io === "output") {
536
+ return out;
537
+ }
538
+ if ($in._zod.traits.has("$ZodTransform")) {
539
+ return out;
540
+ }
541
+ return $in;
542
+ }, "descentTarget");
543
+ var markPipeCoverage = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, io, covered) => {
558
544
  const def = schema._zod.def;
559
545
  if (def.type !== "pipe" || def.in === void 0 || def.out === void 0) {
560
546
  return;
561
547
  }
562
- const target = io === "output" ? def.out : def.in._zod.traits.has("$ZodTransform") ? def.out : def.in;
548
+ const target = descentTarget(def.in, def.out, io);
563
549
  if (covered.has(target)) {
564
550
  return;
565
551
  }
566
552
  covered.add(target);
567
553
  markPipeCoverage(target, io, covered);
568
554
  }, "markPipeCoverage");
569
- var buildToJsonSchemaOptions = /* @__PURE__ */ chunk4RXGLSPP_js.__name((params) => {
555
+ var buildToJsonSchemaOptions = /* @__PURE__ */ chunkEV5I5HGT_js.__name((params) => {
570
556
  const strict = params.strict ?? true;
571
557
  const compositionOverride = createCompositionOverride({
572
558
  buildRef: params.uri ?? DEFAULT_BUILD_REF,
573
559
  registry: params.registry
574
560
  });
575
- const customOverride = chunk4RXGLSPP_js.createCustomOverride(params.io);
561
+ const customOverride = chunkEV5I5HGT_js.createCustomOverride(params.io);
576
562
  const merged = combine(primitiveOverride, compositionOverride, customOverride, params.override);
577
563
  const unrepresentableHits = [];
578
564
  const coveredByPipe = /* @__PURE__ */ new WeakSet();
579
- const wrapped = /* @__PURE__ */ chunk4RXGLSPP_js.__name((ctx) => {
565
+ const wrapped = /* @__PURE__ */ chunkEV5I5HGT_js.__name((ctx) => {
580
566
  merged(ctx);
581
567
  if (ctx.zodSchema._zod.def.type === "pipe") {
582
- const record = chunk4RXGLSPP_js.peekRegistration(ctx.zodSchema);
568
+ const record = chunkEV5I5HGT_js.peekRegistration(ctx.zodSchema);
583
569
  if (record !== void 0 && record[params.io] !== void 0) {
584
570
  markPipeCoverage(ctx.zodSchema, params.io, coveredByPipe);
585
571
  }
@@ -609,7 +595,7 @@ var buildToJsonSchemaOptions = /* @__PURE__ */ chunk4RXGLSPP_js.__name((params)
609
595
  }
610
596
  return {
611
597
  options,
612
- consumeUnrepresentable: /* @__PURE__ */ chunk4RXGLSPP_js.__name(() => {
598
+ consumeUnrepresentable: /* @__PURE__ */ chunkEV5I5HGT_js.__name(() => {
613
599
  const firstHit = unrepresentableHits.find((hit) => !coveredByPipe.has(hit.zodSchema));
614
600
  if (firstHit !== void 0) {
615
601
  throw new ZodNestUnrepresentableError(firstHit.path, firstHit.zodType);
@@ -617,11 +603,8 @@ var buildToJsonSchemaOptions = /* @__PURE__ */ chunk4RXGLSPP_js.__name((params)
617
603
  }, "consumeUnrepresentable")
618
604
  };
619
605
  }, "buildToJsonSchemaOptions");
620
- var resolveRootId = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, registry) => {
621
- const id = registry.zodRegistry.get(schema)?.id;
622
- return typeof id === "string" && id !== "" ? id : void 0;
623
- }, "resolveRootId");
624
- var toOpenApi = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, opts) => {
606
+ var resolveRootId = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, registry) => chunkEV5I5HGT_js.findIdOwner(schema, registry.zodRegistry)?.id, "resolveRootId");
607
+ var toOpenApi = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, opts) => {
625
608
  const built = buildToJsonSchemaOptions({
626
609
  registry: opts.registry,
627
610
  io: opts.io,
@@ -649,11 +632,11 @@ var toOpenApi = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, opts) => {
649
632
 
650
633
  // src/dto/symbols.ts
651
634
  var ZOD_DTO_SYMBOL = /* @__PURE__ */ Symbol.for("zod-nest.dto");
652
- var isZodDto = /* @__PURE__ */ chunk4RXGLSPP_js.__name((value) => typeof value === "function" && value[ZOD_DTO_SYMBOL] === true, "isZodDto");
653
- var isZodSchema = /* @__PURE__ */ chunk4RXGLSPP_js.__name((value) => value instanceof zod.z.ZodType, "isZodSchema");
635
+ var isZodDto = /* @__PURE__ */ chunkEV5I5HGT_js.__name((value) => typeof value === "function" && value[ZOD_DTO_SYMBOL] === true, "isZodDto");
636
+ var isZodSchema = /* @__PURE__ */ chunkEV5I5HGT_js.__name((value) => value instanceof zod.z.ZodType, "isZodSchema");
654
637
  var ZodValidationException = class extends common.BadRequestException {
655
638
  static {
656
- chunk4RXGLSPP_js.__name(this, "ZodValidationException");
639
+ chunkEV5I5HGT_js.__name(this, "ZodValidationException");
657
640
  }
658
641
  zodError;
659
642
  argMetadata;
@@ -673,11 +656,11 @@ var ZodValidationException = class extends common.BadRequestException {
673
656
  // src/schema/anon-id.ts
674
657
  var ANON_RESPONSE_PREFIX = "_AnonResponseSchema_";
675
658
  var ANON_BODY_PREFIX = "_AnonBodySchema_";
676
- var anonIdCache = chunk4RXGLSPP_js.singleton("anon-id-cache", () => /* @__PURE__ */ new WeakMap());
677
- var counterRef = chunk4RXGLSPP_js.singleton("anon-id-counter", () => ({
659
+ var anonIdCache = chunkEV5I5HGT_js.singleton("anon-id-cache", () => /* @__PURE__ */ new WeakMap());
660
+ var counterRef = chunkEV5I5HGT_js.singleton("anon-id-counter", () => ({
678
661
  value: 0
679
662
  }));
680
- var resolveAnonId = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, prefix) => {
663
+ var resolveAnonId = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, prefix) => {
681
664
  const cached = anonIdCache.get(schema);
682
665
  if (cached !== void 0) {
683
666
  return cached;
@@ -727,11 +710,11 @@ function resolveSchemaRef(schema, options) {
727
710
  schema: body
728
711
  };
729
712
  }
730
- chunk4RXGLSPP_js.__name(resolveSchemaRef, "resolveSchemaRef");
713
+ chunkEV5I5HGT_js.__name(resolveSchemaRef, "resolveSchemaRef");
731
714
 
732
715
  // src/decorators/internal/zod-param-expand.ts
733
- var isZodObject = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => schema._zod.def.type === "object", "isZodObject");
734
- var expandObjectSchema = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, options) => {
716
+ var isZodObject = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => schema._zod.def.type === "object", "isZodObject");
717
+ var expandObjectSchema = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, options) => {
735
718
  if (!isZodObject(schema)) {
736
719
  throw new ZodNestError(`${options.decoratorName} requires a \`z.object({...})\` schema (got \`${schema._zod.def.type}\`). Each property of the object becomes one OpenAPI parameter. For non-object body shapes (intersections, unions, primitives), use \`@ZodBody\` instead.`);
737
720
  }
@@ -753,8 +736,8 @@ var expandObjectSchema = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, option
753
736
  }
754
737
  return result;
755
738
  }, "expandObjectSchema");
756
- var paramSchemaBody = /* @__PURE__ */ chunk4RXGLSPP_js.__name((resolution) => resolution.kind === "ref" ? resolution.ref : resolution.schema, "paramSchemaBody");
757
- var intersectionArms = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
739
+ var paramSchemaBody = /* @__PURE__ */ chunkEV5I5HGT_js.__name((resolution) => resolution.kind === "ref" ? resolution.ref : resolution.schema, "paramSchemaBody");
740
+ var intersectionArms = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => {
758
741
  if (schema._zod.def.type !== "intersection") {
759
742
  return null;
760
743
  }
@@ -764,14 +747,14 @@ var intersectionArms = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
764
747
  right: def.right
765
748
  };
766
749
  }, "intersectionArms");
767
- var unionOptions = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
750
+ var unionOptions = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => {
768
751
  if (schema._zod.def.type !== "union") {
769
752
  return null;
770
753
  }
771
754
  const def = schema._zod.def;
772
755
  return def.options;
773
756
  }, "unionOptions");
774
- var collectObjectShapes = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
757
+ var collectObjectShapes = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema) => {
775
758
  if (isZodObject(schema)) {
776
759
  return {
777
760
  shapes: [
@@ -815,7 +798,7 @@ var collectObjectShapes = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema) => {
815
798
  unionCrossed: left.unionCrossed || right.unionCrossed
816
799
  };
817
800
  }, "collectObjectShapes");
818
- var flattenObjectIntersection = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema, registry, decoratorName) => {
801
+ var flattenObjectIntersection = /* @__PURE__ */ chunkEV5I5HGT_js.__name((schema, registry, decoratorName) => {
819
802
  const collected = collectObjectShapes(schema);
820
803
  if (collected === null) {
821
804
  throw new ZodNestError(`${decoratorName} \`flatten: true\` requires every leaf of the schema to be a \`z.object({...})\` \u2014 intersections and unions of objects are supported, but primitives, tuples, transforms, and other non-object leaves are not. Drop \`flatten: true\` to emit the original schema with its composition intact.`);
@@ -825,11 +808,8 @@ var flattenObjectIntersection = /* @__PURE__ */ chunk4RXGLSPP_js.__name((schema,
825
808
  Object.assign(mergedShape, shape);
826
809
  }
827
810
  if (collected.unionCrossed) {
828
- for (const key of Object.keys(mergedShape)) {
829
- const value = mergedShape[key];
830
- if (value !== void 0) {
831
- mergedShape[key] = value.optional();
832
- }
811
+ for (const [key, value] of Object.entries(mergedShape)) {
812
+ mergedShape[key] = value.optional();
833
813
  }
834
814
  }
835
815
  const merged = zod.z.object(mergedShape);
@@ -868,5 +848,5 @@ exports.registerSchema = registerSchema;
868
848
  exports.resolveAnonId = resolveAnonId;
869
849
  exports.resolveSchemaRef = resolveSchemaRef;
870
850
  exports.toOpenApi = toOpenApi;
871
- //# sourceMappingURL=chunk-T4KTFCJW.js.map
872
- //# sourceMappingURL=chunk-T4KTFCJW.js.map
851
+ //# sourceMappingURL=chunk-DUQLL62I.js.map
852
+ //# sourceMappingURL=chunk-DUQLL62I.js.map