knip 1.0.0 → 1.0.2

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.
@@ -36,7 +36,6 @@ export default class DependencyDeputy {
36
36
  } | undefined;
37
37
  getProductionDependencies(workspaceName: string): string[];
38
38
  getDevDependencies(workspaceName: string): string[];
39
- getAllDependencies(workspaceName: string): string[];
40
39
  setInstalledBinaries(workspaceName: string, installedBinaries: Map<string, Set<string>>): void;
41
40
  getInstalledBinaries(workspaceName: string): InstalledBinaries | undefined;
42
41
  addTypeScriptConfigPathGlobs(workspaceName: string, paths: Record<string, string[]>): void;
@@ -49,9 +49,6 @@ export default class DependencyDeputy {
49
49
  getDevDependencies(workspaceName) {
50
50
  return this._manifests.get(workspaceName)?.devDependencies ?? [];
51
51
  }
52
- getAllDependencies(workspaceName) {
53
- return this._manifests.get(workspaceName)?.allDependencies ?? [];
54
- }
55
52
  setInstalledBinaries(workspaceName, installedBinaries) {
56
53
  this.installedBinaries.set(workspaceName, installedBinaries);
57
54
  }
@@ -86,6 +83,16 @@ export default class DependencyDeputy {
86
83
  closestWorkspaceNameForTypes && this.addReferencedDependency(closestWorkspaceNameForTypes, typesPackageName);
87
84
  return;
88
85
  }
86
+ for (const name of workspaceNames) {
87
+ const binaries = this.getInstalledBinaries(name);
88
+ if (binaries?.has(moduleSpecifier)) {
89
+ const dependencies = binaries.get(moduleSpecifier);
90
+ if (dependencies?.size) {
91
+ dependencies.forEach(dependency => this.addReferencedDependency(name, dependency));
92
+ return;
93
+ }
94
+ }
95
+ }
89
96
  return moduleSpecifier;
90
97
  }
91
98
  isInternalDependency(workspaceName, moduleSpecifier) {
package/dist/index.js CHANGED
@@ -10,7 +10,6 @@ import { debugLogObject, debugLogFiles } from './util/debug.js';
10
10
  import { _findImportModuleSpecifiers } from './util/find-import-specifiers.js';
11
11
  import { findFile, loadJSON } from './util/fs.js';
12
12
  import { _glob, ensurePosixPath } from './util/glob.js';
13
- import { getPackageNameFromModuleSpecifier } from './util/modules.js';
14
13
  import { _findDuplicateExportedNames } from './util/project.js';
15
14
  import { loadTSConfig } from './util/tsconfig-loader.js';
16
15
  import { byPathDepth } from './util/workspace.js';
@@ -180,38 +179,13 @@ export const main = async (unresolvedConfiguration) => {
180
179
  }
181
180
  }
182
181
  if (report.dependencies || report.unlisted || report.files) {
183
- const workspaceDependencies = deputy.getAllDependencies(name);
184
- const { referencedDependencyIssues, referencedDependencies } = await worker.findDependenciesByPlugins();
185
- for (const packageName of workspaceDependencies) {
186
- if (referencedDependencies.has(packageName)) {
187
- deputy.addReferencedDependency(name, packageName);
188
- }
189
- }
190
- for (const issue of referencedDependencyIssues) {
191
- if (issue.symbol.startsWith('/')) {
192
- collector.referencedFiles.add(issue.symbol);
193
- }
194
- else {
195
- issue.symbol = getPackageNameFromModuleSpecifier(issue.symbol);
196
- if (deputy.isInternalDependency(name, issue.symbol))
197
- continue;
198
- if (workspaceDependencies.includes(issue.symbol))
199
- continue;
200
- if (!isStrict && !isRoot) {
201
- const rootDependencies = deputy.getAllDependencies(ROOT_WORKSPACE_NAME);
202
- if (rootDependencies.includes(issue.symbol)) {
203
- continue;
204
- }
205
- const rootBinaries = deputy.getInstalledBinaries(ROOT_WORKSPACE_NAME);
206
- if (rootBinaries?.has(issue.symbol)) {
207
- const dependencies = rootBinaries.get(issue.symbol);
208
- dependencies?.forEach(dependency => deputy.addReferencedDependency(ROOT_WORKSPACE_NAME, dependency));
209
- continue;
210
- }
211
- }
182
+ const { referencedDependencyIssues } = await worker.findDependenciesByPlugins();
183
+ referencedDependencyIssues.forEach(issue => {
184
+ const workspace = { name, dir, config, ancestors };
185
+ const unlistedDependency = deputy.maybeAddListedReferencedDependency(workspace, issue.symbol);
186
+ if (unlistedDependency)
212
187
  collector.addIssue(issue);
213
- }
214
- }
188
+ });
215
189
  }
216
190
  }
217
191
  }
@@ -1,2 +1,15 @@
1
1
  export declare const resolvePluginName: (pluginName: string) => string;
2
2
  export declare const resolvePresetName: (pluginName: string) => string;
3
+ export declare const api: {
4
+ assertVersion: () => boolean;
5
+ cache: {
6
+ (): undefined;
7
+ forever(): any;
8
+ never(): any;
9
+ using(): any;
10
+ invalidate(): any;
11
+ };
12
+ caller: () => boolean;
13
+ env: () => boolean;
14
+ version: string;
15
+ };
@@ -20,3 +20,15 @@ export const resolvePresetName = (pluginName) => {
20
20
  }
21
21
  return pluginName;
22
22
  };
23
+ const cacheFn = () => void 0;
24
+ cacheFn.forever = () => cacheFn;
25
+ cacheFn.never = () => cacheFn;
26
+ cacheFn.using = () => cacheFn;
27
+ cacheFn.invalidate = () => cacheFn;
28
+ export const api = {
29
+ assertVersion: () => true,
30
+ cache: cacheFn,
31
+ caller: () => true,
32
+ env: () => true,
33
+ version: '0.0.0',
34
+ };
@@ -3,7 +3,7 @@ import { _load } from '../../util/loader.js';
3
3
  import { getPackageName } from '../../util/modules.js';
4
4
  import { timerify } from '../../util/performance.js';
5
5
  import { hasDependency } from '../../util/plugin.js';
6
- import { resolvePresetName, resolvePluginName } from './helpers.js';
6
+ import { resolvePresetName, resolvePluginName, api } from './helpers.js';
7
7
  export const NAME = 'Babel';
8
8
  export const ENABLERS = [/^@babel\//];
9
9
  export const isEnabled = ({ dependencies }) => hasDependency(dependencies, ENABLERS);
@@ -15,12 +15,10 @@ export const CONFIG_FILE_PATTERNS = [
15
15
  '.babelrc',
16
16
  'package.json',
17
17
  ];
18
- const api = {
19
- caller: () => true,
20
- };
18
+ const getItemName = (value) => typeof value === 'string' ? [value] : Array.isArray(value) ? [value[0]] : [];
21
19
  export const getDependenciesFromConfig = (config) => {
22
- const presets = config.presets?.map(preset => (typeof preset === 'string' ? preset : preset[0])).map(resolvePresetName) ?? [];
23
- const plugins = config.plugins?.map(plugin => (typeof plugin === 'string' ? plugin : plugin[0])).map(resolvePluginName) ?? [];
20
+ const presets = config.presets?.flatMap(getItemName).map(resolvePresetName) ?? [];
21
+ const plugins = config.plugins?.flatMap(getItemName).map(resolvePluginName) ?? [];
24
22
  const nested = config.env ? Object.values(config.env).flatMap(getDependenciesFromConfig) : [];
25
23
  return compact([...presets, ...plugins, ...nested]).map(getPackageName);
26
24
  };
@@ -1,3 +1,5 @@
1
+ import { api } from './helpers.js';
2
+ export type BabelConfigFn = (options: typeof api) => BabelConfig;
1
3
  export type BabelConfig = {
2
4
  plugins?: (string | [string, unknown])[];
3
5
  presets?: (string | [string, unknown])[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "knip",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
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",
@@ -68,9 +68,9 @@
68
68
  "@types/node": "18.11.18",
69
69
  "@types/npmcli__map-workspaces": "3.0.0",
70
70
  "@types/webpack": "5.28.0",
71
- "@typescript-eslint/eslint-plugin": "5.48.0",
72
- "@typescript-eslint/parser": "5.48.0",
73
- "eslint-import-resolver-typescript": "3.5.2",
71
+ "@typescript-eslint/eslint-plugin": "5.48.1",
72
+ "@typescript-eslint/parser": "5.48.1",
73
+ "eslint-import-resolver-typescript": "3.5.3",
74
74
  "eslint-plugin-import": "2.26.0",
75
75
  "globstar": "1.0.0",
76
76
  "release-it": "15.6.0",
package/schema.json CHANGED
@@ -126,7 +126,7 @@
126
126
  }
127
127
  },
128
128
  "plugin": {
129
- "description": "Knip plugin configuration. See https://github.com/webpro/knip/blob/next/README.md#plugins",
129
+ "description": "Knip plugin configuration. See https://github.com/webpro/knip#plugins",
130
130
  "anyOf": [
131
131
  { "const": false },
132
132
  {
@@ -136,7 +136,7 @@
136
136
  "type": "object",
137
137
  "properties": {
138
138
  "config": {
139
- "title": "The custom dependency resolver of this plugin is applied to the files listed here. Also see https://github.com/webpro/knip/blob/next/README.md#config",
139
+ "title": "The custom dependency resolver of this plugin is applied to the files listed here. Also see https://github.com/webpro/knip/blob/main/README.md#config",
140
140
  "examples": [".eslintrc.json"],
141
141
  "$ref": "#/definitions/globPatterns"
142
142
  },
@@ -157,103 +157,103 @@
157
157
  "plugins": {
158
158
  "properties": {
159
159
  "babel": {
160
- "title": "Babel plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/babel/README.md)",
160
+ "title": "Babel plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/babel/README.md)",
161
161
  "$ref": "#/definitions/plugin"
162
162
  },
163
163
  "capacitor": {
164
- "title": "Capacitor plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/capacitor/README.md)",
164
+ "title": "Capacitor plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/capacitor/README.md)",
165
165
  "$ref": "#/definitions/plugin"
166
166
  },
167
167
  "changesets": {
168
- "title": "Changesets plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/changesets/README.md)",
168
+ "title": "Changesets plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/changesets/README.md)",
169
169
  "$ref": "#/definitions/plugin"
170
170
  },
171
171
  "commitlint": {
172
- "title": "commitlint plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/commitlint/README.md)",
172
+ "title": "commitlint plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/commitlint/README.md)",
173
173
  "$ref": "#/definitions/plugin"
174
174
  },
175
175
  "cypress": {
176
- "title": "Cypress plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/cypress/README.md)",
176
+ "title": "Cypress plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/cypress/README.md)",
177
177
  "$ref": "#/definitions/plugin"
178
178
  },
179
179
  "eslint": {
180
- "title": "ESLint plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/eslint/README.md)",
180
+ "title": "ESLint plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/eslint/README.md)",
181
181
  "$ref": "#/definitions/plugin"
182
182
  },
183
183
  "gatsby": {
184
- "title": "Gatsby plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/gatsby/README.md)",
184
+ "title": "Gatsby plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/gatsby/README.md)",
185
185
  "$ref": "#/definitions/plugin"
186
186
  },
187
187
  "jest": {
188
- "title": "Jest plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/jest/README.md)",
188
+ "title": "Jest plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/jest/README.md)",
189
189
  "$ref": "#/definitions/plugin"
190
190
  },
191
191
  "lint-staged": {
192
- "title": "lint-staged plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/lint-staged/README.md)",
192
+ "title": "lint-staged plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/lint-staged/README.md)",
193
193
  "$ref": "#/definitions/plugin"
194
194
  },
195
195
  "mocha": {
196
- "title": "Mocha plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/mocha/README.md)",
196
+ "title": "Mocha plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/mocha/README.md)",
197
197
  "$ref": "#/definitions/plugin"
198
198
  },
199
199
  "next": {
200
- "title": "Next.js plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/next/README.md)",
200
+ "title": "Next.js plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/main/README.md)",
201
201
  "$ref": "#/definitions/plugin"
202
202
  },
203
203
  "nx": {
204
- "title": "Nx plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/nx/README.md)",
204
+ "title": "Nx plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/nx/README.md)",
205
205
  "$ref": "#/definitions/plugin"
206
206
  },
207
207
  "nyc": {
208
- "title": "nyc plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/nyc/README.md)",
208
+ "title": "nyc plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/nyc/README.md)",
209
209
  "$ref": "#/definitions/plugin"
210
210
  },
211
211
  "playwright": {
212
- "title": "Playwright plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/playwright/README.md)",
212
+ "title": "Playwright plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/playwright/README.md)",
213
213
  "$ref": "#/definitions/plugin"
214
214
  },
215
215
  "postcss": {
216
- "title": "PostCSS plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/postcss/README.md)",
216
+ "title": "PostCSS plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/postcss/README.md)",
217
217
  "$ref": "#/definitions/plugin"
218
218
  },
219
219
  "prettier": {
220
- "title": "Prettier plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/prettier/README.md)",
220
+ "title": "Prettier plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/prettier/README.md)",
221
221
  "$ref": "#/definitions/plugin"
222
222
  },
223
223
  "release-it": {
224
- "title": "Release It plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/release-it/README.md)",
224
+ "title": "Release It plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/release-it/README.md)",
225
225
  "$ref": "#/definitions/plugin"
226
226
  },
227
227
  "remark": {
228
- "title": "Remark plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/remark/README.md)",
228
+ "title": "Remark plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/remark/README.md)",
229
229
  "$ref": "#/definitions/plugin"
230
230
  },
231
231
  "remix": {
232
- "title": "Remix plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/remix/README.md)",
232
+ "title": "Remix plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/remix/README.md)",
233
233
  "$ref": "#/definitions/plugin"
234
234
  },
235
235
  "rollup": {
236
- "title": "Rollup plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/rollup/README.md)",
236
+ "title": "Rollup plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/rollup/README.md)",
237
237
  "$ref": "#/definitions/plugin"
238
238
  },
239
239
  "sentry": {
240
- "title": "Sentry plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/sentry/README.md)",
240
+ "title": "Sentry plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/sentry/README.md)",
241
241
  "$ref": "#/definitions/plugin"
242
242
  },
243
243
  "storybook": {
244
- "title": "Storybook plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/storybook/README.md)",
244
+ "title": "Storybook plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/storybook/README.md)",
245
245
  "$ref": "#/definitions/plugin"
246
246
  },
247
247
  "stryker": {
248
- "title": "Stryker plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/stryker/README.md)",
248
+ "title": "Stryker plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/stryker/README.md)",
249
249
  "$ref": "#/definitions/plugin"
250
250
  },
251
251
  "typescript": {
252
- "title": "TypeScript plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/typescript/README.md)",
252
+ "title": "TypeScript plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/typescript/README.md)",
253
253
  "$ref": "#/definitions/plugin"
254
254
  },
255
255
  "webpack": {
256
- "title": "Webpack plugin configuration (https://github.com/webpro/knip/blob/next/src/plugins/webpack/README.md)",
256
+ "title": "Webpack plugin configuration (https://github.com/webpro/knip/blob/main/src/plugins/webpack/README.md)",
257
257
  "$ref": "#/definitions/plugin"
258
258
  }
259
259
  }