@zodyac/zod-mongoose 2.3.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 3.0.0 - 2024-10-19
11
+
10
12
  ## 2.3.3 - 2024-09-21
11
13
 
12
14
  ## 2.3.2 - 2024-09-20
package/dist/index.cjs CHANGED
@@ -30,78 +30,174 @@ __export(src_exports, {
30
30
  module.exports = __toCommonJS(src_exports);
31
31
  var import_mongoose2 = require("mongoose");
32
32
 
33
- // src/helpers.ts
34
- var zmAssert;
35
- ((zmAssert2) => {
36
- function string(f) {
33
+ // src/assertions/constructor.ts
34
+ var zmAssert = {
35
+ string(f) {
37
36
  return f.constructor.name === "ZodString";
38
- }
39
- zmAssert2.string = string;
40
- function number(f) {
37
+ },
38
+ number(f) {
41
39
  return f.constructor.name === "ZodNumber";
42
- }
43
- zmAssert2.number = number;
44
- function object(f) {
40
+ },
41
+ object(f) {
45
42
  return f.constructor.name === "ZodObject";
46
- }
47
- zmAssert2.object = object;
48
- function array(f) {
43
+ },
44
+ array(f) {
49
45
  return f.constructor.name === "ZodArray";
50
- }
51
- zmAssert2.array = array;
52
- function boolean(f) {
46
+ },
47
+ boolean(f) {
53
48
  return f.constructor.name === "ZodBoolean";
54
- }
55
- zmAssert2.boolean = boolean;
56
- function enumerable(f) {
49
+ },
50
+ enumerable(f) {
57
51
  return f.constructor.name === "ZodEnum";
58
- }
59
- zmAssert2.enumerable = enumerable;
60
- function date(f) {
52
+ },
53
+ date(f) {
61
54
  return f.constructor.name === "ZodDate";
55
+ },
56
+ def(f) {
57
+ return f.constructor.name === "ZodDefault";
58
+ },
59
+ optional(f) {
60
+ return f.constructor.name === "ZodOptional";
61
+ },
62
+ nullable(f) {
63
+ return f.constructor.name === "ZodNullable";
64
+ },
65
+ union(f) {
66
+ return f.constructor.name === "ZodUnion";
67
+ },
68
+ any(f) {
69
+ return f.constructor.name === "ZodAny";
70
+ },
71
+ mapOrRecord(f) {
72
+ return f.constructor.name === "ZodMap" || f.constructor.name === "ZodRecord";
73
+ },
74
+ effect(f) {
75
+ return f.constructor.name === "ZodEffects";
62
76
  }
63
- zmAssert2.date = date;
77
+ };
78
+
79
+ // src/assertions/custom.ts
80
+ var zmAssertIds;
81
+ ((zmAssertIds2) => {
64
82
  function objectId(f) {
65
83
  return "__zm_type" in f && f.__zm_type === "ObjectId";
66
84
  }
67
- zmAssert2.objectId = objectId;
85
+ zmAssertIds2.objectId = objectId;
68
86
  function uuid(f) {
69
87
  return "__zm_type" in f && f.__zm_type === "UUID";
70
88
  }
71
- zmAssert2.uuid = uuid;
72
- function def(f) {
73
- return f.constructor.name === "ZodDefault";
74
- }
75
- zmAssert2.def = def;
76
- function optional(f) {
77
- return f.constructor.name === "ZodOptional";
78
- }
79
- zmAssert2.optional = optional;
80
- function nullable(f) {
81
- return f.constructor.name === "ZodNullable";
82
- }
83
- zmAssert2.nullable = nullable;
84
- function union(f) {
85
- return f.constructor.name === "ZodUnion";
86
- }
87
- zmAssert2.union = union;
88
- function any(f) {
89
- return f.constructor.name === "ZodAny";
90
- }
91
- zmAssert2.any = any;
92
- function mapOrRecord(f) {
93
- return f.constructor.name === "ZodMap" || f.constructor.name === "ZodRecord";
89
+ zmAssertIds2.uuid = uuid;
90
+ })(zmAssertIds || (zmAssertIds = {}));
91
+
92
+ // src/assertions/instanceOf.ts
93
+ var import_zod = require("zod");
94
+ var zmAssert2 = {
95
+ string(f) {
96
+ return f instanceof import_zod.ZodString;
97
+ },
98
+ number(f) {
99
+ return f instanceof import_zod.ZodNumber;
100
+ },
101
+ object(f) {
102
+ return f instanceof import_zod.ZodObject;
103
+ },
104
+ array(f) {
105
+ return f instanceof import_zod.ZodArray;
106
+ },
107
+ boolean(f) {
108
+ return f instanceof import_zod.ZodBoolean;
109
+ },
110
+ enumerable(f) {
111
+ return f instanceof import_zod.ZodEnum;
112
+ },
113
+ date(f) {
114
+ return f instanceof import_zod.ZodDate;
115
+ },
116
+ def(f) {
117
+ return f instanceof import_zod.ZodDefault;
118
+ },
119
+ optional(f) {
120
+ return f instanceof import_zod.ZodOptional;
121
+ },
122
+ nullable(f) {
123
+ return f instanceof import_zod.ZodNullable;
124
+ },
125
+ union(f) {
126
+ return f instanceof import_zod.ZodUnion;
127
+ },
128
+ any(f) {
129
+ return f instanceof import_zod.ZodAny;
130
+ },
131
+ mapOrRecord(f) {
132
+ return f instanceof import_zod.ZodMap || f instanceof import_zod.ZodRecord;
133
+ },
134
+ effect(f) {
135
+ return f instanceof import_zod.ZodEffects;
94
136
  }
95
- zmAssert2.mapOrRecord = mapOrRecord;
96
- function effect(f) {
97
- return f.constructor.name === "ZodEffects";
137
+ };
138
+
139
+ // src/assertions/staticNames.ts
140
+ var zmAssert3 = {
141
+ string(f) {
142
+ return "__zm_type" in f && f.__zm_type === "String";
143
+ },
144
+ number(f) {
145
+ return "__zm_type" in f && f.__zm_type === "Number";
146
+ },
147
+ object(f) {
148
+ return "__zm_type" in f && f.__zm_type === "Object";
149
+ },
150
+ array(f) {
151
+ return "__zm_type" in f && f.__zm_type === "Array";
152
+ },
153
+ boolean(f) {
154
+ return "__zm_type" in f && f.__zm_type === "Boolean";
155
+ },
156
+ enumerable(f) {
157
+ return "__zm_type" in f && f.__zm_type === "Enum";
158
+ },
159
+ date(f) {
160
+ return "__zm_type" in f && f.__zm_type === "Date";
161
+ },
162
+ def(f) {
163
+ return "__zm_type" in f && f.__zm_type === "Default";
164
+ },
165
+ optional(f) {
166
+ return "__zm_type" in f && f.__zm_type === "Optional";
167
+ },
168
+ nullable(f) {
169
+ return "__zm_type" in f && f.__zm_type === "Nullable";
170
+ },
171
+ union(f) {
172
+ return "__zm_type" in f && f.__zm_type === "Union";
173
+ },
174
+ any(f) {
175
+ return "__zm_type" in f && f.__zm_type === "Any";
176
+ },
177
+ mapOrRecord(f) {
178
+ return "__zm_type" in f && (f.__zm_type === "Map" || f.__zm_type === "Record");
179
+ },
180
+ effect(f) {
181
+ return "__zm_type" in f && f.__zm_type === "Effects";
98
182
  }
99
- zmAssert2.effect = effect;
100
- })(zmAssert || (zmAssert = {}));
183
+ };
184
+
185
+ // src/assertions/assertions.ts
186
+ var assertions = [zmAssert, zmAssert2, zmAssert3];
187
+ var zmAssert4 = Object.keys(zmAssert).map((key) => key).reduce((acc, key) => {
188
+ acc[key] = (f) => {
189
+ return assertions.some((assertion) => assertion[key](f));
190
+ };
191
+ return acc;
192
+ }, {});
193
+ var assertions_default = {
194
+ ...zmAssert4,
195
+ ...zmAssertIds
196
+ };
101
197
 
102
198
  // src/extension.ts
103
199
  var import_mongoose = require("mongoose");
104
- var import_zod = require("zod");
200
+ var import_zod2 = require("zod");
105
201
  var zod_extended = false;
106
202
  function extendZod(z_0) {
107
203
  if (zod_extended) return;
@@ -132,9 +228,29 @@ function extendZod(z_0) {
132
228
  this.__zm_unique = arg;
133
229
  return this;
134
230
  };
231
+ const TypesMap = {
232
+ String: z_0.ZodString,
233
+ Number: z_0.ZodNumber,
234
+ Object: z_0.ZodObject,
235
+ Array: z_0.ZodArray,
236
+ Boolean: z_0.ZodBoolean,
237
+ Enum: z_0.ZodEnum,
238
+ Date: z_0.ZodDate,
239
+ Default: z_0.ZodDefault,
240
+ Optional: z_0.ZodOptional,
241
+ Nullable: z_0.ZodNullable,
242
+ Union: z_0.ZodUnion,
243
+ Any: z_0.ZodAny,
244
+ Map: z_0.ZodMap,
245
+ Record: z_0.ZodRecord,
246
+ Effects: z_0.ZodEffects
247
+ };
248
+ for (const [key, value] of Object.entries(TypesMap)) {
249
+ value.prototype.__zm_type = key;
250
+ }
135
251
  }
136
252
  var createId = () => {
137
- return import_zod.z.string().refine((v) => (0, import_mongoose.isValidObjectId)(v), { message: "Invalid ObjectId" }).or(import_zod.z.instanceof(import_mongoose.Types.ObjectId));
253
+ return import_zod2.z.string().refine((v) => (0, import_mongoose.isValidObjectId)(v), { message: "Invalid ObjectId" }).or(import_zod2.z.instanceof(import_mongoose.Types.ObjectId));
138
254
  };
139
255
  var zId = (ref) => {
140
256
  const output = createId();
@@ -151,7 +267,7 @@ var zId = (ref) => {
151
267
  return output;
152
268
  };
153
269
  var createUUID = () => {
154
- return import_zod.z.string().uuid({ message: "Invalid UUID" }).or(import_zod.z.instanceof(import_mongoose.Types.UUID));
270
+ return import_zod2.z.string().uuid({ message: "Invalid UUID" }).or(import_zod2.z.instanceof(import_mongoose.Types.UUID));
155
271
  };
156
272
  var zUUID = () => {
157
273
  const output = createUUID();
@@ -174,7 +290,7 @@ function zodSchemaRaw(schema) {
174
290
  function parseObject(obj) {
175
291
  const object = {};
176
292
  for (const [key, field] of Object.entries(obj.shape)) {
177
- if (zmAssert.object(field)) {
293
+ if (assertions_default.object(field)) {
178
294
  object[key] = parseObject(field);
179
295
  } else {
180
296
  const f = parseField(field);
@@ -185,19 +301,19 @@ function parseObject(obj) {
185
301
  return object;
186
302
  }
187
303
  function parseField(field, required = true, def, refinement) {
188
- if (zmAssert.objectId(field)) {
304
+ if (assertions_default.objectId(field)) {
189
305
  const ref = field.__zm_ref;
190
306
  const unique = field.__zm_unique;
191
307
  return parseObjectId(required, ref, unique);
192
308
  }
193
- if (zmAssert.uuid(field)) {
309
+ if (assertions_default.uuid(field)) {
194
310
  const unique = field.__zm_unique;
195
311
  return parseUUID(required, unique);
196
312
  }
197
- if (zmAssert.object(field)) {
313
+ if (assertions_default.object(field)) {
198
314
  return parseObject(field);
199
315
  }
200
- if (zmAssert.number(field)) {
316
+ if (assertions_default.number(field)) {
201
317
  const isUnique = field.__zm_unique ?? false;
202
318
  return parseNumber(
203
319
  field,
@@ -207,7 +323,7 @@ function parseField(field, required = true, def, refinement) {
207
323
  refinement
208
324
  );
209
325
  }
210
- if (zmAssert.string(field)) {
326
+ if (assertions_default.string(field)) {
211
327
  const isUnique = field.__zm_unique ?? false;
212
328
  return parseString(
213
329
  field,
@@ -217,13 +333,13 @@ function parseField(field, required = true, def, refinement) {
217
333
  refinement
218
334
  );
219
335
  }
220
- if (zmAssert.enumerable(field)) {
336
+ if (assertions_default.enumerable(field)) {
221
337
  return parseEnum(Object.keys(field.Values), required, def);
222
338
  }
223
- if (zmAssert.boolean(field)) {
339
+ if (assertions_default.boolean(field)) {
224
340
  return parseBoolean(required, def);
225
341
  }
226
- if (zmAssert.date(field)) {
342
+ if (assertions_default.date(field)) {
227
343
  const isUnique = field.__zm_unique ?? false;
228
344
  return parseDate(
229
345
  required,
@@ -232,40 +348,36 @@ function parseField(field, required = true, def, refinement) {
232
348
  isUnique
233
349
  );
234
350
  }
235
- if (zmAssert.array(field)) {
351
+ if (assertions_default.array(field)) {
236
352
  return parseArray(
237
353
  required,
238
354
  field.element,
239
355
  def
240
356
  );
241
357
  }
242
- if (zmAssert.def(field)) {
243
- return parseField(
244
- field._def.innerType,
245
- required,
246
- field._def.defaultValue()
247
- );
358
+ if (assertions_default.def(field)) {
359
+ return parseField(field._def.innerType, required, field._def.defaultValue());
248
360
  }
249
- if (zmAssert.optional(field)) {
361
+ if (assertions_default.optional(field)) {
250
362
  return parseField(field._def.innerType, false, void 0);
251
363
  }
252
- if (zmAssert.nullable(field)) {
364
+ if (assertions_default.nullable(field)) {
253
365
  return parseField(field._def.innerType, false, def || null);
254
366
  }
255
- if (zmAssert.union(field)) {
367
+ if (assertions_default.union(field)) {
256
368
  return parseField(field._def.options[0]);
257
369
  }
258
- if (zmAssert.any(field)) {
370
+ if (assertions_default.any(field)) {
259
371
  return parseMixed(required, def);
260
372
  }
261
- if (zmAssert.mapOrRecord(field)) {
373
+ if (assertions_default.mapOrRecord(field)) {
262
374
  return parseMap(
263
375
  required,
264
376
  field.keySchema,
265
377
  def
266
378
  );
267
379
  }
268
- if (zmAssert.effect(field)) {
380
+ if (assertions_default.effect(field)) {
269
381
  const effect = field._def.effect;
270
382
  if (effect.type === "refinement") {
271
383
  const validation = effect.__zm_validation;
@@ -353,17 +465,17 @@ function parseMap(required = true, key, def) {
353
465
  }
354
466
  function typeConstructor(t) {
355
467
  switch (true) {
356
- case zmAssert.string(t):
468
+ case assertions_default.string(t):
357
469
  return String;
358
- case zmAssert.enumerable(t):
470
+ case assertions_default.enumerable(t):
359
471
  return String;
360
- case zmAssert.uuid(t):
472
+ case assertions_default.uuid(t):
361
473
  return import_mongoose2.SchemaTypes.UUID;
362
- case zmAssert.objectId(t):
474
+ case assertions_default.objectId(t):
363
475
  return import_mongoose2.SchemaTypes.ObjectId;
364
- case zmAssert.number(t):
476
+ case assertions_default.number(t):
365
477
  return Number;
366
- case zmAssert.date(t):
478
+ case assertions_default.date(t):
367
479
  return Date;
368
480
  default:
369
481
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/helpers.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type {\n ZodNumber,\n ZodObject,\n ZodRawShape,\n ZodString,\n ZodType,\n z,\n} from \"zod\";\nimport { zmAssert } from \"./helpers.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>(\n schema: ZodObject<T>\n): 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 unique = (<any>field).__zm_unique;\n return parseObjectId(required, ref, unique);\n }\n\n if (zmAssert.uuid(field)) {\n const unique = (<any>field).__zm_unique;\n return parseUUID(required, unique);\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 return parseNumber(\n field,\n required,\n def as number,\n isUnique,\n refinement as zm.EffectValidator<number>\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n return parseString(\n field,\n required,\n def as string,\n isUnique,\n refinement as zm.EffectValidator<string>\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 return parseDate(\n required,\n def as Date,\n refinement as zm.EffectValidator<Date>,\n isUnique\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(\n field._def.innerType,\n required,\n field._def.defaultValue()\n );\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.keySchema,\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): 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 };\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): 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 };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: string\n): zm.mString {\n return {\n type: String,\n unique: 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): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\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): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n };\n\n if (ref) output.ref = ref;\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 key: ZodType<T>,\n def?: Map<NoInfer<T>, K>\n): zm.mMap<T, K> {\n const pointer = typeConstructor(key);\n return {\n type: Map,\n of: pointer,\n default: def,\n required,\n };\n}\n\nfunction typeConstructor<T>(t: ZodType<T>) {\n switch (true) {\n case zmAssert.string(t):\n return String;\n case zmAssert.enumerable(t):\n return String;\n case zmAssert.uuid(t):\n return SchemaTypes.UUID;\n case zmAssert.objectId(t):\n return SchemaTypes.ObjectId;\n case zmAssert.number(t):\n return Number;\n case zmAssert.date(t):\n return Date;\n default:\n return undefined;\n }\n}\n\nfunction parseUUID(required = true, unique = false): zm.mUUID {\n return {\n type: SchemaTypes.UUID,\n required,\n unique,\n };\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\";\n\nexport namespace zmAssert {\n export function string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n }\n\n export function number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n }\n\n export function object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n }\n\n export function array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n }\n\n export function boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n }\n\n export function enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n }\n\n export function date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n }\n\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 export function def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n }\n\n export function optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n }\n\n export function nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n }\n\n export function union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n }\n\n export function any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n }\n\n export function mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n }\n\n export function effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n }\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 __zm_unique: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n __zm_unique: 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;\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 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 z_0.ZodString.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodNumber.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodDate.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n ref: (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).unique = function (val = true) {\n (<any>this).__zm_unique = 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};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["import_mongoose","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\";\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 unique = (<any>field).__zm_unique;\n return parseObjectId(required, ref, unique);\n }\n\n if (zmAssert.uuid(field)) {\n const unique = (<any>field).__zm_unique;\n return parseUUID(required, unique);\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 return parseNumber(\n field,\n required,\n def as number,\n isUnique,\n refinement as zm.EffectValidator<number>,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n return parseString(\n field,\n required,\n def as string,\n isUnique,\n refinement as zm.EffectValidator<string>,\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 return parseDate(\n required,\n def as Date,\n refinement as zm.EffectValidator<Date>,\n isUnique,\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.keySchema,\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): 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 };\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): 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 };\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 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): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(required = true, ref?: string, unique = false): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n };\n\n if (ref) output.ref = ref;\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 key: ZodType<T>,\n def?: Map<NoInfer<T>, K>,\n): zm.mMap<T, K> {\n const pointer = typeConstructor(key);\n return {\n type: Map,\n of: pointer,\n default: def,\n required,\n };\n}\n\nfunction typeConstructor<T>(t: ZodType<T>) {\n switch (true) {\n case zmAssert.string(t):\n return String;\n case zmAssert.enumerable(t):\n return String;\n case zmAssert.uuid(t):\n return SchemaTypes.UUID;\n case zmAssert.objectId(t):\n return SchemaTypes.ObjectId;\n case zmAssert.number(t):\n return Number;\n case zmAssert.date(t):\n return Date;\n default:\n return undefined;\n }\n}\n\nfunction parseUUID(required = true, unique = false): zm.mUUID {\n return {\n type: SchemaTypes.UUID,\n required,\n unique,\n };\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 __zm_unique: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n __zm_unique: 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 *\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 z_0.ZodString.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodNumber.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodDate.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\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 ref: (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).unique = function (val = true) {\n (<any>this).__zm_unique = 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};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = 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"]}
package/dist/index.d.cts CHANGED
@@ -92,6 +92,30 @@ declare module "zod" {
92
92
  interface ZodType<Output = any, Def extends z.ZodTypeDef = z.ZodTypeDef, Input = Output> {
93
93
  }
94
94
  }
95
+ /**
96
+ * Extends the Zod library with additional functionality.
97
+ *
98
+ * This function modifies the Zod library to add custom validation and uniqueness checks.
99
+ * It ensures that the extension is only applied once.
100
+ *
101
+ * @param z_0 - The Zod library to extend.
102
+ *
103
+ * @remarks
104
+ * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.
105
+ * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * import { z } from "zod";
110
+ * import { extendZod } from "./extension";
111
+ *
112
+ * extendZod(z);
113
+ *
114
+ * const schema = z.object({
115
+ * name: z.string().unique();
116
+ * });
117
+ * ```
118
+ */
95
119
  declare function extendZod(z_0: typeof z): void;
96
120
  type TzmId = ReturnType<typeof createId> & {
97
121
  unique: (arg?: boolean) => TzmId;
package/dist/index.d.ts CHANGED
@@ -92,6 +92,30 @@ declare module "zod" {
92
92
  interface ZodType<Output = any, Def extends z.ZodTypeDef = z.ZodTypeDef, Input = Output> {
93
93
  }
94
94
  }
95
+ /**
96
+ * Extends the Zod library with additional functionality.
97
+ *
98
+ * This function modifies the Zod library to add custom validation and uniqueness checks.
99
+ * It ensures that the extension is only applied once.
100
+ *
101
+ * @param z_0 - The Zod library to extend.
102
+ *
103
+ * @remarks
104
+ * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.
105
+ * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * import { z } from "zod";
110
+ * import { extendZod } from "./extension";
111
+ *
112
+ * extendZod(z);
113
+ *
114
+ * const schema = z.object({
115
+ * name: z.string().unique();
116
+ * });
117
+ * ```
118
+ */
95
119
  declare function extendZod(z_0: typeof z): void;
96
120
  type TzmId = ReturnType<typeof createId> & {
97
121
  unique: (arg?: boolean) => TzmId;
package/dist/index.js CHANGED
@@ -1,74 +1,186 @@
1
1
  // src/index.ts
2
2
  import { Schema, SchemaTypes } from "mongoose";
3
3
 
4
- // src/helpers.ts
5
- var zmAssert;
6
- ((zmAssert2) => {
7
- function string(f) {
4
+ // src/assertions/constructor.ts
5
+ var zmAssert = {
6
+ string(f) {
8
7
  return f.constructor.name === "ZodString";
9
- }
10
- zmAssert2.string = string;
11
- function number(f) {
8
+ },
9
+ number(f) {
12
10
  return f.constructor.name === "ZodNumber";
13
- }
14
- zmAssert2.number = number;
15
- function object(f) {
11
+ },
12
+ object(f) {
16
13
  return f.constructor.name === "ZodObject";
17
- }
18
- zmAssert2.object = object;
19
- function array(f) {
14
+ },
15
+ array(f) {
20
16
  return f.constructor.name === "ZodArray";
21
- }
22
- zmAssert2.array = array;
23
- function boolean(f) {
17
+ },
18
+ boolean(f) {
24
19
  return f.constructor.name === "ZodBoolean";
25
- }
26
- zmAssert2.boolean = boolean;
27
- function enumerable(f) {
20
+ },
21
+ enumerable(f) {
28
22
  return f.constructor.name === "ZodEnum";
29
- }
30
- zmAssert2.enumerable = enumerable;
31
- function date(f) {
23
+ },
24
+ date(f) {
32
25
  return f.constructor.name === "ZodDate";
26
+ },
27
+ def(f) {
28
+ return f.constructor.name === "ZodDefault";
29
+ },
30
+ optional(f) {
31
+ return f.constructor.name === "ZodOptional";
32
+ },
33
+ nullable(f) {
34
+ return f.constructor.name === "ZodNullable";
35
+ },
36
+ union(f) {
37
+ return f.constructor.name === "ZodUnion";
38
+ },
39
+ any(f) {
40
+ return f.constructor.name === "ZodAny";
41
+ },
42
+ mapOrRecord(f) {
43
+ return f.constructor.name === "ZodMap" || f.constructor.name === "ZodRecord";
44
+ },
45
+ effect(f) {
46
+ return f.constructor.name === "ZodEffects";
33
47
  }
34
- zmAssert2.date = date;
48
+ };
49
+
50
+ // src/assertions/custom.ts
51
+ var zmAssertIds;
52
+ ((zmAssertIds2) => {
35
53
  function objectId(f) {
36
54
  return "__zm_type" in f && f.__zm_type === "ObjectId";
37
55
  }
38
- zmAssert2.objectId = objectId;
56
+ zmAssertIds2.objectId = objectId;
39
57
  function uuid(f) {
40
58
  return "__zm_type" in f && f.__zm_type === "UUID";
41
59
  }
42
- zmAssert2.uuid = uuid;
43
- function def(f) {
44
- return f.constructor.name === "ZodDefault";
45
- }
46
- zmAssert2.def = def;
47
- function optional(f) {
48
- return f.constructor.name === "ZodOptional";
49
- }
50
- zmAssert2.optional = optional;
51
- function nullable(f) {
52
- return f.constructor.name === "ZodNullable";
53
- }
54
- zmAssert2.nullable = nullable;
55
- function union(f) {
56
- return f.constructor.name === "ZodUnion";
57
- }
58
- zmAssert2.union = union;
59
- function any(f) {
60
- return f.constructor.name === "ZodAny";
61
- }
62
- zmAssert2.any = any;
63
- function mapOrRecord(f) {
64
- return f.constructor.name === "ZodMap" || f.constructor.name === "ZodRecord";
60
+ zmAssertIds2.uuid = uuid;
61
+ })(zmAssertIds || (zmAssertIds = {}));
62
+
63
+ // 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";
81
+ var zmAssert2 = {
82
+ string(f) {
83
+ return f instanceof ZodString;
84
+ },
85
+ number(f) {
86
+ return f instanceof ZodNumber;
87
+ },
88
+ object(f) {
89
+ return f instanceof ZodObject;
90
+ },
91
+ array(f) {
92
+ return f instanceof ZodArray;
93
+ },
94
+ boolean(f) {
95
+ return f instanceof ZodBoolean;
96
+ },
97
+ enumerable(f) {
98
+ return f instanceof ZodEnum;
99
+ },
100
+ date(f) {
101
+ return f instanceof ZodDate;
102
+ },
103
+ def(f) {
104
+ return f instanceof ZodDefault;
105
+ },
106
+ optional(f) {
107
+ return f instanceof ZodOptional;
108
+ },
109
+ nullable(f) {
110
+ return f instanceof ZodNullable;
111
+ },
112
+ union(f) {
113
+ return f instanceof ZodUnion;
114
+ },
115
+ any(f) {
116
+ return f instanceof ZodAny;
117
+ },
118
+ mapOrRecord(f) {
119
+ return f instanceof ZodMap || f instanceof ZodRecord;
120
+ },
121
+ effect(f) {
122
+ return f instanceof ZodEffects;
65
123
  }
66
- zmAssert2.mapOrRecord = mapOrRecord;
67
- function effect(f) {
68
- return f.constructor.name === "ZodEffects";
124
+ };
125
+
126
+ // src/assertions/staticNames.ts
127
+ var zmAssert3 = {
128
+ string(f) {
129
+ return "__zm_type" in f && f.__zm_type === "String";
130
+ },
131
+ number(f) {
132
+ return "__zm_type" in f && f.__zm_type === "Number";
133
+ },
134
+ object(f) {
135
+ return "__zm_type" in f && f.__zm_type === "Object";
136
+ },
137
+ array(f) {
138
+ return "__zm_type" in f && f.__zm_type === "Array";
139
+ },
140
+ boolean(f) {
141
+ return "__zm_type" in f && f.__zm_type === "Boolean";
142
+ },
143
+ enumerable(f) {
144
+ return "__zm_type" in f && f.__zm_type === "Enum";
145
+ },
146
+ date(f) {
147
+ return "__zm_type" in f && f.__zm_type === "Date";
148
+ },
149
+ def(f) {
150
+ return "__zm_type" in f && f.__zm_type === "Default";
151
+ },
152
+ optional(f) {
153
+ return "__zm_type" in f && f.__zm_type === "Optional";
154
+ },
155
+ nullable(f) {
156
+ return "__zm_type" in f && f.__zm_type === "Nullable";
157
+ },
158
+ union(f) {
159
+ return "__zm_type" in f && f.__zm_type === "Union";
160
+ },
161
+ any(f) {
162
+ return "__zm_type" in f && f.__zm_type === "Any";
163
+ },
164
+ mapOrRecord(f) {
165
+ return "__zm_type" in f && (f.__zm_type === "Map" || f.__zm_type === "Record");
166
+ },
167
+ effect(f) {
168
+ return "__zm_type" in f && f.__zm_type === "Effects";
69
169
  }
70
- zmAssert2.effect = effect;
71
- })(zmAssert || (zmAssert = {}));
170
+ };
171
+
172
+ // src/assertions/assertions.ts
173
+ var assertions = [zmAssert, zmAssert2, zmAssert3];
174
+ var zmAssert4 = Object.keys(zmAssert).map((key) => key).reduce((acc, key) => {
175
+ acc[key] = (f) => {
176
+ return assertions.some((assertion) => assertion[key](f));
177
+ };
178
+ return acc;
179
+ }, {});
180
+ var assertions_default = {
181
+ ...zmAssert4,
182
+ ...zmAssertIds
183
+ };
72
184
 
73
185
  // src/extension.ts
74
186
  import { Types, isValidObjectId } from "mongoose";
@@ -103,6 +215,26 @@ function extendZod(z_0) {
103
215
  this.__zm_unique = arg;
104
216
  return this;
105
217
  };
218
+ const TypesMap = {
219
+ String: z_0.ZodString,
220
+ Number: z_0.ZodNumber,
221
+ Object: z_0.ZodObject,
222
+ Array: z_0.ZodArray,
223
+ Boolean: z_0.ZodBoolean,
224
+ Enum: z_0.ZodEnum,
225
+ Date: z_0.ZodDate,
226
+ Default: z_0.ZodDefault,
227
+ Optional: z_0.ZodOptional,
228
+ Nullable: z_0.ZodNullable,
229
+ Union: z_0.ZodUnion,
230
+ Any: z_0.ZodAny,
231
+ Map: z_0.ZodMap,
232
+ Record: z_0.ZodRecord,
233
+ Effects: z_0.ZodEffects
234
+ };
235
+ for (const [key, value] of Object.entries(TypesMap)) {
236
+ value.prototype.__zm_type = key;
237
+ }
106
238
  }
107
239
  var createId = () => {
108
240
  return z.string().refine((v) => isValidObjectId(v), { message: "Invalid ObjectId" }).or(z.instanceof(Types.ObjectId));
@@ -145,7 +277,7 @@ function zodSchemaRaw(schema) {
145
277
  function parseObject(obj) {
146
278
  const object = {};
147
279
  for (const [key, field] of Object.entries(obj.shape)) {
148
- if (zmAssert.object(field)) {
280
+ if (assertions_default.object(field)) {
149
281
  object[key] = parseObject(field);
150
282
  } else {
151
283
  const f = parseField(field);
@@ -156,19 +288,19 @@ function parseObject(obj) {
156
288
  return object;
157
289
  }
158
290
  function parseField(field, required = true, def, refinement) {
159
- if (zmAssert.objectId(field)) {
291
+ if (assertions_default.objectId(field)) {
160
292
  const ref = field.__zm_ref;
161
293
  const unique = field.__zm_unique;
162
294
  return parseObjectId(required, ref, unique);
163
295
  }
164
- if (zmAssert.uuid(field)) {
296
+ if (assertions_default.uuid(field)) {
165
297
  const unique = field.__zm_unique;
166
298
  return parseUUID(required, unique);
167
299
  }
168
- if (zmAssert.object(field)) {
300
+ if (assertions_default.object(field)) {
169
301
  return parseObject(field);
170
302
  }
171
- if (zmAssert.number(field)) {
303
+ if (assertions_default.number(field)) {
172
304
  const isUnique = field.__zm_unique ?? false;
173
305
  return parseNumber(
174
306
  field,
@@ -178,7 +310,7 @@ function parseField(field, required = true, def, refinement) {
178
310
  refinement
179
311
  );
180
312
  }
181
- if (zmAssert.string(field)) {
313
+ if (assertions_default.string(field)) {
182
314
  const isUnique = field.__zm_unique ?? false;
183
315
  return parseString(
184
316
  field,
@@ -188,13 +320,13 @@ function parseField(field, required = true, def, refinement) {
188
320
  refinement
189
321
  );
190
322
  }
191
- if (zmAssert.enumerable(field)) {
323
+ if (assertions_default.enumerable(field)) {
192
324
  return parseEnum(Object.keys(field.Values), required, def);
193
325
  }
194
- if (zmAssert.boolean(field)) {
326
+ if (assertions_default.boolean(field)) {
195
327
  return parseBoolean(required, def);
196
328
  }
197
- if (zmAssert.date(field)) {
329
+ if (assertions_default.date(field)) {
198
330
  const isUnique = field.__zm_unique ?? false;
199
331
  return parseDate(
200
332
  required,
@@ -203,40 +335,36 @@ function parseField(field, required = true, def, refinement) {
203
335
  isUnique
204
336
  );
205
337
  }
206
- if (zmAssert.array(field)) {
338
+ if (assertions_default.array(field)) {
207
339
  return parseArray(
208
340
  required,
209
341
  field.element,
210
342
  def
211
343
  );
212
344
  }
213
- if (zmAssert.def(field)) {
214
- return parseField(
215
- field._def.innerType,
216
- required,
217
- field._def.defaultValue()
218
- );
345
+ if (assertions_default.def(field)) {
346
+ return parseField(field._def.innerType, required, field._def.defaultValue());
219
347
  }
220
- if (zmAssert.optional(field)) {
348
+ if (assertions_default.optional(field)) {
221
349
  return parseField(field._def.innerType, false, void 0);
222
350
  }
223
- if (zmAssert.nullable(field)) {
351
+ if (assertions_default.nullable(field)) {
224
352
  return parseField(field._def.innerType, false, def || null);
225
353
  }
226
- if (zmAssert.union(field)) {
354
+ if (assertions_default.union(field)) {
227
355
  return parseField(field._def.options[0]);
228
356
  }
229
- if (zmAssert.any(field)) {
357
+ if (assertions_default.any(field)) {
230
358
  return parseMixed(required, def);
231
359
  }
232
- if (zmAssert.mapOrRecord(field)) {
360
+ if (assertions_default.mapOrRecord(field)) {
233
361
  return parseMap(
234
362
  required,
235
363
  field.keySchema,
236
364
  def
237
365
  );
238
366
  }
239
- if (zmAssert.effect(field)) {
367
+ if (assertions_default.effect(field)) {
240
368
  const effect = field._def.effect;
241
369
  if (effect.type === "refinement") {
242
370
  const validation = effect.__zm_validation;
@@ -324,17 +452,17 @@ function parseMap(required = true, key, def) {
324
452
  }
325
453
  function typeConstructor(t) {
326
454
  switch (true) {
327
- case zmAssert.string(t):
455
+ case assertions_default.string(t):
328
456
  return String;
329
- case zmAssert.enumerable(t):
457
+ case assertions_default.enumerable(t):
330
458
  return String;
331
- case zmAssert.uuid(t):
459
+ case assertions_default.uuid(t):
332
460
  return SchemaTypes.UUID;
333
- case zmAssert.objectId(t):
461
+ case assertions_default.objectId(t):
334
462
  return SchemaTypes.ObjectId;
335
- case zmAssert.number(t):
463
+ case assertions_default.number(t):
336
464
  return Number;
337
- case zmAssert.date(t):
465
+ case assertions_default.date(t):
338
466
  return Date;
339
467
  default:
340
468
  return void 0;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/helpers.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type {\n ZodNumber,\n ZodObject,\n ZodRawShape,\n ZodString,\n ZodType,\n z,\n} from \"zod\";\nimport { zmAssert } from \"./helpers.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>(\n schema: ZodObject<T>\n): 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 unique = (<any>field).__zm_unique;\n return parseObjectId(required, ref, unique);\n }\n\n if (zmAssert.uuid(field)) {\n const unique = (<any>field).__zm_unique;\n return parseUUID(required, unique);\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 return parseNumber(\n field,\n required,\n def as number,\n isUnique,\n refinement as zm.EffectValidator<number>\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n return parseString(\n field,\n required,\n def as string,\n isUnique,\n refinement as zm.EffectValidator<string>\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 return parseDate(\n required,\n def as Date,\n refinement as zm.EffectValidator<Date>,\n isUnique\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(\n field._def.innerType,\n required,\n field._def.defaultValue()\n );\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.keySchema,\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): 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 };\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): 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 };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: string\n): zm.mString {\n return {\n type: String,\n unique: 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): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\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): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n };\n\n if (ref) output.ref = ref;\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 key: ZodType<T>,\n def?: Map<NoInfer<T>, K>\n): zm.mMap<T, K> {\n const pointer = typeConstructor(key);\n return {\n type: Map,\n of: pointer,\n default: def,\n required,\n };\n}\n\nfunction typeConstructor<T>(t: ZodType<T>) {\n switch (true) {\n case zmAssert.string(t):\n return String;\n case zmAssert.enumerable(t):\n return String;\n case zmAssert.uuid(t):\n return SchemaTypes.UUID;\n case zmAssert.objectId(t):\n return SchemaTypes.ObjectId;\n case zmAssert.number(t):\n return Number;\n case zmAssert.date(t):\n return Date;\n default:\n return undefined;\n }\n}\n\nfunction parseUUID(required = true, unique = false): zm.mUUID {\n return {\n type: SchemaTypes.UUID,\n required,\n unique,\n };\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\";\n\nexport namespace zmAssert {\n export function string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n }\n\n export function number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n }\n\n export function object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n }\n\n export function array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n }\n\n export function boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n }\n\n export function enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n }\n\n export function date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n }\n\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 export function def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n }\n\n export function optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n }\n\n export function nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n }\n\n export function union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n }\n\n export function any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n }\n\n export function mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n }\n\n export function effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n }\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 __zm_unique: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n __zm_unique: 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;\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 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 z_0.ZodString.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodNumber.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodDate.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n ref: (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).unique = function (val = true) {\n (<any>this).__zm_unique = 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};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["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\";\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 unique = (<any>field).__zm_unique;\n return parseObjectId(required, ref, unique);\n }\n\n if (zmAssert.uuid(field)) {\n const unique = (<any>field).__zm_unique;\n return parseUUID(required, unique);\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 return parseNumber(\n field,\n required,\n def as number,\n isUnique,\n refinement as zm.EffectValidator<number>,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n return parseString(\n field,\n required,\n def as string,\n isUnique,\n refinement as zm.EffectValidator<string>,\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 return parseDate(\n required,\n def as Date,\n refinement as zm.EffectValidator<Date>,\n isUnique,\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.keySchema,\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): 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 };\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): 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 };\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 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): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(required = true, ref?: string, unique = false): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n };\n\n if (ref) output.ref = ref;\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 key: ZodType<T>,\n def?: Map<NoInfer<T>, K>,\n): zm.mMap<T, K> {\n const pointer = typeConstructor(key);\n return {\n type: Map,\n of: pointer,\n default: def,\n required,\n };\n}\n\nfunction typeConstructor<T>(t: ZodType<T>) {\n switch (true) {\n case zmAssert.string(t):\n return String;\n case zmAssert.enumerable(t):\n return String;\n case zmAssert.uuid(t):\n return SchemaTypes.UUID;\n case zmAssert.objectId(t):\n return SchemaTypes.ObjectId;\n case zmAssert.number(t):\n return Number;\n case zmAssert.date(t):\n return Date;\n default:\n return undefined;\n }\n}\n\nfunction parseUUID(required = true, unique = false): zm.mUUID {\n return {\n type: SchemaTypes.UUID,\n required,\n unique,\n };\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 __zm_unique: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n __zm_unique: 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 *\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 z_0.ZodString.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodNumber.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\n };\n\n z_0.ZodDate.prototype.unique = function (arg = true) {\n this.__zm_unique = arg;\n return this;\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 ref: (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).unique = function (val = true) {\n (<any>this).__zm_unique = 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};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":";AAAA,SAAS,QAA4B,mBAAmB;;;AC2BjD,IAAM,WAAqB;AAAA,EAChC,OAAO,GAAiC;AACtC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,OAAO,GAAiC;AACtC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,OAAO,GAAsC;AAC3C,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,MAAM,GAAqC;AACzC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,QAAQ,GAAkC;AACxC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,WAAW,GAAoC;AAC7C,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,KAAK,GAA+B;AAClC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,IAAI,GAAuC;AACzC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,SAAS,GAAwC;AAC/C,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,SAAS,GAAwC;AAC/C,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,MAAM,GAAqC;AACzC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,IAAI,GAA8B;AAChC,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AAAA,EAEA,YAAY,GAAoD;AAC9D,WAAO,EAAE,YAAY,SAAS,YAAY,EAAE,YAAY,SAAS;AAAA,EACnE;AAAA,EAEA,OAAO,GAAuC;AAC5C,WAAO,EAAE,YAAY,SAAS;AAAA,EAChC;AACF;;;ACjFO,IAAU;AAAA,CAAV,CAAUA,iBAAV;AACE,WAAS,SAAS,GAAuC;AAC9D,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAFO,EAAAA,aAAS;AAIT,WAAS,KAAK,GAAuC;AAC1D,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAFO,EAAAA,aAAS;AAAA,GALD;;;ACFjB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAUA,IAAMC,YAAqB;AAAA,EAChC,OAAO,GAAiC;AACtC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,OAAO,GAAiC;AACtC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,OAAO,GAAsC;AAC3C,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,MAAM,GAAqC;AACzC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,QAAQ,GAAkC;AACxC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,WAAW,GAAoC;AAC7C,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,KAAK,GAA+B;AAClC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,IAAI,GAAuC;AACzC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,SAAS,GAAwC;AAC/C,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,SAAS,GAAwC;AAC/C,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,MAAM,GAAqC;AACzC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,IAAI,GAA8B;AAChC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,YAAY,GAAoD;AAC9D,WAAO,aAAa,UAAU,aAAa;AAAA,EAC7C;AAAA,EAEA,OAAO,GAAuC;AAC5C,WAAO,aAAa;AAAA,EACtB;AACF;;;ACxDO,IAAMC,YAAqB;AAAA,EAChC,OAAO,GAAiC;AACtC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,OAAO,GAAiC;AACtC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,OAAO,GAAsC;AAC3C,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAM,GAAqC;AACzC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,QAAQ,GAAkC;AACxC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,WAAW,GAAoC;AAC7C,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,KAAK,GAA+B;AAClC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,IAAI,GAAuC;AACzC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,SAAS,GAAwC;AAC/C,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,SAAS,GAAwC;AAC/C,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAM,GAAqC;AACzC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,IAAI,GAA8B;AAChC,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AAAA,EAEA,YAAY,GAAoD;AAC9D,WAAO,eAAe,MAAM,EAAE,cAAc,SAAS,EAAE,cAAc;AAAA,EACvE;AAAA,EAEA,OAAO,GAAuC;AAC5C,WAAO,eAAe,KAAK,EAAE,cAAc;AAAA,EAC7C;AACF;;;AC5EA,IAAM,aAAa,CAAC,UAAcC,WAAWA,SAAW;AACxD,IAAMA,YAAW,OAAO,KAAK,QAAY,EACtC,IAAI,CAAC,QAAQ,GAAqB,EAClC,OAAO,CAAC,KAAK,QAAQ;AACpB,EAAM,IAAI,GAAG,IAAK,CAAC,MAAoB;AACrC,WAAO,WAAW,KAAK,CAAC,cAAc,UAAU,GAAG,EAAE,CAAC,CAAC;AAAA,EACzD;AAEA,SAAO;AACT,GAAG,CAAC,CAAa;AAEnB,IAAO,qBAAQ;AAAA,EACb,GAAGA;AAAA,EACH,GAAG;AACL;;;ACrBA,SAAS,OAAO,uBAAuB;AACvC,SAAiC,SAAS;AA2B1C,IAAI,eAAe;AAyBZ,SAAS,UAAU,KAAe;AAEvC,MAAI,aAAc;AAClB,iBAAe;AAGf,QAAM,UAAU,IAAI,QAAQ,UAAU;AACtC,MAAI,QAAQ,UAAU,SAAS,SAC7B,OACA,MACA;AACA,UAAM,UAAU,QAAQ,KAAK,IAAI,EAAE,OAAO,IAAI;AAE9C,QAAI,UAA+D;AACnE,QAAI,MAAM;AACR,UAAI,OAAO,SAAS,SAAU,WAAU;AAAA,eAC/B,aAAa,KAAM,WAAU,KAAK;AAAA,IAC7C;AAEA,IAAM,QAAQ,KAAK,OAAQ,kBAAkB;AAAA,MAC3C,WAAW;AAAA,MACX;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAGA,MAAI,UAAU,UAAU,SAAS,SAAU,MAAM,MAAM;AACrD,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,UAAU,SAAS,SAAU,MAAM,MAAM;AACrD,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,UAAU,SAAS,SAAU,MAAM,MAAM;AACnD,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAGA,QAAM,WAAW;AAAA,IACf,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,OAAO,IAAI;AAAA,IACX,SAAS,IAAI;AAAA,IACb,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,IACb,UAAU,IAAI;AAAA,IACd,UAAU,IAAI;AAAA,IACd,OAAO,IAAI;AAAA,IACX,KAAK,IAAI;AAAA,IACT,KAAK,IAAI;AAAA,IACT,QAAQ,IAAI;AAAA,IACZ,SAAS,IAAI;AAAA,EACf;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACnD,IAAM,MAAM,UAAW,YAAY;AAAA,EACrC;AACF;AAOA,IAAM,WAAW,MAAM;AACrB,SAAO,EACJ,OAAO,EACP,OAAO,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,SAAS,mBAAmB,CAAC,EACjE,GAAG,EAAE,WAAW,MAAM,QAAQ,CAAC;AACpC;AAEO,IAAM,MAAM,CAAC,QAAwB;AAC1C,QAAM,SAAS,SAAS;AAExB,EAAM,OAAQ,YAAY;AAC1B,EAAM,OAAQ,WAAW;AAEzB,EAAM,OAAQ,MAAM,SAAUC,MAAa;AACzC,IAAM,KAAM,WAAWA;AACvB,WAAO;AAAA,EACT;AAEA,EAAM,OAAQ,SAAS,SAAU,MAAM,MAAM;AAC3C,IAAM,KAAM,cAAc;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMA,IAAM,aAAa,MAAM;AACvB,SAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,eAAe,CAAC,EAAE,GAAG,EAAE,WAAW,MAAM,IAAI,CAAC;AACjF;AAEO,IAAM,QAAQ,MAAe;AAClC,QAAM,SAAS,WAAW;AAE1B,EAAM,OAAQ,YAAY;AAE1B,EAAM,OAAQ,SAAS,SAAU,MAAM,MAAM;AAC3C,IAAM,KAAM,cAAc;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ANrIO,SAAS,UACd,QACA,SACgC;AAChC,QAAM,aAAa,YAAY,MAAM;AACrC,SAAO,IAAI,OAA+B,YAAY,OAAO;AAC/D;AAkCO,SAAS,aAAoC,QAAqC;AACvF,SAAO,YAAY,MAAM;AAC3B;AAGA,SAAS,YAAmC,KAAkC;AAC5E,QAAM,SAAc,CAAC;AACrB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,KAAK,GAAG;AACpD,QAAI,mBAAS,OAAO,KAAK,GAAG;AAC1B,aAAO,GAAG,IAAI,YAAY,KAAK;AAAA,IACjC,OAAO;AACL,YAAM,IAAI,WAAW,KAAK;AAC1B,UAAI,CAAC,EAAG,OAAM,IAAI,MAAM,2BAA2B,MAAM,WAAW,EAAE;AAEtE,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,WACP,OACA,WAAW,MACX,KACA,YACkB;AAClB,MAAI,mBAAS,SAAS,KAAK,GAAG;AAC5B,UAAM,MAAY,MAAO;AACzB,UAAM,SAAe,MAAO;AAC5B,WAAO,cAAc,UAAU,KAAK,MAAM;AAAA,EAC5C;AAEA,MAAI,mBAAS,KAAK,KAAK,GAAG;AACxB,UAAM,SAAe,MAAO;AAC5B,WAAO,UAAU,UAAU,MAAM;AAAA,EACnC;AAEA,MAAI,mBAAS,OAAO,KAAK,GAAG;AAC1B,WAAO,YAAY,KAAK;AAAA,EAC1B;AAEA,MAAI,mBAAS,OAAO,KAAK,GAAG;AAC1B,UAAM,WAAW,MAAM,eAAe;AACtC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAS,OAAO,KAAK,GAAG;AAC1B,UAAM,WAAW,MAAM,eAAe;AACtC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAS,WAAW,KAAK,GAAG;AAC9B,WAAO,UAAU,OAAO,KAAK,MAAM,MAAM,GAAG,UAAU,GAAa;AAAA,EACrE;AAEA,MAAI,mBAAS,QAAQ,KAAK,GAAG;AAC3B,WAAO,aAAa,UAAU,GAAc;AAAA,EAC9C;AAEA,MAAI,mBAAS,KAAK,KAAK,GAAG;AACxB,UAAM,WAAW,MAAM,eAAe;AACtC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAS,MAAM,KAAK,GAAG;AACzB,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAS,IAAI,KAAK,GAAG;AACvB,WAAO,WAAW,MAAM,KAAK,WAAW,UAAU,MAAM,KAAK,aAAa,CAAC;AAAA,EAC7E;AAEA,MAAI,mBAAS,SAAS,KAAK,GAAG;AAC5B,WAAO,WAAW,MAAM,KAAK,WAAW,OAAO,MAAS;AAAA,EAC1D;AAEA,MAAI,mBAAS,SAAS,KAAK,GAAG;AAC5B,WAAO,WAAW,MAAM,KAAK,WAAW,OAAO,OAAO,IAAI;AAAA,EAC5D;AAEA,MAAI,mBAAS,MAAM,KAAK,GAAG;AACzB,WAAO,WAAW,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,EACzC;AAEA,MAAI,mBAAS,IAAI,KAAK,GAAG;AACvB,WAAO,WAAW,UAAU,GAAG;AAAA,EACjC;AAEA,MAAI,mBAAS,YAAY,KAAK,GAAG;AAC/B,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IAIF;AAAA,EACF;AAEA,MAAI,mBAAS,OAAO,KAAK,GAAG;AAC1B,UAAM,SAAS,MAAM,KAAK;AAE1B,QAAI,OAAO,SAAS,cAAc;AAChC,YAAM,aAAmB,OAAQ;AACjC,aAAO,WAAW,MAAM,KAAK,QAAQ,UAAU,KAAK,UAAU;AAAA,IAChE;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,YACP,OACA,WAAW,MACX,KACA,SAAS,OACT,UACY;AACZ,QAAM,SAAqB;AAAA,IACzB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK,MAAM,YAAY;AAAA,IACvB,KAAK,MAAM,YAAY;AAAA,IACvB;AAAA,IACA;AAAA,EACF;AAEA,MAAI,SAAU,QAAO,WAAW;AAChC,SAAO;AACT;AAEA,SAAS,YACP,OACA,WAAW,MACX,KACA,SAAS,OACT,UACY;AACZ,QAAM,SAAqB;AAAA,IACzB,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,WAAW,MAAM,aAAa;AAAA,IAC9B,WAAW,MAAM,aAAa;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,SAAU,QAAO,WAAW;AAChC,SAAO;AACT;AAEA,SAAS,UAAU,QAAkB,WAAW,MAAM,KAA0B;AAC9E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN;AAAA,EACF;AACF;AAEA,SAAS,aAAa,WAAW,MAAM,KAA4B;AACjE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,UACP,WAAW,MACX,KACA,UACA,SAAS,OACC;AACV,QAAM,SAAmB;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AAEA,MAAI,SAAU,QAAO,WAAW;AAChC,SAAO;AACT;AAEA,SAAS,cAAc,WAAW,MAAM,KAAc,SAAS,OAAqB;AAClF,QAAM,SAAuB;AAAA,IAC3B,MAAM,YAAY;AAAA,IAClB;AAAA,IACA;AAAA,EACF;AAEA,MAAI,IAAK,QAAO,MAAM;AACtB,SAAO;AACT;AAEA,SAAS,WAEP,WAAW,MACX,SACA,KACc;AACd,QAAM,YAAY,WAAW,OAAO;AACpC,MAAI,CAAC,UAAW,OAAM,IAAI,MAAM,wBAAwB;AACxD,SAAO;AAAA,IACL,MAAM,CAAC,SAAyB;AAAA,IAChC,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,SAEP,WAAW,MACX,KACA,KACe;AACf,QAAM,UAAU,gBAAgB,GAAG;AACnC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,gBAAmB,GAAe;AACzC,UAAQ,MAAM;AAAA,IACZ,KAAK,mBAAS,OAAO,CAAC;AACpB,aAAO;AAAA,IACT,KAAK,mBAAS,WAAW,CAAC;AACxB,aAAO;AAAA,IACT,KAAK,mBAAS,KAAK,CAAC;AAClB,aAAO,YAAY;AAAA,IACrB,KAAK,mBAAS,SAAS,CAAC;AACtB,aAAO,YAAY;AAAA,IACrB,KAAK,mBAAS,OAAO,CAAC;AACpB,aAAO;AAAA,IACT,KAAK,mBAAS,KAAK,CAAC;AAClB,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,UAAU,WAAW,MAAM,SAAS,OAAiB;AAC5D,SAAO;AAAA,IACL,MAAM,YAAY;AAAA,IAClB;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,WAAW,MAAM,KAAmC;AACtE,SAAO;AAAA,IACL,MAAM,YAAY;AAAA,IAClB,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAO,cAAQ;","names":["zmAssertIds","zmAssert","zmAssert","zmAssert","ref"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zodyac/zod-mongoose",
3
- "version": "2.3.3",
3
+ "version": "3.0.0",
4
4
  "description": "A library that allows you to generate mongoose schemas from zod objects.",
5
5
  "scripts": {
6
6
  "test": "jest",