@zodyac/zod-mongoose 2.3.1 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 2.3.3 - 2024-09-21
11
+
12
+ ## 2.3.2 - 2024-09-20
13
+
10
14
  ## 2.3.1 - 2024-09-15
11
15
 
12
16
  ## 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
 
@@ -127,8 +110,10 @@ function extendZod(z_0) {
127
110
  z_0.ZodType.prototype.refine = function(check, opts) {
128
111
  const zEffect = _refine.bind(this)(check, opts);
129
112
  let message = void 0;
130
- if (typeof opts === "string") message = opts;
131
- else if ("message" in opts) message = opts.message;
113
+ if (opts) {
114
+ if (typeof opts === "string") message = opts;
115
+ else if ("message" in opts) message = opts.message;
116
+ }
132
117
  zEffect._def.effect.__zm_validation = {
133
118
  validator: check,
134
119
  message
@@ -148,13 +133,10 @@ function extendZod(z_0) {
148
133
  return this;
149
134
  };
150
135
  }
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) => {
136
+ 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));
138
+ };
139
+ var zId = (ref) => {
158
140
  const output = createId();
159
141
  output.__zm_type = "ObjectId";
160
142
  output.__zm_ref = ref;
@@ -167,13 +149,11 @@ var zId = /* @__PURE__ */ __name((ref) => {
167
149
  return this;
168
150
  };
169
151
  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(() => {
152
+ };
153
+ var createUUID = () => {
154
+ return import_zod.z.string().uuid({ message: "Invalid UUID" }).or(import_zod.z.instanceof(import_mongoose.Types.UUID));
155
+ };
156
+ var zUUID = () => {
177
157
  const output = createUUID();
178
158
  output.__zm_type = "UUID";
179
159
  output.unique = function(val = true) {
@@ -181,18 +161,16 @@ var zUUID = /* @__PURE__ */ __name(() => {
181
161
  return this;
182
162
  };
183
163
  return output;
184
- }, "zUUID");
164
+ };
185
165
 
186
166
  // src/index.ts
187
167
  function zodSchema(schema, options) {
188
168
  const definition = parseObject(schema);
189
169
  return new import_mongoose2.Schema(definition, options);
190
170
  }
191
- __name(zodSchema, "zodSchema");
192
171
  function zodSchemaRaw(schema) {
193
172
  return parseObject(schema);
194
173
  }
195
- __name(zodSchemaRaw, "zodSchemaRaw");
196
174
  function parseObject(obj) {
197
175
  const object = {};
198
176
  for (const [key, field] of Object.entries(obj.shape)) {
@@ -206,7 +184,6 @@ function parseObject(obj) {
206
184
  }
207
185
  return object;
208
186
  }
209
- __name(parseObject, "parseObject");
210
187
  function parseField(field, required = true, def, refinement) {
211
188
  if (zmAssert.objectId(field)) {
212
189
  const ref = field.__zm_ref;
@@ -222,11 +199,23 @@ function parseField(field, required = true, def, refinement) {
222
199
  }
223
200
  if (zmAssert.number(field)) {
224
201
  const isUnique = field.__zm_unique ?? false;
225
- return parseNumber(field, required, def, isUnique, refinement);
202
+ return parseNumber(
203
+ field,
204
+ required,
205
+ def,
206
+ isUnique,
207
+ refinement
208
+ );
226
209
  }
227
210
  if (zmAssert.string(field)) {
228
211
  const isUnique = field.__zm_unique ?? false;
229
- return parseString(field, required, def, isUnique, refinement);
212
+ return parseString(
213
+ field,
214
+ required,
215
+ def,
216
+ isUnique,
217
+ refinement
218
+ );
230
219
  }
231
220
  if (zmAssert.enumerable(field)) {
232
221
  return parseEnum(Object.keys(field.Values), required, def);
@@ -236,13 +225,26 @@ function parseField(field, required = true, def, refinement) {
236
225
  }
237
226
  if (zmAssert.date(field)) {
238
227
  const isUnique = field.__zm_unique ?? false;
239
- return parseDate(required, def, refinement, isUnique);
228
+ return parseDate(
229
+ required,
230
+ def,
231
+ refinement,
232
+ isUnique
233
+ );
240
234
  }
241
235
  if (zmAssert.array(field)) {
242
- return parseArray(required, field.element, def);
236
+ return parseArray(
237
+ required,
238
+ field.element,
239
+ def
240
+ );
243
241
  }
244
242
  if (zmAssert.def(field)) {
245
- return parseField(field._def.innerType, required, field._def.defaultValue());
243
+ return parseField(
244
+ field._def.innerType,
245
+ required,
246
+ field._def.defaultValue()
247
+ );
246
248
  }
247
249
  if (zmAssert.optional(field)) {
248
250
  return parseField(field._def.innerType, false, void 0);
@@ -257,7 +259,11 @@ function parseField(field, required = true, def, refinement) {
257
259
  return parseMixed(required, def);
258
260
  }
259
261
  if (zmAssert.mapOrRecord(field)) {
260
- return parseMap(required, field.keySchema, def);
262
+ return parseMap(
263
+ required,
264
+ field.keySchema,
265
+ def
266
+ );
261
267
  }
262
268
  if (zmAssert.effect(field)) {
263
269
  const effect = field._def.effect;
@@ -268,7 +274,6 @@ function parseField(field, required = true, def, refinement) {
268
274
  }
269
275
  return null;
270
276
  }
271
- __name(parseField, "parseField");
272
277
  function parseNumber(field, required = true, def, unique = false, validate) {
273
278
  const output = {
274
279
  type: Number,
@@ -281,7 +286,6 @@ function parseNumber(field, required = true, def, unique = false, validate) {
281
286
  if (validate) output.validate = validate;
282
287
  return output;
283
288
  }
284
- __name(parseNumber, "parseNumber");
285
289
  function parseString(field, required = true, def, unique = false, validate) {
286
290
  const output = {
287
291
  type: String,
@@ -294,7 +298,6 @@ function parseString(field, required = true, def, unique = false, validate) {
294
298
  if (validate) output.validate = validate;
295
299
  return output;
296
300
  }
297
- __name(parseString, "parseString");
298
301
  function parseEnum(values, required = true, def) {
299
302
  return {
300
303
  type: String,
@@ -304,7 +307,6 @@ function parseEnum(values, required = true, def) {
304
307
  required
305
308
  };
306
309
  }
307
- __name(parseEnum, "parseEnum");
308
310
  function parseBoolean(required = true, def) {
309
311
  return {
310
312
  type: Boolean,
@@ -312,7 +314,6 @@ function parseBoolean(required = true, def) {
312
314
  required
313
315
  };
314
316
  }
315
- __name(parseBoolean, "parseBoolean");
316
317
  function parseDate(required = true, def, validate, unique = false) {
317
318
  const output = {
318
319
  type: Date,
@@ -323,7 +324,6 @@ function parseDate(required = true, def, validate, unique = false) {
323
324
  if (validate) output.validate = validate;
324
325
  return output;
325
326
  }
326
- __name(parseDate, "parseDate");
327
327
  function parseObjectId(required = true, ref, unique = false) {
328
328
  const output = {
329
329
  type: import_mongoose2.SchemaTypes.ObjectId,
@@ -333,19 +333,15 @@ function parseObjectId(required = true, ref, unique = false) {
333
333
  if (ref) output.ref = ref;
334
334
  return output;
335
335
  }
336
- __name(parseObjectId, "parseObjectId");
337
336
  function parseArray(required = true, element, def) {
338
337
  const innerType = parseField(element);
339
338
  if (!innerType) throw new Error("Unsupported array type");
340
339
  return {
341
- type: [
342
- innerType
343
- ],
340
+ type: [innerType],
344
341
  default: def,
345
342
  required
346
343
  };
347
344
  }
348
- __name(parseArray, "parseArray");
349
345
  function parseMap(required = true, key, def) {
350
346
  const pointer = typeConstructor(key);
351
347
  return {
@@ -355,7 +351,6 @@ function parseMap(required = true, key, def) {
355
351
  required
356
352
  };
357
353
  }
358
- __name(parseMap, "parseMap");
359
354
  function typeConstructor(t) {
360
355
  switch (true) {
361
356
  case zmAssert.string(t):
@@ -374,7 +369,6 @@ function typeConstructor(t) {
374
369
  return void 0;
375
370
  }
376
371
  }
377
- __name(typeConstructor, "typeConstructor");
378
372
  function parseUUID(required = true, unique = false) {
379
373
  return {
380
374
  type: import_mongoose2.SchemaTypes.UUID,
@@ -382,7 +376,6 @@ function parseUUID(required = true, unique = false) {
382
376
  unique
383
377
  };
384
378
  }
385
- __name(parseUUID, "parseUUID");
386
379
  function parseMixed(required = true, def) {
387
380
  return {
388
381
  type: import_mongoose2.SchemaTypes.Mixed,
@@ -390,7 +383,6 @@ function parseMixed(required = true, def) {
390
383
  required
391
384
  };
392
385
  }
393
- __name(parseMixed, "parseMixed");
394
386
  var src_default = zodSchema;
395
387
  // Annotate the CommonJS export names for ESM import in node:
396
388
  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 (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"]}
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
 
@@ -100,8 +81,10 @@ function extendZod(z_0) {
100
81
  z_0.ZodType.prototype.refine = function(check, opts) {
101
82
  const zEffect = _refine.bind(this)(check, opts);
102
83
  let message = void 0;
103
- if (typeof opts === "string") message = opts;
104
- else if ("message" in opts) message = opts.message;
84
+ if (opts) {
85
+ if (typeof opts === "string") message = opts;
86
+ else if ("message" in opts) message = opts.message;
87
+ }
105
88
  zEffect._def.effect.__zm_validation = {
106
89
  validator: check,
107
90
  message
@@ -121,13 +104,10 @@ function extendZod(z_0) {
121
104
  return this;
122
105
  };
123
106
  }
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) => {
107
+ var createId = () => {
108
+ return z.string().refine((v) => isValidObjectId(v), { message: "Invalid ObjectId" }).or(z.instanceof(Types.ObjectId));
109
+ };
110
+ var zId = (ref) => {
131
111
  const output = createId();
132
112
  output.__zm_type = "ObjectId";
133
113
  output.__zm_ref = ref;
@@ -140,13 +120,11 @@ var zId = /* @__PURE__ */ __name((ref) => {
140
120
  return this;
141
121
  };
142
122
  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(() => {
123
+ };
124
+ var createUUID = () => {
125
+ return z.string().uuid({ message: "Invalid UUID" }).or(z.instanceof(Types.UUID));
126
+ };
127
+ var zUUID = () => {
150
128
  const output = createUUID();
151
129
  output.__zm_type = "UUID";
152
130
  output.unique = function(val = true) {
@@ -154,18 +132,16 @@ var zUUID = /* @__PURE__ */ __name(() => {
154
132
  return this;
155
133
  };
156
134
  return output;
157
- }, "zUUID");
135
+ };
158
136
 
159
137
  // src/index.ts
160
138
  function zodSchema(schema, options) {
161
139
  const definition = parseObject(schema);
162
140
  return new Schema(definition, options);
163
141
  }
164
- __name(zodSchema, "zodSchema");
165
142
  function zodSchemaRaw(schema) {
166
143
  return parseObject(schema);
167
144
  }
168
- __name(zodSchemaRaw, "zodSchemaRaw");
169
145
  function parseObject(obj) {
170
146
  const object = {};
171
147
  for (const [key, field] of Object.entries(obj.shape)) {
@@ -179,7 +155,6 @@ function parseObject(obj) {
179
155
  }
180
156
  return object;
181
157
  }
182
- __name(parseObject, "parseObject");
183
158
  function parseField(field, required = true, def, refinement) {
184
159
  if (zmAssert.objectId(field)) {
185
160
  const ref = field.__zm_ref;
@@ -195,11 +170,23 @@ function parseField(field, required = true, def, refinement) {
195
170
  }
196
171
  if (zmAssert.number(field)) {
197
172
  const isUnique = field.__zm_unique ?? false;
198
- return parseNumber(field, required, def, isUnique, refinement);
173
+ return parseNumber(
174
+ field,
175
+ required,
176
+ def,
177
+ isUnique,
178
+ refinement
179
+ );
199
180
  }
200
181
  if (zmAssert.string(field)) {
201
182
  const isUnique = field.__zm_unique ?? false;
202
- return parseString(field, required, def, isUnique, refinement);
183
+ return parseString(
184
+ field,
185
+ required,
186
+ def,
187
+ isUnique,
188
+ refinement
189
+ );
203
190
  }
204
191
  if (zmAssert.enumerable(field)) {
205
192
  return parseEnum(Object.keys(field.Values), required, def);
@@ -209,13 +196,26 @@ function parseField(field, required = true, def, refinement) {
209
196
  }
210
197
  if (zmAssert.date(field)) {
211
198
  const isUnique = field.__zm_unique ?? false;
212
- return parseDate(required, def, refinement, isUnique);
199
+ return parseDate(
200
+ required,
201
+ def,
202
+ refinement,
203
+ isUnique
204
+ );
213
205
  }
214
206
  if (zmAssert.array(field)) {
215
- return parseArray(required, field.element, def);
207
+ return parseArray(
208
+ required,
209
+ field.element,
210
+ def
211
+ );
216
212
  }
217
213
  if (zmAssert.def(field)) {
218
- return parseField(field._def.innerType, required, field._def.defaultValue());
214
+ return parseField(
215
+ field._def.innerType,
216
+ required,
217
+ field._def.defaultValue()
218
+ );
219
219
  }
220
220
  if (zmAssert.optional(field)) {
221
221
  return parseField(field._def.innerType, false, void 0);
@@ -230,7 +230,11 @@ function parseField(field, required = true, def, refinement) {
230
230
  return parseMixed(required, def);
231
231
  }
232
232
  if (zmAssert.mapOrRecord(field)) {
233
- return parseMap(required, field.keySchema, def);
233
+ return parseMap(
234
+ required,
235
+ field.keySchema,
236
+ def
237
+ );
234
238
  }
235
239
  if (zmAssert.effect(field)) {
236
240
  const effect = field._def.effect;
@@ -241,7 +245,6 @@ function parseField(field, required = true, def, refinement) {
241
245
  }
242
246
  return null;
243
247
  }
244
- __name(parseField, "parseField");
245
248
  function parseNumber(field, required = true, def, unique = false, validate) {
246
249
  const output = {
247
250
  type: Number,
@@ -254,7 +257,6 @@ function parseNumber(field, required = true, def, unique = false, validate) {
254
257
  if (validate) output.validate = validate;
255
258
  return output;
256
259
  }
257
- __name(parseNumber, "parseNumber");
258
260
  function parseString(field, required = true, def, unique = false, validate) {
259
261
  const output = {
260
262
  type: String,
@@ -267,7 +269,6 @@ function parseString(field, required = true, def, unique = false, validate) {
267
269
  if (validate) output.validate = validate;
268
270
  return output;
269
271
  }
270
- __name(parseString, "parseString");
271
272
  function parseEnum(values, required = true, def) {
272
273
  return {
273
274
  type: String,
@@ -277,7 +278,6 @@ function parseEnum(values, required = true, def) {
277
278
  required
278
279
  };
279
280
  }
280
- __name(parseEnum, "parseEnum");
281
281
  function parseBoolean(required = true, def) {
282
282
  return {
283
283
  type: Boolean,
@@ -285,7 +285,6 @@ function parseBoolean(required = true, def) {
285
285
  required
286
286
  };
287
287
  }
288
- __name(parseBoolean, "parseBoolean");
289
288
  function parseDate(required = true, def, validate, unique = false) {
290
289
  const output = {
291
290
  type: Date,
@@ -296,7 +295,6 @@ function parseDate(required = true, def, validate, unique = false) {
296
295
  if (validate) output.validate = validate;
297
296
  return output;
298
297
  }
299
- __name(parseDate, "parseDate");
300
298
  function parseObjectId(required = true, ref, unique = false) {
301
299
  const output = {
302
300
  type: SchemaTypes.ObjectId,
@@ -306,19 +304,15 @@ function parseObjectId(required = true, ref, unique = false) {
306
304
  if (ref) output.ref = ref;
307
305
  return output;
308
306
  }
309
- __name(parseObjectId, "parseObjectId");
310
307
  function parseArray(required = true, element, def) {
311
308
  const innerType = parseField(element);
312
309
  if (!innerType) throw new Error("Unsupported array type");
313
310
  return {
314
- type: [
315
- innerType
316
- ],
311
+ type: [innerType],
317
312
  default: def,
318
313
  required
319
314
  };
320
315
  }
321
- __name(parseArray, "parseArray");
322
316
  function parseMap(required = true, key, def) {
323
317
  const pointer = typeConstructor(key);
324
318
  return {
@@ -328,7 +322,6 @@ function parseMap(required = true, key, def) {
328
322
  required
329
323
  };
330
324
  }
331
- __name(parseMap, "parseMap");
332
325
  function typeConstructor(t) {
333
326
  switch (true) {
334
327
  case zmAssert.string(t):
@@ -347,7 +340,6 @@ function typeConstructor(t) {
347
340
  return void 0;
348
341
  }
349
342
  }
350
- __name(typeConstructor, "typeConstructor");
351
343
  function parseUUID(required = true, unique = false) {
352
344
  return {
353
345
  type: SchemaTypes.UUID,
@@ -355,7 +347,6 @@ function parseUUID(required = true, unique = false) {
355
347
  unique
356
348
  };
357
349
  }
358
- __name(parseUUID, "parseUUID");
359
350
  function parseMixed(required = true, def) {
360
351
  return {
361
352
  type: SchemaTypes.Mixed,
@@ -363,7 +354,6 @@ function parseMixed(required = true, def) {
363
354
  required
364
355
  };
365
356
  }
366
- __name(parseMixed, "parseMixed");
367
357
  var src_default = zodSchema;
368
358
  export {
369
359
  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 (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"]}
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.3",
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,