knip 0.0.0-angular.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/README.md +907 -0
  2. package/dist/ConfigurationChief.d.ts +53 -0
  3. package/dist/ConfigurationChief.js +297 -0
  4. package/dist/ConfigurationValidator.d.ts +2325 -0
  5. package/dist/ConfigurationValidator.js +119 -0
  6. package/dist/ConsoleStreamer.d.ts +12 -0
  7. package/dist/ConsoleStreamer.js +34 -0
  8. package/dist/DependencyDeputy.d.ts +64 -0
  9. package/dist/DependencyDeputy.js +254 -0
  10. package/dist/IssueCollector.d.ts +27 -0
  11. package/dist/IssueCollector.js +52 -0
  12. package/dist/PrincipalFactory.d.ts +25 -0
  13. package/dist/PrincipalFactory.js +56 -0
  14. package/dist/ProjectPrincipal.d.ts +64 -0
  15. package/dist/ProjectPrincipal.js +197 -0
  16. package/dist/WorkspaceWorker.d.ts +56 -0
  17. package/dist/WorkspaceWorker.js +244 -0
  18. package/dist/binaries/bash-parser.d.ts +6 -0
  19. package/dist/binaries/bash-parser.js +58 -0
  20. package/dist/binaries/index.d.ts +2 -0
  21. package/dist/binaries/index.js +18 -0
  22. package/dist/binaries/resolvers/c8.d.ts +2 -0
  23. package/dist/binaries/resolvers/c8.js +10 -0
  24. package/dist/binaries/resolvers/dotenv.d.ts +2 -0
  25. package/dist/binaries/resolvers/dotenv.js +6 -0
  26. package/dist/binaries/resolvers/fallback.d.ts +2 -0
  27. package/dist/binaries/resolvers/fallback.js +22 -0
  28. package/dist/binaries/resolvers/index.d.ts +8 -0
  29. package/dist/binaries/resolvers/index.js +8 -0
  30. package/dist/binaries/resolvers/node.d.ts +2 -0
  31. package/dist/binaries/resolvers/node.js +10 -0
  32. package/dist/binaries/resolvers/nodemon.d.ts +2 -0
  33. package/dist/binaries/resolvers/nodemon.js +15 -0
  34. package/dist/binaries/resolvers/npx.d.ts +2 -0
  35. package/dist/binaries/resolvers/npx.js +20 -0
  36. package/dist/binaries/resolvers/pnpm.d.ts +2 -0
  37. package/dist/binaries/resolvers/pnpm.js +63 -0
  38. package/dist/binaries/resolvers/rollup.d.ts +2 -0
  39. package/dist/binaries/resolvers/rollup.js +11 -0
  40. package/dist/binaries/resolvers/yarn.d.ts +2 -0
  41. package/dist/binaries/resolvers/yarn.js +48 -0
  42. package/dist/binaries/types.d.ts +15 -0
  43. package/dist/binaries/types.js +1 -0
  44. package/dist/binaries/util.d.ts +8 -0
  45. package/dist/binaries/util.js +33 -0
  46. package/dist/cli.d.ts +2 -0
  47. package/dist/cli.js +72 -0
  48. package/dist/constants.d.ts +12 -0
  49. package/dist/constants.js +90 -0
  50. package/dist/index.d.ts +10 -0
  51. package/dist/index.js +334 -0
  52. package/dist/issues/initializers.d.ts +4 -0
  53. package/dist/issues/initializers.js +11 -0
  54. package/dist/manifest/helpers.d.ts +7 -0
  55. package/dist/manifest/helpers.js +16 -0
  56. package/dist/manifest/index.d.ts +16 -0
  57. package/dist/manifest/index.js +56 -0
  58. package/dist/plugins/_template/index.d.ts +9 -0
  59. package/dist/plugins/_template/index.js +14 -0
  60. package/dist/plugins/_template/types.d.ts +3 -0
  61. package/dist/plugins/_template/types.js +1 -0
  62. package/dist/plugins/angular/index.d.ts +6 -0
  63. package/dist/plugins/angular/index.js +36 -0
  64. package/dist/plugins/angular/types.d.ts +745 -0
  65. package/dist/plugins/angular/types.js +1 -0
  66. package/dist/plugins/ava/index.d.ts +7 -0
  67. package/dist/plugins/ava/index.js +20 -0
  68. package/dist/plugins/ava/types.d.ts +4 -0
  69. package/dist/plugins/ava/types.js +1 -0
  70. package/dist/plugins/babel/helpers.d.ts +15 -0
  71. package/dist/plugins/babel/helpers.js +34 -0
  72. package/dist/plugins/babel/index.d.ts +8 -0
  73. package/dist/plugins/babel/index.js +30 -0
  74. package/dist/plugins/babel/types.d.ts +9 -0
  75. package/dist/plugins/babel/types.js +1 -0
  76. package/dist/plugins/capacitor/index.d.ts +6 -0
  77. package/dist/plugins/capacitor/index.js +11 -0
  78. package/dist/plugins/capacitor/types.d.ts +3 -0
  79. package/dist/plugins/capacitor/types.js +1 -0
  80. package/dist/plugins/changesets/index.d.ts +6 -0
  81. package/dist/plugins/changesets/index.js +15 -0
  82. package/dist/plugins/commitizen/index.d.ts +6 -0
  83. package/dist/plugins/commitizen/index.js +14 -0
  84. package/dist/plugins/commitizen/types.d.ts +3 -0
  85. package/dist/plugins/commitizen/types.js +1 -0
  86. package/dist/plugins/commitlint/index.d.ts +6 -0
  87. package/dist/plugins/commitlint/index.js +18 -0
  88. package/dist/plugins/cspell/index.d.ts +6 -0
  89. package/dist/plugins/cspell/index.js +17 -0
  90. package/dist/plugins/cspell/types.d.ts +3 -0
  91. package/dist/plugins/cspell/types.js +1 -0
  92. package/dist/plugins/cypress/index.d.ts +5 -0
  93. package/dist/plugins/cypress/index.js +10 -0
  94. package/dist/plugins/eslint/fallback.d.ts +1 -0
  95. package/dist/plugins/eslint/fallback.js +13 -0
  96. package/dist/plugins/eslint/helpers.d.ts +14 -0
  97. package/dist/plugins/eslint/helpers.js +83 -0
  98. package/dist/plugins/eslint/index.d.ts +7 -0
  99. package/dist/plugins/eslint/index.js +15 -0
  100. package/dist/plugins/eslint/types.d.ts +27 -0
  101. package/dist/plugins/eslint/types.js +1 -0
  102. package/dist/plugins/gatsby/index.d.ts +7 -0
  103. package/dist/plugins/gatsby/index.js +30 -0
  104. package/dist/plugins/gatsby/types.d.ts +15 -0
  105. package/dist/plugins/gatsby/types.js +1 -0
  106. package/dist/plugins/github-actions/index.d.ts +6 -0
  107. package/dist/plugins/github-actions/index.js +21 -0
  108. package/dist/plugins/husky/index.d.ts +6 -0
  109. package/dist/plugins/husky/index.js +19 -0
  110. package/dist/plugins/index.d.ts +41 -0
  111. package/dist/plugins/index.js +41 -0
  112. package/dist/plugins/jest/index.d.ts +7 -0
  113. package/dist/plugins/jest/index.js +68 -0
  114. package/dist/plugins/lefthook/index.d.ts +6 -0
  115. package/dist/plugins/lefthook/index.js +28 -0
  116. package/dist/plugins/lint-staged/index.d.ts +6 -0
  117. package/dist/plugins/lint-staged/index.js +32 -0
  118. package/dist/plugins/lint-staged/types.d.ts +5 -0
  119. package/dist/plugins/lint-staged/types.js +1 -0
  120. package/dist/plugins/markdownlint/helpers.d.ts +1 -0
  121. package/dist/plugins/markdownlint/helpers.js +6 -0
  122. package/dist/plugins/markdownlint/index.d.ts +6 -0
  123. package/dist/plugins/markdownlint/index.js +19 -0
  124. package/dist/plugins/markdownlint/types.d.ts +3 -0
  125. package/dist/plugins/markdownlint/types.js +1 -0
  126. package/dist/plugins/mocha/index.d.ts +6 -0
  127. package/dist/plugins/mocha/index.js +15 -0
  128. package/dist/plugins/next/index.d.ts +6 -0
  129. package/dist/plugins/next/index.js +11 -0
  130. package/dist/plugins/npm-package-json-lint/index.d.ts +6 -0
  131. package/dist/plugins/npm-package-json-lint/index.js +13 -0
  132. package/dist/plugins/npm-package-json-lint/types.d.ts +3 -0
  133. package/dist/plugins/npm-package-json-lint/types.js +1 -0
  134. package/dist/plugins/nx/index.d.ts +6 -0
  135. package/dist/plugins/nx/index.js +24 -0
  136. package/dist/plugins/nx/types.d.ts +11 -0
  137. package/dist/plugins/nx/types.js +1 -0
  138. package/dist/plugins/nyc/index.d.ts +6 -0
  139. package/dist/plugins/nyc/index.js +11 -0
  140. package/dist/plugins/playwright/index.d.ts +5 -0
  141. package/dist/plugins/playwright/index.js +5 -0
  142. package/dist/plugins/postcss/index.d.ts +6 -0
  143. package/dist/plugins/postcss/index.js +23 -0
  144. package/dist/plugins/postcss/types.d.ts +3 -0
  145. package/dist/plugins/postcss/types.js +1 -0
  146. package/dist/plugins/prettier/index.d.ts +6 -0
  147. package/dist/plugins/prettier/index.js +20 -0
  148. package/dist/plugins/release-it/index.d.ts +6 -0
  149. package/dist/plugins/release-it/index.js +30 -0
  150. package/dist/plugins/release-it/types.d.ts +10 -0
  151. package/dist/plugins/release-it/types.js +1 -0
  152. package/dist/plugins/remark/index.d.ts +6 -0
  153. package/dist/plugins/remark/index.js +18 -0
  154. package/dist/plugins/remix/index.d.ts +6 -0
  155. package/dist/plugins/remix/index.js +11 -0
  156. package/dist/plugins/rollup/index.d.ts +5 -0
  157. package/dist/plugins/rollup/index.js +5 -0
  158. package/dist/plugins/semantic-release/index.d.ts +6 -0
  159. package/dist/plugins/semantic-release/index.js +17 -0
  160. package/dist/plugins/semantic-release/types.d.ts +3 -0
  161. package/dist/plugins/semantic-release/types.js +1 -0
  162. package/dist/plugins/sentry/index.d.ts +5 -0
  163. package/dist/plugins/sentry/index.js +5 -0
  164. package/dist/plugins/storybook/index.d.ts +8 -0
  165. package/dist/plugins/storybook/index.js +19 -0
  166. package/dist/plugins/storybook/types.d.ts +11 -0
  167. package/dist/plugins/storybook/types.js +1 -0
  168. package/dist/plugins/stryker/index.d.ts +6 -0
  169. package/dist/plugins/stryker/index.js +17 -0
  170. package/dist/plugins/stryker/types.d.ts +5 -0
  171. package/dist/plugins/stryker/types.js +1 -0
  172. package/dist/plugins/stylelint/index.d.ts +6 -0
  173. package/dist/plugins/stylelint/index.js +22 -0
  174. package/dist/plugins/stylelint/types.d.ts +4 -0
  175. package/dist/plugins/stylelint/types.js +1 -0
  176. package/dist/plugins/svelte/index.d.ts +7 -0
  177. package/dist/plugins/svelte/index.js +9 -0
  178. package/dist/plugins/tailwind/index.d.ts +5 -0
  179. package/dist/plugins/tailwind/index.js +5 -0
  180. package/dist/plugins/typedoc/index.d.ts +6 -0
  181. package/dist/plugins/typedoc/index.js +22 -0
  182. package/dist/plugins/typedoc/types.d.ts +3 -0
  183. package/dist/plugins/typedoc/types.js +1 -0
  184. package/dist/plugins/typescript/index.d.ts +7 -0
  185. package/dist/plugins/typescript/index.js +42 -0
  186. package/dist/plugins/vite/index.d.ts +6 -0
  187. package/dist/plugins/vite/index.js +12 -0
  188. package/dist/plugins/vite/types.d.ts +4 -0
  189. package/dist/plugins/vite/types.js +1 -0
  190. package/dist/plugins/vitest/helpers.d.ts +6 -0
  191. package/dist/plugins/vitest/helpers.js +22 -0
  192. package/dist/plugins/vitest/index.d.ts +9 -0
  193. package/dist/plugins/vitest/index.js +25 -0
  194. package/dist/plugins/vitest/types.d.ts +11 -0
  195. package/dist/plugins/vitest/types.js +1 -0
  196. package/dist/plugins/webpack/index.d.ts +6 -0
  197. package/dist/plugins/webpack/index.js +82 -0
  198. package/dist/plugins/webpack/types.d.ts +10 -0
  199. package/dist/plugins/webpack/types.js +1 -0
  200. package/dist/reporters/codeowners.d.ts +3 -0
  201. package/dist/reporters/codeowners.js +62 -0
  202. package/dist/reporters/compact.d.ts +3 -0
  203. package/dist/reporters/compact.js +36 -0
  204. package/dist/reporters/index.d.ts +7 -0
  205. package/dist/reporters/index.js +10 -0
  206. package/dist/reporters/json.d.ts +3 -0
  207. package/dist/reporters/json.js +67 -0
  208. package/dist/reporters/symbols.d.ts +3 -0
  209. package/dist/reporters/symbols.js +54 -0
  210. package/dist/reporters/util.d.ts +15 -0
  211. package/dist/reporters/util.js +17 -0
  212. package/dist/types/cli.d.ts +10 -0
  213. package/dist/types/cli.js +1 -0
  214. package/dist/types/compilers.d.ts +6 -0
  215. package/dist/types/compilers.js +1 -0
  216. package/dist/types/config.d.ts +39 -0
  217. package/dist/types/config.js +3 -0
  218. package/dist/types/exports.d.ts +20 -0
  219. package/dist/types/exports.js +1 -0
  220. package/dist/types/imports.d.ts +13 -0
  221. package/dist/types/imports.js +1 -0
  222. package/dist/types/issues.d.ts +62 -0
  223. package/dist/types/issues.js +10 -0
  224. package/dist/types/plugins.d.ts +19 -0
  225. package/dist/types/plugins.js +1 -0
  226. package/dist/types/workspace.d.ts +17 -0
  227. package/dist/types/workspace.js +1 -0
  228. package/dist/typescript/SourceFile.d.ts +18 -0
  229. package/dist/typescript/SourceFile.js +1 -0
  230. package/dist/typescript/SourceFileManager.d.ts +13 -0
  231. package/dist/typescript/SourceFileManager.js +57 -0
  232. package/dist/typescript/ast-helpers.d.ts +27 -0
  233. package/dist/typescript/ast-helpers.js +101 -0
  234. package/dist/typescript/createHosts.d.ts +15 -0
  235. package/dist/typescript/createHosts.js +39 -0
  236. package/dist/typescript/getImportsAndExports.d.ts +29 -0
  237. package/dist/typescript/getImportsAndExports.js +159 -0
  238. package/dist/typescript/resolveModuleNames.d.ts +2 -0
  239. package/dist/typescript/resolveModuleNames.js +27 -0
  240. package/dist/typescript/sys.d.ts +35 -0
  241. package/dist/typescript/sys.js +16 -0
  242. package/dist/typescript/utils.d.ts +2 -0
  243. package/dist/typescript/utils.js +9 -0
  244. package/dist/typescript/visitors/exports/exportAssignment.d.ts +3 -0
  245. package/dist/typescript/visitors/exports/exportAssignment.js +9 -0
  246. package/dist/typescript/visitors/exports/exportDeclaration.d.ts +3 -0
  247. package/dist/typescript/visitors/exports/exportDeclaration.js +13 -0
  248. package/dist/typescript/visitors/exports/exportKeyword.d.ts +3 -0
  249. package/dist/typescript/visitors/exports/exportKeyword.js +77 -0
  250. package/dist/typescript/visitors/exports/index.d.ts +3 -0
  251. package/dist/typescript/visitors/exports/index.js +7 -0
  252. package/dist/typescript/visitors/exports/moduleExportsAccessExpression.d.ts +3 -0
  253. package/dist/typescript/visitors/exports/moduleExportsAccessExpression.js +31 -0
  254. package/dist/typescript/visitors/helpers.d.ts +4 -0
  255. package/dist/typescript/visitors/helpers.js +10 -0
  256. package/dist/typescript/visitors/imports/importCall.d.ts +3 -0
  257. package/dist/typescript/visitors/imports/importCall.js +11 -0
  258. package/dist/typescript/visitors/imports/importDeclaration.d.ts +3 -0
  259. package/dist/typescript/visitors/imports/importDeclaration.js +32 -0
  260. package/dist/typescript/visitors/imports/importEqualsDeclaration.d.ts +3 -0
  261. package/dist/typescript/visitors/imports/importEqualsDeclaration.js +11 -0
  262. package/dist/typescript/visitors/imports/index.d.ts +3 -0
  263. package/dist/typescript/visitors/imports/index.js +18 -0
  264. package/dist/typescript/visitors/imports/jsDocType.d.ts +3 -0
  265. package/dist/typescript/visitors/imports/jsDocType.js +11 -0
  266. package/dist/typescript/visitors/imports/reExportDeclaration.d.ts +3 -0
  267. package/dist/typescript/visitors/imports/reExportDeclaration.js +21 -0
  268. package/dist/typescript/visitors/imports/requireCall.d.ts +3 -0
  269. package/dist/typescript/visitors/imports/requireCall.js +45 -0
  270. package/dist/typescript/visitors/imports/requireResolveCall.d.ts +3 -0
  271. package/dist/typescript/visitors/imports/requireResolveCall.js +12 -0
  272. package/dist/typescript/visitors/index.d.ts +10 -0
  273. package/dist/typescript/visitors/index.js +16 -0
  274. package/dist/typescript/visitors/scripts/execa.d.ts +3 -0
  275. package/dist/typescript/visitors/scripts/execa.js +18 -0
  276. package/dist/typescript/visitors/scripts/index.d.ts +3 -0
  277. package/dist/typescript/visitors/scripts/index.js +5 -0
  278. package/dist/typescript/visitors/scripts/zx.d.ts +3 -0
  279. package/dist/typescript/visitors/scripts/zx.js +8 -0
  280. package/dist/util/Performance.d.ts +23 -0
  281. package/dist/util/Performance.js +80 -0
  282. package/dist/util/array.d.ts +2 -0
  283. package/dist/util/array.js +2 -0
  284. package/dist/util/cli-arguments.d.ts +28 -0
  285. package/dist/util/cli-arguments.js +83 -0
  286. package/dist/util/compilers.d.ts +426 -0
  287. package/dist/util/compilers.js +20 -0
  288. package/dist/util/debug.d.ts +3 -0
  289. package/dist/util/debug.js +34 -0
  290. package/dist/util/errors.d.ts +12 -0
  291. package/dist/util/errors.js +14 -0
  292. package/dist/util/fs.d.ts +7 -0
  293. package/dist/util/fs.js +42 -0
  294. package/dist/util/get-included-issue-types.d.ts +16 -0
  295. package/dist/util/get-included-issue-types.js +37 -0
  296. package/dist/util/git.d.ts +1 -0
  297. package/dist/util/git.js +20 -0
  298. package/dist/util/glob.d.ts +19 -0
  299. package/dist/util/glob.js +59 -0
  300. package/dist/util/loader.d.ts +1 -0
  301. package/dist/util/loader.js +31 -0
  302. package/dist/util/map.d.ts +1 -0
  303. package/dist/util/map.js +6 -0
  304. package/dist/util/modules.d.ts +8 -0
  305. package/dist/util/modules.js +52 -0
  306. package/dist/util/object.d.ts +3 -0
  307. package/dist/util/object.js +37 -0
  308. package/dist/util/path.d.ts +11 -0
  309. package/dist/util/path.js +13 -0
  310. package/dist/util/plugin.d.ts +3 -0
  311. package/dist/util/plugin.js +14 -0
  312. package/dist/util/register.d.ts +1 -0
  313. package/dist/util/register.js +14 -0
  314. package/dist/util/reporter.d.ts +3 -0
  315. package/dist/util/reporter.js +16 -0
  316. package/dist/util/require.d.ts +5 -0
  317. package/dist/util/require.js +34 -0
  318. package/dist/util/tsconfig-loader.d.ts +2 -0
  319. package/dist/util/tsconfig-loader.js +11 -0
  320. package/dist/util/workspace.d.ts +1 -0
  321. package/dist/util/workspace.js +11 -0
  322. package/dist/version.d.ts +1 -0
  323. package/dist/version.js +1 -0
  324. package/license +12 -0
  325. package/package.json +150 -0
  326. package/schema.json +403 -0
@@ -0,0 +1,6 @@
1
+ import parseArgs from 'minimist';
2
+ import { toBinary, argsFrom } from '../util.js';
3
+ export const resolve = (binary, args, { fromArgs }) => {
4
+ const parsed = parseArgs(args);
5
+ return [toBinary(binary), ...fromArgs(argsFrom(args, parsed._[0]))];
6
+ };
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,22 @@
1
+ import parseArgs from 'minimist';
2
+ import { compact } from '../../util/array.js';
3
+ import { toBinary, tryResolveFilePath, tryResolveSpecifiers } from '../util.js';
4
+ const withPositional = parsed => [parsed._[0], parsed.require].flat();
5
+ const withoutPositional = parsed => [parsed.require].flat();
6
+ const argFilters = {
7
+ 'babel-node': withPositional,
8
+ esbuild: withPositional,
9
+ execa: withPositional,
10
+ 'ts-node': withPositional,
11
+ zx: withPositional,
12
+ tsx: parsed => parsed._.filter(p => p !== 'watch'),
13
+ default: withoutPositional,
14
+ };
15
+ const spawningBinaries = ['cross-env', 'retry-cli'];
16
+ export const resolve = (binary, args, { cwd, fromArgs }) => {
17
+ const parsed = parseArgs(args, { string: ['r'], alias: { require: ['r', 'loader'] }, boolean: ['quiet', 'verbose'] });
18
+ const bin = binary.startsWith('.') ? tryResolveFilePath(cwd, binary) : toBinary(binary);
19
+ const filteredArgs = binary in argFilters ? argFilters[binary](parsed) : argFilters.default(parsed);
20
+ const shiftedArgs = spawningBinaries.includes(binary) ? fromArgs(args) : [];
21
+ return compact([bin, ...tryResolveSpecifiers(cwd, filteredArgs), ...shiftedArgs]);
22
+ };
@@ -0,0 +1,8 @@
1
+ export * as c8 from './c8.js';
2
+ export * as dotenv from './dotenv.js';
3
+ export * as node from './node.js';
4
+ export * as nodemon from './nodemon.js';
5
+ export * as npx from './npx.js';
6
+ export * as pnpm from './pnpm.js';
7
+ export * as rollup from './rollup.js';
8
+ export * as yarn from './yarn.js';
@@ -0,0 +1,8 @@
1
+ export * as c8 from './c8.js';
2
+ export * as dotenv from './dotenv.js';
3
+ export * as node from './node.js';
4
+ export * as nodemon from './nodemon.js';
5
+ export * as npx from './npx.js';
6
+ export * as pnpm from './pnpm.js';
7
+ export * as rollup from './rollup.js';
8
+ export * as yarn from './yarn.js';
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,10 @@
1
+ import parseArgs from 'minimist';
2
+ import { compact } from '../../util/array.js';
3
+ import { tryResolveFilePath, tryResolveSpecifiers } from '../util.js';
4
+ export const resolve = (binary, args, { cwd }) => {
5
+ const parsed = parseArgs(args, {
6
+ string: ['r'],
7
+ alias: { require: ['r', 'loader', 'experimental-loader', 'test-reporter'] },
8
+ });
9
+ return compact([tryResolveFilePath(cwd, parsed._[0]), ...tryResolveSpecifiers(cwd, [parsed.require].flat())]);
10
+ };
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,15 @@
1
+ import parseArgs from 'minimist';
2
+ import { compact } from '../../util/array.js';
3
+ import { toBinary, tryResolveFilePath, tryResolveSpecifiers } from '../util.js';
4
+ export const resolve = (binary, args, { cwd, fromArgs }) => {
5
+ const parsed = parseArgs(args, {
6
+ string: ['r', 'exec'],
7
+ alias: { require: ['r', 'loader', 'experimental-loader', 'test-reporter'] },
8
+ });
9
+ return compact([
10
+ toBinary(binary),
11
+ tryResolveFilePath(cwd, parsed._[0]),
12
+ ...tryResolveSpecifiers(cwd, [parsed.require].flat()),
13
+ ...fromArgs([parsed.exec]),
14
+ ]);
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,20 @@
1
+ import parseArgs from 'minimist';
2
+ import { isInternal } from '../../util/path.js';
3
+ import { getBinariesFromScript } from '../bash-parser.js';
4
+ import { argsFrom, stripVersionFromSpecifier, toBinary } from '../util.js';
5
+ export const resolve = (binary, args, { cwd, fromArgs, manifest }) => {
6
+ const parsed = parseArgs(args, {
7
+ boolean: ['yes', 'no'],
8
+ alias: { yes: 'y', no: 'no-install', package: 'p', call: 'c' },
9
+ });
10
+ const packageSpecifier = parsed._[0];
11
+ const specifier = packageSpecifier ? stripVersionFromSpecifier(packageSpecifier) : '';
12
+ const packages = parsed.package ? [parsed.package].flat().map(stripVersionFromSpecifier) : [];
13
+ const command = parsed.call ? getBinariesFromScript(parsed.call, { cwd, manifest }) : [];
14
+ const restArgs = argsFrom(args, packageSpecifier);
15
+ const dependencies = manifest ? Object.keys({ ...manifest.dependencies, ...manifest.devDependencies }) : [];
16
+ const isBinary = specifier && !packageSpecifier.includes('@') && !isInternal(specifier) && !dependencies.includes(specifier);
17
+ const dependency = isBinary ? toBinary(specifier) : specifier;
18
+ const specifiers = dependency && !parsed.yes ? [dependency] : [];
19
+ return [...specifiers, ...packages, ...command, ...fromArgs(restArgs).slice(1)];
20
+ };
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,63 @@
1
+ import parseArgs from 'minimist';
2
+ import { toBinary } from '../util.js';
3
+ const commands = [
4
+ 'add',
5
+ 'audit',
6
+ 'bin',
7
+ 'config',
8
+ 'dedupe',
9
+ 'deploy',
10
+ 'dlx',
11
+ 'doctor',
12
+ 'env',
13
+ 'fetch',
14
+ 'i',
15
+ 'import',
16
+ 'init',
17
+ 'install-test',
18
+ 'install',
19
+ 'it',
20
+ 'licenses',
21
+ 'link',
22
+ 'list',
23
+ 'ln',
24
+ 'ls',
25
+ 'outdated',
26
+ 'outdated',
27
+ 'pack',
28
+ 'patch-commit',
29
+ 'patch-remove',
30
+ 'patch',
31
+ 'prune',
32
+ 'publish',
33
+ 'rb',
34
+ 'rebuild',
35
+ 'remove',
36
+ 'rm',
37
+ 'root',
38
+ 'run',
39
+ 'server',
40
+ 'setup',
41
+ 'start',
42
+ 'store',
43
+ 't',
44
+ 'test',
45
+ 'tst',
46
+ 'un',
47
+ 'uninstall',
48
+ 'unlink',
49
+ 'up',
50
+ 'update',
51
+ 'upgrade',
52
+ 'why',
53
+ ];
54
+ export const resolve = (_binary, args, { manifest }) => {
55
+ const scripts = manifest.scripts ? Object.keys(manifest.scripts) : [];
56
+ const parsed = parseArgs(args, { alias: { recursive: 'r' }, boolean: ['recursive'] });
57
+ const [command, binary] = parsed._;
58
+ if (scripts.includes(command) || commands.includes(command))
59
+ return [];
60
+ if (command === 'exec')
61
+ return [toBinary(binary)];
62
+ return command ? [toBinary(command)] : [];
63
+ };
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,11 @@
1
+ import parseArgs from 'minimist';
2
+ import { compact } from '../../util/array.js';
3
+ import { toBinary, tryResolveSpecifiers } from '../util.js';
4
+ export const resolve = (binary, args, { cwd, fromArgs }) => {
5
+ const safeArgs = args.filter(arg => arg !== '--watch');
6
+ const parsed = parseArgs(safeArgs, { alias: { plugin: 'p' } });
7
+ const watchers = parsed.watch ? fromArgs(Object.values(parsed.watch)) : [];
8
+ const plugins = parsed.plugin ? tryResolveSpecifiers(cwd, [parsed.plugin].flat()) : [];
9
+ const configPlugins = parsed.configPlugin ? tryResolveSpecifiers(cwd, [parsed.configPlugin].flat()) : [];
10
+ return compact([toBinary(binary), ...watchers, ...plugins, ...configPlugins]);
11
+ };
@@ -0,0 +1,2 @@
1
+ import type { Resolver } from '../types.js';
2
+ export declare const resolve: Resolver;
@@ -0,0 +1,48 @@
1
+ import parseArgs from 'minimist';
2
+ import { toBinary } from '../util.js';
3
+ const commands = [
4
+ 'add',
5
+ 'bin',
6
+ 'cache',
7
+ 'config',
8
+ 'constraints',
9
+ 'dedupe',
10
+ 'dlx',
11
+ 'explain',
12
+ 'info',
13
+ 'init',
14
+ 'install',
15
+ 'link',
16
+ 'pack',
17
+ 'patch-commit',
18
+ 'patch',
19
+ 'plugin',
20
+ 'rebuild',
21
+ 'remove',
22
+ 'search',
23
+ 'set',
24
+ 'stage',
25
+ 'unlink',
26
+ 'unplug',
27
+ 'up',
28
+ 'upgrade-interactive',
29
+ 'upgrade',
30
+ 'version',
31
+ 'why',
32
+ 'workspace',
33
+ 'workspaces',
34
+ ];
35
+ export const resolve = (_binary, args, { manifest, fromArgs }) => {
36
+ const scripts = manifest.scripts ? Object.keys(manifest.scripts) : [];
37
+ const parsed = parseArgs(args, {});
38
+ const [command, binary] = parsed._;
39
+ if (scripts.includes(command) || commands.includes(command))
40
+ return [];
41
+ if (command === 'run' && scripts.includes(binary))
42
+ return [];
43
+ if (command === 'run' || command === 'exec')
44
+ return [toBinary(binary)];
45
+ if (command === 'node')
46
+ return fromArgs(parsed._);
47
+ return command ? [toBinary(command)] : [];
48
+ };
@@ -0,0 +1,15 @@
1
+ /// <reference types="npmcli__package-json" />
2
+ import type { PackageJson } from '@npmcli/package-json';
3
+ type Options = {
4
+ cwd?: string;
5
+ manifest?: PackageJson;
6
+ knownGlobalsOnly?: boolean;
7
+ };
8
+ export type GetDependenciesFromScripts = (npmScripts: string | string[] | Set<string>, options?: Options) => string[];
9
+ type FromArgs = (args: string[]) => string[];
10
+ export type Resolver = (binary: string, args: string[], options: {
11
+ cwd: string;
12
+ manifest: PackageJson;
13
+ fromArgs: FromArgs;
14
+ }) => string[];
15
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export declare const tryResolveFilePath: (cwd: string, specifier: string, acceptModuleSpecifier?: boolean) => string | undefined;
2
+ export declare const tryResolveSpecifiers: (cwd: string, specifiers: string[]) => (string | undefined)[];
3
+ export declare const toBinary: (specifier: string) => string;
4
+ export declare const fromBinary: (specifier: string) => string;
5
+ export declare const isBinary: (specifier: string) => boolean;
6
+ export declare const stripVersionFromSpecifier: (specifier: string) => string;
7
+ export declare const stripBinaryPath: (command: string) => string;
8
+ export declare const argsFrom: (args: string[], from: string) => string[];
@@ -0,0 +1,33 @@
1
+ import { getPackageNameFromFilePath, getPackageNameFromModuleSpecifier } from '../util/modules.js';
2
+ import { isInNodeModules, join } from '../util/path.js';
3
+ import { _tryResolve } from '../util/require.js';
4
+ export const tryResolveFilePath = (cwd, specifier, acceptModuleSpecifier) => {
5
+ if (specifier) {
6
+ const filePath = join(cwd, specifier);
7
+ if (!isInNodeModules(filePath)) {
8
+ const resolvedFilePath = _tryResolve(filePath, cwd);
9
+ if (resolvedFilePath) {
10
+ return resolvedFilePath;
11
+ }
12
+ else if (acceptModuleSpecifier) {
13
+ return getPackageNameFromModuleSpecifier(specifier);
14
+ }
15
+ }
16
+ else if (specifier.includes('node_modules/.bin')) {
17
+ return toBinary(stripBinaryPath(specifier));
18
+ }
19
+ else {
20
+ return getPackageNameFromFilePath(specifier);
21
+ }
22
+ }
23
+ };
24
+ export const tryResolveSpecifiers = (cwd, specifiers) => specifiers.map(specifier => tryResolveFilePath(cwd, specifier, true));
25
+ export const toBinary = (specifier) => specifier.replace(/^(bin:)?/, 'bin:');
26
+ export const fromBinary = (specifier) => specifier.replace(/^(bin:)?/, '');
27
+ export const isBinary = (specifier) => specifier.startsWith('bin:');
28
+ export const stripVersionFromSpecifier = (specifier) => specifier.replace(/(\S+)@.*/, '$1');
29
+ const stripNodeModulesFromPath = (command) => command.replace(/^(\.\/)?node_modules\//, '');
30
+ export const stripBinaryPath = (command) => stripVersionFromSpecifier(stripNodeModulesFromPath(command)
31
+ .replace(/^(\.bin\/)/, '')
32
+ .replace(/\$\(npm bin\)\/(\w+)/, '$1'));
33
+ export const argsFrom = (args, from) => args.slice(args.indexOf(from));
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import './util/register.js';
package/dist/cli.js ADDED
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env node
2
+ import './util/register.js';
3
+ import prettyMilliseconds from 'pretty-ms';
4
+ import parsedArgValues, { helpText } from './util/cli-arguments.js';
5
+ import { isKnownError, getKnownError, isConfigurationError, hasCause } from './util/errors.js';
6
+ import { cwd } from './util/path.js';
7
+ import { Performance } from './util/Performance.js';
8
+ import { runPreprocessors, runReporters } from './util/reporter.js';
9
+ import { version } from './version.js';
10
+ import { main } from './index.js';
11
+ const { debug: isDebug = false, help: isHelp, 'max-issues': maxIssues = '0', 'no-config-hints': noConfigHints = false, 'no-exit-code': noExitCode = false, 'no-gitignore': isNoGitIgnore = false, 'no-progress': isNoProgress = false, 'ignore-internal': isIgnoreInternal = false, 'include-entry-exports': isIncludeEntryExports = false, performance: isObservePerf = false, production: isProduction = false, 'reporter-options': reporterOptions = '', strict: isStrict = false, tsConfig, version: isVersion, } = parsedArgValues;
12
+ if (isHelp) {
13
+ console.log(helpText);
14
+ process.exit(0);
15
+ }
16
+ if (isVersion) {
17
+ console.log(version);
18
+ process.exit(0);
19
+ }
20
+ const isShowProgress = !isDebug && isNoProgress === false && process.stdout.isTTY && typeof process.stdout.cursorTo === 'function';
21
+ const run = async () => {
22
+ try {
23
+ const perfObserver = new Performance(isObservePerf);
24
+ const { report, issues, counters, rules, configurationHints } = await main({
25
+ cwd,
26
+ tsConfigFile: tsConfig,
27
+ gitignore: !isNoGitIgnore,
28
+ isProduction,
29
+ isStrict,
30
+ isIgnoreInternal,
31
+ isShowProgress,
32
+ isIncludeEntryExports,
33
+ });
34
+ const initialData = {
35
+ report,
36
+ issues,
37
+ configurationHints,
38
+ noConfigHints,
39
+ cwd,
40
+ isProduction,
41
+ isShowProgress,
42
+ options: reporterOptions,
43
+ };
44
+ const finalData = await runPreprocessors(initialData);
45
+ await runReporters(finalData);
46
+ const totalErrorCount = Object.keys(report)
47
+ .filter(reportGroup => report[reportGroup] && rules[reportGroup] === 'error')
48
+ .reduce((errorCount, reportGroup) => errorCount + counters[reportGroup], 0);
49
+ if (isObservePerf) {
50
+ await perfObserver.finalize();
51
+ console.log('\n' + perfObserver.getTable());
52
+ console.log('\nTotal running time:', prettyMilliseconds(perfObserver.getTotalTime()));
53
+ perfObserver.reset();
54
+ }
55
+ if (!noExitCode && totalErrorCount > Number(maxIssues)) {
56
+ process.exit(totalErrorCount);
57
+ }
58
+ }
59
+ catch (error) {
60
+ if (error instanceof Error && isKnownError(error)) {
61
+ const knownError = getKnownError(error);
62
+ console.error(knownError.message);
63
+ if (hasCause(knownError))
64
+ console.error('Reason:', knownError.cause.message);
65
+ if (isConfigurationError(knownError))
66
+ console.log('\n' + helpText);
67
+ process.exit(1);
68
+ }
69
+ throw error;
70
+ }
71
+ };
72
+ await run();
@@ -0,0 +1,12 @@
1
+ import type { IssueType } from './types/issues.js';
2
+ export declare const ROOT_WORKSPACE_NAME = ".";
3
+ export declare const KNIP_CONFIG_LOCATIONS: string[];
4
+ export declare const DEFAULT_EXTENSIONS: string[];
5
+ export declare const TEST_FILE_PATTERNS: string[];
6
+ export declare const GLOBAL_IGNORE_PATTERNS: string[];
7
+ export declare const IGNORED_GLOBAL_BINARIES: string[];
8
+ export declare const IGNORED_DEPENDENCIES: string[];
9
+ export declare const IGNORED_FILE_EXTENSIONS: string[];
10
+ export declare const IGNORE_DEFINITELY_TYPED: string[];
11
+ export declare const ISSUE_TYPES: IssueType[];
12
+ export declare const ISSUE_TYPE_TITLE: Record<IssueType, string>;
@@ -0,0 +1,90 @@
1
+ export const ROOT_WORKSPACE_NAME = '.';
2
+ export const KNIP_CONFIG_LOCATIONS = ['knip.json', 'knip.jsonc', '.knip.json', '.knip.jsonc', 'knip.ts', 'knip.js'];
3
+ export const DEFAULT_EXTENSIONS = ['.js', '.mjs', '.cjs', '.jsx', '.ts', '.tsx', '.mts', '.cts'];
4
+ export const TEST_FILE_PATTERNS = [
5
+ '**/*{.,-}{test,spec}.{js,jsx,ts,tsx,mjs,cjs}',
6
+ '**/{test,__tests__}/**/*.{js,jsx,ts,tsx,mjs,cjs}',
7
+ ];
8
+ export const GLOBAL_IGNORE_PATTERNS = ['**/node_modules/**', '.yarn'];
9
+ export const IGNORED_GLOBAL_BINARIES = [
10
+ 'bash',
11
+ 'bun',
12
+ 'cat',
13
+ 'cd',
14
+ 'chmod',
15
+ 'cp',
16
+ 'deno',
17
+ 'dirname',
18
+ 'echo',
19
+ 'exec',
20
+ 'exit',
21
+ 'git',
22
+ 'grep',
23
+ 'mkdir',
24
+ 'mv',
25
+ 'node',
26
+ 'npm',
27
+ 'npx',
28
+ 'pnpm',
29
+ 'pnpx',
30
+ 'rm',
31
+ 'sh',
32
+ 'sudo',
33
+ 'test',
34
+ 'true',
35
+ 'yarn',
36
+ ];
37
+ export const IGNORED_DEPENDENCIES = ['knip', 'typescript'];
38
+ export const IGNORED_FILE_EXTENSIONS = [
39
+ '.avif',
40
+ '.css',
41
+ '.eot',
42
+ '.gif',
43
+ '.ico',
44
+ '.jpeg',
45
+ '.jpg',
46
+ '.less',
47
+ '.png',
48
+ '.sass',
49
+ '.scss',
50
+ '.svg',
51
+ '.ttf',
52
+ '.webp',
53
+ '.woff',
54
+ '.woff2',
55
+ '.yaml',
56
+ '.yml',
57
+ ];
58
+ export const IGNORE_DEFINITELY_TYPED = ['node'];
59
+ export const ISSUE_TYPES = [
60
+ 'files',
61
+ 'dependencies',
62
+ 'devDependencies',
63
+ 'optionalPeerDependencies',
64
+ 'unlisted',
65
+ 'binaries',
66
+ 'unresolved',
67
+ 'exports',
68
+ 'nsExports',
69
+ 'types',
70
+ 'nsTypes',
71
+ 'enumMembers',
72
+ 'classMembers',
73
+ 'duplicates',
74
+ ];
75
+ export const ISSUE_TYPE_TITLE = {
76
+ files: 'Unused files',
77
+ dependencies: 'Unused dependencies',
78
+ devDependencies: 'Unused devDependencies',
79
+ optionalPeerDependencies: 'Referenced optional peerDependencies',
80
+ unlisted: 'Unlisted dependencies',
81
+ binaries: 'Unlisted binaries',
82
+ unresolved: 'Unresolved imports',
83
+ exports: 'Unused exports',
84
+ nsExports: 'Unused exports in namespaces',
85
+ types: 'Unused exported types',
86
+ nsTypes: 'Unused exported types in namespaces',
87
+ enumMembers: 'Unused exported enum members',
88
+ classMembers: 'Unused exported class members',
89
+ duplicates: 'Duplicate exports',
90
+ };
@@ -0,0 +1,10 @@
1
+ import type { CommandLineOptions } from './types/cli.js';
2
+ export type { RawConfiguration as KnipConfig } from './types/config.js';
3
+ export type { Preprocessor, Reporter, ReporterOptions } from './types/issues.js';
4
+ export declare const main: (unresolvedConfiguration: CommandLineOptions) => Promise<{
5
+ report: import("./types/issues.js").Report;
6
+ issues: import("./types/issues.js").Issues;
7
+ counters: import("./types/issues.js").Counters;
8
+ rules: import("./types/issues.js").Rules;
9
+ configurationHints: Set<import("./types/issues.js").ConfigurationHint>;
10
+ }>;