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,32 @@
1
+ import ts from 'typescript';
2
+ import { isDefaultImport } from '../../ast-helpers.js';
3
+ import { importVisitor as visit } from '../index.js';
4
+ export default visit(() => true, (node, options) => {
5
+ if (ts.isImportDeclaration(node) && ts.isStringLiteralLike(node.moduleSpecifier)) {
6
+ const specifier = node.moduleSpecifier.text;
7
+ if (!node.importClause) {
8
+ return { specifier };
9
+ }
10
+ else {
11
+ if (node.importClause.isTypeOnly && options.skipTypeOnly)
12
+ return;
13
+ const imports = [];
14
+ if (isDefaultImport(node)) {
15
+ imports.push({ specifier, identifier: 'default' });
16
+ }
17
+ if (node.importClause?.namedBindings) {
18
+ if (ts.isNamespaceImport(node.importClause.namedBindings)) {
19
+ const symbol = node.importClause.namedBindings.symbol;
20
+ imports.push({ symbol, specifier, identifier: '*' });
21
+ }
22
+ if (ts.isNamedImports(node.importClause.namedBindings)) {
23
+ node.importClause.namedBindings.elements.forEach(element => {
24
+ const identifier = (element.propertyName ?? element.name).getText();
25
+ imports.push({ symbol: element.symbol, specifier, identifier });
26
+ });
27
+ }
28
+ }
29
+ return imports;
30
+ }
31
+ }
32
+ });
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => import("../../getImportsAndExports.js").AddImportOptions | import("../../getImportsAndExports.js").AddImportOptions[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import ts from 'typescript';
2
+ import { isNotJS } from '../helpers.js';
3
+ import { importVisitor as visit } from '../index.js';
4
+ export default visit(isNotJS, node => {
5
+ if (ts.isImportEqualsDeclaration(node) &&
6
+ ts.isExternalModuleReference(node.moduleReference) &&
7
+ ts.isStringLiteralLike(node.moduleReference.expression)) {
8
+ const specifier = node.moduleReference.expression.text;
9
+ return { specifier, identifier: 'default' };
10
+ }
11
+ });
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => (((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => import("../../getImportsAndExports.js").AddImportOptions | import("../../getImportsAndExports.js").AddImportOptions[] | undefined) | undefined)[];
3
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import ts from 'typescript';
2
+ import importCall from './importCall.js';
3
+ import importDeclaration from './importDeclaration.js';
4
+ import importEqualsDeclaration from './importEqualsDeclaration.js';
5
+ import jsDocType from './jsDocType.js';
6
+ import reExportDeclaration from './reExportDeclaration.js';
7
+ import requireCall from './requireCall.js';
8
+ import requireResolveCall from './requireResolveCall.js';
9
+ const visitors = [
10
+ importCall,
11
+ importDeclaration,
12
+ importEqualsDeclaration,
13
+ jsDocType,
14
+ reExportDeclaration,
15
+ requireCall,
16
+ requireResolveCall,
17
+ ];
18
+ export default (sourceFile) => visitors.map(v => v(sourceFile));
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => import("../../getImportsAndExports.js").AddImportOptions | import("../../getImportsAndExports.js").AddImportOptions[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import ts from 'typescript';
2
+ import { isValidImportTypeNode } from '../../ast-helpers.js';
3
+ import { importVisitor as visit } from '../index.js';
4
+ export default visit(() => true, node => {
5
+ if ('jsDoc' in node) {
6
+ const type = ts.getJSDocType(node);
7
+ if (type && isValidImportTypeNode(type)) {
8
+ return { specifier: type.argument.literal.text };
9
+ }
10
+ }
11
+ });
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => import("../../getImportsAndExports.js").AddImportOptions | import("../../getImportsAndExports.js").AddImportOptions[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,21 @@
1
+ import ts from 'typescript';
2
+ import { importVisitor as visit } from '../index.js';
3
+ export default visit(() => true, node => {
4
+ if (ts.isExportDeclaration(node)) {
5
+ if (node.moduleSpecifier && ts.isStringLiteralLike(node.moduleSpecifier)) {
6
+ if (!node.exportClause) {
7
+ return { identifier: '*', specifier: node.moduleSpecifier.text, isReExport: true };
8
+ }
9
+ else if (node.exportClause.kind === ts.SyntaxKind.NamespaceExport) {
10
+ return { identifier: '*', specifier: node.moduleSpecifier.text, isReExport: true };
11
+ }
12
+ else {
13
+ const specifier = node.moduleSpecifier;
14
+ return node.exportClause.elements.map(element => {
15
+ const identifier = (element.propertyName ?? element.name).getText();
16
+ return { identifier, specifier: specifier.text, isReExport: true };
17
+ });
18
+ }
19
+ }
20
+ }
21
+ });
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => import("../../getImportsAndExports.js").AddImportOptions | import("../../getImportsAndExports.js").AddImportOptions[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,45 @@
1
+ import ts from 'typescript';
2
+ import { isRequireCall, findAncestor, findDescendants } from '../../ast-helpers.js';
3
+ import { importVisitor as visit } from '../index.js';
4
+ export default visit(() => true, node => {
5
+ if (isRequireCall(node)) {
6
+ if (ts.isStringLiteralLike(node.arguments[0])) {
7
+ const specifier = node.arguments[0].text;
8
+ if (specifier) {
9
+ const propertyAccessExpression = findAncestor(node, _node => {
10
+ if (ts.isExpressionStatement(_node) || ts.isCallExpression(_node))
11
+ return 'STOP';
12
+ return ts.isPropertyAccessExpression(_node);
13
+ });
14
+ if (propertyAccessExpression) {
15
+ const identifier = String(propertyAccessExpression.name.escapedText);
16
+ return { identifier, specifier };
17
+ }
18
+ else {
19
+ const variableDeclaration = node.parent;
20
+ if (ts.isVariableDeclaration(variableDeclaration) &&
21
+ ts.isVariableDeclarationList(variableDeclaration.parent)) {
22
+ if (ts.isIdentifier(variableDeclaration.name)) {
23
+ return { identifier: 'default', specifier };
24
+ }
25
+ else {
26
+ const bindings = findDescendants(variableDeclaration, ts.isBindingElement);
27
+ if (bindings.length > 0) {
28
+ return bindings.map(element => {
29
+ const identifier = (element.propertyName ?? element.name).getText();
30
+ return { identifier, specifier };
31
+ });
32
+ }
33
+ else {
34
+ return { identifier: 'default', specifier };
35
+ }
36
+ }
37
+ }
38
+ else {
39
+ return { identifier: 'default', specifier };
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ });
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => import("../../getImportsAndExports.js").AddImportOptions | import("../../getImportsAndExports.js").AddImportOptions[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import ts from 'typescript';
2
+ import { isRequireResolveCall } from '../../ast-helpers.js';
3
+ import { importVisitor as visit } from '../index.js';
4
+ export default visit(() => true, node => {
5
+ if (isRequireResolveCall(node)) {
6
+ if (node.arguments[0] && ts.isStringLiteralLike(node.arguments[0])) {
7
+ const specifier = node.arguments[0].text;
8
+ if (specifier)
9
+ return { specifier };
10
+ }
11
+ }
12
+ });
@@ -0,0 +1,10 @@
1
+ import ts from 'typescript';
2
+ import type { GetImportsAndExportsOptions, AddExportOptions, AddImportOptions } from '../getImportsAndExports.js';
3
+ type FileCondition = (sourceFile: ts.SourceFile) => boolean;
4
+ type VisitorFactory<T> = (fileCondition: FileCondition, fn: Visitor<T>) => VisitorCondition<T>;
5
+ type VisitorCondition<T> = (sourceFile: ts.SourceFile) => undefined | Visitor<T>;
6
+ type Visitor<T> = (node: ts.Node, options: GetImportsAndExportsOptions) => undefined | T | T[];
7
+ export declare const importVisitor: VisitorFactory<AddImportOptions>;
8
+ export declare const exportVisitor: VisitorFactory<AddExportOptions>;
9
+ export declare const scriptVisitor: VisitorFactory<string>;
10
+ export {};
@@ -0,0 +1,16 @@
1
+ import ts from 'typescript';
2
+ export const importVisitor = (fileCondition, visitorFn) => sourceFile => {
3
+ if (fileCondition(sourceFile)) {
4
+ return (node, options) => visitorFn(node, options);
5
+ }
6
+ };
7
+ export const exportVisitor = (fileCondition, visitorFn) => sourceFile => {
8
+ if (fileCondition(sourceFile)) {
9
+ return (node, options) => visitorFn(node, options);
10
+ }
11
+ };
12
+ export const scriptVisitor = (fileCondition, visitorFn) => sourceFile => {
13
+ if (fileCondition(sourceFile)) {
14
+ return (node, options) => visitorFn(node, options);
15
+ }
16
+ };
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => string | string[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import ts from 'typescript';
2
+ import { stripQuotes } from '../../ast-helpers.js';
3
+ import { scriptVisitor as visit } from '../index.js';
4
+ export default visit(sourceFile => sourceFile.statements.some(statementImportsExeca$), node => {
5
+ if (ts.isTaggedTemplateExpression(node)) {
6
+ if (node.tag.getText() === '$' || (ts.isCallExpression(node.tag) && node.tag.expression.getText() === '$')) {
7
+ return stripQuotes(node.template.getText());
8
+ }
9
+ }
10
+ });
11
+ function statementImportsExeca$(node) {
12
+ return (ts.isImportDeclaration(node) &&
13
+ ts.isStringLiteral(node.moduleSpecifier) &&
14
+ node.moduleSpecifier.text === 'execa' &&
15
+ !!node.importClause?.namedBindings &&
16
+ ts.isNamedImports(node.importClause.namedBindings) &&
17
+ node.importClause.namedBindings.elements.some(element => element.name.text === '$'));
18
+ }
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => (((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => string | string[] | undefined) | undefined)[];
3
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import ts from 'typescript';
2
+ import execa from './execa.js';
3
+ import zx from './zx.js';
4
+ const visitors = [execa, zx];
5
+ export default (sourceFile) => visitors.map(v => v(sourceFile));
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../getImportsAndExports.js").GetImportsAndExportsOptions) => string | string[] | undefined) | undefined;
3
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import ts from 'typescript';
2
+ import { stripQuotes } from '../../ast-helpers.js';
3
+ import { scriptVisitor as visit } from '../index.js';
4
+ export default visit(sourceFile => ts.getShebang(sourceFile.text) === '#!/usr/bin/env zx', node => {
5
+ if (ts.isTaggedTemplateExpression(node) && node.tag.getText() === '$') {
6
+ return stripQuotes(node.template.getText());
7
+ }
8
+ });
@@ -0,0 +1,23 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { PerformanceObserver, PerformanceEntry } from 'node:perf_hooks';
3
+ import type { TimerifyOptions } from 'node:perf_hooks';
4
+ type Timerify = <T extends (...params: any[]) => any>(fn: T, options?: TimerifyOptions) => T;
5
+ export declare const timerify: Timerify;
6
+ export declare class Performance {
7
+ isEnabled: boolean;
8
+ startTime: number;
9
+ endTime: number;
10
+ entries: PerformanceEntry[];
11
+ instanceId?: number;
12
+ observer?: PerformanceObserver;
13
+ constructor(isEnabled: boolean);
14
+ private setMark;
15
+ private clearMark;
16
+ private flush;
17
+ private getEntriesByName;
18
+ getTable(): string;
19
+ getTotalTime(): number;
20
+ finalize(): Promise<void>;
21
+ reset(): void;
22
+ }
23
+ export {};
@@ -0,0 +1,80 @@
1
+ import { performance, PerformanceObserver, PerformanceEntry } from 'node:perf_hooks';
2
+ import EasyTable from 'easy-table';
3
+ import Summary from 'summary';
4
+ import parsedArgValues from './cli-arguments.js';
5
+ const { performance: isEnabled = false } = parsedArgValues;
6
+ export const timerify = fn => (isEnabled ? performance.timerify(fn) : fn);
7
+ export class Performance {
8
+ isEnabled;
9
+ startTime = 0;
10
+ endTime = 0;
11
+ entries = [];
12
+ instanceId;
13
+ observer;
14
+ constructor(isEnabled) {
15
+ if (isEnabled) {
16
+ this.startTime = performance.now();
17
+ this.instanceId = Math.floor(performance.now() * 100);
18
+ this.observer = new PerformanceObserver(items => {
19
+ items.getEntries().forEach(entry => {
20
+ this.entries.push(entry);
21
+ });
22
+ });
23
+ this.observer.observe({ entryTypes: ['function'] });
24
+ }
25
+ this.isEnabled = isEnabled;
26
+ }
27
+ setMark(name) {
28
+ const id = `${this.instanceId}:${name}`;
29
+ performance.mark(`${id}:start`);
30
+ }
31
+ clearMark(name) {
32
+ const id = `${this.instanceId}:${name}`;
33
+ performance.mark(`${id}:end`);
34
+ performance.measure(id, `${id}:start`, `${id}:end`);
35
+ performance.clearMarks(`${id}:start`);
36
+ performance.clearMarks(`${id}:end`);
37
+ }
38
+ async flush() {
39
+ this.setMark('_flush');
40
+ await new Promise(resolve => setTimeout(resolve, 1));
41
+ this.clearMark('_flush');
42
+ }
43
+ getEntriesByName() {
44
+ return this.entries.reduce((entries, entry) => {
45
+ const name = entry.name.replace(`${this.instanceId}:`, '');
46
+ entries[name] = entries[name] ?? [];
47
+ entries[name].push(entry.duration);
48
+ return entries;
49
+ }, {});
50
+ }
51
+ getTable() {
52
+ const entriesByName = this.getEntriesByName();
53
+ const table = new EasyTable();
54
+ Object.entries(entriesByName).map(([name, values]) => {
55
+ const stats = new Summary(values);
56
+ table.cell('Name', name);
57
+ table.cell('size', stats.size(), EasyTable.number(0));
58
+ table.cell('min', stats.min(), EasyTable.number(2));
59
+ table.cell('max', stats.max(), EasyTable.number(2));
60
+ table.cell('median', stats.median(), EasyTable.number(2));
61
+ table.cell('sum', stats.sum(), EasyTable.number(2));
62
+ table.newRow();
63
+ });
64
+ table.sort(['sum|des']);
65
+ return table.toString().trim();
66
+ }
67
+ getTotalTime() {
68
+ return this.endTime - this.startTime;
69
+ }
70
+ async finalize() {
71
+ if (!this.isEnabled)
72
+ return;
73
+ this.endTime = performance.now();
74
+ await this.flush();
75
+ }
76
+ reset() {
77
+ this.entries = [];
78
+ this.observer?.disconnect();
79
+ }
80
+ }
@@ -0,0 +1,2 @@
1
+ export declare const compact: <T>(collection: (T | undefined)[]) => T[];
2
+ export declare const arrayify: (value?: string[] | string) => string[];
@@ -0,0 +1,2 @@
1
+ export const compact = (collection) => Array.from(new Set(collection)).filter((value) => Boolean(value));
2
+ export const arrayify = (value) => Array.isArray(value) ? value : typeof value === 'string' ? [value] : [];
@@ -0,0 +1,28 @@
1
+ export declare const helpText = "\u2702\uFE0F Find unused files, dependencies and exports in your JavaScript and TypeScript projects\n\nUsage: knip [options]\n\nOptions:\n -c, --config [file] Configuration file path (default: [.]knip.json[c], knip.js, knip.ts or package.json#knip)\n -t, --tsConfig [file] TypeScript configuration path (default: tsconfig.json)\n --production Analyze only production source files (e.g. no tests, devDependencies, exported types)\n --strict Consider only direct dependencies of workspace (not devDependencies, not other workspaces)\n --ignore-internal Ignore exports with tag @internal (JSDoc/TSDoc)\n -W, --workspace [dir] Analyze a single workspace (default: analyze all configured workspaces)\n --no-gitignore Don't use .gitignore\n --include Report only provided issue type(s), can be comma-separated or repeated (1)\n --exclude Exclude provided issue type(s) from report, can be comma-separated or repeated (1)\n --dependencies Shortcut for --include dependencies,unlisted,unresolved\n --exports Shortcut for --include exports,nsExports,classMembers,types,nsTypes,enumMembers,duplicates\n --include-entry-exports Include entry files when reporting unused exports\n -n, --no-progress Don't show dynamic progress updates (automatically enabled in CI environments)\n --preprocessor Preprocess the results before providing it to the reporter(s), can be repeated\n --reporter Select reporter: symbols, compact, codeowners, json, can be repeated (default: symbols)\n --reporter-options Pass extra options to the reporter (as JSON string, see example)\n --no-config-hints Suppress configuration hints\n --no-exit-code Always exit with code zero (0)\n --max-issues Maximum number of issues before non-zero exit code (default: 0)\n -d, --debug Show debug output\n --debug-file-filter Filter for files in debug output (regex as string)\n --performance Measure count and running time of expensive functions and display stats table\n -h, --help Print this help text\n -V, --version Print version\n\n(1) Issue types: files, dependencies, unlisted, unresolved, exports, nsExports, classMembers, types, nsTypes, enumMembers, duplicates\n\nExamples:\n\n$ knip\n$ knip --production\n$ knip --workspace packages/client --include files,dependencies\n$ knip -c ./config/knip.json --reporter compact\n$ knip --reporter codeowners --reporter-options '{\"path\":\".github/CODEOWNERS\"}'\n$ knip --debug --debug-file-filter '(specific|particular)-module'\n\nMore documentation and bug reports: https://github.com/webpro/knip";
2
+ declare const _default: {
3
+ config: string | undefined;
4
+ debug: boolean | undefined;
5
+ 'debug-file-filter': string | undefined;
6
+ dependencies: boolean | undefined;
7
+ exclude: string[] | undefined;
8
+ exports: boolean | undefined;
9
+ help: boolean | undefined;
10
+ 'ignore-internal': boolean | undefined;
11
+ include: string[] | undefined;
12
+ 'include-entry-exports': boolean | undefined;
13
+ 'max-issues': string | undefined;
14
+ 'no-config-hints': boolean | undefined;
15
+ 'no-exit-code': boolean | undefined;
16
+ 'no-gitignore': boolean | undefined;
17
+ 'no-progress': boolean | undefined;
18
+ performance: boolean | undefined;
19
+ production: boolean | undefined;
20
+ preprocessor: string[] | undefined;
21
+ reporter: string[] | undefined;
22
+ 'reporter-options': string | undefined;
23
+ strict: boolean | undefined;
24
+ tsConfig: string | undefined;
25
+ version: boolean | undefined;
26
+ workspace: string | undefined;
27
+ };
28
+ export default _default;
@@ -0,0 +1,83 @@
1
+ import { parseArgs } from 'node:util';
2
+ export const helpText = `✂️ Find unused files, dependencies and exports in your JavaScript and TypeScript projects
3
+
4
+ Usage: knip [options]
5
+
6
+ Options:
7
+ -c, --config [file] Configuration file path (default: [.]knip.json[c], knip.js, knip.ts or package.json#knip)
8
+ -t, --tsConfig [file] TypeScript configuration path (default: tsconfig.json)
9
+ --production Analyze only production source files (e.g. no tests, devDependencies, exported types)
10
+ --strict Consider only direct dependencies of workspace (not devDependencies, not other workspaces)
11
+ --ignore-internal Ignore exports with tag @internal (JSDoc/TSDoc)
12
+ -W, --workspace [dir] Analyze a single workspace (default: analyze all configured workspaces)
13
+ --no-gitignore Don't use .gitignore
14
+ --include Report only provided issue type(s), can be comma-separated or repeated (1)
15
+ --exclude Exclude provided issue type(s) from report, can be comma-separated or repeated (1)
16
+ --dependencies Shortcut for --include dependencies,unlisted,unresolved
17
+ --exports Shortcut for --include exports,nsExports,classMembers,types,nsTypes,enumMembers,duplicates
18
+ --include-entry-exports Include entry files when reporting unused exports
19
+ -n, --no-progress Don't show dynamic progress updates (automatically enabled in CI environments)
20
+ --preprocessor Preprocess the results before providing it to the reporter(s), can be repeated
21
+ --reporter Select reporter: symbols, compact, codeowners, json, can be repeated (default: symbols)
22
+ --reporter-options Pass extra options to the reporter (as JSON string, see example)
23
+ --no-config-hints Suppress configuration hints
24
+ --no-exit-code Always exit with code zero (0)
25
+ --max-issues Maximum number of issues before non-zero exit code (default: 0)
26
+ -d, --debug Show debug output
27
+ --debug-file-filter Filter for files in debug output (regex as string)
28
+ --performance Measure count and running time of expensive functions and display stats table
29
+ -h, --help Print this help text
30
+ -V, --version Print version
31
+
32
+ (1) Issue types: files, dependencies, unlisted, unresolved, exports, nsExports, classMembers, types, nsTypes, enumMembers, duplicates
33
+
34
+ Examples:
35
+
36
+ $ knip
37
+ $ knip --production
38
+ $ knip --workspace packages/client --include files,dependencies
39
+ $ knip -c ./config/knip.json --reporter compact
40
+ $ knip --reporter codeowners --reporter-options '{"path":".github/CODEOWNERS"}'
41
+ $ knip --debug --debug-file-filter '(specific|particular)-module'
42
+
43
+ More documentation and bug reports: https://github.com/webpro/knip`;
44
+ let parsedArgs;
45
+ try {
46
+ parsedArgs = parseArgs({
47
+ options: {
48
+ config: { type: 'string', short: 'c' },
49
+ debug: { type: 'boolean', short: 'd' },
50
+ 'debug-file-filter': { type: 'string' },
51
+ dependencies: { type: 'boolean' },
52
+ exclude: { type: 'string', multiple: true },
53
+ exports: { type: 'boolean' },
54
+ help: { type: 'boolean', short: 'h' },
55
+ 'ignore-internal': { type: 'boolean' },
56
+ include: { type: 'string', multiple: true },
57
+ 'include-entry-exports': { type: 'boolean' },
58
+ 'max-issues': { type: 'string' },
59
+ 'no-config-hints': { type: 'boolean' },
60
+ 'no-exit-code': { type: 'boolean' },
61
+ 'no-gitignore': { type: 'boolean' },
62
+ 'no-progress': { type: 'boolean', short: 'n' },
63
+ performance: { type: 'boolean' },
64
+ production: { type: 'boolean' },
65
+ preprocessor: { type: 'string', multiple: true },
66
+ reporter: { type: 'string', multiple: true },
67
+ 'reporter-options': { type: 'string' },
68
+ strict: { type: 'boolean' },
69
+ tsConfig: { type: 'string', short: 't' },
70
+ version: { type: 'boolean', short: 'V' },
71
+ workspace: { type: 'string', short: 'W' },
72
+ },
73
+ });
74
+ }
75
+ catch (error) {
76
+ if (error instanceof Error) {
77
+ console.error(error.message);
78
+ console.log('\n' + helpText);
79
+ process.exit(1);
80
+ }
81
+ throw error;
82
+ }
83
+ export default parsedArgs.values;