knip 2.29.0 → 2.30.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.
@@ -13,6 +13,7 @@ export declare class DependencyDeputy {
13
13
  referencedBinaries: Map<string, Set<string>>;
14
14
  hostDependencies: Map<string, HostDependencies>;
15
15
  installedBinaries: Map<string, InstalledBinaries>;
16
+ hasTypesIncluded: Map<string, Set<string>>;
16
17
  ignoreBinaries: string[];
17
18
  ignoreDependencies: string[];
18
19
  constructor({ isStrict }: Options);
@@ -42,6 +43,8 @@ export declare class DependencyDeputy {
42
43
  getDevDependencies(workspaceName: string): string[];
43
44
  setInstalledBinaries(workspaceName: string, installedBinaries: Map<string, Set<string>>): void;
44
45
  getInstalledBinaries(workspaceName: string): InstalledBinaries | undefined;
46
+ setHasTypesIncluded(workspaceName: string, hasTypesIncluded: Set<string>): void;
47
+ getHasTypesIncluded(workspaceName: string): InstalledBinaries | undefined;
45
48
  addReferencedDependency(workspaceName: string, packageName: string): void;
46
49
  addReferencedBinary(workspaceName: string, binaryName: string): void;
47
50
  addHostDependencies(workspaceName: string, hostDependencies: HostDependencies): void;
@@ -8,6 +8,7 @@ export class DependencyDeputy {
8
8
  referencedBinaries;
9
9
  hostDependencies;
10
10
  installedBinaries;
11
+ hasTypesIncluded;
11
12
  ignoreBinaries = [];
12
13
  ignoreDependencies = [];
13
14
  constructor({ isStrict }) {
@@ -16,6 +17,7 @@ export class DependencyDeputy {
16
17
  this.referencedBinaries = new Map();
17
18
  this.hostDependencies = new Map();
18
19
  this.installedBinaries = new Map();
20
+ this.hasTypesIncluded = new Map();
19
21
  }
20
22
  addWorkspace({ name, dir, manifestPath, manifest, ignoreDependencies, ignoreBinaries, }) {
21
23
  const scripts = Object.values(manifest.scripts ?? {});
@@ -67,6 +69,12 @@ export class DependencyDeputy {
67
69
  getInstalledBinaries(workspaceName) {
68
70
  return this.installedBinaries.get(workspaceName);
69
71
  }
72
+ setHasTypesIncluded(workspaceName, hasTypesIncluded) {
73
+ this.hasTypesIncluded.set(workspaceName, hasTypesIncluded);
74
+ }
75
+ getHasTypesIncluded(workspaceName) {
76
+ return this.installedBinaries.get(workspaceName);
77
+ }
70
78
  addReferencedDependency(workspaceName, packageName) {
71
79
  if (!this.referencedDependencies.has(workspaceName)) {
72
80
  this.referencedDependencies.set(workspaceName, new Set());
@@ -155,6 +163,7 @@ export class DependencyDeputy {
155
163
  for (const [workspaceName, { manifestPath, ignoreDependencies, ignoreBinaries }] of this._manifests.entries()) {
156
164
  const referencedDependencies = this.referencedDependencies.get(workspaceName);
157
165
  const installedBinaries = this.getInstalledBinaries(workspaceName);
166
+ const hasTypesIncluded = this.getHasTypesIncluded(workspaceName);
158
167
  const ignoreBins = [...IGNORED_GLOBAL_BINARIES, ...this.ignoreBinaries, ...ignoreBinaries];
159
168
  const ignoreDeps = [...IGNORED_DEPENDENCIES, ...this.ignoreDependencies, ...ignoreDependencies];
160
169
  const isNotIgnoredDependency = (packageName) => !ignoreDeps.includes(packageName);
@@ -176,6 +185,8 @@ export class DependencyDeputy {
176
185
  return false;
177
186
  const [scope, typedDependency] = dependency.split('/');
178
187
  if (scope === '@types') {
188
+ if (hasTypesIncluded?.has(typedDependency))
189
+ return false;
179
190
  const typedPackageName = getPackageFromDefinitelyTyped(typedDependency);
180
191
  if (IGNORE_DEFINITELY_TYPED.includes(typedPackageName))
181
192
  return true;
@@ -30,6 +30,7 @@ export declare class WorkspaceWorker {
30
30
  referencedDependencies: ReferencedDependencies;
31
31
  hostDependencies: HostDependencies;
32
32
  installedBinaries: InstalledBinaries;
33
+ hasTypesIncluded: Set<string>;
33
34
  constructor({ name, dir, cwd, config, manifest, isProduction, isStrict, rootIgnore, negatedWorkspacePatterns, enabledPluginsInAncestors, }: WorkspaceManagerOptions);
34
35
  init(): Promise<void>;
35
36
  private setEnabledPlugins;
@@ -50,6 +51,7 @@ export declare class WorkspaceWorker {
50
51
  hostDependencies: HostDependencies;
51
52
  installedBinaries: InstalledBinaries;
52
53
  referencedDependencies: ReferencedDependencies;
54
+ hasTypesIncluded: Set<string>;
53
55
  enabledPlugins: ("angular" | "ava" | "babel" | "capacitor" | "changesets" | "commitizen" | "commitlint" | "cspell" | "cypress" | "eslint" | "gatsby" | "husky" | "jest" | "lefthook" | "markdownlint" | "mocha" | "next" | "nx" | "nyc" | "playwright" | "postcss" | "prettier" | "remark" | "remix" | "rollup" | "sentry" | "storybook" | "stryker" | "stylelint" | "tailwind" | "typedoc" | "typescript" | "vite" | "vitest" | "webpack" | "drizzle" | "githubActions" | "lintStaged" | "npmPackageJsonLint" | "playwrightCt" | "releaseIt" | "semanticRelease" | "svelte")[];
54
56
  }>;
55
57
  }
@@ -22,6 +22,7 @@ export class WorkspaceWorker {
22
22
  referencedDependencies = new Set();
23
23
  hostDependencies = new Map();
24
24
  installedBinaries = new Map();
25
+ hasTypesIncluded = new Set();
25
26
  constructor({ name, dir, cwd, config, manifest, isProduction, isStrict, rootIgnore, negatedWorkspacePatterns, enabledPluginsInAncestors, }) {
26
27
  this.name = name;
27
28
  this.dir = dir;
@@ -59,7 +60,7 @@ export class WorkspaceWorker {
59
60
  debugLogObject(`Enabled plugins (${this.name})`, enabledPluginNames);
60
61
  }
61
62
  async initReferencedDependencies() {
62
- const { dependencies, hostDependencies, installedBinaries } = await npm.findDependencies({
63
+ const { dependencies, hostDependencies, installedBinaries, hasTypesIncluded } = await npm.findDependencies({
63
64
  manifest: this.manifest,
64
65
  isProduction: this.isProduction,
65
66
  isStrict: this.isStrict,
@@ -70,6 +71,7 @@ export class WorkspaceWorker {
70
71
  dependencies.forEach(dependency => this.referencedDependencies.add([filePath, dependency]));
71
72
  this.hostDependencies = hostDependencies;
72
73
  this.installedBinaries = installedBinaries;
74
+ this.hasTypesIncluded = hasTypesIncluded;
73
75
  }
74
76
  getConfigForPlugin(pluginName) {
75
77
  return this.config[pluginName] ?? { config: null, entry: null, project: null };
@@ -238,6 +240,7 @@ export class WorkspaceWorker {
238
240
  hostDependencies: this.hostDependencies,
239
241
  installedBinaries: this.installedBinaries,
240
242
  referencedDependencies: this.referencedDependencies,
243
+ hasTypesIncluded: this.hasTypesIncluded,
241
244
  enabledPlugins: this.enabledPlugins,
242
245
  };
243
246
  }
package/dist/index.js CHANGED
@@ -168,9 +168,10 @@ export const main = async (unresolvedConfiguration) => {
168
168
  if (chief.resolvedConfigFilePath)
169
169
  principal.addEntryPath(chief.resolvedConfigFilePath, { skipExportsAnalysis: true });
170
170
  const dependencies = await worker.findAllDependencies();
171
- const { referencedDependencies, hostDependencies, installedBinaries, enabledPlugins } = dependencies;
171
+ const { referencedDependencies, hostDependencies, installedBinaries, enabledPlugins, hasTypesIncluded } = dependencies;
172
172
  deputy.addHostDependencies(name, hostDependencies);
173
173
  deputy.setInstalledBinaries(name, installedBinaries);
174
+ deputy.setHasTypesIncluded(name, hasTypesIncluded);
174
175
  enabledPluginsStore.set(name, enabledPlugins);
175
176
  referencedDependencies.forEach(([containingFilePath, specifier]) => {
176
177
  handleReferencedDependency({ specifier, containingFilePath, principal, workspace });
@@ -12,5 +12,6 @@ export declare const findDependencies: ({ manifest, isProduction, isStrict, dir,
12
12
  dependencies: string[];
13
13
  hostDependencies: HostDependencies;
14
14
  installedBinaries: InstalledBinaries;
15
+ hasTypesIncluded: Set<string>;
15
16
  }>;
16
17
  export {};
@@ -1,4 +1,5 @@
1
1
  import { _getDependenciesFromScripts } from '../binaries/index.js';
2
+ import { isDefinitelyTyped } from '../util/modules.js';
2
3
  import { timerify } from '../util/Performance.js';
3
4
  import { getPackageManifest } from './helpers.js';
4
5
  const findManifestDependencies = async ({ manifest, isProduction, isStrict, dir, cwd }) => {
@@ -12,6 +13,7 @@ const findManifestDependencies = async ({ manifest, isProduction, isStrict, dir,
12
13
  }, []);
13
14
  const dependencies = _getDependenciesFromScripts(scripts, { cwd: dir, manifest });
14
15
  const installedBinaries = new Map();
16
+ const hasTypesIncluded = new Set();
15
17
  const packageNames = [
16
18
  ...Object.keys(manifest.dependencies ?? {}),
17
19
  ...(isStrict ? Object.keys(manifest.peerDependencies ?? {}) : []),
@@ -45,12 +47,15 @@ const findManifestDependencies = async ({ manifest, isProduction, isStrict, dir,
45
47
  hostDependencies.set(packagePeerDependency, new Set([packageName]));
46
48
  }
47
49
  });
50
+ if (!isDefinitelyTyped(packageName) && (manifest.types || manifest.typings))
51
+ hasTypesIncluded.add(packageName);
48
52
  }
49
53
  }
50
54
  return {
51
55
  dependencies,
52
56
  hostDependencies,
53
57
  installedBinaries,
58
+ hasTypesIncluded,
54
59
  };
55
60
  };
56
61
  export const findDependencies = timerify(findManifestDependencies);
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "2.29.0";
1
+ export declare const version = "2.30.0";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const version = '2.29.0';
1
+ export const version = '2.30.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "knip",
3
- "version": "2.29.0",
3
+ "version": "2.30.0",
4
4
  "description": "Find unused files, dependencies and exports in your TypeScript and JavaScript projects",
5
5
  "homepage": "https://github.com/webpro/knip",
6
6
  "repository": "github:webpro/knip",
@@ -65,12 +65,12 @@
65
65
  "@npmcli/package-json": "5.0.0",
66
66
  "@release-it/bumper": "5.1.0",
67
67
  "@swc/cli": "0.1.62",
68
- "@swc/core": "1.3.89",
68
+ "@swc/core": "1.3.90",
69
69
  "@types/eslint": "8.44.3",
70
70
  "@types/js-yaml": "4.0.6",
71
- "@types/micromatch": "4.0.2",
72
- "@types/minimist": "1.2.2",
73
- "@types/node": "20.6.5",
71
+ "@types/micromatch": "4.0.3",
72
+ "@types/minimist": "1.2.3",
73
+ "@types/node": "20.7.1",
74
74
  "@types/npmcli__map-workspaces": "3.0.2",
75
75
  "@types/webpack": "5.28.3",
76
76
  "@typescript-eslint/eslint-plugin": "6.7.3",
@@ -81,11 +81,11 @@
81
81
  "eslint-plugin-import": "2.28.1",
82
82
  "eslint-plugin-n": "16.1.0",
83
83
  "prettier": "3.0.3",
84
- "release-it": "16.2.0",
84
+ "release-it": "16.2.1",
85
85
  "remark-cli": "11.0.0",
86
86
  "remark-preset-webpro": "0.0.3",
87
87
  "tsx": "3.13.0",
88
- "type-fest": "4.3.1"
88
+ "type-fest": "4.3.2"
89
89
  },
90
90
  "engines": {
91
91
  "node": ">=16.17.0 <17 || >=18.6.0"