{"_id":"@arthur-lobo/zod-env","_rev":"2-c5e0406e45fb85accc97e300d59844f2","name":"@arthur-lobo/zod-env","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@arthur-lobo/zod-env","version":"1.0.0","keywords":["zod","env","dotenv","validation"],"author":{"name":"Arthur Lobo"},"license":"MIT","_id":"@arthur-lobo/zod-env@1.0.0","maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"dist":{"shasum":"3e1959a984a2a9d62f60f1b10f92397f521ecd88","tarball":"https://registry.npmjs.org/@arthur-lobo/zod-env/-/zod-env-1.0.0.tgz","fileCount":6,"integrity":"sha512-PFPTnTtfDAW7w8Qjr3hMxYaOn7/2CW0iuAsDVJvIKi9Fy11VZUOOBo6CwTIRcit7bqlF0h8YNbBDwoBN58X8xQ==","signatures":[{"sig":"MEQCIBu309GZLpw54O4Q2izkC67ab1h/sYq3o7u95eX324ZKAiAOpfEXZPbJKAApmKmc5jvKfgO+4xZEQ8H/9K++U330hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8283},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0ac4b58811510736260258b6dc9552bd0f8da80a","scripts":{"test":"vitest --run","build":"tsup","prepack":"npm run build"},"_npmUser":{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"},"_npmVersion":"11.10.0","description":"load and validate your env with zod.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-env_1.0.0_1773621023851_0.34043190187263583","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arthur-lobo/zod-env","version":"1.0.1","description":"load and validate your env with zod.","keywords":["zod","env","dotenv","validation"],"license":"MIT","author":{"name":"Arthur Lobo"},"type":"module","publishConfig":{"access":"public"},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.js"}},"types":"./dist/index.d.ts","scripts":{"test":"vitest --run","build":"tsup","prepack":"npm run build"},"dependencies":{"zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.5.0","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.1.0"},"gitHead":"431aa45208ddd08162184ffb7db6bb91fd8d7f8c","_id":"@arthur-lobo/zod-env@1.0.1","_nodeVersion":"25.6.1","_npmVersion":"11.10.0","dist":{"integrity":"sha512-wJh0a6GZMZJE0iXKDCF6c3qjzkVzpZwRvHh7gVZTAiNnCasCpiEqMeuAMMf0Q2+kIQZpdIO+vbHOUFXYifNv1w==","shasum":"da1fa93cd6b225a7c20c584ea297e376b5866a62","tarball":"https://registry.npmjs.org/@arthur-lobo/zod-env/-/zod-env-1.0.1.tgz","fileCount":6,"unpackedSize":8315,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEIkVMQTRbl01YLBZp9nH9Zh7jKN3TgAAWfdm+Bjq5sFAiBNK4wbTZXfdLEZVOKxbaOmM8256dHSP8sKcaU76WYpOQ=="}]},"_npmUser":{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"},"directories":{},"maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zod-env_1.0.1_1773699942044_0.666310799841918"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-16T00:30:23.734Z","modified":"2026-03-16T22:25:42.291Z","1.0.0":"2026-03-16T00:30:24.008Z","1.0.1":"2026-03-16T22:25:42.189Z"},"author":{"name":"Arthur Lobo"},"license":"MIT","keywords":["zod","env","dotenv","validation"],"description":"load and validate your env with zod.","maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"readme":"# Zod Env\n\nA TypeScript library for loading and validating environment variables using [Zod](https://zod.dev/), providing strong and safe type validation for environment configurations.\n\n## Installation\n\n```bash\nnpm install @arthur-lobo/zod-env\n```\n\n## Description\n\n`ZodEnv` allows you to define Zod schemas to validate environment variables, ensuring their values are in the correct format and providing default values when necessary. It supports both synchronous and asynchronous operations, and allow you to define how `.env` must be loaded.\n\n## Basic Usage\n\n### Synchronous Class: `ZodEnv`\n\n```typescript\nimport { z } from 'zod';\nimport { ZodEnv } from '@arthur-lobo/zod-env';\n\nconst schema = z.object({\n  PORT: z.coerce.number().default(3000),\n  DATABASE_URL: z.string(),\n  DEBUG: z.coerce.boolean().default(false),\n});\n\nconst env = new ZodEnv({\n  schema,\n  getEnv: () => process.env, // or any function that returns an object with the variables like `import.meta.env` when using vite to build your frontend\n});\n\n// Access validated values\nconsole.log(env.get('PORT')); // 3000 (or the value of process.env.PORT if defined)\nconsole.log(env.get('DATABASE_URL')); // validated string\n```\n\n### Asynchronous Class: `AsyncZodEnv`\n\n```typescript\nimport { z } from 'zod';\nimport { AsyncZodEnv } from '@arthur-lobo/zod-env';\n\nconst schema = z.object({\n  API_KEY: z.string(),\n  TIMEOUT: z.coerce.number().default(5000),\n});\n\nconst env = new AsyncZodEnv({\n  schema,\n  getEnv: async () => {\n    await someAsyncOperation();\n    return process.env;\n  },\n});\n\n// Access validated values asynchronously\nconst apiKey = await env.get('API_KEY');\nconst timeout = await env.get('TIMEOUT');\n```\n\n### Loading .env File\n\nYou can automatically load a `.env` file using Node.js's `loadEnv` function:\n\n```typescript\nimport { loadEnvFile } from 'node:process';\n\nconst env = new ZodEnv({\n  schema: z.object({\n    SECRET_KEY: z.string(),\n  }),\n  loadEnv: loadEnvFile, // Loads the .env file\n  getEnv: () => process.env,\n});\n\nconsole.log(env.get('SECRET_KEY')); // Validated value from .env\n```\n\nFor asynchronous operations:\n\n```typescript\nconst env = new AsyncZodEnv({\n  schema: z.object({\n    SECRET_KEY: z.string(),\n  }),\n  loadEnv: async () => loadEnvFile(), // Loads .env asynchronously\n  getEnv: async () => process.env,\n});\n```\n\n## Schema Examples\n\n```typescript\nimport { z } from 'zod';\n\n// Basic schema with default values\nconst basicSchema = z.object({\n  PORT: z.coerce.number().default(3000),\n  HOST: z.string().default('localhost'),\n  DEBUG: z.coerce.boolean().default(false),\n});\n\n// Schema with custom validations\nconst advancedSchema = z.object({\n  DATABASE_URL: z.string().url(),\n  JWT_SECRET: z.string().min(32, 'JWT secret must be at least 32 characters'),\n  MAX_CONNECTIONS: z.coerce.number().min(1).max(100),\n  ALLOWED_ORIGINS: z.string().transform(str => str.split(',')).pipe(z.array(z.string().url())),\n});\n```\n\n## Benefits\n\n- **Strong Type Validation**: Uses Zod to ensure environment variables are in the correct format.\n- **Default Values**: Native support for default values in the Zod schema.\n- **Flexibility**: Works with any source of environment variables (process.env, import.meta.env, custom files, etc.).\n- **.env Support**: Easy integration with `.env` files via Node.js's `loadEnvFile`.\n- **Async/Sync**: Choose between synchronous or asynchronous operations as needed.\n- **TypeScript**: Fully typed, providing autocomplete and type checking.\n","readmeFilename":"README.md"}