@zodyac/zod-mongoose 4.2.1 → 4.2.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
+ ## 4.2.2 - 2025-12-28
11
+
10
12
  ## 4.2.1 - 2025-12-11
11
13
 
12
14
  ## 4.2.0 - 2025-08-31
package/dist/index.cjs CHANGED
@@ -326,25 +326,31 @@ var zUUID = /* @__PURE__ */ __name((ref) => {
326
326
 
327
327
  // src/index.ts
328
328
  function zodSchema(schema, options) {
329
- const definition = parseObject(schema);
329
+ const definition = parseObject(schema, true);
330
330
  return new import_mongoose2.Schema(definition, options);
331
331
  }
332
332
  __name(zodSchema, "zodSchema");
333
333
  function zodSchemaRaw(schema) {
334
- return parseObject(schema);
334
+ return parseObject(schema, true);
335
335
  }
336
336
  __name(zodSchemaRaw, "zodSchemaRaw");
337
- function parseObject(obj) {
337
+ function parseObject(obj, required = true) {
338
338
  const object = {};
339
339
  for (const [key, field] of Object.entries(obj.shape)) {
340
340
  if (assertions_default.object(field)) {
341
- object[key] = parseObject(field);
341
+ object[key] = parseObject(field, true);
342
342
  } else {
343
343
  const f = parseField(field);
344
344
  if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);
345
345
  object[key] = f;
346
346
  }
347
347
  }
348
+ if (!required) {
349
+ return {
350
+ type: object,
351
+ required: false
352
+ };
353
+ }
348
354
  return object;
349
355
  }
350
356
  __name(parseObject, "parseObject");
@@ -364,7 +370,7 @@ function parseField(field, required = true, def, refinement) {
364
370
  return parseUUID(required, ref, unique, refPath, sparse);
365
371
  }
366
372
  if (assertions_default.object(field)) {
367
- return parseObject(field);
373
+ return parseObject(field, required);
368
374
  }
369
375
  if (assertions_default.number(field)) {
370
376
  const isUnique = field.__zm_unique ?? false;
@@ -391,7 +397,7 @@ function parseField(field, required = true, def, refinement) {
391
397
  return parseDate(required, def, refinement, isUnique, isSparse);
392
398
  }
393
399
  if (assertions_default.array(field)) {
394
- return parseArray(required, field.element, def);
400
+ return parseArray(field.element, required, def);
395
401
  }
396
402
  if (assertions_default.def(field)) {
397
403
  return parseField(field._def.innerType, required, field._def.defaultValue);
@@ -409,7 +415,7 @@ function parseField(field, required = true, def, refinement) {
409
415
  return parseMixed(required, def);
410
416
  }
411
417
  if (assertions_default.mapOrRecord(field)) {
412
- return parseMap(required, field.valueSchema, def);
418
+ return parseMap(field.valueSchema, required, def);
413
419
  }
414
420
  if (assertions_default.effect(field)) {
415
421
  const effect = field._def.effect;
@@ -495,7 +501,7 @@ function parseObjectId(required = true, ref, unique = false, refPath, sparse = f
495
501
  return output;
496
502
  }
497
503
  __name(parseObjectId, "parseObjectId");
498
- function parseArray(required = true, element, def) {
504
+ function parseArray(element, required = true, def) {
499
505
  const innerType = parseField(element);
500
506
  if (!innerType) throw new Error("Unsupported array type");
501
507
  return {
@@ -507,7 +513,7 @@ function parseArray(required = true, element, def) {
507
513
  };
508
514
  }
509
515
  __name(parseArray, "parseArray");
510
- function parseMap(required = true, valueType, def) {
516
+ function parseMap(valueType, required = true, def) {
511
517
  const pointer = parseField(valueType);
512
518
  if (!pointer) throw new Error("Unsupported map value type");
513
519
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\n\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\n\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema);\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T> {\n const object: any = {};\n for (const [key, field] of Object.entries(obj.shape)) {\n if (zmAssert.object(field)) {\n object[key] = parseObject(field);\n } else {\n const f = parseField(field);\n if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);\n\n object[key] = f;\n }\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: zm.mDefault<T>,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as zm.mDefault<number>,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as zm.mDefault<string>,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as zm.mDefault<string>);\n }\n\n if (zmAssert.nativeEnumerable(field)) {\n return parseEnum(\n Object.values(field._def.values),\n required,\n def as zm.mDefault<string>,\n );\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as zm.mDefault<boolean>);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as zm.mDefault<Date>,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n required,\n field.element,\n def as zm.mDefault<T extends Array<infer K> ? K[] : never>,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue);\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(\n field._def.innerType,\n false,\n (typeof def !== \"undefined\" ? def : () => null) as zm.mDefault<null>,\n );\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n required,\n field.valueSchema,\n def as zm.mDefault<\n Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n\n if (effect.type === \"preprocess\" || effect.type === \"transform\") {\n return parseField(field._def.schema, required, def, refinement);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: zm.mDefault<number>,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: zm.mDefault<string>,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: zm.mDefault<string>,\n): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: zm.mDefault<boolean>): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: zm.mDefault<Date>,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n required = true,\n element: ZodType<T>,\n def?: zm.mDefault<T[]>,\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n required = true,\n valueType: ZodType<K>,\n def?: zm.mDefault<Map<NoInfer<T>, K>>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def as unknown as any,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f.constructor.name === \"ZodNativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f instanceof ZodNativeEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"NativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { isValidObjectId, Types } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Input = Output,\n > {}\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined);\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["import_mongoose","zmAssert","string","f","name","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssertIds","objectId","f","__zm_type","uuid","zmAssert","string","f","ZodString","number","ZodNumber","object","ZodObject","array","ZodArray","boolean","ZodBoolean","enumerable","ZodEnum","nativeEnumerable","ZodNativeEnum","date","ZodDate","def","ZodDefault","optional","ZodOptional","nullable","ZodNullable","union","ZodUnion","any","ZodAny","mapOrRecord","ZodMap","ZodRecord","effect","ZodEffects","zmAssert","string","f","__zm_type","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","assertions","aConstructor","aInstance","aStaticName","zmAssert","Object","keys","map","key","reduce","acc","f","some","assertion","zmAssertIds","import_zod","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","_def","effect","__zm_validation","validator","UNIQUE_SUPPORT_LIST","ZodString","ZodNumber","ZodDate","type","unique","arg","__zm_unique","sparse","__zm_sparse","TypesMap","String","Number","Object","ZodObject","Array","ZodArray","Boolean","ZodBoolean","Enum","ZodEnum","Date","Default","ZodDefault","Optional","ZodOptional","Nullable","ZodNullable","Union","ZodUnion","Any","ZodAny","Map","ZodMap","Record","ZodRecord","Effects","ZodEffects","key","value","entries","__zm_type","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_ref","refPath","__zm_refPath","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","required","def","refinement","objectId","ref","__zm_ref","refPath","__zm_refPath","unique","__zm_unique","sparse","__zm_sparse","parseObjectId","uuid","parseUUID","number","isUnique","isSparse","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","nativeEnumerable","values","_def","boolean","parseBoolean","date","parseDate","array","parseArray","element","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","valueSchema","effect","type","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","enum","Boolean","Date","SchemaTypes","ObjectId","valueType","pointer","Map","of","UUID","Mixed"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\n\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\n\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema, true);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema, true) as zm._Schema<T>;\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required: true,\n): zm._Schema<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required: false,\n): zm.mSubdocument<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required: boolean,\n): zm._Schema<T> | zm.mSubdocument<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required = true,\n): zm._Schema<T> | zm.mSubdocument<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, true);\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 if (!required) {\n return {\n type: object,\n required: false,\n } as zm.mSubdocument<T>;\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: zm.mDefault<T>,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field, required);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as zm.mDefault<number>,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as zm.mDefault<string>,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as zm.mDefault<string>);\n }\n\n if (zmAssert.nativeEnumerable(field)) {\n return parseEnum(\n Object.values(field._def.values),\n required,\n def as zm.mDefault<string>,\n );\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as zm.mDefault<boolean>);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as zm.mDefault<Date>,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n field.element,\n required,\n def as zm.mDefault<T extends Array<infer K> ? K[] : never>,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue);\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(\n field._def.innerType,\n false,\n (typeof def !== \"undefined\" ? def : () => null) as zm.mDefault<null>,\n );\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n field.valueSchema,\n required,\n def as zm.mDefault<\n Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n\n if (effect.type === \"preprocess\" || effect.type === \"transform\") {\n return parseField(field._def.schema, required, def, refinement);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: zm.mDefault<number>,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: zm.mDefault<string>,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: zm.mDefault<string>,\n): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: zm.mDefault<boolean>): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: zm.mDefault<Date>,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n element: ZodType<T>,\n required = true,\n def?: zm.mDefault<T[]>,\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n valueType: ZodType<K>,\n required = true,\n def?: zm.mDefault<Map<NoInfer<T>, K>>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def as unknown as any,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f.constructor.name === \"ZodNativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f instanceof ZodNativeEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"NativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { isValidObjectId, Types } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Input = Output,\n > {}\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined);\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["import_mongoose","zmAssert","string","f","name","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssertIds","objectId","f","__zm_type","uuid","zmAssert","string","f","ZodString","number","ZodNumber","object","ZodObject","array","ZodArray","boolean","ZodBoolean","enumerable","ZodEnum","nativeEnumerable","ZodNativeEnum","date","ZodDate","def","ZodDefault","optional","ZodOptional","nullable","ZodNullable","union","ZodUnion","any","ZodAny","mapOrRecord","ZodMap","ZodRecord","effect","ZodEffects","zmAssert","string","f","__zm_type","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","assertions","aConstructor","aInstance","aStaticName","zmAssert","Object","keys","map","key","reduce","acc","f","some","assertion","zmAssertIds","import_zod","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","_def","effect","__zm_validation","validator","UNIQUE_SUPPORT_LIST","ZodString","ZodNumber","ZodDate","type","unique","arg","__zm_unique","sparse","__zm_sparse","TypesMap","String","Number","Object","ZodObject","Array","ZodArray","Boolean","ZodBoolean","Enum","ZodEnum","Date","Default","ZodDefault","Optional","ZodOptional","Nullable","ZodNullable","Union","ZodUnion","Any","ZodAny","Map","ZodMap","Record","ZodRecord","Effects","ZodEffects","key","value","entries","__zm_type","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_ref","refPath","__zm_refPath","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","required","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","type","def","refinement","objectId","ref","__zm_ref","refPath","__zm_refPath","unique","__zm_unique","sparse","__zm_sparse","parseObjectId","uuid","parseUUID","number","isUnique","isSparse","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","nativeEnumerable","values","_def","boolean","parseBoolean","date","parseDate","array","parseArray","element","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","valueSchema","effect","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","enum","Boolean","Date","SchemaTypes","ObjectId","valueType","pointer","Map","of","UUID","Mixed"]}
package/dist/index.d.cts CHANGED
@@ -81,7 +81,10 @@ declare namespace zm {
81
81
  type: typeof Map;
82
82
  of?: zm._Field<K>;
83
83
  }
84
- type mField = mString | mNumber | mBoolean | mDate | mObjectId | mUUID | mMixed<unknown> | mArray<unknown> | _Schema<unknown> | mMap<unknown, unknown>;
84
+ interface mSubdocument<T> extends _Field<T> {
85
+ type: _Schema<T>;
86
+ }
87
+ type mField = mString | mNumber | mBoolean | mDate | mObjectId | mUUID | mMixed<unknown> | mArray<unknown> | _Schema<unknown> | mMap<unknown, unknown> | mSubdocument<unknown>;
85
88
  type _Schema<T> = SchemaDefinition & {
86
89
  [K in keyof T]: (_Field<T[K]> & SchemaTypeOptions<T[K]>) | _Schema<T[K]>;
87
90
  };
package/dist/index.d.ts CHANGED
@@ -81,7 +81,10 @@ declare namespace zm {
81
81
  type: typeof Map;
82
82
  of?: zm._Field<K>;
83
83
  }
84
- type mField = mString | mNumber | mBoolean | mDate | mObjectId | mUUID | mMixed<unknown> | mArray<unknown> | _Schema<unknown> | mMap<unknown, unknown>;
84
+ interface mSubdocument<T> extends _Field<T> {
85
+ type: _Schema<T>;
86
+ }
87
+ type mField = mString | mNumber | mBoolean | mDate | mObjectId | mUUID | mMixed<unknown> | mArray<unknown> | _Schema<unknown> | mMap<unknown, unknown> | mSubdocument<unknown>;
85
88
  type _Schema<T> = SchemaDefinition & {
86
89
  [K in keyof T]: (_Field<T[K]> & SchemaTypeOptions<T[K]>) | _Schema<T[K]>;
87
90
  };
package/dist/index.js CHANGED
@@ -299,25 +299,31 @@ var zUUID = /* @__PURE__ */ __name((ref) => {
299
299
 
300
300
  // src/index.ts
301
301
  function zodSchema(schema, options) {
302
- const definition = parseObject(schema);
302
+ const definition = parseObject(schema, true);
303
303
  return new Schema(definition, options);
304
304
  }
305
305
  __name(zodSchema, "zodSchema");
306
306
  function zodSchemaRaw(schema) {
307
- return parseObject(schema);
307
+ return parseObject(schema, true);
308
308
  }
309
309
  __name(zodSchemaRaw, "zodSchemaRaw");
310
- function parseObject(obj) {
310
+ function parseObject(obj, required = true) {
311
311
  const object = {};
312
312
  for (const [key, field] of Object.entries(obj.shape)) {
313
313
  if (assertions_default.object(field)) {
314
- object[key] = parseObject(field);
314
+ object[key] = parseObject(field, true);
315
315
  } else {
316
316
  const f = parseField(field);
317
317
  if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);
318
318
  object[key] = f;
319
319
  }
320
320
  }
321
+ if (!required) {
322
+ return {
323
+ type: object,
324
+ required: false
325
+ };
326
+ }
321
327
  return object;
322
328
  }
323
329
  __name(parseObject, "parseObject");
@@ -337,7 +343,7 @@ function parseField(field, required = true, def, refinement) {
337
343
  return parseUUID(required, ref, unique, refPath, sparse);
338
344
  }
339
345
  if (assertions_default.object(field)) {
340
- return parseObject(field);
346
+ return parseObject(field, required);
341
347
  }
342
348
  if (assertions_default.number(field)) {
343
349
  const isUnique = field.__zm_unique ?? false;
@@ -364,7 +370,7 @@ function parseField(field, required = true, def, refinement) {
364
370
  return parseDate(required, def, refinement, isUnique, isSparse);
365
371
  }
366
372
  if (assertions_default.array(field)) {
367
- return parseArray(required, field.element, def);
373
+ return parseArray(field.element, required, def);
368
374
  }
369
375
  if (assertions_default.def(field)) {
370
376
  return parseField(field._def.innerType, required, field._def.defaultValue);
@@ -382,7 +388,7 @@ function parseField(field, required = true, def, refinement) {
382
388
  return parseMixed(required, def);
383
389
  }
384
390
  if (assertions_default.mapOrRecord(field)) {
385
- return parseMap(required, field.valueSchema, def);
391
+ return parseMap(field.valueSchema, required, def);
386
392
  }
387
393
  if (assertions_default.effect(field)) {
388
394
  const effect = field._def.effect;
@@ -468,7 +474,7 @@ function parseObjectId(required = true, ref, unique = false, refPath, sparse = f
468
474
  return output;
469
475
  }
470
476
  __name(parseObjectId, "parseObjectId");
471
- function parseArray(required = true, element, def) {
477
+ function parseArray(element, required = true, def) {
472
478
  const innerType = parseField(element);
473
479
  if (!innerType) throw new Error("Unsupported array type");
474
480
  return {
@@ -480,7 +486,7 @@ function parseArray(required = true, element, def) {
480
486
  };
481
487
  }
482
488
  __name(parseArray, "parseArray");
483
- function parseMap(required = true, valueType, def) {
489
+ function parseMap(valueType, required = true, def) {
484
490
  const pointer = parseField(valueType);
485
491
  if (!pointer) throw new Error("Unsupported map value type");
486
492
  return {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\n\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\n\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema);\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T> {\n const object: any = {};\n for (const [key, field] of Object.entries(obj.shape)) {\n if (zmAssert.object(field)) {\n object[key] = parseObject(field);\n } else {\n const f = parseField(field);\n if (!f) throw new Error(`Unsupported field type: ${field.constructor}`);\n\n object[key] = f;\n }\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: zm.mDefault<T>,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as zm.mDefault<number>,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as zm.mDefault<string>,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as zm.mDefault<string>);\n }\n\n if (zmAssert.nativeEnumerable(field)) {\n return parseEnum(\n Object.values(field._def.values),\n required,\n def as zm.mDefault<string>,\n );\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as zm.mDefault<boolean>);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as zm.mDefault<Date>,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n required,\n field.element,\n def as zm.mDefault<T extends Array<infer K> ? K[] : never>,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue);\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(\n field._def.innerType,\n false,\n (typeof def !== \"undefined\" ? def : () => null) as zm.mDefault<null>,\n );\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n required,\n field.valueSchema,\n def as zm.mDefault<\n Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n\n if (effect.type === \"preprocess\" || effect.type === \"transform\") {\n return parseField(field._def.schema, required, def, refinement);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: zm.mDefault<number>,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: zm.mDefault<string>,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: zm.mDefault<string>,\n): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: zm.mDefault<boolean>): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: zm.mDefault<Date>,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n required = true,\n element: ZodType<T>,\n def?: zm.mDefault<T[]>,\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n required = true,\n valueType: ZodType<K>,\n def?: zm.mDefault<Map<NoInfer<T>, K>>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def as unknown as any,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f.constructor.name === \"ZodNativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f instanceof ZodNativeEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"NativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { isValidObjectId, Types } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Input = Output,\n > {}\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined);\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["Schema","SchemaTypes","zmAssert","string","f","name","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssertIds","objectId","f","__zm_type","uuid","ZodAny","ZodArray","ZodBoolean","ZodDate","ZodDefault","ZodEffects","ZodEnum","ZodMap","ZodNativeEnum","ZodNullable","ZodNumber","ZodObject","ZodOptional","ZodRecord","ZodString","ZodUnion","zmAssert","string","f","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssert","string","f","__zm_type","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","assertions","aConstructor","aInstance","aStaticName","zmAssert","Object","keys","map","key","reduce","acc","f","some","assertion","zmAssertIds","isValidObjectId","Types","z","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","_def","effect","__zm_validation","validator","UNIQUE_SUPPORT_LIST","ZodString","ZodNumber","ZodDate","type","unique","arg","__zm_unique","sparse","__zm_sparse","TypesMap","String","Number","Object","ZodObject","Array","ZodArray","Boolean","ZodBoolean","Enum","ZodEnum","Date","Default","ZodDefault","Optional","ZodOptional","Nullable","ZodNullable","Union","ZodUnion","Any","ZodAny","Map","ZodMap","Record","ZodRecord","Effects","ZodEffects","key","value","entries","__zm_type","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_ref","refPath","__zm_refPath","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","required","def","refinement","objectId","ref","__zm_ref","refPath","__zm_refPath","unique","__zm_unique","sparse","__zm_sparse","parseObjectId","uuid","parseUUID","number","isUnique","isSparse","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","nativeEnumerable","values","_def","boolean","parseBoolean","date","parseDate","array","parseArray","element","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","valueSchema","effect","type","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","enum","Boolean","Date","SchemaTypes","ObjectId","valueType","pointer","Map","of","UUID","Mixed"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/assertions/constructor.ts","../src/assertions/custom.ts","../src/assertions/instanceOf.ts","../src/assertions/staticNames.ts","../src/assertions/assertions.ts","../src/extension.ts"],"sourcesContent":["import { Schema, type SchemaOptions, SchemaTypes } from \"mongoose\";\nimport type { ZodNumber, ZodObject, ZodRawShape, ZodString, ZodType, z } from \"zod\";\n\nimport zmAssert from \"./assertions/assertions.js\";\nimport type { zm } from \"./mongoose.types.js\";\n\nexport * from \"./extension.js\";\n\n/**\n * Converts a Zod schema to a Mongoose schema\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchema } from '@zodyac/zod-mongoose';\n * import { model } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const schema = zodSchema(zDoc);\n * const userModel = model('User', schema);\n */\nexport function zodSchema<T extends ZodRawShape>(\n schema: ZodObject<T>,\n options?: SchemaOptions<any>, // TODO: Fix any\n): Schema<z.infer<typeof schema>> {\n const definition = parseObject(schema, true);\n return new Schema<z.infer<typeof schema>>(definition, options);\n}\n\n/**\n * Converts a Zod schema to a raw Mongoose schema object\n * @param schema zod schema to parse\n * @returns mongoose schema\n *\n * @example\n * import { extendZod, zodSchemaRaw } from '@zodyac/zod-mongoose';\n * import { model, Schema } from 'mongoose';\n * import { z } from 'zod';\n *\n * extendZod(z);\n *\n * const zUser = z.object({\n * name: z.string().min(3).max(255),\n * age: z.number().min(18).max(100),\n * active: z.boolean().default(false),\n * access: z.enum(['admin', 'user']).default('user'),\n * companyId: zId('Company'),\n * address: z.object({\n * street: z.string(),\n * city: z.string(),\n * state: z.enum(['CA', 'NY', 'TX']),\n * }),\n * tags: z.array(z.string()),\n * createdAt: z.date(),\n * updatedAt: z.date(),\n * });\n *\n * const rawSchema = zodSchemaRaw(zDoc);\n * const schema = new Schema(rawSchema);\n * const userModel = model('User', schema);\n */\nexport function zodSchemaRaw<T extends ZodRawShape>(schema: ZodObject<T>): zm._Schema<T> {\n return parseObject(schema, true) as zm._Schema<T>;\n}\n\n// Helpers\nfunction parseObject<T extends ZodRawShape>(obj: ZodObject<T>): zm._Schema<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required: true,\n): zm._Schema<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required: false,\n): zm.mSubdocument<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required: boolean,\n): zm._Schema<T> | zm.mSubdocument<T>;\nfunction parseObject<T extends ZodRawShape>(\n obj: ZodObject<T>,\n required = true,\n): zm._Schema<T> | zm.mSubdocument<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, true);\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 if (!required) {\n return {\n type: object,\n required: false,\n } as zm.mSubdocument<T>;\n }\n\n return object;\n}\n\nfunction parseField<T>(\n field: ZodType<T>,\n required = true,\n def?: zm.mDefault<T>,\n refinement?: zm.EffectValidator<T>,\n): zm.mField | null {\n if (zmAssert.objectId(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_sparse;\n return parseObjectId(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.uuid(field)) {\n const ref = (<any>field).__zm_ref;\n const refPath = (<any>field).__zm_refPath;\n const unique = (<any>field).__zm_unique;\n const sparse = (<any>field).__zm_unique;\n return parseUUID(required, ref, unique, refPath, sparse);\n }\n\n if (zmAssert.object(field)) {\n return parseObject(field, required);\n }\n\n if (zmAssert.number(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseNumber(\n field,\n required,\n def as zm.mDefault<number>,\n isUnique,\n refinement as zm.EffectValidator<number>,\n isSparse,\n );\n }\n\n if (zmAssert.string(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseString(\n field,\n required,\n def as zm.mDefault<string>,\n isUnique,\n refinement as zm.EffectValidator<string>,\n isSparse,\n );\n }\n\n if (zmAssert.enumerable(field)) {\n return parseEnum(Object.keys(field.Values), required, def as zm.mDefault<string>);\n }\n\n if (zmAssert.nativeEnumerable(field)) {\n return parseEnum(\n Object.values(field._def.values),\n required,\n def as zm.mDefault<string>,\n );\n }\n\n if (zmAssert.boolean(field)) {\n return parseBoolean(required, def as zm.mDefault<boolean>);\n }\n\n if (zmAssert.date(field)) {\n const isUnique = field.__zm_unique ?? false;\n const isSparse = field.__zm_sparse ?? false;\n return parseDate(\n required,\n def as zm.mDefault<Date>,\n refinement as zm.EffectValidator<Date>,\n isUnique,\n isSparse,\n );\n }\n\n if (zmAssert.array(field)) {\n return parseArray(\n field.element,\n required,\n def as zm.mDefault<T extends Array<infer K> ? K[] : never>,\n );\n }\n\n if (zmAssert.def(field)) {\n return parseField(field._def.innerType, required, field._def.defaultValue);\n }\n\n if (zmAssert.optional(field)) {\n return parseField(field._def.innerType, false, undefined);\n }\n\n if (zmAssert.nullable(field)) {\n return parseField(\n field._def.innerType,\n false,\n (typeof def !== \"undefined\" ? def : () => null) as zm.mDefault<null>,\n );\n }\n\n if (zmAssert.union(field)) {\n return parseField(field._def.options[0]);\n }\n\n if (zmAssert.any(field)) {\n return parseMixed(required, def);\n }\n\n if (zmAssert.mapOrRecord(field)) {\n return parseMap(\n field.valueSchema,\n required,\n def as zm.mDefault<\n Map<\n zm.UnwrapZodType<typeof field.keySchema>,\n zm.UnwrapZodType<typeof field.valueSchema>\n >\n >,\n );\n }\n\n if (zmAssert.effect(field)) {\n const effect = field._def.effect;\n\n if (effect.type === \"refinement\") {\n const validation = (<any>effect).__zm_validation as zm.EffectValidator<T>;\n return parseField(field._def.schema, required, def, validation);\n }\n\n if (effect.type === \"preprocess\" || effect.type === \"transform\") {\n return parseField(field._def.schema, required, def, refinement);\n }\n }\n\n return null;\n}\n\nfunction parseNumber(\n field: ZodNumber,\n required = true,\n def?: zm.mDefault<number>,\n unique = false,\n validate?: zm.EffectValidator<number>,\n sparse = false,\n): zm.mNumber {\n const output: zm.mNumber = {\n type: Number,\n default: def,\n min: field.minValue ?? undefined,\n max: field.maxValue ?? undefined,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseString(\n field: ZodString,\n required = true,\n def?: zm.mDefault<string>,\n unique = false,\n validate?: zm.EffectValidator<string>,\n sparse = false,\n): zm.mString {\n const output: zm.mString = {\n type: String,\n default: def,\n required,\n minLength: field.minLength ?? undefined,\n maxLength: field.maxLength ?? undefined,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseEnum(\n values: string[],\n required = true,\n def?: zm.mDefault<string>,\n): zm.mString {\n return {\n type: String,\n unique: false,\n sparse: false,\n default: def,\n enum: values,\n required,\n };\n}\n\nfunction parseBoolean(required = true, def?: zm.mDefault<boolean>): zm.mBoolean {\n return {\n type: Boolean,\n default: def,\n required,\n };\n}\n\nfunction parseDate(\n required = true,\n def?: zm.mDefault<Date>,\n validate?: zm.EffectValidator<Date>,\n unique = false,\n sparse = false,\n): zm.mDate {\n const output: zm.mDate = {\n type: Date,\n default: def,\n required,\n unique,\n sparse,\n };\n\n if (validate) output.validate = validate;\n return output;\n}\n\nfunction parseObjectId(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mObjectId {\n const output: zm.mObjectId = {\n type: SchemaTypes.ObjectId,\n required,\n unique,\n sparse,\n };\n\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseArray<T>(\n element: ZodType<T>,\n required = true,\n def?: zm.mDefault<T[]>,\n): zm.mArray<T> {\n const innerType = parseField(element);\n if (!innerType) throw new Error(\"Unsupported array type\");\n return {\n type: [innerType as zm._Field<T>],\n default: def,\n required,\n };\n}\n\nfunction parseMap<T, K>(\n valueType: ZodType<K>,\n required = true,\n def?: zm.mDefault<Map<NoInfer<T>, K>>,\n): zm.mMap<T, K> {\n const pointer = parseField(valueType);\n if (!pointer) throw new Error(\"Unsupported map value type\");\n\n return {\n type: Map,\n of: pointer as zm._Field<K>,\n default: def,\n required,\n };\n}\n\nfunction parseUUID(\n required = true,\n ref?: string,\n unique = false,\n refPath?: string,\n sparse = false,\n): zm.mUUID {\n const output: zm.mUUID = {\n type: SchemaTypes.UUID,\n required,\n unique,\n sparse,\n };\n if (ref) output.ref = ref;\n if (refPath) output.refPath = refPath;\n return output;\n}\n\nfunction parseMixed(required = true, def?: unknown): zm.mMixed<unknown> {\n return {\n type: SchemaTypes.Mixed,\n default: def as unknown as any,\n required,\n };\n}\n\nexport default zodSchema;\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Constructor assertions (CommonJS)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the constructor name of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f.constructor.name === \"ZodString\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f.constructor.name === \"ZodNumber\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f.constructor.name === \"ZodObject\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f.constructor.name === \"ZodArray\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f.constructor.name === \"ZodBoolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f.constructor.name === \"ZodEnum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f.constructor.name === \"ZodNativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f.constructor.name === \"ZodDate\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f.constructor.name === \"ZodDefault\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f.constructor.name === \"ZodOptional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f.constructor.name === \"ZodNullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f.constructor.name === \"ZodUnion\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f.constructor.name === \"ZodAny\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f.constructor.name === \"ZodMap\" || f.constructor.name === \"ZodRecord\";\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f.constructor.name === \"ZodEffects\";\n },\n};\n","import type { ZodType } from \"zod\";\n\nexport namespace zmAssertIds {\n export function objectId(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"ObjectId\";\n }\n\n export function uuid(f: ZodType<any>): f is ZodType<string> {\n return \"__zm_type\" in f && f.__zm_type === \"UUID\";\n }\n}\n","import {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n type ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Instance assertions (ESM)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the instance of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return f instanceof ZodString;\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return f instanceof ZodNumber;\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return f instanceof ZodObject;\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return f instanceof ZodArray;\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return f instanceof ZodBoolean;\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return f instanceof ZodEnum;\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return f instanceof ZodNativeEnum;\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return f instanceof ZodDate;\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return f instanceof ZodDefault;\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return f instanceof ZodOptional;\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return f instanceof ZodNullable;\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return f instanceof ZodUnion;\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return f instanceof ZodAny;\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return f instanceof ZodMap || f instanceof ZodRecord;\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return f instanceof ZodEffects;\n },\n};\n","import type {\n ZodAny,\n ZodArray,\n ZodBoolean,\n ZodDate,\n ZodDefault,\n ZodEffects,\n ZodEnum,\n ZodMap,\n ZodNativeEnum,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodRecord,\n ZodString,\n ZodType,\n ZodUnion,\n} from \"zod\";\nimport type { IAsserts } from \"./types\";\n\n/**\n * Static names assertions (Bundlers)\n * @internal\n *\n * Asserts if a Zod type is a specific type\n * by checking the `__zm_type` property of it's prototype.\n */\nexport const zmAssert: IAsserts = {\n string(f: ZodType<any>): f is ZodString {\n return \"__zm_type\" in f && f.__zm_type === \"String\";\n },\n\n number(f: ZodType<any>): f is ZodNumber {\n return \"__zm_type\" in f && f.__zm_type === \"Number\";\n },\n\n object(f: ZodType<any>): f is ZodObject<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Object\";\n },\n\n array(f: ZodType<any>): f is ZodArray<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Array\";\n },\n\n boolean(f: ZodType<any>): f is ZodBoolean {\n return \"__zm_type\" in f && f.__zm_type === \"Boolean\";\n },\n\n enumerable(f: ZodType<any>): f is ZodEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Enum\";\n },\n\n nativeEnumerable(f: ZodType<any>): f is ZodNativeEnum<any> {\n return \"__zm_type\" in f && f.__zm_type === \"NativeEnum\";\n },\n\n date(f: ZodType<any>): f is ZodDate {\n return \"__zm_type\" in f && f.__zm_type === \"Date\";\n },\n\n def(f: ZodType<any>): f is ZodDefault<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Default\";\n },\n\n optional(f: ZodType<any>): f is ZodOptional<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Optional\";\n },\n\n nullable(f: ZodType<any>): f is ZodNullable<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Nullable\";\n },\n\n union(f: ZodType<any>): f is ZodUnion<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Union\";\n },\n\n any(f: ZodType<any>): f is ZodAny {\n return \"__zm_type\" in f && f.__zm_type === \"Any\";\n },\n\n mapOrRecord(f: ZodType<any>): f is ZodMap<any> | ZodRecord<any> {\n return \"__zm_type\" in f && (f.__zm_type === \"Map\" || f.__zm_type === \"Record\");\n },\n\n effect(f: ZodType<any>): f is ZodEffects<any> {\n return \"__zm_type\" in f && f.__zm_type === \"Effects\";\n },\n};\n","import type { ZodType } from \"zod\";\nimport { zmAssert as aConstructor } from \"./constructor\";\nimport { zmAssertIds } from \"./custom\";\nimport { zmAssert as aInstance } from \"./instanceOf\";\nimport { zmAssert as aStaticName } from \"./staticNames\";\nimport type { IAsserts } from \"./types\";\n\nconst assertions = [aConstructor, aInstance, aStaticName];\nconst zmAssert = Object.keys(aConstructor)\n .map((key) => key as keyof IAsserts)\n .reduce((acc, key) => {\n (<any>acc[key]) = (f: ZodType<any>) => {\n return assertions.some((assertion) => assertion[key](f));\n };\n\n return acc;\n }, {} as IAsserts);\n\nexport default {\n ...zmAssert,\n ...zmAssertIds,\n};\n","import { isValidObjectId, Types } from \"mongoose\";\nimport { type CustomErrorParams, z } from \"zod\";\n\ndeclare module \"zod\" {\n interface ZodString {\n unique: (arg?: boolean) => ZodString;\n sparse: (arg?: boolean) => ZodString;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodNumber {\n unique: (arg?: boolean) => ZodNumber;\n sparse: (arg?: boolean) => ZodNumber;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodDate {\n unique: (arg?: boolean) => ZodDate;\n sparse: (arg?: boolean) => ZodDate;\n __zm_unique: boolean;\n __zm_sparse: boolean;\n }\n\n interface ZodType<\n Output = any,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Def extends z.ZodTypeDef = z.ZodTypeDef,\n // biome-ignore lint/correctness/noUnusedVariables: For future use\n Input = Output,\n > {}\n}\n\nlet zod_extended = false;\n/**\n * Extends the Zod library with additional functionality.\n *\n * This function modifies the Zod library to add custom validation and uniqueness checks.\n * It ensures that the extension is only applied once.\n *\n * @param z_0 - The Zod library to extend.\n *\n * @remarks\n * - Overrides `refine` method to `ZodType` that includes additional metadata for validation.\n * - Overrides `unique` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as unique.\n * - Overrides `sparse` method to `ZodString`, `ZodNumber`, and `ZodDate` to mark them as sparse.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n * import { extendZod } from \"./extension\";\n *\n * extendZod(z);\n *\n * const schema = z.object({\n * name: z.string().unique();\n * });\n * ```\n */\nexport function extendZod(z_0: typeof z) {\n // Prevent zod from being extended multiple times\n if (zod_extended) return;\n zod_extended = true;\n\n // Refine support\n const _refine = z_0.ZodType.prototype.refine;\n z_0.ZodType.prototype.refine = function <T>(\n check: (arg0: T) => boolean,\n opts?: string | CustomErrorParams | ((arg: T) => CustomErrorParams),\n ) {\n const zEffect = _refine.bind(this)(check, opts);\n\n let message: string | undefined | ((v: T) => string | undefined);\n if (opts) {\n if (typeof opts === \"string\") message = opts;\n else if (\"message\" in opts) message = opts.message;\n }\n\n (<any>zEffect._def.effect).__zm_validation = {\n validator: check,\n message: message,\n };\n\n return zEffect;\n };\n\n // Unique support\n const UNIQUE_SUPPORT_LIST = [z_0.ZodString, z_0.ZodNumber, z_0.ZodDate] as const;\n\n for (const type of UNIQUE_SUPPORT_LIST) {\n (<any>type.prototype).unique = function (arg = true) {\n (<any>this).__zm_unique = arg;\n return this;\n };\n\n (<any>type.prototype).sparse = function (arg = true) {\n (<any>this).__zm_sparse = arg;\n return this;\n };\n }\n\n // Assign static names to Zod types\n const TypesMap = {\n String: z_0.ZodString,\n Number: z_0.ZodNumber,\n Object: z_0.ZodObject,\n Array: z_0.ZodArray,\n Boolean: z_0.ZodBoolean,\n Enum: z_0.ZodEnum,\n Date: z_0.ZodDate,\n Default: z_0.ZodDefault,\n Optional: z_0.ZodOptional,\n Nullable: z_0.ZodNullable,\n Union: z_0.ZodUnion,\n Any: z_0.ZodAny,\n Map: z_0.ZodMap,\n Record: z_0.ZodRecord,\n Effects: z_0.ZodEffects,\n };\n\n for (const [key, value] of Object.entries(TypesMap)) {\n (<any>value.prototype).__zm_type = key;\n }\n}\n\nexport type TzmId = ReturnType<typeof createId> & {\n unique: (arg?: boolean) => TzmId;\n sparse: (arg?: boolean) => TzmId;\n ref: (arg: string) => TzmId;\n refPath: (arg: string) => TzmId;\n};\n\nconst createId = () => {\n return z\n .string()\n .refine((v) => isValidObjectId(v), { message: \"Invalid ObjectId\" })\n .or(z.instanceof(Types.ObjectId));\n};\n\nexport const zId = (ref?: string): TzmId => {\n const output = createId();\n\n (<any>output).__zm_type = \"ObjectId\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmId;\n};\n\nexport type TzmUUID = ReturnType<typeof createUUID> & {\n unique: (arg?: boolean) => TzmUUID;\n sparse: (arg?: boolean) => TzmUUID;\n ref: (arg: string) => TzmUUID;\n refPath: (arg: string) => TzmUUID;\n};\n\nconst createUUID = () => {\n return z.string().uuid({ message: \"Invalid UUID\" }).or(z.instanceof(Types.UUID));\n};\n\nexport const zUUID = (ref?: string): TzmUUID => {\n const output = createUUID();\n\n (<any>output).__zm_type = \"UUID\";\n (<any>output).__zm_ref = ref;\n\n (<any>output).ref = function (ref: string) {\n (<any>this).__zm_ref = ref;\n return this;\n };\n\n (<any>output).refPath = function (ref: string) {\n (<any>this).__zm_refPath = ref;\n return this;\n };\n\n (<any>output).unique = function (val = true) {\n (<any>this).__zm_unique = val;\n return this;\n };\n\n (<any>output).sparse = function (val = true) {\n (<any>this).__zm_sparse = val;\n return this;\n };\n\n return output as TzmUUID;\n};\n"],"mappings":"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","names":["Schema","SchemaTypes","zmAssert","string","f","name","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssertIds","objectId","f","__zm_type","uuid","ZodAny","ZodArray","ZodBoolean","ZodDate","ZodDefault","ZodEffects","ZodEnum","ZodMap","ZodNativeEnum","ZodNullable","ZodNumber","ZodObject","ZodOptional","ZodRecord","ZodString","ZodUnion","zmAssert","string","f","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","zmAssert","string","f","__zm_type","number","object","array","boolean","enumerable","nativeEnumerable","date","def","optional","nullable","union","any","mapOrRecord","effect","assertions","aConstructor","aInstance","aStaticName","zmAssert","Object","keys","map","key","reduce","acc","f","some","assertion","zmAssertIds","isValidObjectId","Types","z","zod_extended","extendZod","z_0","_refine","ZodType","prototype","refine","check","opts","zEffect","bind","message","_def","effect","__zm_validation","validator","UNIQUE_SUPPORT_LIST","ZodString","ZodNumber","ZodDate","type","unique","arg","__zm_unique","sparse","__zm_sparse","TypesMap","String","Number","Object","ZodObject","Array","ZodArray","Boolean","ZodBoolean","Enum","ZodEnum","Date","Default","ZodDefault","Optional","ZodOptional","Nullable","ZodNullable","Union","ZodUnion","Any","ZodAny","Map","ZodMap","Record","ZodRecord","Effects","ZodEffects","key","value","entries","__zm_type","createId","z","string","v","isValidObjectId","or","instanceof","Types","ObjectId","zId","ref","output","__zm_ref","refPath","__zm_refPath","val","createUUID","uuid","UUID","zUUID","zodSchema","schema","options","definition","parseObject","Schema","zodSchemaRaw","obj","required","object","key","field","Object","entries","shape","zmAssert","f","parseField","Error","type","def","refinement","objectId","ref","__zm_ref","refPath","__zm_refPath","unique","__zm_unique","sparse","__zm_sparse","parseObjectId","uuid","parseUUID","number","isUnique","isSparse","parseNumber","string","parseString","enumerable","parseEnum","keys","Values","nativeEnumerable","values","_def","boolean","parseBoolean","date","parseDate","array","parseArray","element","innerType","defaultValue","optional","undefined","nullable","union","any","parseMixed","mapOrRecord","parseMap","valueSchema","effect","validation","__zm_validation","validate","output","Number","default","min","minValue","max","maxValue","String","minLength","maxLength","enum","Boolean","Date","SchemaTypes","ObjectId","valueType","pointer","Map","of","UUID","Mixed"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zodyac/zod-mongoose",
3
- "version": "4.2.1",
3
+ "version": "4.2.2",
4
4
  "description": "A library that allows you to generate mongoose schemas from zod objects.",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -8,7 +8,8 @@
8
8
  "test:badges": "jest --coverage && make-coverage-badge --report-path ./artifacts/coverage/coverage-summary.json --output-path ./badges/coverage.svg",
9
9
  "build": "tsup",
10
10
  "lint": "biome check",
11
- "lint:fix": "biome check --write ."
11
+ "lint:fix": "biome check --write .",
12
+ "typecheck": "tsc --noEmit"
12
13
  },
13
14
  "type": "module",
14
15
  "main": "./dist/index.cjs",