{"_id":"@awish/env-guardian","_rev":"5-22004e759a4281d5d10bb49e853d6eee","name":"@awish/env-guardian","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@awish/env-guardian","version":"1.0.0","keywords":["env","environment","variable","validation","security"],"author":"","license":"MIT","_id":"@awish/env-guardian@1.0.0","maintainers":[{"name":"awish","email":"5lynx567@gmail.com"}],"bin":{"env-guardian":"src/cli.js"},"dist":{"shasum":"ca617374f78e41af4425a75339883b682849dcd7","tarball":"https://registry.npmjs.org/@awish/env-guardian/-/env-guardian-1.0.0.tgz","fileCount":10,"integrity":"sha512-4ipdMBCv4ghZXNAyYz0gfOevGpb4TCn2j7dUlxKZHjci2hvnPm1cTGAODsuuHzslximX3hntuSZm+XvuMHBkbQ==","signatures":[{"sig":"MEYCIQDXnHVEmGdYvr/s45hZo7Clf/i2Z/6fALgK/kXBDP9rwwIhAPCzDQlG4lT2oxKUQYygfYAMm4CZiE36qC32l62YTmpj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12116},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./src/index.js","require":"./src/index.js"}},"gitHead":"e253668eb57cdaa2cac4bfa2d93d37f572bdca8e","scripts":{"test":"node --test"},"_npmUser":{"name":"awish","email":"5lynx567@gmail.com"},"_npmVersion":"11.10.0","description":"Secure environment variable validation library","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/env-guardian_1.0.0_1773586982328_0.27004176112572065","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to sealenv. Run: npm install sealenv"},"1.0.1":{"name":"@awish/env-guardian","version":"1.0.1","keywords":["env","environment","variable","validation","security"],"author":"","license":"MIT","_id":"@awish/env-guardian@1.0.1","maintainers":[{"name":"awish","email":"5lynx567@gmail.com"}],"bin":{"env-guardian":"src/cli.js"},"dist":{"shasum":"d165f32da0528b21a86b1807b84b2e74e7a0d426","tarball":"https://registry.npmjs.org/@awish/env-guardian/-/env-guardian-1.0.1.tgz","fileCount":10,"integrity":"sha512-ttsgsZlfwhl35FSRKS0+IW0QxgLTJ9i6J1HCYsZPigqxYCe5gZEkO85eNJb7DS4V81+LaikWzWIDlWhlw0kT6g==","signatures":[{"sig":"MEYCIQDdWEt03s4iJu3+kasFtchxi2yQpRp5JL6ud5AW3ntY1AIhAN8z4zzNULQa6zsjh8G3vPki5Vd7mqURdh5KvLcvfYe/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12063},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./src/index.js","require":"./src/index.js"}},"gitHead":"e253668eb57cdaa2cac4bfa2d93d37f572bdca8e","scripts":{"test":"node --test"},"_npmUser":{"name":"awish","email":"5lynx567@gmail.com"},"_npmVersion":"11.10.0","description":"Secure environment variable validation library","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/env-guardian_1.0.1_1773587402317_0.5258851933488033","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to sealenv. Run: npm install sealenv"},"1.1.0":{"name":"@awish/env-guardian","version":"1.1.0","keywords":["env","dotenv","environment","variable","validation","security","typescript"],"author":"","license":"MIT","_id":"@awish/env-guardian@1.1.0","maintainers":[{"name":"awish","email":"5lynx567@gmail.com"}],"bin":{"env-guardian":"bin/env-guardian.js"},"dist":{"shasum":"210743002727505a5b6250840ee9d30ed0a4fab6","tarball":"https://registry.npmjs.org/@awish/env-guardian/-/env-guardian-1.1.0.tgz","fileCount":9,"integrity":"sha512-AzbnBIA73yX2vPBSoMn81kjUXeJ2iYAlJo8ZuOkeXK5hbAbltTGZMNIXNVvYt0nHlL4qhJaoY/mLjZukLY7Hkg==","signatures":[{"sig":"MEYCIQCr7GEAiHSYUSkRpP3YqvMZPTNkkbnd89b1sJFBBTN01QIhAK+I7rrup5iXiEzu5vrhweyLYs9QA4mXqTAz7iXIKlnZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18535},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./src/index.js","require":"./src/index.js"}},"gitHead":"a8b3c7459f5255d56fb506ab35065dfaba71e0d7","scripts":{"test":"node --test"},"_npmUser":{"name":"awish","email":"5lynx567@gmail.com"},"_npmVersion":"11.10.0","description":"Secure environment variable validation library","directories":{},"_nodeVersion":"22.20.0","dependencies":{"chalk":"^5.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/env-guardian_1.1.0_1773772900760_0.8092624301742586","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to sealenv. Run: npm install sealenv"},"1.1.1":{"name":"@awish/env-guardian","version":"1.1.1","keywords":["env","dotenv","environment","variable","validation","security","typescript"],"author":"","license":"MIT","_id":"@awish/env-guardian@1.1.1","maintainers":[{"name":"awish","email":"5lynx567@gmail.com"}],"bin":{"env-guardian":"bin/env-guardian.js"},"dist":{"shasum":"3c79eb17de1615952f49d7f3fc3968a1daf97a09","tarball":"https://registry.npmjs.org/@awish/env-guardian/-/env-guardian-1.1.1.tgz","fileCount":9,"integrity":"sha512-ZFJVzCDjZZKjLypyp0xJzQC7EtJJw/oI9iCAz0P9m2h/taqUC/qEUoebvkikct0n8zW5ssNAyxCc7tLqAT4m5A==","signatures":[{"sig":"MEUCIQCdClSU7rpJjtzm7OazFsouSWrTN2ecaIQKSv4J/EgfUQIgX6b0BzuhMA2yANgH7D0RQN5RQyS9hE+U7mN3UnH3NdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18481},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./src/index.js","require":"./src/index.js"}},"gitHead":"4a7de282a230a2d275d34dc6fe1dbbb69d7df6e5","scripts":{"test":"node --test"},"_npmUser":{"name":"awish","email":"5lynx567@gmail.com"},"_npmVersion":"11.10.0","description":"Secure environment variable validation library","directories":{},"_nodeVersion":"22.20.0","dependencies":{"chalk":"^5.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/env-guardian_1.1.1_1773945818959_0.7459221711845492","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to sealenv. Run: npm install sealenv"}},"time":{"created":"2026-03-15T15:03:02.255Z","modified":"2026-06-01T15:32:01.529Z","1.0.0":"2026-03-15T15:03:02.487Z","1.0.1":"2026-03-15T15:10:02.458Z","1.1.0":"2026-03-17T18:41:40.905Z","1.1.1":"2026-03-19T18:43:39.109Z"},"license":"MIT","keywords":["env","dotenv","environment","variable","validation","security","typescript"],"description":"Secure environment variable validation library","maintainers":[{"name":"awish","email":"5lynx567@gmail.com"}],"readme":"# 🛡️ @awish/env-guardian\n\n> A lightweight, highly secure environment variable validation library for Node.js.\n\n[![npm version](https://img.shields.io/npm/v/@awish/env-guardian.svg)](https://www.npmjs.com/package/@awish/env-guardian)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node requirement](https://img.shields.io/node/v/@awish/env-guardian.svg)](https://nodejs.org/)\n[![visitors](https://visitor-badge.laobi.icu/badge?page_id=https://github.com/Anish-530/env-guardian)](https://www.npmjs.com/package/@awish/env-guardian)\n\n**env-guardian** enforces strict schemas on your `.env` files and runtime environment variables. It actively prevents prototype pollution, masks sensitive secrets from crash logs, provides interactive CLI tools, and generates static TypeScript definitions.\n\n---\n\n## ✨ Features (v1.1)\n\n- **🔒 Security First:** Actively scans for prototype pollution attempts (`__proto__`, `constructor`) and limits payload sizes to prevent memory DoS attacks.\n- **🤫 Secret Masking:** Automatically prevents sensitive keys (e.g., `PASSWORD`, `API_KEY`) from leaking in error traces and detects weak cryptographic strings.\n- **🛡️ Type Safety (TypeScript):** Validate at runtime, and easily generate `.d.ts` type definitions for your IDE.\n- **✅ Schema Validation:** Enforce `required` variables, apply `default` fallbacks, and restrict to `allowedValues`.\n- **💻 Interactive CLI:** A fully chalk-colored terminal diagnostic tool to verify environments directly from CI/CD pipelines.\n\n---\n\n## 📦 Installation\n\nTo install the package, run the following command in your project directory:\n\n```bash\nnpm install @awish/env-guardian\n```\n\n---\n\n## 💻 Usage\n\nCreate a validation schema and pass it to `loadAndValidate()`. If the validation fails, it throws an early, descriptive error—preventing your app from running in a broken state.\n\n### 1. Basic Example\n\n```javascript\nimport { loadAndValidate } from '@awish/env-guardian';\n\n// Define how your environment should look\nconst schema = {\n  PORT: { \n    type: 'number', \n    required: true, \n    default: 3000 \n  },\n  NODE_ENV: { \n    type: 'string', \n    allowedValues: ['development', 'staging', 'production'],\n    default: 'development'\n  },\n  SUPER_SECRET_KEY: { \n    type: 'string', \n    required: true \n  },\n  ENABLE_FEATURE_X: { \n    type: 'boolean', \n    default: false \n  }\n};\n\n// Validate! \n// This automatically loads from '.env' by default and applies your schema\nconst env = loadAndValidate(schema);\n\n// Your variables are now safely typed and guaranteed to be present\nconsole.log(typeof env.PORT); // \"number\"\nconsole.log(env.ENABLE_FEATURE_X); // true or false boolean\n```\n\n### 2. Error Handling & Secret Masking\n\nIf a developer configured something incorrectly, `env-guardian` provides clear errors. However, it will **never** leak secrets in the stack trace. The system also proactively identifies architectural risks on load via console warnings:\n\n```javascript\n// A developer accidentally typed `SUPER_SECRET_KEY=12345` instead of a strong password\n\ntry {\n  const env = loadAndValidate(schema);\n} catch (error) {\n  console.error(error.message); \n  // Output: \"Invalid value for SUPER_SECRET_KEY (value masked for security)\"\n}\n\n// Console Warnings:\n// ⚠️  Weak secret detected for SUPER_SECRET_KEY\n```\n\n---\n\n## 🛠️ Configuration Options\n\nThe `loadAndValidate` method accepts an optional second argument for configuration:\n\n```javascript\nconst env = loadAndValidate(schema, {\n  path: './config/.env.production', // Load a custom file path\n  skipDotenv: true,                 // Don't read from disk, just validate process.env\n});\n```\n\n---\n\n## ⌨️ TypeScript Generation\n\n**env-guardian** can dynamically generate an `env.d.ts` file based on your runtime schema so your IDE possesses full IntelliSense auto-complete.\n\n```javascript\nimport { createEnvTypes } from '@awish/env-guardian';\n\nconst schema = { PORT: { type: 'number', required: true } };\n\n// Generates `env.d.ts` in your current working directory\ncreateEnvTypes(schema); \n```\n\n---\n\n## 🖥 CLI Tool\n\nVerify your `.env` configuration instantly via the terminal perfect for CI/CD pipelines (like GitHub Actions). Create a JSON schema file (`env-schema.json`), then run:\n\n```bash\nnpx @awish/env-guardian\n```\n\nOutputs a cleanly formatted summary:\n```text\n🛡️  ENV GUARDIAN v1.1\n=======================\n\n✅ Success: Environment configuration is valid and secure.\n```\n\n---\n\n## 🧪 Testing\n\nTo run the internal test suite:\n\n```bash\nnpm test\n```\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n","readmeFilename":"README.md"}