{"_id":"@boring-stack-pkg/eslint-plugin-env-access","_rev":"2-124903ea29746cf9aebf739abdea0788","name":"@boring-stack-pkg/eslint-plugin-env-access","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@boring-stack-pkg/eslint-plugin-env-access","version":"0.1.1","keywords":["eslint","eslintplugin","typescript","env","process.env","configuration"],"author":"","license":"MIT","_id":"@boring-stack-pkg/eslint-plugin-env-access@0.1.1","maintainers":[{"name":"agjs","email":"hi@aleksandar.xyz"}],"homepage":"https://github.com/AI-Starter-Templates/eslint-plugins#readme","bugs":{"url":"https://github.com/AI-Starter-Templates/eslint-plugins/issues"},"dist":{"shasum":"c3be4702a8825b3652cd2ea160189667741bc861","tarball":"https://registry.npmjs.org/@boring-stack-pkg/eslint-plugin-env-access/-/eslint-plugin-env-access-0.1.1.tgz","fileCount":12,"integrity":"sha512-+6hdQkIZDGa9o6v8hPsVven64XESlBGM5C8/raOxv3hfxEkeNX5BPzx18uE691Mhxb6yJ6845qNcA3nb7NOTiA==","signatures":[{"sig":"MEQCIA86G9GHPUSUvMG0fNdWa3mbIvpzEnjCJ7iWfQEy5wiVAiAL9KCC2vNLLKZNKmqvyp3IcPH1knYJ7inZmeT+oLc6yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@boring-stack-pkg%2feslint-plugin-env-access@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31468},"main":"./dist/index.cjs","type":"module","_from":"file:boring-stack-pkg-eslint-plugin-env-access-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm,cjs --dts --clean","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"agjs","email":"hi@aleksandar.xyz"},"_resolved":"/tmp/695933b7c9a2e8f4584602f7d2e29be8/boring-stack-pkg-eslint-plugin-env-access-0.1.1.tgz","_integrity":"sha512-+6hdQkIZDGa9o6v8hPsVven64XESlBGM5C8/raOxv3hfxEkeNX5BPzx18uE691Mhxb6yJ6845qNcA3nb7NOTiA==","repository":{"url":"git+https://github.com/AI-Starter-Templates/eslint-plugins.git","type":"git","directory":"eslint-plugin-env-access"},"_npmVersion":"10.9.7","description":"ESLint rules that force all env-var reads through a single validated singleton — no raw process.env, every key must exist in the schema.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"micromatch":"4.0.5","@typescript-eslint/utils":"8.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.0.0","eslint":"9.0.0","vitest":"2.0.0","@eslint/js":"9.0.0","typescript":"6.0.3","@types/node":"22.0.0","@types/micromatch":"4.0.9","@typescript-eslint/parser":"8.0.0","@typescript-eslint/rule-tester":"8.0.0"},"peerDependencies":{"eslint":"8.57.0 || ^9.0.0","typescript":">=5.0.0","@typescript-eslint/parser":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-env-access_0.1.1_1779219580622_0.4013582903720647","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@boring-stack-pkg/eslint-plugin-env-access","version":"0.1.3","description":"ESLint rules that force all env-var reads through a single validated singleton — no raw process.env, every key must exist in the schema.","type":"module","license":"MIT","author":"","repository":{"type":"git","url":"git+https://github.com/boringstack-xyz/eslint-plugins.git","directory":"eslint-plugin-env-access"},"publishConfig":{"access":"public"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"keywords":["eslint","eslintplugin","typescript","env","process.env","configuration"],"peerDependencies":{"@typescript-eslint/parser":">=8.0.0","eslint":"8.57.0 || ^9.0.0","typescript":">=5.0.0"},"dependencies":{"@typescript-eslint/utils":"8.0.0","micromatch":"4.0.5"},"devDependencies":{"@eslint/js":"9.0.0","@types/micromatch":"4.0.9","@types/node":"22.0.0","@typescript-eslint/parser":"8.0.0","@typescript-eslint/rule-tester":"8.0.0","eslint":"9.0.0","tsup":"8.0.0","typescript":"6.0.3","vitest":"2.0.0"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"_id":"@boring-stack-pkg/eslint-plugin-env-access@0.1.3","bugs":{"url":"https://github.com/boringstack-xyz/eslint-plugins/issues"},"homepage":"https://github.com/boringstack-xyz/eslint-plugins#readme","_integrity":"sha512-/951c0LKgfKIJ/sysxn57JTrCGyj1pkWkcm0P7kSiAfq7LAwTgXPb99aSfitsRFeqH0Tk9JAcveucwMpw0Kt3A==","_resolved":"/tmp/fd338b1cfe71d7334fdf428a7a58cec8/boring-stack-pkg-eslint-plugin-env-access-0.1.3.tgz","_from":"file:boring-stack-pkg-eslint-plugin-env-access-0.1.3.tgz","_nodeVersion":"22.22.3","_npmVersion":"11.15.0","dist":{"integrity":"sha512-/951c0LKgfKIJ/sysxn57JTrCGyj1pkWkcm0P7kSiAfq7LAwTgXPb99aSfitsRFeqH0Tk9JAcveucwMpw0Kt3A==","shasum":"8e3bdae82e0915fa89ab8d59c25418bc1f94dbfe","tarball":"https://registry.npmjs.org/@boring-stack-pkg/eslint-plugin-env-access/-/eslint-plugin-env-access-0.1.3.tgz","fileCount":12,"unpackedSize":36743,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDZmX2mbcwFomIZBjZAIJTiYnzVUWyXz+kkT9sY9ry+pAiA0bw7GtGcd7AdMx7ktMdmrWvKdRfgRTUiGE52jutbUNg=="}]},"_npmUser":{"name":"agjs","email":"hi@aleksandar.xyz"},"directories":{},"maintainers":[{"name":"agjs","email":"hi@aleksandar.xyz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-env-access_0.1.3_1779695117962_0.869922891178839"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-19T19:39:40.485Z","modified":"2026-05-25T07:45:18.215Z","0.1.1":"2026-05-19T19:39:40.804Z","0.1.3":"2026-05-25T07:45:18.089Z"},"bugs":{"url":"https://github.com/boringstack-xyz/eslint-plugins/issues"},"license":"MIT","homepage":"https://github.com/boringstack-xyz/eslint-plugins#readme","keywords":["eslint","eslintplugin","typescript","env","process.env","configuration"],"repository":{"type":"git","url":"git+https://github.com/boringstack-xyz/eslint-plugins.git","directory":"eslint-plugin-env-access"},"description":"ESLint rules that force all env-var reads through a single validated singleton — no raw process.env, every key must exist in the schema.","maintainers":[{"name":"agjs","email":"hi@aleksandar.xyz"}],"readme":"# eslint-plugin-env-access\n\n[![npm](https://img.shields.io/npm/v/@boring-stack-pkg/eslint-plugin-env-access?logo=npm)](https://www.npmjs.com/package/@boring-stack-pkg/eslint-plugin-env-access) [![source](https://img.shields.io/badge/source-github-blue?logo=github)](https://github.com/boringstack-xyz/eslint-plugins/tree/main/eslint-plugin-env-access)\n\nESLint rules that force every environment-variable read through a single\nvalidated singleton:\n\n- **`no-direct-process-env`** — no raw `process.env.X` access outside the\n  singleton's own files. Forces every consumer through the typed,\n  boot-validated entrypoint.\n- **`env-var-must-have-schema-entry`** — every `env.X` access must\n  correspond to a key declared in the schema file. Catches typos that\n  inference alone can miss when types cross package boundaries.\n\n## Install\n\n```sh\npnpm add -D @boring-stack-pkg/eslint-plugin-env-access\n```\n\nPeer deps: `eslint >= 8.57`, `@typescript-eslint/parser >= 8`,\n`typescript >= 5`.\n\n## Use (flat config)\n\n```js\nimport tsParser from \"@typescript-eslint/parser\";\nimport envAccess from \"@boring-stack-pkg/eslint-plugin-env-access\";\n\nexport default [\n  {\n    files: [\"**/*.{ts,tsx}\"],\n    languageOptions: { parser: tsParser },\n    plugins: { \"env-access\": envAccess },\n    rules: {\n      \"env-access/no-direct-process-env\": \"error\",\n      \"env-access/env-var-must-have-schema-entry\": \"error\",\n    },\n  },\n];\n```\n\nOr use the bundled config:\n\n```js\nimport envAccess from \"@boring-stack-pkg/eslint-plugin-env-access\";\n\nexport default [envAccess.configs.recommended];\n```\n\n## Rules\n\n| Rule                                                                             | Description                                        | Fixable |\n| -------------------------------------------------------------------------------- | -------------------------------------------------- | ------- |\n| [`no-direct-process-env`](docs/rules/no-direct-process-env.md)                   | Disallow raw `process.env.X` outside allowed files | –       |\n| [`env-var-must-have-schema-entry`](docs/rules/env-var-must-have-schema-entry.md) | Every `env.X` must exist in the schema file        | –       |\n\n## License\n\nMIT.\n","readmeFilename":"README.md"}