{"_id":"oxlint-fix-unused-vars","_rev":"4-7072ca0c874e1212110c149cdf16d34d","name":"oxlint-fix-unused-vars","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"oxlint-fix-unused-vars","version":"0.1.0","author":{"name":"Marko Gresak","email":"marko@gresak.io"},"license":"MIT","_id":"oxlint-fix-unused-vars@0.1.0","maintainers":[{"name":"markogresak","email":"gresak.marko@gmail.com"}],"dist":{"shasum":"7e24b3b644dd35d994b5ca8ddf8b8fb0a98ef7c4","tarball":"https://registry.npmjs.org/oxlint-fix-unused-vars/-/oxlint-fix-unused-vars-0.1.0.tgz","fileCount":4,"integrity":"sha512-uxqjJm6XJdnYE56qPnSItoK6lZ78nJSqAk+D3pZ9qqBlU1/rDbXEiPkhEGDsnyNYi6xBL1FRl7X4ooKz35MXfw==","signatures":[{"sig":"MEUCIAeXHmhjKyLUCmbd4U1ZJCOGN/9BudHveuSac730kLLnAiEAo9QsMXNJTjaAhbiwduM+XrAJETZSkNjRpwuSRXQZ07g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4189457},"main":"index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","aarch64-unknown-linux-gnu","x86_64-unknown-linux-gnu"],"binaryName":"oxlint-fix-unused-vars"},"types":"index.d.ts","gitHead":"6be567306a89eca6871a69e1addae6fa69d1acff","_npmUser":{"name":"markogresak","email":"gresak.marko@gmail.com"},"_npmVersion":"11.10.0","description":"Remove unused JavaScript and TypeScript bindings using Oxlint semantics","directories":{},"_nodeVersion":"24.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oxlint-fix-unused-vars_0.1.0_1785164519531_0.6915444331877536","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"oxlint-fix-unused-vars","version":"0.1.2","keywords":["javascript","typescript","lint","unused","oxlint"],"author":{"name":"Marko Gresak","email":"marko@gresak.io"},"license":"MIT","_id":"oxlint-fix-unused-vars@0.1.2","maintainers":[{"name":"markogresak","email":"gresak.marko@gmail.com"}],"homepage":"https://github.com/markogresak/oxlint-fix-unused-vars","bugs":{"url":"https://github.com/markogresak/oxlint-fix-unused-vars/issues"},"dist":{"shasum":"9f06331c67a97dbf414c36cb9b5a1a43fd8492f6","tarball":"https://registry.npmjs.org/oxlint-fix-unused-vars/-/oxlint-fix-unused-vars-0.1.2.tgz","fileCount":5,"integrity":"sha512-OtA2Q7Zw+WVHorw/8a33VpX5qj1zohjdGt56yKcOnYyunBHyCx9c+pBL0zQ2kQJP0VWGHD7oCzIuWB37czr9AQ==","signatures":[{"sig":"MEQCIGAv2RDJLJJSHD/avDp+s4pYhpAKXIFPHU6/h/R5dSPaAiBRBczwMJQgjJENCqQ/pbWXjwlHxdAs72GcbrBhUke0OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oxlint-fix-unused-vars@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31908},"main":"index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","aarch64-unknown-linux-gnu","x86_64-unknown-linux-gnu"],"binaryName":"oxlint-fix-unused-vars"},"types":"index.d.ts","gitHead":"7814ccbc27feebc9e7ca0274c21d4c0bf0b32865","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61b17a5a-7498-47f4-bcf4-b311b4648621"}},"repository":{"url":"git+https://github.com/markogresak/oxlint-fix-unused-vars.git","type":"git"},"_npmVersion":"12.0.1","description":"Remove unused TypeScript and JavaScript bindings with Oxlint's no-unused-vars analysis.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"optionalDependencies":{"oxlint-fix-unused-vars-darwin-x64":"0.1.2","oxlint-fix-unused-vars-darwin-arm64":"0.1.2","oxlint-fix-unused-vars-linux-x64-gnu":"0.1.2","oxlint-fix-unused-vars-linux-arm64-gnu":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/oxlint-fix-unused-vars_0.1.2_1785176766779_0.15109959229305092","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"oxlint-fix-unused-vars","version":"0.1.3","keywords":["javascript","typescript","lint","unused","oxlint"],"author":{"name":"Marko Gresak","email":"marko@gresak.io"},"license":"MIT","_id":"oxlint-fix-unused-vars@0.1.3","maintainers":[{"name":"markogresak","email":"gresak.marko@gmail.com"}],"homepage":"https://github.com/markogresak/oxlint-fix-unused-vars","bugs":{"url":"https://github.com/markogresak/oxlint-fix-unused-vars/issues"},"dist":{"shasum":"0499c64dcb549f088c77cf0a3d4c9d56849fb9a0","tarball":"https://registry.npmjs.org/oxlint-fix-unused-vars/-/oxlint-fix-unused-vars-0.1.3.tgz","fileCount":5,"integrity":"sha512-52XK9tkkSN8QQyaUEjn8LUDwHbW+w7+8PFmj5ScWG6J3oDh5StsFAAgk15MU1a6WdsbrCvDL4XdaIWnBPMmWYA==","signatures":[{"sig":"MEYCIQDqYPmhDruynGUz6e7xPJk38aVQ84Woki35d/h0fxOt+wIhAN5AB0ofSrxcsLOe3pjwMWHwJny0i0/98efD2lXOS6dg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oxlint-fix-unused-vars@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32269},"main":"index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","aarch64-unknown-linux-gnu","x86_64-unknown-linux-gnu"],"binaryName":"oxlint-fix-unused-vars"},"types":"index.d.ts","gitHead":"a39ce66ed435f29acf1306ae0b41f6ab5c0d925f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61b17a5a-7498-47f4-bcf4-b311b4648621"}},"repository":{"url":"git+https://github.com/markogresak/oxlint-fix-unused-vars.git","type":"git"},"_npmVersion":"12.0.1","description":"Remove unused TypeScript and JavaScript bindings with Oxlint's no-unused-vars analysis.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"optionalDependencies":{"oxlint-fix-unused-vars-darwin-x64":"0.1.3","oxlint-fix-unused-vars-darwin-arm64":"0.1.3","oxlint-fix-unused-vars-linux-x64-gnu":"0.1.3","oxlint-fix-unused-vars-linux-arm64-gnu":"0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/oxlint-fix-unused-vars_0.1.3_1785183344928_0.5141710686383749","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"oxlint-fix-unused-vars","version":"0.1.4","description":"Autofix no-unused-vars: automatically remove unused variables from TypeScript and JavaScript. The missing fixer for oxlint's (and ESLint's) no-unused-vars rule, written in Rust.","keywords":["no-unused-vars","unused-vars","unused-variables","remove-unused-variables","oxlint","eslint","fix","autofix","fixer","lint","linter","dead-code","codemod","typescript","javascript","oxc","rust"],"author":{"name":"Marko Gresak","email":"marko@gresak.io"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/markogresak/oxlint-fix-unused-vars.git"},"homepage":"https://github.com/markogresak/oxlint-fix-unused-vars","main":"index.js","types":"index.d.ts","napi":{"binaryName":"oxlint-fix-unused-vars","targets":["aarch64-apple-darwin","x86_64-apple-darwin","aarch64-unknown-linux-gnu","x86_64-unknown-linux-gnu"]},"optionalDependencies":{"oxlint-fix-unused-vars-darwin-arm64":"0.1.4","oxlint-fix-unused-vars-darwin-x64":"0.1.4","oxlint-fix-unused-vars-linux-arm64-gnu":"0.1.4","oxlint-fix-unused-vars-linux-x64-gnu":"0.1.4"},"gitHead":"c977815b5eba64f2d6e6ba501c986ed08a3a8a53","_id":"oxlint-fix-unused-vars@0.1.4","bugs":{"url":"https://github.com/markogresak/oxlint-fix-unused-vars/issues"},"_nodeVersion":"24.18.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-joVnR+NzqM/ASJb3Kpta8fymOl9xca1Pex+46dNi9IK5YmS4rlJJhzCVKrCap3mj4bnQMykOKuH9fDZkAjG7XQ==","shasum":"81ecb83016727a009d135e43e0e5bfa048477281","tarball":"https://registry.npmjs.org/oxlint-fix-unused-vars/-/oxlint-fix-unused-vars-0.1.4.tgz","fileCount":5,"unpackedSize":34178,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oxlint-fix-unused-vars@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCX9aHCbh0UqxXkRMFfzQ234diINP49lAKRzDGxCDZiegIhAPvANkVNXiJ20gcfI3NGGJnn58UmY2fc8U3yINKyWhyJ"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61b17a5a-7498-47f4-bcf4-b311b4648621"}},"directories":{},"maintainers":[{"name":"markogresak","email":"gresak.marko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oxlint-fix-unused-vars_0.1.4_1785620763179_0.13402520298252285"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-27T15:01:59.321Z","modified":"2026-08-01T21:46:03.710Z","0.1.0":"2026-07-27T15:01:59.708Z","0.1.2":"2026-07-27T18:26:06.905Z","0.1.3":"2026-07-27T20:15:45.078Z","0.1.4":"2026-08-01T21:46:03.329Z"},"bugs":{"url":"https://github.com/markogresak/oxlint-fix-unused-vars/issues"},"author":{"name":"Marko Gresak","email":"marko@gresak.io"},"license":"MIT","homepage":"https://github.com/markogresak/oxlint-fix-unused-vars","keywords":["no-unused-vars","unused-vars","unused-variables","remove-unused-variables","oxlint","eslint","fix","autofix","fixer","lint","linter","dead-code","codemod","typescript","javascript","oxc","rust"],"repository":{"type":"git","url":"git+https://github.com/markogresak/oxlint-fix-unused-vars.git"},"description":"Autofix no-unused-vars: automatically remove unused variables from TypeScript and JavaScript. The missing fixer for oxlint's (and ESLint's) no-unused-vars rule, written in Rust.","maintainers":[{"name":"markogresak","email":"gresak.marko@gmail.com"}],"readme":"# oxlint-fix-unused-vars\n\n[![NPM Version](https://img.shields.io/npm/v/oxlint-fix-unused-vars)](https://www.npmjs.com/package/oxlint-fix-unused-vars)\n\n> Automatically remove unused variables reported by `no-unused-vars` — the fixer oxlint doesn't ship.\n\nFixes unused TypeScript and JavaScript variables flagged by oxlint's `no-unused-vars` analysis, using the same rule options as ESLint's `no-unused-vars`. Conservative by design: imports are reported by the detector but intentionally never removed, and partial destructuring edits are skipped so getters, defaults, rest elements, and iterators are not disturbed.\n\n## Features\n\n- Oxlint-compatible `no-unused-vars` detection\n- Same options as ESLint's `no-unused-vars` (via oxlint's implementation): `vars`, `args`, ignore patterns, etc.\n- Conservative edits — see [What it changes](#what-it-changes) below\n- High performance, written in Rust using Oxc\n\n## What it changes\n\n```ts\n// before\nconst used = 1, unused = 2\nfunction f(value, extra) { return value }\ntry {} catch (error) { console.log(used) }\n\n// after\nconst used = 1\nfunction f(value) { return value }\ntry {} catch { console.log(used) }\n```\n\n**Removed:** variables (`var`/`let`/`const`, including a single unused declarator out of several), trailing function parameters, catch bindings (dropped to an optional catch binding), functions, classes, TS types, interfaces, and enums.\n\n**Never removed** (reported, left alone):\n\n- Imports. The detector flags them but never edits them, oxlint rule already handles that.\n- Bindings that are assigned to somewhere, even if never read\n- Anything whose initializer, decorator, default, or computed key could run code\n- Partial destructuring edits, which would disturb getters, defaults, rest elements, or iterators\n- Declarations carrying comments in the span that would be removed\n- Loop headers (`for (const x of xs)`)\n\n## Install\n\n```sh\nnpm install oxlint-fix-unused-vars\n```\n\n```sh\npnpm add oxlint-fix-unused-vars\n```\n\n```sh\nyarn add oxlint-fix-unused-vars\n```\n\n## API\n\n```js\nimport { removeUnusedVars } from 'oxlint-fix-unused-vars'\n\nconst result = removeUnusedVars({\n  root: '/absolute/path/to/project',\n  path: ['src/**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}'],\n  ignorePatterns: ['**/*.generated.ts'],\n  noUnusedVarsConfig: {\n    vars: 'all',\n    args: 'after-used',\n    caughtErrors: 'all',\n  },\n  write: false,\n  // or: write: { enabled: true, passes: 3 },\n  includeRemovals: true,\n  threads: 4,\n})\n```\n\n`write: false` (default) changes nothing on disk; each changed file's full rewritten source comes back in `updated`. `write: { enabled: true, passes: n }` writes files in place, re-running while files keep changing since removing one variable can make another unused.\n\n### Options\n\n| Option | Type | Default | Description |\n| --- | --- | --- | --- |\n| `root` | `string` | (required) | **Must be an absolute path.** Project root that relative `path` entries resolve against. |\n| `path` | `string[]` | (required) | Absolute paths, or files, directories, and globs relative to `root`. |\n| `ignorePatterns` | `string[]` | `[]` | Oxlint-style gitignore syntax. `.gitignore` is not loaded. |\n| `noUnusedVarsConfig` | `'all' \\| 'local' \\| NoUnusedVarsOptions` | Oxlint defaults | Rule options: `vars`, `args`, `caughtErrors`, ignore patterns, etc. |\n| `write` | `boolean \\| { enabled: true, passes?: number }` | `false` | `false` = dry run; results carry `updated` only for changed files. |\n| `includeRemovals` | `boolean` | `false` | Include a `removals` array per file result. |\n| `threads` | `number` | available parallelism | Worker count. Minimum `1`; clamped to 4× available parallelism, max 256. |\n\n- **`passes`**: when set, the tool re-runs while any files are written, up to that many times. `results` stays a flat array with a 1-based `pass` on each entry.\n- **Errors**: parse and file errors are returned in `errors`; invalid top-level options throw.\n\n## Local development\n\nBuild and test in this repo, then link the package into another project.\n\n```sh\npnpm install\npnpm build:debug\npnpm test\ncd npm/oxlint-fix-unused-vars && pnpm link --global\n# in the consumer project:\npnpm link --global oxlint-fix-unused-vars\n```\n\nRebuild after Rust changes before retesting the linked consumer.\n","readmeFilename":"README.md"}