{"_id":"@benjaminlindberg/zod-mongoose","_rev":"4-15ab782b7cb665ad28af0b0a4f0687a1","name":"@benjaminlindberg/zod-mongoose","description":"A library that allows you to generate mongoose schemas from zod objects.","dist-tags":{"latest":"1.1.6"},"versions":{"1.1.2":{"name":"@benjaminlindberg/zod-mongoose","version":"1.1.2","keywords":["zod","mongoose","schema","validation","typescript","type","types","type-safe","validation","mongodb","mongo","database","db","orm","odm","document"],"author":{"name":"bebrasmell"},"license":"MIT","_id":"@benjaminlindberg/zod-mongoose@1.1.2","homepage":"https://zodyac.dev/toolbox/zod-mongoose","bugs":{"url":"https://github.com/git-zodyac/mongoose/issues"},"dist":{"shasum":"43686f784c6e60162b65d822003867a87068e539","tarball":"https://registry.npmjs.org/@benjaminlindberg/zod-mongoose/-/zod-mongoose-1.1.2.tgz","fileCount":2,"integrity":"sha512-lpD06hEJG/DSwRa00e5siTqFqQeCyBJli5H66PESkbNHQFasJdH2t1uXp6RNUPF9WE+9jJi45dj5fvpocUUYqA==","signatures":[{"sig":"MEYCIQD/R66Lre5HE2DPQaXMNrWN3k77FqraZ56w6Gg0mJ9qeQIhAIuqFlPJi8oKxzlDtMeH08khgd1E7NWo559EEzGbAw0F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3781},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"590eb39ed752c413ec69e26501c324c9d2a35426","private":false,"scripts":{"test":"ts-node --esm ./src/test/test.ts","build":"tsup"},"_npmUser":{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"},"repository":{"url":"git+https://github.com/git-zodyac/mongoose.git","type":"git"},"_npmVersion":"10.5.0","description":"A library that allows you to generate mongoose schemas from zod objects.","directories":{},"_nodeVersion":"21.7.2","dependencies":{"zod":"^3.22.4","mongoose":"^8.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.56.0","prettier":"^3.1.1","eslint-plugin-prettier":"^5.1.0","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-mongoose_1.1.2_1719867950633_0.8943117938374174","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@benjaminlindberg/zod-mongoose","version":"1.1.3","keywords":["zod","mongoose","schema","validation","typescript","type","types","type-safe","validation","mongodb","mongo","database","db","orm","odm","document"],"author":{"name":"bebrasmell"},"license":"MIT","_id":"@benjaminlindberg/zod-mongoose@1.1.3","homepage":"https://zodyac.dev/toolbox/zod-mongoose","bugs":{"url":"https://github.com/git-zodyac/mongoose/issues"},"dist":{"shasum":"ed524ff321b65a68483e0906f39f3501b75d3da3","tarball":"https://registry.npmjs.org/@benjaminlindberg/zod-mongoose/-/zod-mongoose-1.1.3.tgz","fileCount":2,"integrity":"sha512-j4fRdiLTScpTb75Tl/iImk6yexJJQDPu5s+QetnnsCKVdFmPur3vvEg5PvPOJGOg6whDYAkaY9ylmtgNvhEcMw==","signatures":[{"sig":"MEQCIFeMtpm+tAd+jMd2tndmk3CIwRbF0UnfGALk0LDqh50oAiBkubBpcd3vy4LpiB99m5fKkvVh3b+mGylGL30+I48C0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3781},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"041272dfc6164746ce338672dc9a00aa1bb8d2cf","private":false,"scripts":{"test":"ts-node --esm ./src/test/test.ts","build":"tsup"},"_npmUser":{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"},"repository":{"url":"git+https://github.com/git-zodyac/mongoose.git","type":"git"},"_npmVersion":"10.5.0","description":"A library that allows you to generate mongoose schemas from zod objects.","directories":{},"_nodeVersion":"21.7.2","dependencies":{"zod":"^3.22.4","mongoose":"^8.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.56.0","prettier":"^3.1.1","eslint-plugin-prettier":"^5.1.0","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-mongoose_1.1.3_1719868302355_0.7052312014129025","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"@benjaminlindberg/zod-mongoose","version":"1.1.4","keywords":["zod","mongoose","schema","validation","typescript","type","types","type-safe","validation","mongodb","mongo","database","db","orm","odm","document"],"author":{"name":"bebrasmell"},"license":"MIT","_id":"@benjaminlindberg/zod-mongoose@1.1.4","homepage":"https://zodyac.dev/toolbox/zod-mongoose","bugs":{"url":"https://github.com/git-zodyac/mongoose/issues"},"dist":{"shasum":"c0cdb1b14c7ef38a29fa7b6888f5e6d22977215c","tarball":"https://registry.npmjs.org/@benjaminlindberg/zod-mongoose/-/zod-mongoose-1.1.4.tgz","fileCount":8,"integrity":"sha512-L0WUMceTgyDE8dmFajaSxMqVZ9iH3fgRhzvaXnknp/s/TnfVX8DWQBKNqo3YhZ9vJNlcK8ATuIXw1ulLMW88/A==","signatures":[{"sig":"MEYCIQDJKkWkHnunKLqrMinXqdVke8GVcYLQ83AEivEyOm9mhwIhAMTQpTJlG+rskqWmBvoWCDeg1GkYQgABQRyLZ0uVPbdg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46122},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"041272dfc6164746ce338672dc9a00aa1bb8d2cf","private":false,"scripts":{"test":"ts-node --esm ./src/test/test.ts","build":"tsup"},"_npmUser":{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"},"repository":{"url":"git+https://github.com/git-zodyac/mongoose.git","type":"git"},"_npmVersion":"10.5.0","description":"A library that allows you to generate mongoose schemas from zod objects.","directories":{},"_nodeVersion":"21.7.2","dependencies":{"zod":"^3.22.4","mongoose":"^8.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.56.0","prettier":"^3.1.1","eslint-plugin-prettier":"^5.1.0","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-mongoose_1.1.4_1719868455663_0.8048771061281428","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"@benjaminlindberg/zod-mongoose","version":"1.1.5","keywords":["zod","mongoose","schema","validation","typescript","type","types","type-safe","validation","mongodb","mongo","database","db","orm","odm","document"],"author":{"name":"bebrasmell"},"license":"MIT","_id":"@benjaminlindberg/zod-mongoose@1.1.5","maintainers":[{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"}],"homepage":"https://zodyac.dev/toolbox/zod-mongoose","bugs":{"url":"https://github.com/git-zodyac/mongoose/issues"},"dist":{"shasum":"ce0701c5daedc9756aab038cf348c30693ccd455","tarball":"https://registry.npmjs.org/@benjaminlindberg/zod-mongoose/-/zod-mongoose-1.1.5.tgz","fileCount":6,"integrity":"sha512-JMiV6Vc6upmQyD0spmxVJcWD6qhHCNQlmKxmN4rNTP5Fx426sMy+FrxM1yzsSEwu2npSzXEhTeFNgTOPSCNGuQ==","signatures":[{"sig":"MEYCIQDPJXS63r3JOZabhlUs3CzSQqzigzw8Ow7r9OF4HEMAiQIhAOA0Uh4iUOKXKee/2MjpBUhGOzYGIMQudI4mTrioVijc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42189},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"041272dfc6164746ce338672dc9a00aa1bb8d2cf","private":false,"scripts":{"test":"ts-node --esm ./src/test/test.ts","build":"tsup"},"_npmUser":{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"},"repository":{"url":"git+https://github.com/git-zodyac/mongoose.git","type":"git"},"_npmVersion":"10.8.1","description":"A library that allows you to generate mongoose schemas from zod objects.","directories":{},"_nodeVersion":"22.4.0","dependencies":{"zod":"^3.22.4","mongoose":"^8.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.56.0","prettier":"^3.1.1","eslint-plugin-prettier":"^5.1.0","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-mongoose_1.1.5_1720392309760_0.09168753061156787","host":"s3://npm-registry-packages"}},"1.1.6":{"name":"@benjaminlindberg/zod-mongoose","version":"1.1.6","description":"A library that allows you to generate mongoose schemas from zod objects.","scripts":{"build":"tsup","test":"ts-node --esm ./src/test/test.ts"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","private":false,"keywords":["zod","mongoose","schema","validation","typescript","type","types","type-safe","validation","mongodb","mongo","database","db","orm","odm","document"],"author":{"name":"bebrasmell"},"license":"MIT","homepage":"https://zodyac.dev/toolbox/zod-mongoose","repository":{"type":"git","url":"git+https://github.com/git-zodyac/mongoose.git"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^6.15.0","@typescript-eslint/parser":"^6.15.0","eslint":"^8.56.0","eslint-plugin-prettier":"^5.1.0","prettier":"^3.1.1","tsup":"^8.0.1"},"dependencies":{"mongoose":"^8.0.3","zod":"^3.22.4"},"bugs":{"url":"https://github.com/git-zodyac/mongoose/issues"},"_id":"@benjaminlindberg/zod-mongoose@1.1.6","gitHead":"041272dfc6164746ce338672dc9a00aa1bb8d2cf","_nodeVersion":"22.4.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-bfwSo/5ZKJoS2M2tiqFlcCcBFIz81Tt9vDM3+LXHQeaLfUxtPRbmqcLoxx1+n4cioStsRrmcbJt9KGbR5U2ncA==","shasum":"6e38c2354672d83c9b9e47057db223196c25c2ff","tarball":"https://registry.npmjs.org/@benjaminlindberg/zod-mongoose/-/zod-mongoose-1.1.6.tgz","fileCount":11,"unpackedSize":66654,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1UhT8E5u8Vtf6Lu/LxaLcd2cXynWDUB3lRiv+++l2XAiEAsPiW2XakyWy7jbXQeYBjIlMEfzYxMBjxcQA9JAUjooA="}]},"_npmUser":{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"},"directories":{},"maintainers":[{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/zod-mongoose_1.1.6_1720392533282_0.04427019916366137"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-01T21:05:50.525Z","modified":"2024-07-07T22:48:53.633Z","1.1.2":"2024-07-01T21:05:50.863Z","1.1.3":"2024-07-01T21:11:42.482Z","1.1.4":"2024-07-01T21:14:15.854Z","1.1.5":"2024-07-07T22:45:09.941Z","1.1.6":"2024-07-07T22:48:53.462Z"},"maintainers":[{"name":"benjaminlindberg","email":"lindbergbenjamin2@gmail.com"}],"author":{"name":"bebrasmell"},"repository":{"type":"git","url":"git+https://github.com/git-zodyac/mongoose.git"},"keywords":["zod","mongoose","schema","validation","typescript","type","types","type-safe","validation","mongodb","mongo","database","db","orm","odm","document"],"license":"MIT","homepage":"https://zodyac.dev/toolbox/zod-mongoose","bugs":{"url":"https://github.com/git-zodyac/mongoose/issues"},"readme":"# Zod to mongoose schema converter\n\n[![npm version](https://badge.fury.io/js/%40zodyac%2Fmongoose.svg)](https://badge.fury.io/js/%40zodyac%2Fmongoose)\n\n> A part of [Zodyac toolbox](https://npmjs.com/org/zodyac).\n\nThis package provides a function to convert [zod](https://www.npmjs.com/package/zod) object to [mongoose](https://www.npmjs.com/package/mongoose) schema.\n\n## Installation\n\n```bash\nnpm i @zodyac/zod-mongoose\n```\n\n## Usage\n\nFirst, create your zod schema:\n\n```typescript\nimport { z } from 'zod';\nimport { zId, zUUID } from '@zodyac/zod-mongoose';\n\nconst 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.describe('ObjectId:Company'),\n  wearable: zUUID.describe('UUID:Wearable'),\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```\n\nThen, convert it to mongoose schema and connect model:\n\n```typescript\nimport { zodSchema } from '@zodyac/zod-mongoose';\nimport { model } from 'mongoose';\n\nconst schema = zodSchema(zDoc);\nconst userModel = model('User', schema);\n```\n\nThat's it! Now you can use your mongoose model as usual:\n\n```typescript\nuserModel.find({ name: 'John' });\n```\n\n## Features\n\n- ✅ Basic types\n- ✅ Nested objects and schemas\n- ✅ Arrays\n- ✅ Enums (strings only)\n- ✅ Default values\n- ✅ Dates\n- ✅ ObjectId\n- ✅ ObjectId references\n- ✅ ZodAny as SchemaTypes.Mixed\n- 🔧 UUID (experimental)\n- 🔧 UUID references (experimental)\n- ❗️ Unions (not supported by mongoose)\n- ❗️ Intersection (not supported by mongoose)\n- ❗️ Indexes (not supported by zod)\n- ❗️ Number enums (comming soon)\n- ⏳ Regex validation (comming soon)\n- ⏳ Custom validators (comming soon)\n- ⏳ instanceOf (comming soon)\n- ⏳ Transform (comming soon)\n- ⏳ Refine (comming soon)\n\n## Checking schemas\n\nTo make sure nothing is missing, you can use ```Schema.obj```:\n\n```typescript\n// schema is mongoose schema\nconsole.log(schema.obj);\n```\n\n## Raw object\n\nIf you want to get raw object from zod schema to modify it, you can use ```zodSchemaRaw``` function:\n\n```typescript\nimport { zodSchemaRaw } from '@zodyac/zod-mongoose';\nimport { model, Schema } from 'mongoose';\n\nconst schema = zodSchemaRaw(zDoc);\nschema.age.validate = (v: number) => v > 18;\n\nconst model = model('User', new Schema(schema));\n```\n\n## License\nMIT\n","readmeFilename":"README.md"}