{"_id":"@armadacore/eslint-plugin-essentials","name":"@armadacore/eslint-plugin-essentials","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@armadacore/eslint-plugin-essentials","version":"0.1.0","description":"ESLint plugin enforcing @armadacore/essentials patterns: handle Result errors, default optional parameters","type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"engines":{"node":">=20"},"workspaces":["example"],"scripts":{"build":"tsdown","dev":"tsdown --watch","typecheck":"tsc --noEmit","lint":"eslint .","test":"vitest run","test:watch":"vitest","example:lint":"npm run lint --workspace=example","prepublishOnly":"npm run build"},"keywords":["eslint","eslint-plugin","armadacore","essentials","result","option","callback","typescript"],"author":{"name":"armadacore"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/armadacore/eslint-plugin-essentials.git"},"bugs":{"url":"https://github.com/armadacore/eslint-plugin-essentials/issues"},"homepage":"https://github.com/armadacore/eslint-plugin-essentials#readme","publishConfig":{"access":"public"},"peerDependencies":{"eslint":">=9","typescript":">=5"},"dependencies":{"@typescript-eslint/utils":"^8.15.0"},"devDependencies":{"@types/node":"^22.9.0","@typescript-eslint/parser":"^8.15.0","@typescript-eslint/rule-tester":"^8.15.0","eslint":"^9.15.0","prettier":"^3.3.3","tsdown":"^0.21.10","typescript":"^5.7.2","typescript-eslint":"^8.15.0","vitest":"^2.1.5"},"gitHead":"2705b4c6389f859e0afd12501cdf191bc1d4388d","_id":"@armadacore/eslint-plugin-essentials@0.1.0","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-j6IMdwJ/CLYWAxu85VVWeWxCWzw1Xc0ttGQhkJiKwM/pwgRR8Y3am1R0M/J95dw2QqmZsbtQZJZQOl+YmqK1eg==","shasum":"bca9d354f8108767b0ba273e1b7c638f819206f9","tarball":"https://registry.npmjs.org/@armadacore/eslint-plugin-essentials/-/eslint-plugin-essentials-0.1.0.tgz","fileCount":11,"unpackedSize":109060,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGiMn1TNTXbZP+t1sD7z9gr4hFnv8WzJmmLB9AfnV6DSAiBzhPU8WmosAlGICQC3gqITm/y0g5CGy+ZKd4vS/xlGHg=="}]},"_npmUser":{"name":"armadacore","email":"marcel.armada@armadacore.com"},"directories":{},"maintainers":[{"name":"armadacore","email":"marcel.armada@armadacore.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-essentials_0.1.0_1777962474254_0.743246218162517"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-05T06:27:54.174Z","0.1.0":"2026-05-05T06:27:54.425Z","modified":"2026-05-05T06:27:54.613Z"},"maintainers":[{"name":"armadacore","email":"marcel.armada@armadacore.com"}],"description":"ESLint plugin enforcing @armadacore/essentials patterns: handle Result errors, default optional parameters","homepage":"https://github.com/armadacore/eslint-plugin-essentials#readme","keywords":["eslint","eslint-plugin","armadacore","essentials","result","option","callback","typescript"],"repository":{"type":"git","url":"git+https://github.com/armadacore/eslint-plugin-essentials.git"},"author":{"name":"armadacore"},"bugs":{"url":"https://github.com/armadacore/eslint-plugin-essentials/issues"},"license":"MIT","readme":"# @armadacore/eslint-plugin-essentials\n\n[![npm version](https://img.shields.io/npm/v/@armadacore/eslint-plugin-essentials.svg)](https://www.npmjs.com/package/@armadacore/eslint-plugin-essentials)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/armadacore/eslint-plugin-essentials/blob/master/LICENSE)\n[![node](https://img.shields.io/node/v/@armadacore/eslint-plugin-essentials.svg)](https://nodejs.org)\n\nESLint plugin that enforces patterns from [`@armadacore/essentials`](https://www.npmjs.com/package/@armadacore/essentials):\n\n- **`result-must-handle-err`** — `IResult<T>` values must have their error path handled.\n- **`optional-must-have-default`** — Optional function/method parameters and return types must not leak `undefined`/`null`.\n\n## Install\n\n```bash\nnpm install -D @armadacore/eslint-plugin-essentials\n```\n\nPeer dependencies: `eslint >=9`, `typescript >=5`.\n\n## Usage (flat config)\n\n```js\n// eslint.config.js\nimport essentials from '@armadacore/eslint-plugin-essentials';\nimport tseslint from 'typescript-eslint';\n\nexport default [\n\t...tseslint.configs.recommendedTypeChecked,\n\t...essentials.configs.recommended,\n\t{\n\t\tlanguageOptions: {\n\t\t\tparserOptions: {\n\t\t\t\tproject: './tsconfig.json',\n\t\t\t},\n\t\t},\n\t},\n];\n```\n\nBoth rules require `parserServices` (i.e. a TypeScript program). Without `parserOptions.project`, the rules will silently no-op.\n\n## Rules\n\n### `result-must-handle-err`\n\nReports any `IResult<T>` value whose `Err` branch is never handled.\n\nAccepted as handling: `onErr`, `match`, `unwrapOr`, `unwrapOrElse`, `err`, `expectErr`, `orElse`, `ignoreErr`.\n\nDelegation also counts: `return result`, passing as argument, assignment to a container.\n\nSee [docs/rules/result-must-handle-err.md](docs/rules/result-must-handle-err.md).\n\n### `optional-must-have-default`\n\nReports function/method signatures that introduce `undefined`/`null` into the function body or its return value.\n\nSee [docs/rules/optional-must-have-default.md](docs/rules/optional-must-have-default.md).\n\n## Example\n\nThe `example/` directory contains a real workspace using `@armadacore/essentials` with both valid and invalid code samples. Run:\n\n```bash\nnpm install\nnpm run build\nnpm run example:lint\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-7aa652b654c76a5969f30b73131af1ef"}