Repository: JoshuaKGoldberg/TypeStat (ts)

Issue:
🛠 Tooling: Replace builtin-modules with node's own isBuiltin
### Bug Report Checklist

- [x] I have tried restarting my IDE and the issue persists.
- [x] I have pulled the latest `main` branch of the repository.
- [x] I have [searched for related issues](https://github.com/JoshuaKGoldberg/TypeStat/issues?q=is%3Aissue) and found none that matched my issue.

### Overview

We could replace usage of `builtin-modules` packages with node's own `isBuiltin()` check. This needs node's minimum version to be changes from `>=18` to `>=18.6` but I don't think that should be blocker. :)

### Additional Info

_No response_

Pull request:
fix: replace builtin-modules package with node's isBuiltin check
## PR Checklist

- [x] Addresses an existing open issue: fixes #2175
- [x] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/TypeStat/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22)
- [x] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/TypeStat/blob/main/.github/CONTRIBUTING.md) were taken

## Overview

There is no need to use external package for this check, when we can use node's own `isBuiltin()` check. However, it needed minimum node version to be upgrade to `>=18.6`.

🐙 

Patch:
diff --git a/.github/workflows/accessibility-alt-text-bot.yml b/.github/workflows/accessibility-alt-text-bot.yml
index 41ee851..390979d 100644
--- a/.github/workflows/accessibility-alt-text-bot.yml
+++ b/.github/workflows/accessibility-alt-text-bot.yml
@@ -3,7 +3,7 @@ jobs:
     if: ${{ !endsWith(github.actor, '[bot]') }}
     runs-on: ubuntu-latest
     steps:
-      - uses: github/accessibility-alt-text-bot@9b4b0e03eefd10cfafc676d9b67068ec30b68e90 # v1.7.0
+      - uses: github/accessibility-alt-text-bot@531a7430c6930a39cae5a0aab2d165284468060f # v1.7.1
 
 name: Accessibility Alt Text Bot
 
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 23c9692..4345fd9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,7 +14,7 @@ jobs:
       - env:
           GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
           NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-        uses: JoshuaKGoldberg/release-it-action@160bc18e6032d4a7653df46c4eb6a148a0b6d961 # v0.3.0
+        uses: JoshuaKGoldberg/release-it-action@b3fd2b4b232338ac09c6ca8b587e6490f968a042 # v0.3.1
 
 name: Release
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b6b9b5..ad06134 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+## [0.8.12](https://github.com/JoshuaKGoldberg/TypeStat/compare/0.8.11...0.8.12) (2025-02-04)
+
+### Bug Fixes
+
+- **deps:** update dependency ts-api-utils to v2.0.1 ([#2187](https://github.com/JoshuaKGoldberg/TypeStat/issues/2187)) ([ec320ac](https://github.com/JoshuaKGoldberg/TypeStat/commit/ec320ac0d143f2fdbd90b93fa7c6a97e1350d05e))
+
 ## [0.8.11](https://github.com/JoshuaKGoldberg/TypeStat/compare/0.8.10...0.8.11) (2025-01-24)
 
 ### Bug Fixes
diff --git a/package.json b/package.json
index 2c39eac..4a28653 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "typestat",
-	"version": "0.8.11",
+	"version": "0.8.12",
 	"description": "Converts JavaScript to TypeScript and TypeScript to better TypeScript. 🧫",
 	"repository": {
 		"type": "git",
@@ -42,13 +42,12 @@
 	"dependencies": {
 		"@phenomnomnominal/tsquery": "6.1.3",
 		"automutate": "0.9.0",
-		"builtin-modules": "4.0.0",
 		"chalk": "5.4.1",
 		"commander": "13.1.0",
 		"enquirer": "2.4.1",
 		"glob": "11.0.1",
 		"strip-ansi": "7.1.0",
-		"ts-api-utils": "2.0.0"
+		"ts-api-utils": "2.0.1"
 	},
 	"devDependencies": {
 		"@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
@@ -56,7 +55,7 @@
 		"@release-it/conventional-changelog": "10.0.0",
 		"@types/eslint-plugin-markdown": "2.0.2",
 		"@types/glob": "8.1.0",
-		"@types/node": "22.12.0",
+		"@types/node": "22.13.0",
 		"@types/prop-types": "15.7.14",
 		"@types/react": "19.0.8",
 		"@vitest/coverage-v8": "3.0.4",
@@ -87,9 +86,9 @@
 		"typescript-eslint": "8.22.0",
 		"vitest": "3.0.4"
 	},
-	"packageManager": "pnpm@9.15.4",
+	"packageManager": "pnpm@10.1.0",
 	"engines": {
-		"node": ">=18"
+		"node": ">=18.6"
 	},
 	"publishConfig": {
 		"provenance": true
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3ae7c26..c1f3b9c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -14,9 +14,6 @@ importers:
       automutate:
         specifier: 0.9.0
         version: 0.9.0
-      builtin-modules:
-        specifier: 4.0.0
-        version: 4.0.0
       chalk:
         specifier: 5.4.1
         version: 5.4.1
@@ -33,8 +30,8 @@ importers:
         specifier: 7.1.0
         version: 7.1.0
       ts-api-utils:
-        specifier: 2.0.0
-        version: 2.0.0(typescript@5.7.3)
+        specifier: 2.0.1
+        version: 2.0.1(typescript@5.7.3)
     devDependencies:
       '@eslint-community/eslint-plugin-eslint-comments':
         specifier: 4.4.1
@@ -44,7 +41,7 @@ importers:
         version: 9.19.0
       '@release-it/conventional-changelog':
         specifier: 10.0.0
-        version: 10.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)(release-it@18.1.2(@types/node@22.12.0)(typescript@5.7.3))
+        version: 10.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)(release-it@18.1.2(@types/node@22.13.0)(typescript@5.7.3))
       '@types/eslint-plugin-markdown':
         specifier: 2.0.2
         version: 2.0.2
@@ -52,8 +49,8 @@ importers:
         specifier: 8.1.0
         version: 8.1.0
       '@types/node':
-        specifier: 22.12.0
-        version: 22.12.0
+        specifier: 22.13.0
+        version: 22.13.0
       '@types/prop-types':
         specifier: 15.7.14
         version: 15.7.14
@@ -62,10 +59,10 @@ importers:
         version: 19.0.8
       '@vitest/coverage-v8':
         specifier: 3.0.4
-        version: 3.0.4(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.12.0))
+        version: 3.0.4(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.13.0))
       '@vitest/eslint-plugin':
         specifier: 1.1.25
-        version: 1.1.25(@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.12.0))
+        version: 1.1.25(@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.13.0))
       console-fail-test:
         specifier: 0.5.0
         version: 0.5.0
@@ -104,7 +101,7 @@ importers:
         version: 9.1.7
       knip:
         specifier: 5.43.6
-        version: 5.43.6(@types/node@22.12.0)(typescript@5.7.3)
+        version: 5.43.6(@types/node@22.13.0)(typescript@5.7.3)
       lint-staged:
         specifier: 15.4.3
         version: 15.4.3
@@ -125,7 +122,7 @@ importers:
         version: 2.5.8(prettier@3.4.2)
       release-it:
         specifier: 18.1.2
-        version: 18.1.2(@types/node@22.12.0)(typescript@5.7.3)
+        version: 18.1.2(@types/node@22.13.0)(typescript@5.7.3)
       sentences-per-line:
         specifier: 0.3.0
         version: 0.3.0
@@ -140,7 +137,7 @@ importers:
         version: 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)
       vitest:
         specifier: 3.0.4
-        version: 3.0.4(@types/debug@4.1.12)(@types/node@22.12.0)
+        version: 3.0.4(@types/debug@4.1.12)(@types/node@22.13.0)
 
 packages:
 
@@ -1135,8 +1132,8 @@ packages:
   '@types/ms@0.7.34':
     resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
 
-  '@types/node@22.12.0':
-    resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==}
+  '@types/node@22.13.0':
+    resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==}
 
   '@types/normalize-package-data@2.4.4':
     resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -1373,10 +1370,6 @@ packages:
   buffer-from@1.1.2:
     resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
 
-  builtin-modules@4.0.0:
-    resolution: {integrity: sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==}
-    engines: {node: '>=18.20'}
-
   bundle-name@4.1.0:
     resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
     engines: {node: '>=18'}
@@ -3390,8 +3383,8 @@ packages:
     resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
     hasBin: true
 
-  ts-api-utils@2.0.0:
-    resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==}
+  ts-api-utils@2.0.1:
+    resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
     engines: {node: '>=18.12'}
     peerDependencies:
       typescript: '>=4.8.4'
@@ -4169,25 +4162,25 @@ snapshots:
 
   '@iarna/toml@2.2.5': {}
 
-  '@inquirer/checkbox@4.0.4(@types/node@22.12.0)':
+  '@inquirer/checkbox@4.0.4(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
       '@inquirer/figures': 1.0.9
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       ansi-escapes: 4.3.2
       yoctocolors-cjs: 2.1.2
 
-  '@inquirer/confirm@5.1.1(@types/node@22.12.0)':
+  '@inquirer/confirm@5.1.1(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
 
-  '@inquirer/core@10.1.2(@types/node@22.12.0)':
+  '@inquirer/core@10.1.2(@types/node@22.13.0)':
     dependencies:
       '@inquirer/figures': 1.0.9
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
       ansi-escapes: 4.3.2
       cli-width: 4.1.0
       mute-stream: 2.0.0
@@ -4198,82 +4191,82 @@ snapshots:
     transitivePeerDependencies:
       - '@types/node'
 
-  '@inquirer/editor@4.2.1(@types/node@22.12.0)':
+  '@inquirer/editor@4.2.1(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       external-editor: 3.1.0
 
-  '@inquirer/expand@4.0.4(@types/node@22.12.0)':
+  '@inquirer/expand@4.0.4(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       yoctocolors-cjs: 2.1.2
 
   '@inquirer/figures@1.0.9': {}
 
-  '@inquirer/input@4.1.1(@types/node@22.12.0)':
+  '@inquirer/input@4.1.1(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
 
-  '@inquirer/number@3.0.4(@types/node@22.12.0)':
+  '@inquirer/number@3.0.4(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
 
-  '@inquirer/password@4.0.4(@types/node@22.12.0)':
+  '@inquirer/password@4.0.4(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       ansi-escapes: 4.3.2
 
-  '@inquirer/prompts@7.2.1(@types/node@22.12.0)':
-    dependencies:
-      '@inquirer/checkbox': 4.0.4(@types/node@22.12.0)
-      '@inquirer/confirm': 5.1.1(@types/node@22.12.0)
-      '@inquirer/editor': 4.2.1(@types/node@22.12.0)
-      '@inquirer/expand': 4.0.4(@types/node@22.12.0)
-      '@inquirer/input': 4.1.1(@types/node@22.12.0)
-      '@inquirer/number': 3.0.4(@types/node@22.12.0)
-      '@inquirer/password': 4.0.4(@types/node@22.12.0)
-      '@inquirer/rawlist': 4.0.4(@types/node@22.12.0)
-      '@inquirer/search': 3.0.4(@types/node@22.12.0)
-      '@inquirer/select': 4.0.4(@types/node@22.12.0)
-      '@types/node': 22.12.0
-
-  '@inquirer/rawlist@4.0.4(@types/node@22.12.0)':
-    dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+  '@inquirer/prompts@7.2.1(@types/node@22.13.0)':
+    dependencies:
+      '@inquirer/checkbox': 4.0.4(@types/node@22.13.0)
+      '@inquirer/confirm': 5.1.1(@types/node@22.13.0)
+      '@inquirer/editor': 4.2.1(@types/node@22.13.0)
+      '@inquirer/expand': 4.0.4(@types/node@22.13.0)
+      '@inquirer/input': 4.1.1(@types/node@22.13.0)
+      '@inquirer/number': 3.0.4(@types/node@22.13.0)
+      '@inquirer/password': 4.0.4(@types/node@22.13.0)
+      '@inquirer/rawlist': 4.0.4(@types/node@22.13.0)
+      '@inquirer/search': 3.0.4(@types/node@22.13.0)
+      '@inquirer/select': 4.0.4(@types/node@22.13.0)
+      '@types/node': 22.13.0
+
+  '@inquirer/rawlist@4.0.4(@types/node@22.13.0)':
+    dependencies:
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       yoctocolors-cjs: 2.1.2
 
-  '@inquirer/search@3.0.4(@types/node@22.12.0)':
+  '@inquirer/search@3.0.4(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
       '@inquirer/figures': 1.0.9
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       yoctocolors-cjs: 2.1.2
 
-  '@inquirer/select@4.0.4(@types/node@22.12.0)':
+  '@inquirer/select@4.0.4(@types/node@22.13.0)':
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
       '@inquirer/figures': 1.0.9
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       ansi-escapes: 4.3.2
       yoctocolors-cjs: 2.1.2
 
-  '@inquirer/type@3.0.2(@types/node@22.12.0)':
+  '@inquirer/type@3.0.2(@types/node@22.13.0)':
     dependencies:
-      '@types/node': 22.12.0
+      '@types/node': 22.13.0
 
   '@isaacs/cliui@8.0.2':
     dependencies:
@@ -4412,13 +4405,13 @@ snapshots:
       '@pnpm/network.ca-file': 1.0.2
       config-chain: 1.1.13
 
-  '@release-it/conventional-changelog@10.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)(release-it@18.1.2(@types/node@22.12.0)(typescript@5.7.3))':
+  '@release-it/conventional-changelog@10.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)(release-it@18.1.2(@types/node@22.13.0)(typescript@5.7.3))':
     dependencies:
       concat-stream: 2.0.0
       conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0)
       conventional-recommended-bump: 10.0.0
       git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)
-      release-it: 18.1.2(@types/node@22.12.0)(typescript@5.7.3)
+      release-it: 18.1.2(@types/node@22.13.0)(typescript@5.7.3)
       semver: 7.6.3
     transitivePeerDependencies:
       - conventional-commits-filter
@@ -4515,7 +4508,7 @@ snapshots:
   '@types/glob@8.1.0':
     dependencies:
       '@types/minimatch': 5.1.2
-      '@types/node': 22.12.0
+      '@types/node': 22.13.0
 
   '@types/json-schema@7.0.15': {}
 
@@ -4529,7 +4522,7 @@ snapshots:
 
   '@types/ms@0.7.34': {}
 
-  '@types/node@22.12.0':
+  '@types/node@22.13.0':
     dependencies:
       undici-types: 6.20.0
 
@@ -4559,7 +4552,7 @@ snapshots:
       graphemer: 1.4.0
       ignore: 5.3.2
       natural-compare: 1.4.0
-      ts-api-utils: 2.0.0(typescript@5.7.3)
+      ts-api-utils: 2.0.1(typescript@5.7.3)
       typescript: 5.7.3
     transitivePeerDependencies:
       - supports-color
@@ -4587,7 +4580,7 @@ snapshots:
       '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)
       debug: 4.4.0
       eslint: 9.19.0(jiti@2.4.2)
-      ts-api-utils: 2.0.0(typescript@5.7.3)
+      ts-api-utils: 2.0.1(typescript@5.7.3)
       typescript: 5.7.3
     transitivePeerDependencies:
       - supports-color
@@ -4603,7 +4596,7 @@ snapshots:
       is-glob: 4.0.3
       minimatch: 9.0.5
       semver: 7.6.3
-      ts-api-utils: 2.0.0(typescript@5.7.3)
+      ts-api-utils: 2.0.1(typescript@5.7.3)
       typescript: 5.7.3
     transitivePeerDependencies:
       - supports-color
@@ -4624,7 +4617,7 @@ snapshots:
       '@typescript-eslint/types': 8.22.0
       eslint-visitor-keys: 4.2.0
 
-  '@vitest/coverage-v8@3.0.4(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.12.0))':
+  '@vitest/coverage-v8@3.0.4(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.13.0))':
     dependencies:
       '@ampproject/remapping': 2.3.0
       '@bcoe/v8-coverage': 1.0.2
@@ -4638,17 +4631,17 @@ snapshots:
       std-env: 3.8.0
       test-exclude: 7.0.1
       tinyrainbow: 2.0.0
-      vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.12.0)
+      vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.13.0)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitest/eslint-plugin@1.1.25(@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.12.0))':
+  '@vitest/eslint-plugin@1.1.25(@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.13.0))':
     dependencies:
       '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)
       eslint: 9.19.0(jiti@2.4.2)
     optionalDependencies:
       typescript: 5.7.3
-      vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.12.0)
+      vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.13.0)
 
   '@vitest/expect@3.0.4':
     dependencies:
@@ -4657,13 +4650,13 @@ snapshots:
       chai: 5.1.2
       tinyrainbow: 2.0.0
 
-  '@vitest/mocker@3.0.4(vite@5.2.11(@types/node@22.12.0))':
+  '@vitest/mocker@3.0.4(vite@5.2.11(@types/node@22.13.0))':
     dependencies:
       '@vitest/spy': 3.0.4
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.2.11(@types/node@22.12.0)
+      vite: 5.2.11(@types/node@22.13.0)
 
   '@vitest/pretty-format@3.0.4':
     dependencies:
@@ -4799,8 +4792,6 @@ snapshots:
 
   buffer-from@1.1.2: {}
 
-  builtin-modules@4.0.0: {}
-
   bundle-name@4.1.0:
     dependencies:
       run-applescript: 7.0.0
@@ -5822,12 +5813,12 @@ snapshots:
 
   ini@4.1.2: {}
 
-  inquirer@12.3.0(@types/node@22.12.0):
+  inquirer@12.3.0(@types/node@22.13.0):
     dependencies:
-      '@inquirer/core': 10.1.2(@types/node@22.12.0)
-      '@inquirer/prompts': 7.2.1(@types/node@22.12.0)
-      '@inquirer/type': 3.0.2(@types/node@22.12.0)
-      '@types/node': 22.12.0
+      '@inquirer/core': 10.1.2(@types/node@22.13.0)
+      '@inquirer/prompts': 7.2.1(@types/node@22.13.0)
+      '@inquirer/type': 3.0.2(@types/node@22.13.0)
+      '@types/node': 22.13.0
       ansi-escapes: 4.3.2
       mute-stream: 2.0.0
       run-async: 3.0.0
@@ -6015,11 +6006,11 @@ snapshots:
     dependencies:
       json-buffer: 3.0.1
 
-  knip@5.43.6(@types/node@22.12.0)(typescript@5.7.3):
+  knip@5.43.6(@types/node@22.13.0)(typescript@5.7.3):
     dependencies:
       '@nodelib/fs.walk': 3.0.1
       '@snyk/github-codeowners': 1.1.0
-      '@types/node': 22.12.0
+      '@types/node': 22.13.0
       easy-table: 1.2.0
       enhanced-resolve: 5.18.0
       fast-glob: 3.3.3
@@ -6749,7 +6740,7 @@ snapshots:
     dependencies:
       rc: 1.2.8
 
-  release-it@18.1.2(@types/node@22.12.0)(typescript@5.7.3):
+  release-it@18.1.2(@types/node@22.13.0)(typescript@5.7.3):
     dependencies:
       '@iarna/toml': 2.2.5
       '@octokit/rest': 21.0.2
@@ -6760,7 +6751,7 @@ snapshots:
       execa: 9.5.2
       git-url-parse: 16.0.0
       globby: 14.0.2
-      inquirer: 12.3.0(@types/node@22.12.0)
+      inquirer: 12.3.0(@types/node@22.13.0)
       issue-parser: 7.0.1
       lodash: 4.17.21
       mime-types: 2.1.35
@@ -7084,7 +7075,7 @@ snapshots:
 
   tree-kill@1.2.2: {}
 
-  ts-api-utils@2.0.0(typescript@5.7.3):
+  ts-api-utils@2.0.1(typescript@5.7.3):
     dependencies:
       typescript: 5.7.3
 
@@ -7192,13 +7183,13 @@ snapshots:
 
   validate-npm-package-name@6.0.0: {}
 
-  vite-node@3.0.4(@types/node@22.12.0):
+  vite-node@3.0.4(@types/node@22.13.0):
     dependencies:
       cac: 6.7.14
       debug: 4.4.0
       es-module-lexer: 1.6.0
       pathe: 2.0.2
-      vite: 5.2.11(@types/node@22.12.0)
+      vite: 5.2.11(@types/node@22.13.0)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -7209,19 +7200,19 @@ snapshots:
       - supports-color
       - terser
 
-  vite@5.2.11(@types/node@22.12.0):
+  vite@5.2.11(@types/node@22.13.0):
     dependencies:
       esbuild: 0.20.2
       postcss: 8.4.38
       rollup: 4.24.2
     optionalDependencies:
-      '@types/node': 22.12.0
+      '@types/node': 22.13.0
       fsevents: 2.3.3
 
-  vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.12.0):
+  vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.13.0):
     dependencies:
       '@vitest/expect': 3.0.4
-      '@vitest/mocker': 3.0.4(vite@5.2.11(@types/node@22.12.0))
+      '@vitest/mocker': 3.0.4(vite@5.2.11(@types/node@22.13.0))
       '@vitest/pretty-format': 3.0.4
       '@vitest/runner': 3.0.4
       '@vitest/snapshot': 3.0.4
@@ -7237,12 +7228,12 @@ snapshots:
       tinyexec: 0.3.2
       tinypool: 1.0.2
       tinyrainbow: 2.0.0
-      vite: 5.2.11(@types/node@22.12.0)
-      vite-node: 3.0.4(@types/node@22.12.0)
+      vite: 5.2.11(@types/node@22.13.0)
+      vite-node: 3.0.4(@types/node@22.13.0)
       why-is-node-running: 2.3.0
     optionalDependencies:
       '@types/debug': 4.1.12
-      '@types/node': 22.12.0
+      '@types/node': 22.13.0
     transitivePeerDependencies:
       - less
       - lightningcss
diff --git a/src/runtime/providers/createInstallMissingTypesProvider.ts b/src/runtime/providers/createInstallMissingTypesProvider.ts
index 8e56249..8be37ba 100644
--- a/src/runtime/providers/createInstallMissingTypesProvider.ts
+++ b/src/runtime/providers/createInstallMissingTypesProvider.ts
@@ -1,6 +1,3 @@
-import builtinModules from "builtin-modules";
-
-import { setSubtract } from "../../shared/sets.js";
 import { createFileNamesAndServices } from "../createFileNamesAndServices.js";
 import { createSingleUseProvider } from "../createSingleUseProvider.js";
 import { collectExistingTypingPackages } from "./missingTypes/collectExistingTypingPackages.js";
@@ -8,8 +5,6 @@ import { collectPackageManagerRunner } from "./missingTypes/collectPackageManage
 import { collectReferencedPackageNames } from "./missingTypes/collectReferencedPackageNames.js";
 import { filterTypedPackageNames } from "./missingTypes/filterTypedPackageNames.js";
 
-const uniqueBuiltinModules = new Set(builtinModules);
-
 /**
  * Creates a mutations provider that installs missing types modules.
  * @returns Provider to install missing types modules, if needed.
@@ -36,14 +31,10 @@ export const createInstallMissingTypesProvider = () => {
 
 					// Collect every package name referenced by every file in the project
 					const { services } = createFileNamesAndServices(options);
-					const referencedPackageNames =
-						collectReferencedPackageNames(services);
-
 					// Ignore package names already referenced in package.json or that don't exist in DefinitelyTyped
-					const missingPackageNames = setSubtract(
-						referencedPackageNames,
+					const missingPackageNames = collectReferencedPackageNames(
+						services,
 						new Set(existingPackageNames),
-						uniqueBuiltinModules,
 					);
 					const missingTypedPackageNames = await filterTypedPackageNames(
 						Array.from(missingPackageNames),
diff --git a/src/runtime/providers/missingTypes/collectReferencedPackageNames.ts b/src/runtime/providers/missingTypes/collectReferencedPackageNames.ts
index 77ee33b..ddb9800 100644
--- a/src/runtime/providers/missingTypes/collectReferencedPackageNames.ts
+++ b/src/runtime/providers/missingTypes/collectReferencedPackageNames.ts
@@ -1,12 +1,20 @@
+import { isBuiltin } from "node:module";
 import ts from "typescript";
 
 import { LanguageServices } from "../../../services/language.js";
 
-export const collectReferencedPackageNames = (services: LanguageServices) => {
+export const collectReferencedPackageNames = (
+	services: LanguageServices,
+	ignoredPackages: ReadonlySet<string>,
+) => {
 	const packageNames = new Set<string>();
 
 	for (const sourceFile of services.program.getSourceFiles()) {
-		for (const packageName of collectFileReferencedPackageNames(sourceFile)) {
+		const collected = collectFileReferencedPackageNames(
+			sourceFile,
+			ignoredPackages,
+		);
+		for (const packageName of collected) {
 			packageNames.add(packageName);
 		}
 	}
@@ -14,13 +22,20 @@ export const collectReferencedPackageNames = (services: LanguageServices) => {
 	return packageNames;
 };
 
-const collectFileReferencedPackageNames = (sourceFile: ts.SourceFile) => {
+const collectFileReferencedPackageNames = (
+	sourceFile: ts.SourceFile,
+	ignoredPackages: ReadonlySet<string>,
+) => {
 	const packageNames = new Set<string>();
 
 	const visitNode = (node: ts.Node) => {
 		const packageName = parsePackageNameFromNode(node);
 
-		if (packageName !== undefined) {
+		if (
+			packageName !== undefined &&
+			!isBuiltin(packageName) &&
+			!ignoredPackages.has(packageName)
+		) {
 			packageNames.add(packageName);
 		}
 
diff --git a/src/services/language.ts b/src/services/language.ts
index 1caf405..d14b9d2 100644
--- a/src/services/language.ts
+++ b/src/services/language.ts
@@ -4,13 +4,8 @@ import ts from "typescript";
 
 import { TypeStatOptions } from "../options/types.js";
 import { arrayify, uniquify } from "../shared/arrays.js";
-import { isIntrinsicNameType, WellKnownTypeName } from "../shared/typeNodes.js";
 import { createProgramConfiguration } from "./createProgramConfiguration.js";
 
-export type WellKnownTypes = Readonly<
-	Record<WellKnownTypeName, Readonly<ts.Type>>
->;
-
 /**
  * Language service and type information with their backing TypeScript configuration.
  */
@@ -19,7 +14,6 @@ export interface LanguageServices {
 	readonly parsedConfiguration: ts.ParsedCommandLine;
 	readonly printers: Printers;
 	readonly program: ts.Program;
-	readonly wellKnownTypes: WellKnownTypes;
 }
 
 export interface Printers {
@@ -97,24 +91,11 @@ export const createLanguageServices = (
 		},
 	};
 
-	let wellKnownTypes: undefined | WellKnownTypes;
-
 	return {
 		languageService,
 		parsedConfiguration,
 		printers,
 		program,
-		get wellKnownTypes(): WellKnownTypes {
-			return (wellKnownTypes ??= program
-				.getTypeCatalog()
-				.reduce<Record<WellKnownTypeName, ts.Type>>((acc, type) => {
-					if (isIntrinsicNameType(type)) {
-						acc[type.intrinsicName] = type;
-					}
-
-					return acc;
-				}, {} as WellKnownTypes));
-		},
 	};
 };
 /* eslint-enable @typescript-eslint/unbound-method */
diff --git a/src/types.d.ts b/src/types.d.ts
deleted file mode 100644
index afc9574..0000000
--- a/src/types.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import "typescript";
-
-declare module "typescript" {
-	interface Program {
-		getTypeCatalog(): readonly Type[];
-	}
-}


Test patch:
diff --git a/src/runtime/providers/missingTypes/collectReferencedPackageNames.test.ts b/src/runtime/providers/missingTypes/collectReferencedPackageNames.test.ts
new file mode 100644
index 0000000..2fe29eb
--- /dev/null
+++ b/src/runtime/providers/missingTypes/collectReferencedPackageNames.test.ts
@@ -0,0 +1,50 @@
+import { describe, expect, it } from "vitest";
+
+import {
+	TypeStatCompilerOptions,
+	TypeStatOptions,
+} from "../../../options/types.js";
+import { createLanguageServices } from "../../../services/language.js";
+import { collectReferencedPackageNames } from "./collectReferencedPackageNames.js";
+
+describe("collectReferencedPackageNames", () => {
+	it("should return package names", () => {
+		const options: Partial<TypeStatOptions> = {
+			compilerOptions: {} as Readonly<TypeStatCompilerOptions>,
+			package: {
+				directory: process.cwd(),
+				file: "package.json",
+				missingTypes: true,
+			},
+			projectPath: "tsconfig.json",
+		};
+		const services = createLanguageServices(options as TypeStatOptions);
+
+		const packageNames = collectReferencedPackageNames(
+			services,
+			new Set<string>(),
+		);
+
+		expect(Array.from(packageNames)).toStrictEqual(["node", "automutate"]);
+	});
+
+	it("should ignore defined package names", () => {
+		const options: Partial<TypeStatOptions> = {
+			compilerOptions: {} as Readonly<TypeStatCompilerOptions>,
+			package: {
+				directory: process.cwd(),
+				file: "package.json",
+				missingTypes: true,
+			},
+			projectPath: "tsconfig.json",
+		};
+		const services = createLanguageServices(options as TypeStatOptions);
+
+		const packageNames = collectReferencedPackageNames(
+			services,
+			new Set<string>(["automutate"]),
+		);
+
+		expect(Array.from(packageNames)).toStrictEqual(["node"]);
+	});
+});