@zodyac/zod-mongoose 4.1.0 → 4.2.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/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 4.2.1 - 2025-12-11
11
+
12
+ ## 4.2.0 - 2025-08-31
13
+
10
14
  ## 4.1.0 - 2025-05-30
11
15
 
12
16
  ## 4.0.0 - 2025-05-23
package/dist/index.cjs CHANGED
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -18,16 +19,16 @@ var __copyProps = (to, from, except, desc) => {
18
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
20
 
20
21
  // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- default: () => src_default,
22
+ var index_exports = {};
23
+ __export(index_exports, {
24
+ default: () => index_default,
24
25
  extendZod: () => extendZod,
25
26
  zId: () => zId,
26
27
  zUUID: () => zUUID,
27
28
  zodSchema: () => zodSchema,
28
29
  zodSchemaRaw: () => zodSchemaRaw
29
30
  });
30
- module.exports = __toCommonJS(src_exports);
31
+ module.exports = __toCommonJS(index_exports);
31
32
  var import_mongoose2 = require("mongoose");
32
33
 
33
34
  // src/assertions/constructor.ts
@@ -50,6 +51,9 @@ var zmAssert = {
50
51
  enumerable(f) {
51
52
  return f.constructor.name === "ZodEnum";
52
53
  },
54
+ nativeEnumerable(f) {
55
+ return f.constructor.name === "ZodNativeEnum";
56
+ },
53
57
  date(f) {
54
58
  return f.constructor.name === "ZodDate";
55
59
  },
@@ -77,17 +81,19 @@ var zmAssert = {
77
81
  };
78
82
 
79
83
  // src/assertions/custom.ts
80
- var zmAssertIds;
81
- ((zmAssertIds2) => {
84
+ (function(zmAssertIds2) {
82
85
  function objectId(f) {
83
86
  return "__zm_type" in f && f.__zm_type === "ObjectId";
84
87
  }
88
+ __name(objectId, "objectId");
85
89
  zmAssertIds2.objectId = objectId;
86
90
  function uuid(f) {
87
91
  return "__zm_type" in f && f.__zm_type === "UUID";
88
92
  }
93
+ __name(uuid, "uuid");
89
94
  zmAssertIds2.uuid = uuid;
90
95
  })(zmAssertIds || (zmAssertIds = {}));
96
+ var zmAssertIds;
91
97
 
92
98
  // src/assertions/instanceOf.ts
93
99
  var import_zod = require("zod");
@@ -110,6 +116,9 @@ var zmAssert2 = {
110
116
  enumerable(f) {
111
117
  return f instanceof import_zod.ZodEnum;
112
118
  },
119
+ nativeEnumerable(f) {
120
+ return f instanceof import_zod.ZodNativeEnum;
121
+ },
113
122
  date(f) {
114
123
  return f instanceof import_zod.ZodDate;
115
124
  },
@@ -156,6 +165,9 @@ var zmAssert3 = {
156
165
  enumerable(f) {
157
166
  return "__zm_type" in f && f.__zm_type === "Enum";
158
167
  },
168
+ nativeEnumerable(f) {
169
+ return "__zm_type" in f && f.__zm_type === "NativeEnum";
170
+ },
159
171
  date(f) {
160
172
  return "__zm_type" in f && f.__zm_type === "Date";
161
173
  },
@@ -183,7 +195,11 @@ var zmAssert3 = {
183
195
  };
184
196
 
185
197
  // src/assertions/assertions.ts
186
- var assertions = [zmAssert, zmAssert2, zmAssert3];
198
+ var assertions = [
199
+ zmAssert,
200
+ zmAssert2,
201
+ zmAssert3
202
+ ];
187
203
  var zmAssert4 = Object.keys(zmAssert).map((key) => key).reduce((acc, key) => {
188
204
  acc[key] = (f) => {
189
205
  return assertions.some((assertion) => assertion[key](f));
@@ -200,18 +216,15 @@ var import_mongoose = require("mongoose");
200
216
  var import_zod2 = require("zod");
201
217
  var zod_extended = false;
202
218
  function extendZod(z_0) {
203
- if (zod_extended)
204
- return;
219
+ if (zod_extended) return;
205
220
  zod_extended = true;
206
221
  const _refine = z_0.ZodType.prototype.refine;
207
222
  z_0.ZodType.prototype.refine = function(check, opts) {
208
223
  const zEffect = _refine.bind(this)(check, opts);
209
- let message = void 0;
224
+ let message;
210
225
  if (opts) {
211
- if (typeof opts === "string")
212
- message = opts;
213
- else if ("message" in opts)
214
- message = opts.message;
226
+ if (typeof opts === "string") message = opts;
227
+ else if ("message" in opts) message = opts.message;
215
228
  }
216
229
  zEffect._def.effect.__zm_validation = {
217
230
  validator: check,
@@ -219,7 +232,11 @@ function extendZod(z_0) {
219
232
  };
220
233
  return zEffect;
221
234
  };
222
- const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate];
235
+ const UNIQUE_SUPPORT_LIST = [
236
+ z_0.ZodString,
237
+ z_0.ZodNumber,
238
+ z_0.ZodDate
239
+ ];
223
240
  for (const type of UNIQUE_SUPPORT_LIST) {
224
241
  type.prototype.unique = function(arg = true) {
225
242
  this.__zm_unique = arg;
@@ -251,10 +268,13 @@ function extendZod(z_0) {
251
268
  value.prototype.__zm_type = key;
252
269
  }
253
270
  }
254
- var createId = () => {
255
- return import_zod2.z.string().refine((v) => (0, import_mongoose.isValidObjectId)(v), { message: "Invalid ObjectId" }).or(import_zod2.z.instanceof(import_mongoose.Types.ObjectId));
256
- };
257
- var zId = (ref) => {
271
+ __name(extendZod, "extendZod");
272
+ var createId = /* @__PURE__ */ __name(() => {
273
+ return import_zod2.z.string().refine((v) => (0, import_mongoose.isValidObjectId)(v), {
274
+ message: "Invalid ObjectId"
275
+ }).or(import_zod2.z.instanceof(import_mongoose.Types.ObjectId));
276
+ }, "createId");
277
+ var zId = /* @__PURE__ */ __name((ref) => {
258
278
  const output = createId();
259
279
  output.__zm_type = "ObjectId";
260
280
  output.__zm_ref = ref;
@@ -275,11 +295,13 @@ var zId = (ref) => {
275
295
  return this;
276
296
  };
277
297
  return output;
278
- };
279
- var createUUID = () => {
280
- return import_zod2.z.string().uuid({ message: "Invalid UUID" }).or(import_zod2.z.instanceof(import_mongoose.Types.UUID));
281
- };
282
- var zUUID = (ref) => {
298
+ }, "zId");
299
+ var createUUID = /* @__PURE__ */ __name(() => {
300
+ return import_zod2.z.string().uuid({
301
+ message: "Invalid UUID"
302
+ }).or(import_zod2.z.instanceof(import_mongoose.Types.UUID));
303
+ }, "createUUID");
304
+ var zUUID = /* @__PURE__ */ __name((ref) => {
283
305
  const output = createUUID();
284
306
  output.__zm_type = "UUID";
285
307
  output.__zm_ref = ref;
@@ -300,16 +322,18 @@ var zUUID = (ref) => {
300
322
  return this;
301
323
  };
302
324
  return output;
303
- };
325
+ }, "zUUID");
304
326
 
305
327
  // src/index.ts
306
328
  function zodSchema(schema, options) {
307
329
  const definition = parseObject(schema);
308
330
  return new import_mongoose2.Schema(definition, options);
309
331
  }
332
+ __name(zodSchema, "zodSchema");
310
333
  function zodSchemaRaw(schema) {
311
334
  return parseObject(schema);
312
335
  }
336
+ __name(zodSchemaRaw, "zodSchemaRaw");
313
337
  function parseObject(obj) {
314
338
  const object = {};
315
339
  for (const [key, field] of Object.entries(obj.shape)) {
@@ -317,13 +341,13 @@ function parseObject(obj) {
317
341
  object[key] = parseObject(field);
318
342
  } else {
319
343
  const f = parseField(field);
320
- if (!f)
321
- throw new Error(`Unsupported field type: ${field.constructor}`);
344
+ if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);
322
345
  object[key] = f;
323
346
  }
324
347
  }
325
348
  return object;
326
349
  }
350
+ __name(parseObject, "parseObject");
327
351
  function parseField(field, required = true, def, refinement) {
328
352
  if (assertions_default.objectId(field)) {
329
353
  const ref = field.__zm_ref;
@@ -345,59 +369,38 @@ function parseField(field, required = true, def, refinement) {
345
369
  if (assertions_default.number(field)) {
346
370
  const isUnique = field.__zm_unique ?? false;
347
371
  const isSparse = field.__zm_sparse ?? false;
348
- return parseNumber(
349
- field,
350
- required,
351
- def,
352
- isUnique,
353
- refinement,
354
- isSparse
355
- );
372
+ return parseNumber(field, required, def, isUnique, refinement, isSparse);
356
373
  }
357
374
  if (assertions_default.string(field)) {
358
375
  const isUnique = field.__zm_unique ?? false;
359
376
  const isSparse = field.__zm_sparse ?? false;
360
- return parseString(
361
- field,
362
- required,
363
- def,
364
- isUnique,
365
- refinement,
366
- isSparse
367
- );
377
+ return parseString(field, required, def, isUnique, refinement, isSparse);
368
378
  }
369
379
  if (assertions_default.enumerable(field)) {
370
380
  return parseEnum(Object.keys(field.Values), required, def);
371
381
  }
382
+ if (assertions_default.nativeEnumerable(field)) {
383
+ return parseEnum(Object.values(field._def.values), required, def);
384
+ }
372
385
  if (assertions_default.boolean(field)) {
373
386
  return parseBoolean(required, def);
374
387
  }
375
388
  if (assertions_default.date(field)) {
376
389
  const isUnique = field.__zm_unique ?? false;
377
390
  const isSparse = field.__zm_sparse ?? false;
378
- return parseDate(
379
- required,
380
- def,
381
- refinement,
382
- isUnique,
383
- isSparse
384
- );
391
+ return parseDate(required, def, refinement, isUnique, isSparse);
385
392
  }
386
393
  if (assertions_default.array(field)) {
387
- return parseArray(
388
- required,
389
- field.element,
390
- def
391
- );
394
+ return parseArray(required, field.element, def);
392
395
  }
393
396
  if (assertions_default.def(field)) {
394
- return parseField(field._def.innerType, required, field._def.defaultValue());
397
+ return parseField(field._def.innerType, required, field._def.defaultValue);
395
398
  }
396
399
  if (assertions_default.optional(field)) {
397
400
  return parseField(field._def.innerType, false, void 0);
398
401
  }
399
402
  if (assertions_default.nullable(field)) {
400
- return parseField(field._def.innerType, false, def || null);
403
+ return parseField(field._def.innerType, false, typeof def !== "undefined" ? def : () => null);
401
404
  }
402
405
  if (assertions_default.union(field)) {
403
406
  return parseField(field._def.options[0]);
@@ -406,11 +409,7 @@ function parseField(field, required = true, def, refinement) {
406
409
  return parseMixed(required, def);
407
410
  }
408
411
  if (assertions_default.mapOrRecord(field)) {
409
- return parseMap(
410
- required,
411
- field.valueSchema,
412
- def
413
- );
412
+ return parseMap(required, field.valueSchema, def);
414
413
  }
415
414
  if (assertions_default.effect(field)) {
416
415
  const effect = field._def.effect;
@@ -418,9 +417,13 @@ function parseField(field, required = true, def, refinement) {
418
417
  const validation = effect.__zm_validation;
419
418
  return parseField(field._def.schema, required, def, validation);
420
419
  }
420
+ if (effect.type === "preprocess" || effect.type === "transform") {
421
+ return parseField(field._def.schema, required, def, refinement);
422
+ }
421
423
  }
422
424
  return null;
423
425
  }
426
+ __name(parseField, "parseField");
424
427
  function parseNumber(field, required = true, def, unique = false, validate, sparse = false) {
425
428
  const output = {
426
429
  type: Number,
@@ -431,10 +434,10 @@ function parseNumber(field, required = true, def, unique = false, validate, spar
431
434
  unique,
432
435
  sparse
433
436
  };
434
- if (validate)
435
- output.validate = validate;
437
+ if (validate) output.validate = validate;
436
438
  return output;
437
439
  }
440
+ __name(parseNumber, "parseNumber");
438
441
  function parseString(field, required = true, def, unique = false, validate, sparse = false) {
439
442
  const output = {
440
443
  type: String,
@@ -445,10 +448,10 @@ function parseString(field, required = true, def, unique = false, validate, spar
445
448
  unique,
446
449
  sparse
447
450
  };
448
- if (validate)
449
- output.validate = validate;
451
+ if (validate) output.validate = validate;
450
452
  return output;
451
453
  }
454
+ __name(parseString, "parseString");
452
455
  function parseEnum(values, required = true, def) {
453
456
  return {
454
457
  type: String,
@@ -459,6 +462,7 @@ function parseEnum(values, required = true, def) {
459
462
  required
460
463
  };
461
464
  }
465
+ __name(parseEnum, "parseEnum");
462
466
  function parseBoolean(required = true, def) {
463
467
  return {
464
468
  type: Boolean,
@@ -466,6 +470,7 @@ function parseBoolean(required = true, def) {
466
470
  required
467
471
  };
468
472
  }
473
+ __name(parseBoolean, "parseBoolean");
469
474
  function parseDate(required = true, def, validate, unique = false, sparse = false) {
470
475
  const output = {
471
476
  type: Date,
@@ -474,10 +479,10 @@ function parseDate(required = true, def, validate, unique = false, sparse = fals
474
479
  unique,
475
480
  sparse
476
481
  };
477
- if (validate)
478
- output.validate = validate;
482
+ if (validate) output.validate = validate;
479
483
  return output;
480
484
  }
485
+ __name(parseDate, "parseDate");
481
486
  function parseObjectId(required = true, ref, unique = false, refPath, sparse = false) {
482
487
  const output = {
483
488
  type: import_mongoose2.SchemaTypes.ObjectId,
@@ -485,26 +490,26 @@ function parseObjectId(required = true, ref, unique = false, refPath, sparse = f
485
490
  unique,
486
491
  sparse
487
492
  };
488
- if (ref)
489
- output.ref = ref;
490
- if (refPath)
491
- output.refPath = refPath;
493
+ if (ref) output.ref = ref;
494
+ if (refPath) output.refPath = refPath;
492
495
  return output;
493
496
  }
497
+ __name(parseObjectId, "parseObjectId");
494
498
  function parseArray(required = true, element, def) {
495
499
  const innerType = parseField(element);
496
- if (!innerType)
497
- throw new Error("Unsupported array type");
500
+ if (!innerType) throw new Error("Unsupported array type");
498
501
  return {
499
- type: [innerType],
502
+ type: [
503
+ innerType
504
+ ],
500
505
  default: def,
501
506
  required
502
507
  };
503
508
  }
509
+ __name(parseArray, "parseArray");
504
510
  function parseMap(required = true, valueType, def) {
505
511
  const pointer = parseField(valueType);
506
- if (!pointer)
507
- throw new Error("Unsupported map value type");
512
+ if (!pointer) throw new Error("Unsupported map value type");
508
513
  return {
509
514
  type: Map,
510
515
  of: pointer,
@@ -512,6 +517,7 @@ function parseMap(required = true, valueType, def) {
512
517
  required
513
518
  };
514
519
  }
520
+ __name(parseMap, "parseMap");
515
521
  function parseUUID(required = true, ref, unique = false, refPath, sparse = false) {
516
522
  const output = {
517
523
  type: import_mongoose2.SchemaTypes.UUID,
@@ -519,12 +525,11 @@ function parseUUID(required = true, ref, unique = false, refPath, sparse = false
519
525
  unique,
520
526
  sparse
521
527
  };
522
- if (ref)
523
- output.ref = ref;
524
- if (refPath)
525
- output.refPath = refPath;
528
+ if (ref) output.ref = ref;
529
+ if (refPath) output.refPath = refPath;
526
530
  return output;
527
531
  }
532
+ __name(parseUUID, "parseUUID");
528
533
  function parseMixed(required = true, def) {
529
534
  return {
530
535
  type: import_mongoose2.SchemaTypes.Mixed,
@@ -532,7 +537,8 @@ function parseMixed(required = true, def) {
532
537
  required
533
538
  };
534
539
  }
535
- var src_default = zodSchema;
540
+ __name(parseMixed, "parseMixed");
541
+ var index_default = zodSchema;
536
542
  // Annotate the CommonJS export names for ESM import in node:
537
543
  0 && (module.exports = {
538
544
  extendZod,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema);\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T> {\n const object: any = {};\n for (const [key, field] of Object.entries(obj.shape)) {\n if (zmAssert.object(field)) {\n object[key] = parseObject(field);\n } else {\n const f = parseField(field);\n if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);\n\n object[key] = f;\n }\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: T,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as number,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as string,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as string);\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as boolean);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as Date,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n required,\n field.element,\n def as T extends Array<infer K> ? K[] : never,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue());\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(field._def.innerType, false, def || null);\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n required,\n field.valueSchema,\n def as Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: number,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: string,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(values: string[], required = true, def?: string): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: boolean): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: Date,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n // biome-ignore lint/style/useDefaultParameterLast: Should be consistent with other functions\n required = true,\n element: ZodType<T>,\n def?: T[],\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n // biome-ignore lint/style/useDefaultParameterLast: Consistency with other functions\n required = true,\n valueType: ZodType<K>,\n def?: Map<NoInfer<T>, K>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { Types, isValidObjectId } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n Input = Output,\n > {\n // For future use\n }\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined) = undefined;\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["import_mongoose","zmAssertIds","zmAssert","zmAssert","zmAssert","import_zod","ref"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\n\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\n\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema);\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T> {\n const object: any = {};\n for (const [key, field] of Object.entries(obj.shape)) {\n if (zmAssert.object(field)) {\n object[key] = parseObject(field);\n } else {\n const f = parseField(field);\n if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);\n\n object[key] = f;\n }\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: zm.mDefault<T>,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as zm.mDefault<number>,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as zm.mDefault<string>,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as zm.mDefault<string>);\n }\n\n if (zmAssert.nativeEnumerable(field)) {\n return parseEnum(\n Object.values(field._def.values),\n required,\n def as zm.mDefault<string>,\n );\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as zm.mDefault<boolean>);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as zm.mDefault<Date>,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n required,\n field.element,\n def as zm.mDefault<T extends Array<infer K> ? K[] : never>,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue);\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(\n field._def.innerType,\n false,\n (typeof def !== \"undefined\" ? def : () => null) as zm.mDefault<null>,\n );\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n required,\n field.valueSchema,\n def as zm.mDefault<\n Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n\n if (effect.type === \"preprocess\" || effect.type === \"transform\") {\n return parseField(field._def.schema, required, def, refinement);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: zm.mDefault<number>,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: zm.mDefault<string>,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: zm.mDefault<string>,\n): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: zm.mDefault<boolean>): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: zm.mDefault<Date>,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n required = true,\n element: ZodType<T>,\n def?: zm.mDefault<T[]>,\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n required = true,\n valueType: ZodType<K>,\n def?: zm.mDefault<Map<NoInfer<T>, K>>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def as unknown as any,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f.constructor.name === \"ZodNativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f instanceof ZodNativeEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"NativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { isValidObjectId, Types } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Input = Output,\n > {}\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined);\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["import_mongoose","zmAssert","string","f","name","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssertIds","objectId","f","__zm_type","uuid","zmAssert","string","f","ZodString","number","ZodNumber","object","ZodObject","array","ZodArray","boolean","ZodBoolean","enumerable","ZodEnum","nativeEnumerable","ZodNativeEnum","date","ZodDate","def","ZodDefault","optional","ZodOptional","nullable","ZodNullable","union","ZodUnion","any","ZodAny","mapOrRecord","ZodMap","ZodRecord","effect","ZodEffects","zmAssert","string","f","__zm_type","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","assertions","aConstructor","aInstance","aStaticName","zmAssert","Object","keys","map","key","reduce","acc","f","some","assertion","zmAssertIds","import_zod","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","_def","effect","__zm_validation","validator","UNIQUE_SUPPORT_LIST","ZodString","ZodNumber","ZodDate","type","unique","arg","__zm_unique","sparse","__zm_sparse","TypesMap","String","Number","Object","ZodObject","Array","ZodArray","Boolean","ZodBoolean","Enum","ZodEnum","Date","Default","ZodDefault","Optional","ZodOptional","Nullable","ZodNullable","Union","ZodUnion","Any","ZodAny","Map","ZodMap","Record","ZodRecord","Effects","ZodEffects","key","value","entries","__zm_type","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_ref","refPath","__zm_refPath","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","required","def","refinement","objectId","ref","__zm_ref","refPath","__zm_refPath","unique","__zm_unique","sparse","__zm_sparse","parseObjectId","uuid","parseUUID","number","isUnique","isSparse","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","nativeEnumerable","values","_def","boolean","parseBoolean","date","parseDate","array","parseArray","element","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","valueSchema","effect","type","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","enum","Boolean","Date","SchemaTypes","ObjectId","valueType","pointer","Map","of","UUID","Mixed"]}
package/dist/index.d.cts CHANGED
@@ -23,9 +23,10 @@ declare namespace zm {
23
23
  ref: (ref: string) => zUUID;
24
24
  refPath: (ref: string) => zUUID;
25
25
  }
26
+ type mDefault<T> = () => T;
26
27
  interface _Field<T> {
27
28
  required: boolean;
28
- default?: T;
29
+ default?: mDefault<T>;
29
30
  validate?: {
30
31
  validator: (v: T) => boolean;
31
32
  message?: string;
package/dist/index.d.ts CHANGED
@@ -23,9 +23,10 @@ declare namespace zm {
23
23
  ref: (ref: string) => zUUID;
24
24
  refPath: (ref: string) => zUUID;
25
25
  }
26
+ type mDefault<T> = () => T;
26
27
  interface _Field<T> {
27
28
  required: boolean;
28
- default?: T;
29
+ default?: mDefault<T>;
29
30
  validate?: {
30
31
  validator: (v: T) => boolean;
31
32
  message?: string;
package/dist/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/index.ts
2
5
  import { Schema, SchemaTypes } from "mongoose";
3
6
 
@@ -21,6 +24,9 @@ var zmAssert = {
21
24
  enumerable(f) {
22
25
  return f.constructor.name === "ZodEnum";
23
26
  },
27
+ nativeEnumerable(f) {
28
+ return f.constructor.name === "ZodNativeEnum";
29
+ },
24
30
  date(f) {
25
31
  return f.constructor.name === "ZodDate";
26
32
  },
@@ -48,36 +54,22 @@ var zmAssert = {
48
54
  };
49
55
 
50
56
  // src/assertions/custom.ts
51
- var zmAssertIds;
52
- ((zmAssertIds2) => {
57
+ (function(zmAssertIds2) {
53
58
  function objectId(f) {
54
59
  return "__zm_type" in f && f.__zm_type === "ObjectId";
55
60
  }
61
+ __name(objectId, "objectId");
56
62
  zmAssertIds2.objectId = objectId;
57
63
  function uuid(f) {
58
64
  return "__zm_type" in f && f.__zm_type === "UUID";
59
65
  }
66
+ __name(uuid, "uuid");
60
67
  zmAssertIds2.uuid = uuid;
61
68
  })(zmAssertIds || (zmAssertIds = {}));
69
+ var zmAssertIds;
62
70
 
63
71
  // src/assertions/instanceOf.ts
64
- import {
65
- ZodAny,
66
- ZodArray,
67
- ZodBoolean,
68
- ZodDate,
69
- ZodDefault,
70
- ZodEffects,
71
- ZodEnum,
72
- ZodMap,
73
- ZodNullable,
74
- ZodNumber,
75
- ZodObject,
76
- ZodOptional,
77
- ZodRecord,
78
- ZodString,
79
- ZodUnion
80
- } from "zod";
72
+ import { ZodAny, ZodArray, ZodBoolean, ZodDate, ZodDefault, ZodEffects, ZodEnum, ZodMap, ZodNativeEnum, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodRecord, ZodString, ZodUnion } from "zod";
81
73
  var zmAssert2 = {
82
74
  string(f) {
83
75
  return f instanceof ZodString;
@@ -97,6 +89,9 @@ var zmAssert2 = {
97
89
  enumerable(f) {
98
90
  return f instanceof ZodEnum;
99
91
  },
92
+ nativeEnumerable(f) {
93
+ return f instanceof ZodNativeEnum;
94
+ },
100
95
  date(f) {
101
96
  return f instanceof ZodDate;
102
97
  },
@@ -143,6 +138,9 @@ var zmAssert3 = {
143
138
  enumerable(f) {
144
139
  return "__zm_type" in f && f.__zm_type === "Enum";
145
140
  },
141
+ nativeEnumerable(f) {
142
+ return "__zm_type" in f && f.__zm_type === "NativeEnum";
143
+ },
146
144
  date(f) {
147
145
  return "__zm_type" in f && f.__zm_type === "Date";
148
146
  },
@@ -170,7 +168,11 @@ var zmAssert3 = {
170
168
  };
171
169
 
172
170
  // src/assertions/assertions.ts
173
- var assertions = [zmAssert, zmAssert2, zmAssert3];
171
+ var assertions = [
172
+ zmAssert,
173
+ zmAssert2,
174
+ zmAssert3
175
+ ];
174
176
  var zmAssert4 = Object.keys(zmAssert).map((key) => key).reduce((acc, key) => {
175
177
  acc[key] = (f) => {
176
178
  return assertions.some((assertion) => assertion[key](f));
@@ -183,22 +185,19 @@ var assertions_default = {
183
185
  };
184
186
 
185
187
  // src/extension.ts
186
- import { Types, isValidObjectId } from "mongoose";
188
+ import { isValidObjectId, Types } from "mongoose";
187
189
  import { z } from "zod";
188
190
  var zod_extended = false;
189
191
  function extendZod(z_0) {
190
- if (zod_extended)
191
- return;
192
+ if (zod_extended) return;
192
193
  zod_extended = true;
193
194
  const _refine = z_0.ZodType.prototype.refine;
194
195
  z_0.ZodType.prototype.refine = function(check, opts) {
195
196
  const zEffect = _refine.bind(this)(check, opts);
196
- let message = void 0;
197
+ let message;
197
198
  if (opts) {
198
- if (typeof opts === "string")
199
- message = opts;
200
- else if ("message" in opts)
201
- message = opts.message;
199
+ if (typeof opts === "string") message = opts;
200
+ else if ("message" in opts) message = opts.message;
202
201
  }
203
202
  zEffect._def.effect.__zm_validation = {
204
203
  validator: check,
@@ -206,7 +205,11 @@ function extendZod(z_0) {
206
205
  };
207
206
  return zEffect;
208
207
  };
209
- const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate];
208
+ const UNIQUE_SUPPORT_LIST = [
209
+ z_0.ZodString,
210
+ z_0.ZodNumber,
211
+ z_0.ZodDate
212
+ ];
210
213
  for (const type of UNIQUE_SUPPORT_LIST) {
211
214
  type.prototype.unique = function(arg = true) {
212
215
  this.__zm_unique = arg;
@@ -238,10 +241,13 @@ function extendZod(z_0) {
238
241
  value.prototype.__zm_type = key;
239
242
  }
240
243
  }
241
- var createId = () => {
242
- return z.string().refine((v) => isValidObjectId(v), { message: "Invalid ObjectId" }).or(z.instanceof(Types.ObjectId));
243
- };
244
- var zId = (ref) => {
244
+ __name(extendZod, "extendZod");
245
+ var createId = /* @__PURE__ */ __name(() => {
246
+ return z.string().refine((v) => isValidObjectId(v), {
247
+ message: "Invalid ObjectId"
248
+ }).or(z.instanceof(Types.ObjectId));
249
+ }, "createId");
250
+ var zId = /* @__PURE__ */ __name((ref) => {
245
251
  const output = createId();
246
252
  output.__zm_type = "ObjectId";
247
253
  output.__zm_ref = ref;
@@ -262,11 +268,13 @@ var zId = (ref) => {
262
268
  return this;
263
269
  };
264
270
  return output;
265
- };
266
- var createUUID = () => {
267
- return z.string().uuid({ message: "Invalid UUID" }).or(z.instanceof(Types.UUID));
268
- };
269
- var zUUID = (ref) => {
271
+ }, "zId");
272
+ var createUUID = /* @__PURE__ */ __name(() => {
273
+ return z.string().uuid({
274
+ message: "Invalid UUID"
275
+ }).or(z.instanceof(Types.UUID));
276
+ }, "createUUID");
277
+ var zUUID = /* @__PURE__ */ __name((ref) => {
270
278
  const output = createUUID();
271
279
  output.__zm_type = "UUID";
272
280
  output.__zm_ref = ref;
@@ -287,16 +295,18 @@ var zUUID = (ref) => {
287
295
  return this;
288
296
  };
289
297
  return output;
290
- };
298
+ }, "zUUID");
291
299
 
292
300
  // src/index.ts
293
301
  function zodSchema(schema, options) {
294
302
  const definition = parseObject(schema);
295
303
  return new Schema(definition, options);
296
304
  }
305
+ __name(zodSchema, "zodSchema");
297
306
  function zodSchemaRaw(schema) {
298
307
  return parseObject(schema);
299
308
  }
309
+ __name(zodSchemaRaw, "zodSchemaRaw");
300
310
  function parseObject(obj) {
301
311
  const object = {};
302
312
  for (const [key, field] of Object.entries(obj.shape)) {
@@ -304,13 +314,13 @@ function parseObject(obj) {
304
314
  object[key] = parseObject(field);
305
315
  } else {
306
316
  const f = parseField(field);
307
- if (!f)
308
- throw new Error(`Unsupported field type: ${field.constructor}`);
317
+ if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);
309
318
  object[key] = f;
310
319
  }
311
320
  }
312
321
  return object;
313
322
  }
323
+ __name(parseObject, "parseObject");
314
324
  function parseField(field, required = true, def, refinement) {
315
325
  if (assertions_default.objectId(field)) {
316
326
  const ref = field.__zm_ref;
@@ -332,59 +342,38 @@ function parseField(field, required = true, def, refinement) {
332
342
  if (assertions_default.number(field)) {
333
343
  const isUnique = field.__zm_unique ?? false;
334
344
  const isSparse = field.__zm_sparse ?? false;
335
- return parseNumber(
336
- field,
337
- required,
338
- def,
339
- isUnique,
340
- refinement,
341
- isSparse
342
- );
345
+ return parseNumber(field, required, def, isUnique, refinement, isSparse);
343
346
  }
344
347
  if (assertions_default.string(field)) {
345
348
  const isUnique = field.__zm_unique ?? false;
346
349
  const isSparse = field.__zm_sparse ?? false;
347
- return parseString(
348
- field,
349
- required,
350
- def,
351
- isUnique,
352
- refinement,
353
- isSparse
354
- );
350
+ return parseString(field, required, def, isUnique, refinement, isSparse);
355
351
  }
356
352
  if (assertions_default.enumerable(field)) {
357
353
  return parseEnum(Object.keys(field.Values), required, def);
358
354
  }
355
+ if (assertions_default.nativeEnumerable(field)) {
356
+ return parseEnum(Object.values(field._def.values), required, def);
357
+ }
359
358
  if (assertions_default.boolean(field)) {
360
359
  return parseBoolean(required, def);
361
360
  }
362
361
  if (assertions_default.date(field)) {
363
362
  const isUnique = field.__zm_unique ?? false;
364
363
  const isSparse = field.__zm_sparse ?? false;
365
- return parseDate(
366
- required,
367
- def,
368
- refinement,
369
- isUnique,
370
- isSparse
371
- );
364
+ return parseDate(required, def, refinement, isUnique, isSparse);
372
365
  }
373
366
  if (assertions_default.array(field)) {
374
- return parseArray(
375
- required,
376
- field.element,
377
- def
378
- );
367
+ return parseArray(required, field.element, def);
379
368
  }
380
369
  if (assertions_default.def(field)) {
381
- return parseField(field._def.innerType, required, field._def.defaultValue());
370
+ return parseField(field._def.innerType, required, field._def.defaultValue);
382
371
  }
383
372
  if (assertions_default.optional(field)) {
384
373
  return parseField(field._def.innerType, false, void 0);
385
374
  }
386
375
  if (assertions_default.nullable(field)) {
387
- return parseField(field._def.innerType, false, def || null);
376
+ return parseField(field._def.innerType, false, typeof def !== "undefined" ? def : () => null);
388
377
  }
389
378
  if (assertions_default.union(field)) {
390
379
  return parseField(field._def.options[0]);
@@ -393,11 +382,7 @@ function parseField(field, required = true, def, refinement) {
393
382
  return parseMixed(required, def);
394
383
  }
395
384
  if (assertions_default.mapOrRecord(field)) {
396
- return parseMap(
397
- required,
398
- field.valueSchema,
399
- def
400
- );
385
+ return parseMap(required, field.valueSchema, def);
401
386
  }
402
387
  if (assertions_default.effect(field)) {
403
388
  const effect = field._def.effect;
@@ -405,9 +390,13 @@ function parseField(field, required = true, def, refinement) {
405
390
  const validation = effect.__zm_validation;
406
391
  return parseField(field._def.schema, required, def, validation);
407
392
  }
393
+ if (effect.type === "preprocess" || effect.type === "transform") {
394
+ return parseField(field._def.schema, required, def, refinement);
395
+ }
408
396
  }
409
397
  return null;
410
398
  }
399
+ __name(parseField, "parseField");
411
400
  function parseNumber(field, required = true, def, unique = false, validate, sparse = false) {
412
401
  const output = {
413
402
  type: Number,
@@ -418,10 +407,10 @@ function parseNumber(field, required = true, def, unique = false, validate, spar
418
407
  unique,
419
408
  sparse
420
409
  };
421
- if (validate)
422
- output.validate = validate;
410
+ if (validate) output.validate = validate;
423
411
  return output;
424
412
  }
413
+ __name(parseNumber, "parseNumber");
425
414
  function parseString(field, required = true, def, unique = false, validate, sparse = false) {
426
415
  const output = {
427
416
  type: String,
@@ -432,10 +421,10 @@ function parseString(field, required = true, def, unique = false, validate, spar
432
421
  unique,
433
422
  sparse
434
423
  };
435
- if (validate)
436
- output.validate = validate;
424
+ if (validate) output.validate = validate;
437
425
  return output;
438
426
  }
427
+ __name(parseString, "parseString");
439
428
  function parseEnum(values, required = true, def) {
440
429
  return {
441
430
  type: String,
@@ -446,6 +435,7 @@ function parseEnum(values, required = true, def) {
446
435
  required
447
436
  };
448
437
  }
438
+ __name(parseEnum, "parseEnum");
449
439
  function parseBoolean(required = true, def) {
450
440
  return {
451
441
  type: Boolean,
@@ -453,6 +443,7 @@ function parseBoolean(required = true, def) {
453
443
  required
454
444
  };
455
445
  }
446
+ __name(parseBoolean, "parseBoolean");
456
447
  function parseDate(required = true, def, validate, unique = false, sparse = false) {
457
448
  const output = {
458
449
  type: Date,
@@ -461,10 +452,10 @@ function parseDate(required = true, def, validate, unique = false, sparse = fals
461
452
  unique,
462
453
  sparse
463
454
  };
464
- if (validate)
465
- output.validate = validate;
455
+ if (validate) output.validate = validate;
466
456
  return output;
467
457
  }
458
+ __name(parseDate, "parseDate");
468
459
  function parseObjectId(required = true, ref, unique = false, refPath, sparse = false) {
469
460
  const output = {
470
461
  type: SchemaTypes.ObjectId,
@@ -472,26 +463,26 @@ function parseObjectId(required = true, ref, unique = false, refPath, sparse = f
472
463
  unique,
473
464
  sparse
474
465
  };
475
- if (ref)
476
- output.ref = ref;
477
- if (refPath)
478
- output.refPath = refPath;
466
+ if (ref) output.ref = ref;
467
+ if (refPath) output.refPath = refPath;
479
468
  return output;
480
469
  }
470
+ __name(parseObjectId, "parseObjectId");
481
471
  function parseArray(required = true, element, def) {
482
472
  const innerType = parseField(element);
483
- if (!innerType)
484
- throw new Error("Unsupported array type");
473
+ if (!innerType) throw new Error("Unsupported array type");
485
474
  return {
486
- type: [innerType],
475
+ type: [
476
+ innerType
477
+ ],
487
478
  default: def,
488
479
  required
489
480
  };
490
481
  }
482
+ __name(parseArray, "parseArray");
491
483
  function parseMap(required = true, valueType, def) {
492
484
  const pointer = parseField(valueType);
493
- if (!pointer)
494
- throw new Error("Unsupported map value type");
485
+ if (!pointer) throw new Error("Unsupported map value type");
495
486
  return {
496
487
  type: Map,
497
488
  of: pointer,
@@ -499,6 +490,7 @@ function parseMap(required = true, valueType, def) {
499
490
  required
500
491
  };
501
492
  }
493
+ __name(parseMap, "parseMap");
502
494
  function parseUUID(required = true, ref, unique = false, refPath, sparse = false) {
503
495
  const output = {
504
496
  type: SchemaTypes.UUID,
@@ -506,12 +498,11 @@ function parseUUID(required = true, ref, unique = false, refPath, sparse = false
506
498
  unique,
507
499
  sparse
508
500
  };
509
- if (ref)
510
- output.ref = ref;
511
- if (refPath)
512
- output.refPath = refPath;
501
+ if (ref) output.ref = ref;
502
+ if (refPath) output.refPath = refPath;
513
503
  return output;
514
504
  }
505
+ __name(parseUUID, "parseUUID");
515
506
  function parseMixed(required = true, def) {
516
507
  return {
517
508
  type: SchemaTypes.Mixed,
@@ -519,9 +510,10 @@ function parseMixed(required = true, def) {
519
510
  required
520
511
  };
521
512
  }
522
- var src_default = zodSchema;
513
+ __name(parseMixed, "parseMixed");
514
+ var index_default = zodSchema;
523
515
  export {
524
- src_default as default,
516
+ index_default as default,
525
517
  extendZod,
526
518
  zId,
527
519
  zUUID,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema);\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T> {\n const object: any = {};\n for (const [key, field] of Object.entries(obj.shape)) {\n if (zmAssert.object(field)) {\n object[key] = parseObject(field);\n } else {\n const f = parseField(field);\n if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);\n\n object[key] = f;\n }\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: T,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as number,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as string,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as string);\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as boolean);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as Date,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n required,\n field.element,\n def as T extends Array<infer K> ? K[] : never,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue());\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(field._def.innerType, false, def || null);\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n required,\n field.valueSchema,\n def as Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: number,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: string,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(values: string[], required = true, def?: string): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: boolean): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: Date,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n // biome-ignore lint/style/useDefaultParameterLast: Should be consistent with other functions\n required = true,\n element: ZodType<T>,\n def?: T[],\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n // biome-ignore lint/style/useDefaultParameterLast: Consistency with other functions\n required = true,\n valueType: ZodType<K>,\n def?: Map<NoInfer<T>, K>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { Types, isValidObjectId } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n Input = Output,\n > {\n // For future use\n }\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined) = undefined;\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["zmAssertIds","zmAssert","zmAssert","zmAssert","ref"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\n\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\n\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema);\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T> {\n const object: any = {};\n for (const [key, field] of Object.entries(obj.shape)) {\n if (zmAssert.object(field)) {\n object[key] = parseObject(field);\n } else {\n const f = parseField(field);\n if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);\n\n object[key] = f;\n }\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: zm.mDefault<T>,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as zm.mDefault<number>,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as zm.mDefault<string>,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as zm.mDefault<string>);\n }\n\n if (zmAssert.nativeEnumerable(field)) {\n return parseEnum(\n Object.values(field._def.values),\n required,\n def as zm.mDefault<string>,\n );\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as zm.mDefault<boolean>);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as zm.mDefault<Date>,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n required,\n field.element,\n def as zm.mDefault<T extends Array<infer K> ? K[] : never>,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue);\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(\n field._def.innerType,\n false,\n (typeof def !== \"undefined\" ? def : () => null) as zm.mDefault<null>,\n );\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n required,\n field.valueSchema,\n def as zm.mDefault<\n Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n\n if (effect.type === \"preprocess\" || effect.type === \"transform\") {\n return parseField(field._def.schema, required, def, refinement);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: zm.mDefault<number>,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: zm.mDefault<string>,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: zm.mDefault<string>,\n): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: zm.mDefault<boolean>): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: zm.mDefault<Date>,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n required = true,\n element: ZodType<T>,\n def?: zm.mDefault<T[]>,\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n required = true,\n valueType: ZodType<K>,\n def?: zm.mDefault<Map<NoInfer<T>, K>>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def as unknown as any,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f.constructor.name === \"ZodNativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f instanceof ZodNativeEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"NativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { isValidObjectId, Types } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Input = Output,\n > {}\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined);\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["Schema","SchemaTypes","zmAssert","string","f","name","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssertIds","objectId","f","__zm_type","uuid","ZodAny","ZodArray","ZodBoolean","ZodDate","ZodDefault","ZodEffects","ZodEnum","ZodMap","ZodNativeEnum","ZodNullable","ZodNumber","ZodObject","ZodOptional","ZodRecord","ZodString","ZodUnion","zmAssert","string","f","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssert","string","f","__zm_type","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","assertions","aConstructor","aInstance","aStaticName","zmAssert","Object","keys","map","key","reduce","acc","f","some","assertion","zmAssertIds","isValidObjectId","Types","z","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","_def","effect","__zm_validation","validator","UNIQUE_SUPPORT_LIST","ZodString","ZodNumber","ZodDate","type","unique","arg","__zm_unique","sparse","__zm_sparse","TypesMap","String","Number","Object","ZodObject","Array","ZodArray","Boolean","ZodBoolean","Enum","ZodEnum","Date","Default","ZodDefault","Optional","ZodOptional","Nullable","ZodNullable","Union","ZodUnion","Any","ZodAny","Map","ZodMap","Record","ZodRecord","Effects","ZodEffects","key","value","entries","__zm_type","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_ref","refPath","__zm_refPath","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","required","def","refinement","objectId","ref","__zm_ref","refPath","__zm_refPath","unique","__zm_unique","sparse","__zm_sparse","parseObjectId","uuid","parseUUID","number","isUnique","isSparse","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","nativeEnumerable","values","_def","boolean","parseBoolean","date","parseDate","array","parseArray","element","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","valueSchema","effect","type","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","enum","Boolean","Date","SchemaTypes","ObjectId","valueType","pointer","Map","of","UUID","Mixed"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zodyac/zod-mongoose",
3
- "version": "4.1.0",
3
+ "version": "4.2.1",
4
4
  "description": "A library that allows you to generate mongoose schemas from zod objects.",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -46,20 +46,21 @@
46
46
  "document"
47
47
  ],
48
48
  "devDependencies": {
49
- "@biomejs/biome": "^1.8.3",
50
- "@swc/core": "^1.7.11",
51
- "@swc/jest": "^0.2.36",
52
- "@types/jest": "^29.5.12",
53
- "@types/node": "^22.3.0",
54
- "jest": "^29.7.0",
55
- "make-coverage-badge": "^1.2.0",
56
- "tsup": "^8.0.1",
57
- "typescript": "^5.5.4",
58
- "mongoose": "^8.0.3",
49
+ "@biomejs/biome": "2.3.8",
50
+ "@swc/core": "1.15.3",
51
+ "@swc/jest": "0.2.39",
52
+ "@types/jest": "30.0.0",
53
+ "@types/node": "24.10.1",
54
+ "jest": "30.2.0",
55
+ "make-coverage-badge": "1.2.0",
56
+ "mongoose": "8.20.2",
57
+ "tsup": "8.5.1",
58
+ "typescript": "5.9.2",
59
59
  "zod": "^3.22.4"
60
60
  },
61
61
  "peerDependencies": {
62
- "mongoose": "^8.0.3",
62
+ "mongoose": "^8.20.2",
63
63
  "zod": "^3.22.4"
64
- }
64
+ },
65
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
65
66
  }