@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 +2 -0
- package/dist/index.cjs +15 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +15 -9
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
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(
|
|
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(
|
|
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,
|
|
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,
|
|
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 {
|
package/dist/index.cjs.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":["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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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,
|
|
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,
|
|
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.
|
|
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",
|