@zodyac/zod-mongoose 2.3.1 → 2.3.2

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
+ ## 2.3.2 - 2024-09-20
11
+
10
12
  ## 2.3.1 - 2024-09-15
11
13
 
12
14
  ## 2.3.0 - 2024-09-15
package/dist/index.cjs CHANGED
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
6
  var __export = (target, all) => {
8
7
  for (var name in all)
9
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -33,86 +32,70 @@ var import_mongoose2 = require("mongoose");
33
32
 
34
33
  // src/helpers.ts
35
34
  var zmAssert;
36
- (function(zmAssert2) {
35
+ ((zmAssert2) => {
37
36
  function string(f) {
38
37
  return f.constructor.name === "ZodString";
39
38
  }
40
- __name(string, "string");
41
39
  zmAssert2.string = string;
42
40
  function number(f) {
43
41
  return f.constructor.name === "ZodNumber";
44
42
  }
45
- __name(number, "number");
46
43
  zmAssert2.number = number;
47
44
  function object(f) {
48
45
  return f.constructor.name === "ZodObject";
49
46
  }
50
- __name(object, "object");
51
47
  zmAssert2.object = object;
52
48
  function array(f) {
53
49
  return f.constructor.name === "ZodArray";
54
50
  }
55
- __name(array, "array");
56
51
  zmAssert2.array = array;
57
52
  function boolean(f) {
58
53
  return f.constructor.name === "ZodBoolean";
59
54
  }
60
- __name(boolean, "boolean");
61
55
  zmAssert2.boolean = boolean;
62
56
  function enumerable(f) {
63
57
  return f.constructor.name === "ZodEnum";
64
58
  }
65
- __name(enumerable, "enumerable");
66
59
  zmAssert2.enumerable = enumerable;
67
60
  function date(f) {
68
61
  return f.constructor.name === "ZodDate";
69
62
  }
70
- __name(date, "date");
71
63
  zmAssert2.date = date;
72
64
  function objectId(f) {
73
65
  return "__zm_type" in f && f.__zm_type === "ObjectId";
74
66
  }
75
- __name(objectId, "objectId");
76
67
  zmAssert2.objectId = objectId;
77
68
  function uuid(f) {
78
69
  return "__zm_type" in f && f.__zm_type === "UUID";
79
70
  }
80
- __name(uuid, "uuid");
81
71
  zmAssert2.uuid = uuid;
82
72
  function def(f) {
83
73
  return f.constructor.name === "ZodDefault";
84
74
  }
85
- __name(def, "def");
86
75
  zmAssert2.def = def;
87
76
  function optional(f) {
88
77
  return f.constructor.name === "ZodOptional";
89
78
  }
90
- __name(optional, "optional");
91
79
  zmAssert2.optional = optional;
92
80
  function nullable(f) {
93
81
  return f.constructor.name === "ZodNullable";
94
82
  }
95
- __name(nullable, "nullable");
96
83
  zmAssert2.nullable = nullable;
97
84
  function union(f) {
98
85
  return f.constructor.name === "ZodUnion";
99
86
  }
100
- __name(union, "union");
101
87
  zmAssert2.union = union;
102
88
  function any(f) {
103
89
  return f.constructor.name === "ZodAny";
104
90
  }
105
- __name(any, "any");
106
91
  zmAssert2.any = any;
107
92
  function mapOrRecord(f) {
108
93
  return f.constructor.name === "ZodMap" || f.constructor.name === "ZodRecord";
109
94
  }
110
- __name(mapOrRecord, "mapOrRecord");
111
95
  zmAssert2.mapOrRecord = mapOrRecord;
112
96
  function effect(f) {
113
97
  return f.constructor.name === "ZodEffects";
114
98
  }
115
- __name(effect, "effect");
116
99
  zmAssert2.effect = effect;
117
100
  })(zmAssert || (zmAssert = {}));
118
101
 
@@ -148,13 +131,10 @@ function extendZod(z_0) {
148
131
  return this;
149
132
  };
150
133
  }
151
- __name(extendZod, "extendZod");
152
- var createId = /* @__PURE__ */ __name(() => {
153
- return import_zod.z.string().refine((v) => (0, import_mongoose.isValidObjectId)(v), {
154
- message: "Invalid ObjectId"
155
- }).or(import_zod.z.instanceof(import_mongoose.Types.ObjectId));
156
- }, "createId");
157
- var zId = /* @__PURE__ */ __name((ref) => {
134
+ var createId = () => {
135
+ return import_zod.z.string().refine((v) => (0, import_mongoose.isValidObjectId)(v), { message: "Invalid ObjectId" }).or(import_zod.z.instanceof(import_mongoose.Types.ObjectId));
136
+ };
137
+ var zId = (ref) => {
158
138
  const output = createId();
159
139
  output.__zm_type = "ObjectId";
160
140
  output.__zm_ref = ref;
@@ -167,13 +147,11 @@ var zId = /* @__PURE__ */ __name((ref) => {
167
147
  return this;
168
148
  };
169
149
  return output;
170
- }, "zId");
171
- var createUUID = /* @__PURE__ */ __name(() => {
172
- return import_zod.z.string().uuid({
173
- message: "Invalid UUID"
174
- }).or(import_zod.z.instanceof(import_mongoose.Types.UUID));
175
- }, "createUUID");
176
- var zUUID = /* @__PURE__ */ __name(() => {
150
+ };
151
+ var createUUID = () => {
152
+ return import_zod.z.string().uuid({ message: "Invalid UUID" }).or(import_zod.z.instanceof(import_mongoose.Types.UUID));
153
+ };
154
+ var zUUID = () => {
177
155
  const output = createUUID();
178
156
  output.__zm_type = "UUID";
179
157
  output.unique = function(val = true) {
@@ -181,18 +159,16 @@ var zUUID = /* @__PURE__ */ __name(() => {
181
159
  return this;
182
160
  };
183
161
  return output;
184
- }, "zUUID");
162
+ };
185
163
 
186
164
  // src/index.ts
187
165
  function zodSchema(schema, options) {
188
166
  const definition = parseObject(schema);
189
167
  return new import_mongoose2.Schema(definition, options);
190
168
  }
191
- __name(zodSchema, "zodSchema");
192
169
  function zodSchemaRaw(schema) {
193
170
  return parseObject(schema);
194
171
  }
195
- __name(zodSchemaRaw, "zodSchemaRaw");
196
172
  function parseObject(obj) {
197
173
  const object = {};
198
174
  for (const [key, field] of Object.entries(obj.shape)) {
@@ -206,7 +182,6 @@ function parseObject(obj) {
206
182
  }
207
183
  return object;
208
184
  }
209
- __name(parseObject, "parseObject");
210
185
  function parseField(field, required = true, def, refinement) {
211
186
  if (zmAssert.objectId(field)) {
212
187
  const ref = field.__zm_ref;
@@ -222,11 +197,23 @@ function parseField(field, required = true, def, refinement) {
222
197
  }
223
198
  if (zmAssert.number(field)) {
224
199
  const isUnique = field.__zm_unique ?? false;
225
- return parseNumber(field, required, def, isUnique, refinement);
200
+ return parseNumber(
201
+ field,
202
+ required,
203
+ def,
204
+ isUnique,
205
+ refinement
206
+ );
226
207
  }
227
208
  if (zmAssert.string(field)) {
228
209
  const isUnique = field.__zm_unique ?? false;
229
- return parseString(field, required, def, isUnique, refinement);
210
+ return parseString(
211
+ field,
212
+ required,
213
+ def,
214
+ isUnique,
215
+ refinement
216
+ );
230
217
  }
231
218
  if (zmAssert.enumerable(field)) {
232
219
  return parseEnum(Object.keys(field.Values), required, def);
@@ -236,13 +223,26 @@ function parseField(field, required = true, def, refinement) {
236
223
  }
237
224
  if (zmAssert.date(field)) {
238
225
  const isUnique = field.__zm_unique ?? false;
239
- return parseDate(required, def, refinement, isUnique);
226
+ return parseDate(
227
+ required,
228
+ def,
229
+ refinement,
230
+ isUnique
231
+ );
240
232
  }
241
233
  if (zmAssert.array(field)) {
242
- return parseArray(required, field.element, def);
234
+ return parseArray(
235
+ required,
236
+ field.element,
237
+ def
238
+ );
243
239
  }
244
240
  if (zmAssert.def(field)) {
245
- return parseField(field._def.innerType, required, field._def.defaultValue());
241
+ return parseField(
242
+ field._def.innerType,
243
+ required,
244
+ field._def.defaultValue()
245
+ );
246
246
  }
247
247
  if (zmAssert.optional(field)) {
248
248
  return parseField(field._def.innerType, false, void 0);
@@ -257,7 +257,11 @@ function parseField(field, required = true, def, refinement) {
257
257
  return parseMixed(required, def);
258
258
  }
259
259
  if (zmAssert.mapOrRecord(field)) {
260
- return parseMap(required, field.keySchema, def);
260
+ return parseMap(
261
+ required,
262
+ field.keySchema,
263
+ def
264
+ );
261
265
  }
262
266
  if (zmAssert.effect(field)) {
263
267
  const effect = field._def.effect;
@@ -268,7 +272,6 @@ function parseField(field, required = true, def, refinement) {
268
272
  }
269
273
  return null;
270
274
  }
271
- __name(parseField, "parseField");
272
275
  function parseNumber(field, required = true, def, unique = false, validate) {
273
276
  const output = {
274
277
  type: Number,
@@ -281,7 +284,6 @@ function parseNumber(field, required = true, def, unique = false, validate) {
281
284
  if (validate) output.validate = validate;
282
285
  return output;
283
286
  }
284
- __name(parseNumber, "parseNumber");
285
287
  function parseString(field, required = true, def, unique = false, validate) {
286
288
  const output = {
287
289
  type: String,
@@ -294,7 +296,6 @@ function parseString(field, required = true, def, unique = false, validate) {
294
296
  if (validate) output.validate = validate;
295
297
  return output;
296
298
  }
297
- __name(parseString, "parseString");
298
299
  function parseEnum(values, required = true, def) {
299
300
  return {
300
301
  type: String,
@@ -304,7 +305,6 @@ function parseEnum(values, required = true, def) {
304
305
  required
305
306
  };
306
307
  }
307
- __name(parseEnum, "parseEnum");
308
308
  function parseBoolean(required = true, def) {
309
309
  return {
310
310
  type: Boolean,
@@ -312,7 +312,6 @@ function parseBoolean(required = true, def) {
312
312
  required
313
313
  };
314
314
  }
315
- __name(parseBoolean, "parseBoolean");
316
315
  function parseDate(required = true, def, validate, unique = false) {
317
316
  const output = {
318
317
  type: Date,
@@ -323,7 +322,6 @@ function parseDate(required = true, def, validate, unique = false) {
323
322
  if (validate) output.validate = validate;
324
323
  return output;
325
324
  }
326
- __name(parseDate, "parseDate");
327
325
  function parseObjectId(required = true, ref, unique = false) {
328
326
  const output = {
329
327
  type: import_mongoose2.SchemaTypes.ObjectId,
@@ -333,19 +331,15 @@ function parseObjectId(required = true, ref, unique = false) {
333
331
  if (ref) output.ref = ref;
334
332
  return output;
335
333
  }
336
- __name(parseObjectId, "parseObjectId");
337
334
  function parseArray(required = true, element, def) {
338
335
  const innerType = parseField(element);
339
336
  if (!innerType) throw new Error("Unsupported array type");
340
337
  return {
341
- type: [
342
- innerType
343
- ],
338
+ type: [innerType],
344
339
  default: def,
345
340
  required
346
341
  };
347
342
  }
348
- __name(parseArray, "parseArray");
349
343
  function parseMap(required = true, key, def) {
350
344
  const pointer = typeConstructor(key);
351
345
  return {
@@ -355,7 +349,6 @@ function parseMap(required = true, key, def) {
355
349
  required
356
350
  };
357
351
  }
358
- __name(parseMap, "parseMap");
359
352
  function typeConstructor(t) {
360
353
  switch (true) {
361
354
  case zmAssert.string(t):
@@ -374,7 +367,6 @@ function typeConstructor(t) {
374
367
  return void 0;
375
368
  }
376
369
  }
377
- __name(typeConstructor, "typeConstructor");
378
370
  function parseUUID(required = true, unique = false) {
379
371
  return {
380
372
  type: import_mongoose2.SchemaTypes.UUID,
@@ -382,7 +374,6 @@ function parseUUID(required = true, unique = false) {
382
374
  unique
383
375
  };
384
376
  }
385
- __name(parseUUID, "parseUUID");
386
377
  function parseMixed(required = true, def) {
387
378
  return {
388
379
  type: import_mongoose2.SchemaTypes.Mixed,
@@ -390,7 +381,6 @@ function parseMixed(required = true, def) {
390
381
  required
391
382
  };
392
383
  }
393
- __name(parseMixed, "parseMixed");
394
384
  var src_default = zodSchema;
395
385
  // Annotate the CommonJS export names for ESM import in node:
396
386
  0 && (module.exports = {
@@ -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 (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\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","string","f","constructor","name","number","object","array","boolean","enumerable","date","objectId","__zm_type","uuid","def","optional","nullable","union","any","mapOrRecord","effect","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","undefined","_def","effect","__zm_validation","validator","ZodString","unique","arg","__zm_unique","ZodNumber","ZodDate","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_type","__zm_ref","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","constructor","required","def","refinement","objectId","ref","__zm_ref","unique","__zm_unique","parseObjectId","uuid","parseUUID","number","isUnique","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","boolean","parseBoolean","date","parseDate","array","parseArray","element","_def","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","keySchema","effect","type","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","values","enum","Boolean","Date","SchemaTypes","ObjectId","pointer","typeConstructor","Map","of","t","UUID","Mixed"]}
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 (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\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"]}
package/dist/index.d.cts CHANGED
@@ -105,7 +105,70 @@ type TzmUUID = ReturnType<typeof createUUID> & {
105
105
  declare const createUUID: () => z.ZodUnion<[z.ZodString, z.ZodType<Types.UUID, z.ZodTypeDef, Types.UUID>]>;
106
106
  declare const zUUID: () => TzmUUID;
107
107
 
108
+ /**
109
+ * Converts a Zod schema to a Mongoose schema
110
+ * @param schema zod schema to parse
111
+ * @returns mongoose schema
112
+ *
113
+ * @example
114
+ * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';
115
+ * import { model } from 'mongoose';
116
+ * import { z } from 'zod';
117
+ *
118
+ * extendZod(z);
119
+ *
120
+ * const zUser = z.object({
121
+ * name: z.string().min(3).max(255),
122
+ * age: z.number().min(18).max(100),
123
+ * active: z.boolean().default(false),
124
+ * access: z.enum(['admin', 'user']).default('user'),
125
+ * companyId: zId('Company'),
126
+ * address: z.object({
127
+ * street: z.string(),
128
+ * city: z.string(),
129
+ * state: z.enum(['CA', 'NY', 'TX']),
130
+ * }),
131
+ * tags: z.array(z.string()),
132
+ * createdAt: z.date(),
133
+ * updatedAt: z.date(),
134
+ * });
135
+ *
136
+ * const schema = zodSchema(zDoc);
137
+ * const userModel = model('User', schema);
138
+ */
108
139
  declare function zodSchema<T extends ZodRawShape>(schema: ZodObject<T>, options?: SchemaOptions<any>): Schema<z.infer<typeof schema>>;
140
+ /**
141
+ * Converts a Zod schema to a raw Mongoose schema object
142
+ * @param schema zod schema to parse
143
+ * @returns mongoose schema
144
+ *
145
+ * @example
146
+ * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';
147
+ * import { model, Schema } from 'mongoose';
148
+ * import { z } from 'zod';
149
+ *
150
+ * extendZod(z);
151
+ *
152
+ * const zUser = z.object({
153
+ * name: z.string().min(3).max(255),
154
+ * age: z.number().min(18).max(100),
155
+ * active: z.boolean().default(false),
156
+ * access: z.enum(['admin', 'user']).default('user'),
157
+ * companyId: zId('Company'),
158
+ * address: z.object({
159
+ * street: z.string(),
160
+ * city: z.string(),
161
+ * state: z.enum(['CA', 'NY', 'TX']),
162
+ * }),
163
+ * tags: z.array(z.string()),
164
+ * createdAt: z.date(),
165
+ * updatedAt: z.date(),
166
+ * });
167
+ *
168
+ * const rawSchema = zodSchemaRaw(zDoc);
169
+ * const schema = new Schema(rawSchema);
170
+ * const userModel = model('User', schema);
171
+ */
109
172
  declare function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T>;
110
173
 
111
174
  export { type TzmId, type TzmUUID, zodSchema as default, extendZod, zId, zUUID, zodSchema, zodSchemaRaw };
package/dist/index.d.ts CHANGED
@@ -105,7 +105,70 @@ type TzmUUID = ReturnType<typeof createUUID> & {
105
105
  declare const createUUID: () => z.ZodUnion<[z.ZodString, z.ZodType<Types.UUID, z.ZodTypeDef, Types.UUID>]>;
106
106
  declare const zUUID: () => TzmUUID;
107
107
 
108
+ /**
109
+ * Converts a Zod schema to a Mongoose schema
110
+ * @param schema zod schema to parse
111
+ * @returns mongoose schema
112
+ *
113
+ * @example
114
+ * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';
115
+ * import { model } from 'mongoose';
116
+ * import { z } from 'zod';
117
+ *
118
+ * extendZod(z);
119
+ *
120
+ * const zUser = z.object({
121
+ * name: z.string().min(3).max(255),
122
+ * age: z.number().min(18).max(100),
123
+ * active: z.boolean().default(false),
124
+ * access: z.enum(['admin', 'user']).default('user'),
125
+ * companyId: zId('Company'),
126
+ * address: z.object({
127
+ * street: z.string(),
128
+ * city: z.string(),
129
+ * state: z.enum(['CA', 'NY', 'TX']),
130
+ * }),
131
+ * tags: z.array(z.string()),
132
+ * createdAt: z.date(),
133
+ * updatedAt: z.date(),
134
+ * });
135
+ *
136
+ * const schema = zodSchema(zDoc);
137
+ * const userModel = model('User', schema);
138
+ */
108
139
  declare function zodSchema<T extends ZodRawShape>(schema: ZodObject<T>, options?: SchemaOptions<any>): Schema<z.infer<typeof schema>>;
140
+ /**
141
+ * Converts a Zod schema to a raw Mongoose schema object
142
+ * @param schema zod schema to parse
143
+ * @returns mongoose schema
144
+ *
145
+ * @example
146
+ * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';
147
+ * import { model, Schema } from 'mongoose';
148
+ * import { z } from 'zod';
149
+ *
150
+ * extendZod(z);
151
+ *
152
+ * const zUser = z.object({
153
+ * name: z.string().min(3).max(255),
154
+ * age: z.number().min(18).max(100),
155
+ * active: z.boolean().default(false),
156
+ * access: z.enum(['admin', 'user']).default('user'),
157
+ * companyId: zId('Company'),
158
+ * address: z.object({
159
+ * street: z.string(),
160
+ * city: z.string(),
161
+ * state: z.enum(['CA', 'NY', 'TX']),
162
+ * }),
163
+ * tags: z.array(z.string()),
164
+ * createdAt: z.date(),
165
+ * updatedAt: z.date(),
166
+ * });
167
+ *
168
+ * const rawSchema = zodSchemaRaw(zDoc);
169
+ * const schema = new Schema(rawSchema);
170
+ * const userModel = model('User', schema);
171
+ */
109
172
  declare function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T>;
110
173
 
111
174
  export { type TzmId, type TzmUUID, zodSchema as default, extendZod, zId, zUUID, zodSchema, zodSchemaRaw };
package/dist/index.js CHANGED
@@ -1,91 +1,72 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/index.ts
5
2
  import { Schema, SchemaTypes } from "mongoose";
6
3
 
7
4
  // src/helpers.ts
8
5
  var zmAssert;
9
- (function(zmAssert2) {
6
+ ((zmAssert2) => {
10
7
  function string(f) {
11
8
  return f.constructor.name === "ZodString";
12
9
  }
13
- __name(string, "string");
14
10
  zmAssert2.string = string;
15
11
  function number(f) {
16
12
  return f.constructor.name === "ZodNumber";
17
13
  }
18
- __name(number, "number");
19
14
  zmAssert2.number = number;
20
15
  function object(f) {
21
16
  return f.constructor.name === "ZodObject";
22
17
  }
23
- __name(object, "object");
24
18
  zmAssert2.object = object;
25
19
  function array(f) {
26
20
  return f.constructor.name === "ZodArray";
27
21
  }
28
- __name(array, "array");
29
22
  zmAssert2.array = array;
30
23
  function boolean(f) {
31
24
  return f.constructor.name === "ZodBoolean";
32
25
  }
33
- __name(boolean, "boolean");
34
26
  zmAssert2.boolean = boolean;
35
27
  function enumerable(f) {
36
28
  return f.constructor.name === "ZodEnum";
37
29
  }
38
- __name(enumerable, "enumerable");
39
30
  zmAssert2.enumerable = enumerable;
40
31
  function date(f) {
41
32
  return f.constructor.name === "ZodDate";
42
33
  }
43
- __name(date, "date");
44
34
  zmAssert2.date = date;
45
35
  function objectId(f) {
46
36
  return "__zm_type" in f && f.__zm_type === "ObjectId";
47
37
  }
48
- __name(objectId, "objectId");
49
38
  zmAssert2.objectId = objectId;
50
39
  function uuid(f) {
51
40
  return "__zm_type" in f && f.__zm_type === "UUID";
52
41
  }
53
- __name(uuid, "uuid");
54
42
  zmAssert2.uuid = uuid;
55
43
  function def(f) {
56
44
  return f.constructor.name === "ZodDefault";
57
45
  }
58
- __name(def, "def");
59
46
  zmAssert2.def = def;
60
47
  function optional(f) {
61
48
  return f.constructor.name === "ZodOptional";
62
49
  }
63
- __name(optional, "optional");
64
50
  zmAssert2.optional = optional;
65
51
  function nullable(f) {
66
52
  return f.constructor.name === "ZodNullable";
67
53
  }
68
- __name(nullable, "nullable");
69
54
  zmAssert2.nullable = nullable;
70
55
  function union(f) {
71
56
  return f.constructor.name === "ZodUnion";
72
57
  }
73
- __name(union, "union");
74
58
  zmAssert2.union = union;
75
59
  function any(f) {
76
60
  return f.constructor.name === "ZodAny";
77
61
  }
78
- __name(any, "any");
79
62
  zmAssert2.any = any;
80
63
  function mapOrRecord(f) {
81
64
  return f.constructor.name === "ZodMap" || f.constructor.name === "ZodRecord";
82
65
  }
83
- __name(mapOrRecord, "mapOrRecord");
84
66
  zmAssert2.mapOrRecord = mapOrRecord;
85
67
  function effect(f) {
86
68
  return f.constructor.name === "ZodEffects";
87
69
  }
88
- __name(effect, "effect");
89
70
  zmAssert2.effect = effect;
90
71
  })(zmAssert || (zmAssert = {}));
91
72
 
@@ -121,13 +102,10 @@ function extendZod(z_0) {
121
102
  return this;
122
103
  };
123
104
  }
124
- __name(extendZod, "extendZod");
125
- var createId = /* @__PURE__ */ __name(() => {
126
- return z.string().refine((v) => isValidObjectId(v), {
127
- message: "Invalid ObjectId"
128
- }).or(z.instanceof(Types.ObjectId));
129
- }, "createId");
130
- var zId = /* @__PURE__ */ __name((ref) => {
105
+ var createId = () => {
106
+ return z.string().refine((v) => isValidObjectId(v), { message: "Invalid ObjectId" }).or(z.instanceof(Types.ObjectId));
107
+ };
108
+ var zId = (ref) => {
131
109
  const output = createId();
132
110
  output.__zm_type = "ObjectId";
133
111
  output.__zm_ref = ref;
@@ -140,13 +118,11 @@ var zId = /* @__PURE__ */ __name((ref) => {
140
118
  return this;
141
119
  };
142
120
  return output;
143
- }, "zId");
144
- var createUUID = /* @__PURE__ */ __name(() => {
145
- return z.string().uuid({
146
- message: "Invalid UUID"
147
- }).or(z.instanceof(Types.UUID));
148
- }, "createUUID");
149
- var zUUID = /* @__PURE__ */ __name(() => {
121
+ };
122
+ var createUUID = () => {
123
+ return z.string().uuid({ message: "Invalid UUID" }).or(z.instanceof(Types.UUID));
124
+ };
125
+ var zUUID = () => {
150
126
  const output = createUUID();
151
127
  output.__zm_type = "UUID";
152
128
  output.unique = function(val = true) {
@@ -154,18 +130,16 @@ var zUUID = /* @__PURE__ */ __name(() => {
154
130
  return this;
155
131
  };
156
132
  return output;
157
- }, "zUUID");
133
+ };
158
134
 
159
135
  // src/index.ts
160
136
  function zodSchema(schema, options) {
161
137
  const definition = parseObject(schema);
162
138
  return new Schema(definition, options);
163
139
  }
164
- __name(zodSchema, "zodSchema");
165
140
  function zodSchemaRaw(schema) {
166
141
  return parseObject(schema);
167
142
  }
168
- __name(zodSchemaRaw, "zodSchemaRaw");
169
143
  function parseObject(obj) {
170
144
  const object = {};
171
145
  for (const [key, field] of Object.entries(obj.shape)) {
@@ -179,7 +153,6 @@ function parseObject(obj) {
179
153
  }
180
154
  return object;
181
155
  }
182
- __name(parseObject, "parseObject");
183
156
  function parseField(field, required = true, def, refinement) {
184
157
  if (zmAssert.objectId(field)) {
185
158
  const ref = field.__zm_ref;
@@ -195,11 +168,23 @@ function parseField(field, required = true, def, refinement) {
195
168
  }
196
169
  if (zmAssert.number(field)) {
197
170
  const isUnique = field.__zm_unique ?? false;
198
- return parseNumber(field, required, def, isUnique, refinement);
171
+ return parseNumber(
172
+ field,
173
+ required,
174
+ def,
175
+ isUnique,
176
+ refinement
177
+ );
199
178
  }
200
179
  if (zmAssert.string(field)) {
201
180
  const isUnique = field.__zm_unique ?? false;
202
- return parseString(field, required, def, isUnique, refinement);
181
+ return parseString(
182
+ field,
183
+ required,
184
+ def,
185
+ isUnique,
186
+ refinement
187
+ );
203
188
  }
204
189
  if (zmAssert.enumerable(field)) {
205
190
  return parseEnum(Object.keys(field.Values), required, def);
@@ -209,13 +194,26 @@ function parseField(field, required = true, def, refinement) {
209
194
  }
210
195
  if (zmAssert.date(field)) {
211
196
  const isUnique = field.__zm_unique ?? false;
212
- return parseDate(required, def, refinement, isUnique);
197
+ return parseDate(
198
+ required,
199
+ def,
200
+ refinement,
201
+ isUnique
202
+ );
213
203
  }
214
204
  if (zmAssert.array(field)) {
215
- return parseArray(required, field.element, def);
205
+ return parseArray(
206
+ required,
207
+ field.element,
208
+ def
209
+ );
216
210
  }
217
211
  if (zmAssert.def(field)) {
218
- return parseField(field._def.innerType, required, field._def.defaultValue());
212
+ return parseField(
213
+ field._def.innerType,
214
+ required,
215
+ field._def.defaultValue()
216
+ );
219
217
  }
220
218
  if (zmAssert.optional(field)) {
221
219
  return parseField(field._def.innerType, false, void 0);
@@ -230,7 +228,11 @@ function parseField(field, required = true, def, refinement) {
230
228
  return parseMixed(required, def);
231
229
  }
232
230
  if (zmAssert.mapOrRecord(field)) {
233
- return parseMap(required, field.keySchema, def);
231
+ return parseMap(
232
+ required,
233
+ field.keySchema,
234
+ def
235
+ );
234
236
  }
235
237
  if (zmAssert.effect(field)) {
236
238
  const effect = field._def.effect;
@@ -241,7 +243,6 @@ function parseField(field, required = true, def, refinement) {
241
243
  }
242
244
  return null;
243
245
  }
244
- __name(parseField, "parseField");
245
246
  function parseNumber(field, required = true, def, unique = false, validate) {
246
247
  const output = {
247
248
  type: Number,
@@ -254,7 +255,6 @@ function parseNumber(field, required = true, def, unique = false, validate) {
254
255
  if (validate) output.validate = validate;
255
256
  return output;
256
257
  }
257
- __name(parseNumber, "parseNumber");
258
258
  function parseString(field, required = true, def, unique = false, validate) {
259
259
  const output = {
260
260
  type: String,
@@ -267,7 +267,6 @@ function parseString(field, required = true, def, unique = false, validate) {
267
267
  if (validate) output.validate = validate;
268
268
  return output;
269
269
  }
270
- __name(parseString, "parseString");
271
270
  function parseEnum(values, required = true, def) {
272
271
  return {
273
272
  type: String,
@@ -277,7 +276,6 @@ function parseEnum(values, required = true, def) {
277
276
  required
278
277
  };
279
278
  }
280
- __name(parseEnum, "parseEnum");
281
279
  function parseBoolean(required = true, def) {
282
280
  return {
283
281
  type: Boolean,
@@ -285,7 +283,6 @@ function parseBoolean(required = true, def) {
285
283
  required
286
284
  };
287
285
  }
288
- __name(parseBoolean, "parseBoolean");
289
286
  function parseDate(required = true, def, validate, unique = false) {
290
287
  const output = {
291
288
  type: Date,
@@ -296,7 +293,6 @@ function parseDate(required = true, def, validate, unique = false) {
296
293
  if (validate) output.validate = validate;
297
294
  return output;
298
295
  }
299
- __name(parseDate, "parseDate");
300
296
  function parseObjectId(required = true, ref, unique = false) {
301
297
  const output = {
302
298
  type: SchemaTypes.ObjectId,
@@ -306,19 +302,15 @@ function parseObjectId(required = true, ref, unique = false) {
306
302
  if (ref) output.ref = ref;
307
303
  return output;
308
304
  }
309
- __name(parseObjectId, "parseObjectId");
310
305
  function parseArray(required = true, element, def) {
311
306
  const innerType = parseField(element);
312
307
  if (!innerType) throw new Error("Unsupported array type");
313
308
  return {
314
- type: [
315
- innerType
316
- ],
309
+ type: [innerType],
317
310
  default: def,
318
311
  required
319
312
  };
320
313
  }
321
- __name(parseArray, "parseArray");
322
314
  function parseMap(required = true, key, def) {
323
315
  const pointer = typeConstructor(key);
324
316
  return {
@@ -328,7 +320,6 @@ function parseMap(required = true, key, def) {
328
320
  required
329
321
  };
330
322
  }
331
- __name(parseMap, "parseMap");
332
323
  function typeConstructor(t) {
333
324
  switch (true) {
334
325
  case zmAssert.string(t):
@@ -347,7 +338,6 @@ function typeConstructor(t) {
347
338
  return void 0;
348
339
  }
349
340
  }
350
- __name(typeConstructor, "typeConstructor");
351
341
  function parseUUID(required = true, unique = false) {
352
342
  return {
353
343
  type: SchemaTypes.UUID,
@@ -355,7 +345,6 @@ function parseUUID(required = true, unique = false) {
355
345
  unique
356
346
  };
357
347
  }
358
- __name(parseUUID, "parseUUID");
359
348
  function parseMixed(required = true, def) {
360
349
  return {
361
350
  type: SchemaTypes.Mixed,
@@ -363,7 +352,6 @@ function parseMixed(required = true, def) {
363
352
  required
364
353
  };
365
354
  }
366
- __name(parseMixed, "parseMixed");
367
355
  var src_default = zodSchema;
368
356
  export {
369
357
  src_default as default,
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 (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\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":["Schema","SchemaTypes","zmAssert","string","f","constructor","name","number","object","array","boolean","enumerable","date","objectId","__zm_type","uuid","def","optional","nullable","union","any","mapOrRecord","effect","Types","isValidObjectId","z","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","undefined","_def","effect","__zm_validation","validator","ZodString","unique","arg","__zm_unique","ZodNumber","ZodDate","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_type","__zm_ref","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","constructor","required","def","refinement","objectId","ref","__zm_ref","unique","__zm_unique","parseObjectId","uuid","parseUUID","number","isUnique","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","boolean","parseBoolean","date","parseDate","array","parseArray","element","_def","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","keySchema","effect","type","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","values","enum","Boolean","Date","SchemaTypes","ObjectId","pointer","typeConstructor","Map","of","t","UUID","Mixed"]}
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 (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zodyac/zod-mongoose",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "A library that allows you to generate mongoose schemas from zod objects.",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "type": "module",
14
14
  "main": "./dist/index.cjs",
15
- "module": "./dist/index.mjs",
15
+ "module": "./dist/index.js",
16
16
  "types": "./dist/index.d.ts",
17
17
  "typings": "./dist/index.d.ts",
18
18
  "private": false,