{"_id":"@2bad/tsfix","_rev":"7-9bf172f381497c16e292d1fefb0c4eea","name":"@2bad/tsfix","dist-tags":{"latest":"1.1.2"},"versions":{"0.1.0":{"name":"@2bad/tsfix","version":"0.1.0","keywords":["typescript","imports","fix"],"author":{"url":"https://github.com/2BAD","name":"2BAD"},"license":"MIT","_id":"@2bad/tsfix@0.1.0","maintainers":[{"name":"grasword","email":"grasword6@gmail.com"},{"name":"mrhyde","email":"npm@2bad.me"},{"name":"armordarks","email":"npm@lavrins.com"}],"contributors":[{"url":"https://github.com/mrhyde","name":"Jason Hyde","email":"github@2bad.me"}],"homepage":"https://github.com/2BAD/tsfix#readme","bugs":{"url":"https://github.com/2BAD/tsfix/issues"},"bin":{"tsfix":"bin/cli.mjs"},"dist":{"shasum":"70c8f29883c691b823de984ad7195b07cddbd584","tarball":"https://registry.npmjs.org/@2bad/tsfix/-/tsfix-0.1.0.tgz","fileCount":16,"integrity":"sha512-r0hc+sjCUkJ+9YdYLDf+lin2syPlvdXtXFFXN5XmLx4S9GPnemixV0vZCVnveKAI9FeoB14yJr99tmeLgQIPyg==","signatures":[{"sig":"MEUCIAS6yoxdzEvKsi76VSrN9EGDecFJ/d67TtaLflUEOMBBAiEAqmlzWZ+QRIr5UEl7i4yolK8NLOrtK61Gd7ZYLs6wffY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2bad%2ftsfix@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17644},"type":"module","volta":{"npm":"10.8.1","node":"22.3.0"},"engines":{"node":">=20"},"exports":"./build/index.js","gitHead":"fe1f6bc8cff8de6e0b2ede2187a8fd99f188d95e","scripts":{"fix":"run-s fix:code fix:format","test":"vitest run","build":"run-p build:*","check":"run-p check:*","fix:ext":"exit 0","fix:code":"run-s 'check:code -- --fix'","prebuild":"rimraf build","build:swc":"swc ./source -d ./build --strip-leading-paths","fix:alias":"tsc-alias -p tsconfig.build.json","postbuild":"run-s fix:alias fix:ext","test:unit":"vitest run unit --coverage","check:code":"eslint . --ext .ts --report-unused-disable-directives --max-warnings 0","fix:format":"prettier --write 'source/**/*.ts'","preversion":"run-s check test build","build:types":"tsc --project tsconfig.build.json","check:format":"prettier --check 'source/**/*.ts'","prepublishOnly":"run-s build","test:integration":"vitest run integration --coverage"},"typings":"./build/index.d.ts","_npmUser":{"name":"mrhyde","email":"npm@2bad.me"},"prettier":{"semi":false,"printWidth":120,"singleQuote":true,"trailingComma":"none"},"repository":{"url":"git+https://github.com/2BAD/tsfix.git","type":"git"},"_npmVersion":"10.8.1","description":"[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![GitHub Build Status](https://img.shields.io/github/a","directories":{},"_nodeVersion":"22.3.0","dependencies":{"meow":"13.2.0","debug":"4.3.5","pathe":"1.1.2","fast-glob":"3.3.2","typescript":"5.5.1-rc"},"_hasShrinkwrap":false,"packageManager":"npm@10.8.1","devDependencies":{"rimraf":"5.0.7","vitest":"1.6.0","@swc/cli":"0.3.12","prettier":"3.3.1","@swc/core":"1.5.25","tsc-alias":"1.8.10","type-fest":"4.20.0","@types/node":"20.14.2","@types/debug":"4.1.12","npm-run-all2":"6.2.0","@2bad/tsconfig":"3.0.1","eslint-config-love":"46.0.0","@vitest/coverage-v8":"1.6.0","eslint-plugin-jsdoc":"48.2.9","vite-tsconfig-paths":"4.3.2","eslint-plugin-vitest":"0.5.4","eslint-config-prettier":"9.1.0","eslint-plugin-prettier":"5.1.3","eslint-import-resolver-typescript":"3.6.1"},"_npmOperationalInternal":{"tmp":"tmp/tsfix_0.1.0_1718825530337_0.30744142844767874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: use tsdown instead. See https://github.com/2BAD/tsfix#migrate-to-tsdown"},"1.0.0":{"name":"@2bad/tsfix","version":"1.0.0","keywords":["esm","fix","imports","typescript"],"author":{"url":"https://github.com/2BAD","name":"2BAD"},"license":"MIT","_id":"@2bad/tsfix@1.0.0","maintainers":[{"name":"mrhyde","email":"npm@2bad.me"},{"name":"armordarks","email":"npm@lavrins.com"}],"contributors":[{"url":"https://github.com/mrhyde","name":"Jason Hyde","email":"github@2bad.me"}],"homepage":"https://github.com/2BAD/tsfix#readme","bugs":{"url":"https://github.com/2BAD/tsfix/issues"},"bin":{"tsfix":"bin/cli.mjs"},"dist":{"shasum":"bdfa6c614194b4af98b34d7b30f2ef63575dbeda","tarball":"https://registry.npmjs.org/@2bad/tsfix/-/tsfix-1.0.0.tgz","fileCount":18,"integrity":"sha512-/XEQiwURnF2/9mcxWKqRZNiUkVpyxxU/pccFHLhgKBZS3JGXl6g7A5svipeYz2ibY3wH/NtGPnK4+lCXb9eGxA==","signatures":[{"sig":"MEYCIQCrP3VF1aq/V+JyRO//f6QEAdI3IXiY/1Lt3Bh48id5PAIhAK64SZSUBrXhj7NYP9nUpNTcuptXg6zbyqZO8DeZ9mU1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2bad%2ftsfix@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27753},"type":"module","volta":{"npm":"10.9.2","node":"22.14.0"},"engines":{"node":">=20"},"exports":"./build/index.js","gitHead":"efd4b01cfdb63ed4dec19442c247deec7647017f","scripts":{"fix":"run-s fix:code fix:format","test":"vitest run","build":"run-p build:*","check":"run-p check:*","fix:ext":"tsfix","fix:code":"run-s 'check:eslint -- --fix'","prebuild":"rimraf build","build:swc":"swc ./source -d ./build --strip-leading-paths","fix:alias":"tsc-alias -p tsconfig.build.json","postbuild":"run-s fix:alias fix:ext","test:unit":"vitest run unit --coverage","fix:format":"biome format --write ./source","preversion":"run-s check test build","build:types":"tsc --project tsconfig.build.json","check:biome":"biome check ./source","check:eslint":"eslint . --report-unused-disable-directives --max-warnings 0","prepublishOnly":"run-s build","test:integration":"vitest run integration --coverage"},"typings":"./build/index.d.ts","_npmUser":{"name":"mrhyde","email":"npm@2bad.me"},"repository":{"url":"git+https://github.com/2BAD/tsfix.git","type":"git"},"_npmVersion":"10.9.2","description":"[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![GitHub Build Status](https://img.shields.io/github/a","directories":{},"_nodeVersion":"22.14.0","dependencies":{"meow":"13.2.0","debug":"4.4.0","pathe":"2.0.3","fast-glob":"3.3.3","typescript":"5.7.3"},"_hasShrinkwrap":false,"packageManager":"npm@11.1.0","devDependencies":{"execa":"9.5.2","rimraf":"6.0.1","vitest":"3.0.7","@swc/cli":"0.6.0","@swc/core":"1.11.6","tsc-alias":"1.8.11","type-fest":"4.37.0","@2bad/axiom":"1.0.0-beta.14","@2bad/tsfix":"0.1.0","@types/node":"22.13.9","@types/debug":"4.1.12","npm-run-all2":"7.0.2","@2bad/tsconfig":"3.0.1","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"3.0.7","vite-tsconfig-paths":"5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/tsfix_1.0.0_1741138139542_0.5810932921804777","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Deprecated: use tsdown instead. See https://github.com/2BAD/tsfix#migrate-to-tsdown"},"1.1.0":{"name":"@2bad/tsfix","version":"1.1.0","keywords":["alias","ast","esm","fix","imports","parse","patch","paths","regex","transform","tsc","typescript"],"author":{"url":"https://github.com/2BAD","name":"2BAD"},"license":"MIT","_id":"@2bad/tsfix@1.1.0","maintainers":[{"name":"mrhyde","email":"npm@2bad.me"},{"name":"armordarks","email":"npm@lavrins.com"}],"contributors":[{"url":"https://github.com/mrhyde","name":"Jason Hyde","email":"github@2bad.me"}],"homepage":"https://github.com/2BAD/tsfix#readme","bugs":{"url":"https://github.com/2BAD/tsfix/issues"},"bin":{"tsfix":"bin/cli.mjs"},"dist":{"shasum":"fdc517c8ac01f34d06ec696a6146b5d4cf2f62ea","tarball":"https://registry.npmjs.org/@2bad/tsfix/-/tsfix-1.1.0.tgz","fileCount":20,"integrity":"sha512-yE6banTyfvtzo+i4VnFuowHJQlOHtT6MrAfUqS0LCFQ5XqbTVS4DcsmkplLVZyAuUEplIh78n2Zpb+E9oy7nXQ==","signatures":[{"sig":"MEYCIQCo76M17ovwy+sEncRTURG2fagJe6DJLrQ9KTtKUbnjTAIhAJMTJZQ5qofp5+FjL0OlR3FVUGcigTjVbM2gLeLTylNZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2bad%2ftsfix@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35811},"type":"module","volta":{"npm":"10.9.2","node":"22.14.0"},"engines":{"node":">=20"},"exports":"./build/index.js","gitHead":"0feda86aa7baf0bbe65b0f2016aa02eda786f87f","scripts":{"fix":"run-s fix:code fix:format","test":"vitest run","build":"run-p build:*","check":"run-p check:*","fix:ext":"tsfix","fix:code":"run-s 'check:eslint -- --fix'","prebuild":"rimraf build","build:swc":"swc ./source -d ./build --strip-leading-paths","fix:alias":"tsc-alias -p tsconfig.build.json","postbuild":"run-s fix:alias fix:ext","test:unit":"vitest run unit --coverage","fix:format":"biome format --write ./source","preversion":"run-s check test build","build:types":"tsc --project tsconfig.build.json","check:biome":"biome check ./source","check:eslint":"eslint . --report-unused-disable-directives --max-warnings 0","prepublishOnly":"run-s build","test:integration":"vitest run integration --coverage"},"typings":"./build/index.d.ts","_npmUser":{"name":"mrhyde","email":"npm@2bad.me"},"repository":{"url":"git+https://github.com/2BAD/tsfix.git","type":"git"},"_npmVersion":"10.9.2","description":"[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![GitHub Build Status](https://img.shields.io/github/a","directories":{},"_nodeVersion":"22.14.0","dependencies":{"debug":"4.4.0","pathe":"2.0.3","fast-glob":"3.3.3","typescript":"5.8.3"},"_hasShrinkwrap":false,"packageManager":"npm@11.2.0","devDependencies":{"execa":"9.5.2","rimraf":"6.0.1","vitest":"3.1.1","@swc/cli":"0.6.0","@swc/core":"1.11.16","tsc-alias":"1.8.13","type-fest":"4.39.1","@2bad/axiom":"1.0.0-beta.14","@2bad/tsfix":"1.0.0","@types/node":"22.14.0","@types/debug":"4.1.12","npm-run-all2":"7.0.2","@2bad/tsconfig":"3.0.1","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"3.1.1","vite-tsconfig-paths":"5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/tsfix_1.1.0_1743899439632_0.7375285660645492","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Deprecated: use tsdown instead. See https://github.com/2BAD/tsfix#migrate-to-tsdown"},"1.1.1":{"name":"@2bad/tsfix","version":"1.1.1","keywords":["alias","ast","esm","fix","imports","parse","patch","paths","regex","transform","tsc","typescript"],"author":{"url":"https://github.com/2BAD","name":"2BAD"},"license":"MIT","_id":"@2bad/tsfix@1.1.1","maintainers":[{"name":"mrhyde","email":"npm@2bad.me"},{"name":"armordarks","email":"npm@lavrins.com"}],"contributors":[{"url":"https://github.com/mrhyde","name":"Jason Hyde","email":"github@2bad.me"}],"homepage":"https://github.com/2BAD/tsfix#readme","bugs":{"url":"https://github.com/2BAD/tsfix/issues"},"bin":{"tsfix":"bin/cli.mjs"},"dist":{"shasum":"bc0aaa6a917917fa22a73e4f90d9dcc4305cea41","tarball":"https://registry.npmjs.org/@2bad/tsfix/-/tsfix-1.1.1.tgz","fileCount":20,"integrity":"sha512-UxMBmJs8qD30afsSMj+exEa9y0dqt1fl8oJ8L1ohFSJa7GUQXojyNVJCeJOWxtHuvBlmQm4RDQe9KnXKbMyYjg==","signatures":[{"sig":"MEUCIDkC0+H70cnLY59WDU5tIXtvARPcCCyWu59MoVdSQt3tAiEA9fKzvUeigIqVD9l/RtBE4UGSC4eEIZJq1avXsICtvQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2bad%2ftsfix@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35877},"type":"module","volta":{"npm":"10.9.2","node":"22.14.0"},"engines":{"node":">=20"},"exports":"./build/index.js","gitHead":"70cfc3ffc16bbd5f632c0da5805a0a875e038f61","scripts":{"fix":"run-s fix:code fix:format","test":"vitest run","build":"run-p build:*","check":"run-p check:*","fix:ts":"tsfix","fix:code":"run-s 'check:eslint -- --fix'","prebuild":"rimraf build","build:swc":"swc ./source -d ./build --strip-leading-paths","postbuild":"run-s fix:ts","test:unit":"vitest run unit --coverage","fix:format":"biome format --write ./source","preversion":"run-s check test build","build:types":"tsc --project tsconfig.build.json","check:biome":"biome check ./source","check:eslint":"eslint . --report-unused-disable-directives --max-warnings 0","prepublishOnly":"run-s build","test:integration":"vitest run integration --coverage"},"typings":"./build/index.d.ts","_npmUser":{"name":"mrhyde","email":"npm@2bad.me"},"repository":{"url":"git+https://github.com/2BAD/tsfix.git","type":"git"},"_npmVersion":"10.9.2","description":"[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![GitHub Build Status](https://img.shields.io/github/a","directories":{},"_nodeVersion":"22.14.0","dependencies":{"debug":"4.4.0","pathe":"2.0.3","fast-glob":"3.3.3","typescript":"5.8.3"},"_hasShrinkwrap":false,"packageManager":"npm@11.3.0","devDependencies":{"execa":"9.5.2","rimraf":"6.0.1","vitest":"3.1.1","@swc/cli":"0.6.0","@swc/core":"1.11.18","type-fest":"4.39.1","@2bad/axiom":"1.0.0-beta.15","@2bad/tsfix":"1.1.0","@types/node":"22.14.0","@types/debug":"4.1.12","npm-run-all2":"7.0.2","@2bad/tsconfig":"3.0.1","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"3.1.1","vite-tsconfig-paths":"5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/tsfix_1.1.1_1744307883159_0.07287602245292524","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Deprecated: use tsdown instead. See https://github.com/2BAD/tsfix#migrate-to-tsdown"},"1.1.2":{"name":"@2bad/tsfix","version":"1.1.2","keywords":["alias","ast","esm","fix","imports","parse","patch","paths","regex","transform","tsc","typescript"],"author":{"url":"https://github.com/2BAD","name":"2BAD"},"license":"MIT","_id":"@2bad/tsfix@1.1.2","maintainers":[{"name":"mrhyde","email":"npm@2bad.me"},{"name":"armordarks","email":"npm@lavrins.com"}],"contributors":[{"url":"https://github.com/mrhyde","name":"Jason Hyde","email":"github@2bad.me"}],"homepage":"https://github.com/2BAD/tsfix#readme","bugs":{"url":"https://github.com/2BAD/tsfix/issues"},"bin":{"tsfix":"bin/cli.mjs"},"dist":{"shasum":"e60d18eb53ff6da6bed5c69ed6e899b31003a9e5","tarball":"https://registry.npmjs.org/@2bad/tsfix/-/tsfix-1.1.2.tgz","fileCount":20,"integrity":"sha512-betdTVYZyT/yURs9lWYMdodUo+DtwZMIMbweO1uca+s3Rw94lyXMau/h2kfK8rHnLf7g0+0wn1Jeq+8gd0VT1g==","signatures":[{"sig":"MEUCIQDCKbH2be+tyA8kKr2dIr7TVGGRQLxekvd454I74kOAlQIgLsz5aea+sKoF/CxfrhFfrjdb0yhjn4Frg00fl5x+SEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2bad%2ftsfix@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35755},"type":"module","volta":{"npm":"11.6.2","node":"24.10.0"},"engines":{"node":">=24"},"exports":"./build/index.js","gitHead":"11ccffe7480757c89398e3b0adc4efdf213fee67","scripts":{"fix":"run-s fix:code fix:format","test":"vitest run","build":"run-p build:*","check":"run-p check:*","fix:code":"run-s 'check:eslint -- --fix'","prebuild":"rimraf build","build:swc":"swc ./source -d ./build --strip-leading-paths","postbuild":"tsfix","test:unit":"vitest run unit --coverage","fix:format":"biome format --write ./source","preversion":"run-s check test build","build:types":"tsc --project tsconfig.build.json","check:biome":"biome check ./source","check:eslint":"eslint . --report-unused-disable-directives --max-warnings 0","prepublishOnly":"run-s build","test:integration":"vitest run integration --coverage"},"typings":"./build/index.d.ts","_npmUser":{"name":"mrhyde","email":"npm@2bad.me"},"repository":{"url":"git+https://github.com/2BAD/tsfix.git","type":"git"},"_npmVersion":"11.6.1","description":"[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![GitHub Build Status](https://img.shields.io/github/a","directories":{},"_nodeVersion":"24.10.0","dependencies":{"debug":"4.4.3","pathe":"2.0.3","fast-glob":"3.3.3","typescript":"5.9.3"},"_hasShrinkwrap":false,"packageManager":"npm@11.6.2","devDependencies":{"execa":"9.6.0","rimraf":"6.0.1","vitest":"4.0.4","@swc/cli":"0.7.8","@swc/core":"1.13.5","type-fest":"5.1.0","@2bad/axiom":"1.0.3","@2bad/tsfix":"1.1.1","@types/node":"24.9.1","@types/debug":"4.1.12","npm-run-all2":"8.0.4","@2bad/tsconfig":"3.0.2","@biomejs/biome":"2.3.1","@vitest/coverage-v8":"4.0.4","vite-tsconfig-paths":"5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/tsfix_1.1.2_1761615688934_0.8509687186830226","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Deprecated: use tsdown instead. See https://github.com/2BAD/tsfix#migrate-to-tsdown"}},"time":{"created":"2024-06-19T19:32:10.163Z","modified":"2026-04-13T01:13:23.446Z","0.1.0":"2024-06-19T19:32:10.571Z","1.0.0":"2025-03-05T01:28:59.708Z","1.1.0":"2025-04-06T00:30:39.825Z","1.1.1":"2025-04-10T17:58:03.422Z","1.1.2":"2025-10-28T01:41:29.134Z"},"bugs":{"url":"https://github.com/2BAD/tsfix/issues"},"author":{"url":"https://github.com/2BAD","name":"2BAD"},"license":"MIT","homepage":"https://github.com/2BAD/tsfix#readme","keywords":["alias","ast","esm","fix","imports","parse","patch","paths","regex","transform","tsc","typescript"],"repository":{"url":"git+https://github.com/2BAD/tsfix.git","type":"git"},"description":"[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix) [![GitHub Build Status](https://img.shields.io/github/a","contributors":[{"url":"https://github.com/mrhyde","name":"Jason Hyde","email":"github@2bad.me"}],"maintainers":[{"name":"armordarks","email":"npm@lavrins.com"},{"name":"mrhyde","email":"npm@2bad.me"}],"readme":"# TSFIX\n\n[![NPM version](https://img.shields.io/npm/v/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix)\n[![License](https://img.shields.io/npm/l/@2bad/tsfix)](https://www.npmjs.com/package/@2bad/tsfix)\n[![GitHub Build Status](https://img.shields.io/github/actions/workflow/status/2BAD/tsfix/build.yml)](https://github.com/2BAD/tsfix/actions/workflows/build.yml)\n[![Code coverage](https://img.shields.io/codecov/c/github/2BAD/tsfix)](https://codecov.io/gh/2BAD/tsfix)\n[![Written in TypeScript](https://img.shields.io/github/languages/top/2BAD/tsfix)](https://github.com/2BAD/tsfix/search?l=typescript)\n\nA post-compilation tool that fixes TypeScript's critical ESM compatibility failures. Properly adds .js extensions, resolves path aliases, and handles index.js imports where tsc consistently falls short, even in the latest versions.\n\n## Complete Solution for All TypeScript Issues\n\n- ✅ **Fixes Extension Problems**: Adds required `.js` extensions to imports\n- ✅ **Handles Directory Imports**: Properly resolves to `index.js` files\n- ✅ **Transforms Path Aliases**: Converts tsconfig aliases to valid relative paths\n- ✅ **Fixes Declaration Files**: Properly handles `.d.ts` files (unlike TypeScript itself)\n- ✅ **Zero Configuration**: Works out-of-the-box with any TypeScript setup\n- ✅ **Universal Compatibility**: Works with all TypeScript versions and config setups\n- ✅ **High Performance**: Offers both fast regex mode and accurate AST mode\n\n## Zero Hassle Setup\n\n```shell\nnpm install --save-dev @2bad/tsfix\n```\n\nThen add `postbuild` script to your package.json:\n\n```json\n{\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"postbuild\": \"tsfix\"\n  }\n}\n```\n\nThat's it. TSFIX finds your TypeScript output and fixes all import issues automatically.\n\n## Real World Examples\n\n### Converting Regular Imports\n\n```typescript\n// Before TypeScript Compilation\nimport { helper } from './utils/helper.ts'\n\n// After TypeScript Compilation (BROKEN)\nimport { helper } from './utils/helper.ts'\n\n// After TSFIX (FIXED)\nimport { helper } from './utils/helper.js' // Works in ESM!\n```\n\n### Fixing Path Alias Imports\n\n```typescript\n// tsconfig.json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"src/*\"]\n    }\n  }\n}\n\n// Before TypeScript Compilation\nimport { Button } from '@/components/Button'\n\n// After TypeScript Compilation (BROKEN)\nimport { Button } from '@/components/Button'\n\n// After TSFIX (FIXED)\nimport { Button } from './src/components/Button.js' // Correctly resolved!\n```\n\n### Resolving Directory Imports\n\n```typescript\n// Before TypeScript Compilation\nimport { config } from './config'\n\n// After TypeScript Compilation (BROKEN)\nimport { config } from './config'\n\n// After TSFIX (FIXED)\nimport { config } from './config/index.js' // Properly resolved!\n```\n\n## Advanced Usage\n\n```sh\n# Use AST-based extraction (more accurate but slower)\nnpx @2bad/tsfix --mode ast\n\n# Custom file matching pattern\nnpx @2bad/tsfix --pattern \"**/*.js\"\n```\n\n## Debugging\n\n```sh\n# Enable all debug logging\nDEBUG=* tsfix\n\n# Only enable specific components\nDEBUG=tsfix:main,tsfix:extractor tsfix\n\n# Show only fixer operations\nDEBUG=tsfix:fixer tsfix\n```\n\n## Why TSFIX exists\n\n### Major TypeScript Issues (Still Unresolved)\n- [#16577](https://github.com/microsoft/TypeScript/issues/16577): Provide a way to add the '.js' file extension to the end of module specifiers (2017)\n- [#28288](https://github.com/microsoft/TypeScript/issues/28288): Feature: disable extensionless imports (2018)\n- [#40878](https://github.com/microsoft/TypeScript/issues/40878): Compiled JavaScript import is missing file extension (2020)\n- [#42151](https://github.com/microsoft/TypeScript/issues/42151): TypeScript cannot emit valid ES modules due to file extension issue (2020)\n- [#50501](https://github.com/microsoft/TypeScript/issues/50501): TypeScript is not an ECMAScript superset post-ES2015 (2022)\n- [#61037](https://github.com/microsoft/TypeScript/issues/61037): `rewriteRelativeImportExtensions` doesn't rewrite extensions in emitted declaration files (2025)\n- [#61213](https://github.com/microsoft/TypeScript/issues/61213): Allow allowImportingTsExtensions: without either '--noEmit' or '--emitDeclarationOnly' (2025)\n\n### Previously Addressed (Partially)\n\n- [#49083](https://github.com/microsoft/TypeScript/issues/49083): \"module\": \"node16\" should support extension rewriting (Partially addressed via [#59767](https://github.com/microsoft/TypeScript/pull/59767))\n\n\n## Performance Options\n\nTSFIX offers two extraction engines:\n\n- **Regex mode** (default): Fast pattern-based extraction (5x faster than AST mode)\n- **AST mode**: Precise syntax tree-based extraction for complex codebases\n\n## Contributing\n\nContributions welcome! Open issues for bugs/features or submit PRs with improvements.\n","readmeFilename":"README.md"}