{"_id":"@axshat.co.in/env-safe","_rev":"3-528a8a7a82a7f8de7b53c7c4d3a9361b","name":"@axshat.co.in/env-safe","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"@axshat.co.in/env-safe","version":"0.0.1","keywords":["env","config","validation"],"license":"MIT","_id":"@axshat.co.in/env-safe@0.0.1","maintainers":[{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"}],"dist":{"shasum":"4f7593e675136b25b557255cf61138882d8ce3b6","tarball":"https://registry.npmjs.org/@axshat.co.in/env-safe/-/env-safe-0.0.1.tgz","fileCount":6,"integrity":"sha512-9oYsozy5v3nQNVgHHhCWSJpp1d0zpSp5jwHZywpXQ/jdrKz0Ce1fh6igQUPNKvPWNL1ub423gWl7biDQpFf2oA==","signatures":[{"sig":"MEQCICRIC9b6C+KnepUcf43/0PORGaIvE60xurn6H9vHmD65AiB4hr4JVes7C5cFqpRDzqe80GI5f73kePYSmIrwZt5nDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8183},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --dts --format esm,cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"},"_npmVersion":"10.9.4","description":"Fail-fast environment variable validation","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/env-safe_0.0.1_1766344189429_0.20166708391007737","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@axshat.co.in/env-safe","version":"0.0.2","keywords":["env","config","validation"],"license":"MIT","_id":"@axshat.co.in/env-safe@0.0.2","maintainers":[{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"}],"dist":{"shasum":"f8f657a228c862161be85a7920c4e86f0997bcda","tarball":"https://registry.npmjs.org/@axshat.co.in/env-safe/-/env-safe-0.0.2.tgz","fileCount":6,"integrity":"sha512-XgqiOnk4lC2q8oju7UtFub/hxjqB3vZJ6+Yw+ZjGs7jbHBHBwLdjKM8gXYZ63DUWekeQVRakgwMEQet2hEsNRA==","signatures":[{"sig":"MEUCIDxM75aAocuq0WbDCyHqwv9FbQrTfduG4mhr6BBqtwRhAiEA4B67Cv3TGN1Oie6c513ARmWCd/9elggawPkI3XS8JBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7828},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --dts --format esm,cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"},"_npmVersion":"10.9.4","description":"Fail-fast environment variable validation","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/env-safe_0.0.2_1766344571135_0.3075077747749053","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@axshat.co.in/env-safe","version":"0.0.5","description":"Fail-fast environment variable validation","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsup src/index.ts --dts --format esm,cjs","prepublishOnly":"npm run build"},"publishConfig":{"access":"public"},"keywords":["env","config","validation"],"license":"MIT","type":"module","devDependencies":{"@types/node":"^25.0.3","tsup":"^8.5.1","typescript":"^5.9.3"},"_id":"@axshat.co.in/env-safe@0.0.5","gitHead":"bf115f552123aa534700ac000bb0882b7ea49507","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-hxLCTQp9JlKJmJWCEHqIXX2OGnzTY94KSfN1nRAoYgbmgiroV3k1C16D47w6fRzSo7unm547owlkeqhwZ9gakA==","shasum":"9a0418fdd43348723560f32b2c6f0eaaa087f58b","tarball":"https://registry.npmjs.org/@axshat.co.in/env-safe/-/env-safe-0.0.5.tgz","fileCount":6,"unpackedSize":8031,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE3No5j0jMyc1OR3uCqEGsOGmIAUgW/oo1ae3hLSInrmAiEAnjxQUXTWEuxU92HfTFU6rPvCV3/5EJotfayI/i7sFK0="}]},"_npmUser":{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"},"directories":{},"maintainers":[{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/env-safe_0.0.5_1766389225079_0.5110293402480954"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-21T19:09:49.318Z","modified":"2025-12-22T07:40:25.415Z","0.0.1":"2025-12-21T19:09:49.585Z","0.0.2":"2025-12-21T19:16:11.283Z","0.0.5":"2025-12-22T07:40:25.224Z"},"license":"MIT","keywords":["env","config","validation"],"description":"Fail-fast environment variable validation","maintainers":[{"name":"axshat.co.in","email":"OFFICIALAKSHATTT@GMAIL.COM"}],"readme":"# @axshat.co.in/env-safe\r\n\r\n![npm version](https://img.shields.io/npm/v/@axshat.co.in/env-safe)\r\n![npm downloads](https://img.shields.io/npm/dw/@axshat.co.in/env-safe)\r\n![bundle size](https://img.shields.io/bundlephobia/minzip/@axshat.co.in/env-safe)\r\n![license](https://img.shields.io/npm/l/@axshat.co.in/env-safe)\r\n![typescript](https://img.shields.io/badge/TypeScript-Ready-blue)\r\n\r\nFail-fast environment variable validation for Node.js applications.\r\n\r\n@axshat.co.in/env-safe validates required environment variables at application startup, preventing silent runtime failures and misconfigurations.\r\n\r\n---\r\n\r\n## Features\r\n\r\n- Fail-fast on missing or invalid environment variables  \r\n- Runtime validation with clear error messages  \r\n- TypeScript-first with strong typing  \r\n- Zero dependencies  \r\n- Lightweight and fast  \r\n- Works with Node.js, Next.js, Vite, Express  \r\n\r\n---\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @axshat.co.in/env-safe\r\n````\r\n\r\nor\r\n\r\n```bash\r\nyarn add @axshat.co.in/env-safe\r\n```\r\n\r\n---\r\n\r\n## Code Examples\r\n\r\n### Basic usage\r\n\r\n```ts\r\nimport { envSafe } from \"@axshat.co.in/env-safe\";\r\n\r\nconst env = envSafe({\r\n  DATABASE_URL: \"string\",\r\n  PORT: \"number\",\r\n  DEBUG: \"boolean\",\r\n});\r\n```\r\n\r\n---\r\n\r\n### Default values\r\n\r\n```ts\r\nconst env = envSafe({\r\n  PORT: { type: \"number\", default: 3000 },\r\n});\r\n```\r\n\r\n---\r\n\r\n### Optional variables\r\n\r\n```ts\r\nconst env = envSafe({\r\n  LOG_LEVEL: { type: \"string\", optional: true },\r\n});\r\n```\r\n\r\n---\r\n\r\n### Enum (restricted values)\r\n\r\n```ts\r\nconst env = envSafe({\r\n  NODE_ENV: {\r\n    type: \"enum\",\r\n    values: [\"development\", \"production\"],\r\n  },\r\n});\r\n```\r\n\r\n---\r\n\r\n### Custom validation\r\n\r\n```ts\r\nconst env = envSafe({\r\n  JWT_SECRET: {\r\n    type: \"string\",\r\n    validate: (value) => value.length >= 16,\r\n  },\r\n});\r\n```\r\n\r\n---\r\n\r\n### Real-world example\r\n\r\n```ts\r\nconst env = envSafe({\r\n  DATABASE_URL: \"string\",\r\n  PORT: { type: \"number\", default: 3000 },\r\n  NODE_ENV: {\r\n    type: \"enum\",\r\n    values: [\"development\", \"production\"],\r\n  },\r\n  JWT_SECRET: {\r\n    type: \"string\",\r\n    validate: (v) => v.length >= 16,\r\n  },\r\n});\r\n```\r\n\r\n---\r\n\r\n## TypeScript Interface\r\n\r\n### EnvType\r\n\r\n```ts\r\nexport type EnvType = \"string\" | \"number\" | \"boolean\" | \"enum\";\r\n```\r\n\r\n---\r\n\r\n### EnvRule\r\n\r\n```ts\r\nexport interface EnvRule<T = unknown> {\r\n  type: EnvType;\r\n  default?: T;\r\n  optional?: boolean;\r\n  values?: readonly string[];\r\n  validate?: (value: T) => boolean;\r\n}\r\n```\r\n\r\n---\r\n\r\n### EnvSchema\r\n\r\n```ts\r\nexport type EnvSchema = Record<string, EnvType | EnvRule>;\r\n```\r\n\r\n---\r\n\r\n### envSafe signature\r\n\r\n```ts\r\nexport function envSafe<T extends EnvSchema>(\r\n  schema: T\r\n): {\r\n  [K in keyof T]: any;\r\n};\r\n```\r\n\r\n---\r\n\r\n## Error Output\r\n\r\nMissing variable:\r\n\r\n```txt\r\n❌ Missing environment variable: DATABASE_URL\r\n```\r\n\r\nInvalid value:\r\n\r\n```txt\r\n❌ Validation failed for: JWT_SECRET\r\n```\r\n\r\n---\r\n\r\n## Why @axshat.co.in/env-safe?\r\n\r\nAccessing environment variables directly is unsafe:\r\n\r\n```ts\r\nprocess.env.API_KEY! // unsafe\r\n```\r\n\r\nThis can lead to runtime crashes, silent bugs, and broken deployments.\r\n\r\n@axshat.co.in/env-safe validates once, early, and clearly.\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT © Akshat Singh\r\n\r\n---\r\n\r\n## Contributing\r\n\r\nIssues and pull requests are welcome.\r\nPlease keep the package simple, lightweight, and dependency-free.\r\n","readmeFilename":"readme.md"}