knip 5.26.0 → 5.27.1
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.
- package/dist/CacheConsultant.d.ts +8 -2
- package/dist/CacheConsultant.js +9 -16
- package/dist/ConfigurationChief.d.ts +11 -4
- package/dist/ConfigurationChief.js +22 -21
- package/dist/ConfigurationValidator.d.ts +224 -0
- package/dist/ConfigurationValidator.js +4 -0
- package/dist/DependencyDeputy.d.ts +3 -2
- package/dist/DependencyDeputy.js +4 -4
- package/dist/PrincipalFactory.d.ts +4 -0
- package/dist/PrincipalFactory.js +3 -2
- package/dist/ProjectPrincipal.d.ts +5 -4
- package/dist/ProjectPrincipal.js +8 -6
- package/dist/WorkspaceWorker.d.ts +5 -3
- package/dist/WorkspaceWorker.js +2 -2
- package/dist/binaries/resolvers/bun.js +1 -1
- package/dist/binaries/util.js +2 -2
- package/dist/cli.js +23 -12
- package/dist/compilers/index.d.ts +40 -0
- package/dist/index.js +55 -134
- package/dist/plugins/babel/index.js +2 -1
- package/dist/plugins/babel/types.d.ts +1 -0
- package/dist/plugins/cypress/helpers.d.ts +3 -0
- package/dist/plugins/cypress/helpers.js +23 -0
- package/dist/plugins/cypress/index.d.ts +3 -1
- package/dist/plugins/cypress/index.js +5 -0
- package/dist/plugins/cypress/types.d.ts +6 -0
- package/dist/plugins/cypress/types.js +1 -0
- package/dist/plugins/eslint/helpers.js +8 -7
- package/dist/plugins/husky/index.d.ts +1 -1
- package/dist/plugins/husky/index.js +9 -2
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/ladle/index.d.ts +13 -0
- package/dist/plugins/ladle/index.js +36 -0
- package/dist/plugins/ladle/types.d.ts +4 -0
- package/dist/plugins/ladle/types.js +1 -0
- package/dist/plugins/playwright/index.d.ts +1 -1
- package/dist/plugins/playwright/types.d.ts +36 -0
- package/dist/plugins/playwright/types.js +1 -0
- package/dist/plugins/playwright-ct/index.d.ts +2 -2
- package/dist/plugins/react-cosmos/index.d.ts +12 -0
- package/dist/plugins/react-cosmos/index.js +33 -0
- package/dist/plugins/react-cosmos/types.d.ts +5 -0
- package/dist/plugins/react-cosmos/types.js +1 -0
- package/dist/plugins/rsbuild/index.d.ts +10 -0
- package/dist/plugins/rsbuild/index.js +15 -0
- package/dist/plugins/rsbuild/types.d.ts +3 -0
- package/dist/plugins/rsbuild/types.js +1 -0
- package/dist/plugins/rspack/index.d.ts +10 -0
- package/dist/plugins/rspack/index.js +22 -0
- package/dist/plugins/vitest/index.js +1 -1
- package/dist/types/cli.d.ts +16 -9
- package/dist/typescript/{createHosts.js → create-hosts.js} +1 -1
- package/dist/typescript/{resolveModuleNames.js → resolve-module-names.js} +3 -2
- package/dist/typescript/visitors/dynamic-imports/importCall.d.ts +1 -1
- package/dist/typescript/visitors/dynamic-imports/importCall.js +25 -31
- package/dist/typescript/visitors/dynamic-imports/importType.d.ts +1 -1
- package/dist/typescript/visitors/dynamic-imports/index.d.ts +1 -1
- package/dist/typescript/visitors/dynamic-imports/jsDocType.d.ts +1 -1
- package/dist/typescript/visitors/dynamic-imports/propertyAccessCall.d.ts +1 -1
- package/dist/typescript/visitors/dynamic-imports/requireCall.d.ts +1 -1
- package/dist/typescript/visitors/dynamic-imports/requireCall.js +8 -4
- package/dist/typescript/visitors/exports/exportAssignment.d.ts +1 -1
- package/dist/typescript/visitors/exports/exportDeclaration.d.ts +1 -1
- package/dist/typescript/visitors/exports/exportKeyword.d.ts +1 -1
- package/dist/typescript/visitors/exports/exportsAccessExpression.d.ts +1 -1
- package/dist/typescript/visitors/exports/index.d.ts +1 -1
- package/dist/typescript/visitors/exports/moduleExportsAccessExpression.d.ts +1 -1
- package/dist/typescript/visitors/helpers.js +1 -1
- package/dist/typescript/visitors/imports/importDeclaration.d.ts +1 -1
- package/dist/typescript/visitors/imports/importEqualsDeclaration.d.ts +1 -1
- package/dist/typescript/visitors/imports/index.d.ts +1 -1
- package/dist/typescript/visitors/imports/reExportDeclaration.d.ts +1 -1
- package/dist/typescript/visitors/index.d.ts +1 -1
- package/dist/typescript/visitors/scripts/bun.d.ts +1 -1
- package/dist/typescript/visitors/scripts/execa.d.ts +1 -1
- package/dist/typescript/visitors/scripts/index.d.ts +1 -1
- package/dist/typescript/visitors/scripts/zx.d.ts +1 -1
- package/dist/util/create-workspace-graph.d.ts +8 -0
- package/dist/util/{pkgs-graph.js → create-workspace-graph.js} +3 -3
- package/dist/util/dependency-graph.d.ts +3 -4
- package/dist/util/dependency-graph.js +35 -3
- package/dist/util/get-included-issue-types.d.ts +6 -6
- package/dist/util/get-included-issue-types.js +5 -5
- package/dist/util/globby.js +2 -2
- package/dist/util/handle-dependency.d.ts +1 -1
- package/dist/util/handle-dependency.js +7 -9
- package/dist/util/loader.js +1 -1
- package/dist/util/modules.d.ts +0 -1
- package/dist/util/modules.js +0 -7
- package/dist/util/plugin.d.ts +1 -0
- package/dist/util/plugin.js +7 -6
- package/dist/util/reporter.d.ts +2 -2
- package/dist/util/reporter.js +12 -10
- package/dist/util/require.d.ts +0 -3
- package/dist/util/require.js +3 -34
- package/dist/util/resolve.d.ts +2 -1
- package/dist/util/resolve.js +21 -12
- package/dist/util/to-source-path.d.ts +2 -2
- package/dist/util/watch.d.ts +25 -0
- package/dist/util/watch.js +85 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -5
- package/schema.json +16 -0
- package/dist/util/pkgs-graph.d.ts +0 -8
- /package/dist/typescript/{createHosts.d.ts → create-hosts.d.ts} +0 -0
- /package/dist/typescript/{getImportsAndExports.d.ts → get-imports-and-exports.d.ts} +0 -0
- /package/dist/typescript/{getImportsAndExports.js → get-imports-and-exports.js} +0 -0
- /package/dist/typescript/{resolveModuleNames.d.ts → resolve-module-names.d.ts} +0 -0
- /package/dist/util/{register.d.ts → jiti.d.ts} +0 -0
- /package/dist/util/{register.js → jiti.js} +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { hasDependency, resolveEntry } from '#p/util/plugin.js';
|
|
2
|
+
import { join } from '../../util/path.js';
|
|
3
|
+
import { toEntryPattern } from '../../util/protocols.js';
|
|
4
|
+
const title = 'React Cosmos';
|
|
5
|
+
const enablers = ['react-cosmos'];
|
|
6
|
+
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
|
|
7
|
+
const config = ['cosmos.config.json'];
|
|
8
|
+
const ext = '{js,jsx,ts,tsx,md,mdx}';
|
|
9
|
+
const fixtureEntry = [`**/*.fixture.${ext}`, `__fixtures__/**/*.${ext}`, `**/fixture.${ext}`];
|
|
10
|
+
const decoratorEntry = ['**/cosmos.decorator.{jsx,tsx}'];
|
|
11
|
+
const entry = [...fixtureEntry, ...decoratorEntry];
|
|
12
|
+
const resolveEntryPaths = async (localConfig) => {
|
|
13
|
+
const { fixturesDir, fixtureFileSuffix } = localConfig;
|
|
14
|
+
const entries = [
|
|
15
|
+
join(fixturesDir ?? '__fixtures__', `**/*.${ext}`),
|
|
16
|
+
join(fixturesDir ?? '', `**/*.${fixtureFileSuffix ?? 'fixture'}.${ext}`),
|
|
17
|
+
join(fixturesDir ?? '', `**/${fixtureFileSuffix ?? 'fixture'}.${ext}`),
|
|
18
|
+
];
|
|
19
|
+
return [...entries, ...decoratorEntry].map(toEntryPattern);
|
|
20
|
+
};
|
|
21
|
+
const resolveConfig = async (localConfig, options) => {
|
|
22
|
+
const dependencies = (localConfig?.plugins ?? []).map(specifier => resolveEntry(options, specifier));
|
|
23
|
+
return [...dependencies];
|
|
24
|
+
};
|
|
25
|
+
export default {
|
|
26
|
+
title,
|
|
27
|
+
enablers,
|
|
28
|
+
isEnabled,
|
|
29
|
+
config,
|
|
30
|
+
entry,
|
|
31
|
+
resolveConfig,
|
|
32
|
+
resolveEntryPaths,
|
|
33
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IsPluginEnabled, ResolveConfig } from '#p/types/plugins.js';
|
|
2
|
+
import type { RsbuildConfig } from './types.js';
|
|
3
|
+
declare const _default: {
|
|
4
|
+
title: string;
|
|
5
|
+
enablers: import("#p/types/config.js").IgnorePatterns;
|
|
6
|
+
isEnabled: IsPluginEnabled;
|
|
7
|
+
config: string[];
|
|
8
|
+
resolveConfig: ResolveConfig<RsbuildConfig>;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { hasDependency } from '#p/util/plugin.js';
|
|
2
|
+
const title = 'Rsbuild';
|
|
3
|
+
const enablers = ['@rsbuild/core'];
|
|
4
|
+
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
|
|
5
|
+
const config = ['rsbuild*.config.{mjs,ts,js,cjs,mts,cts}'];
|
|
6
|
+
const resolveConfig = async () => {
|
|
7
|
+
return [];
|
|
8
|
+
};
|
|
9
|
+
export default {
|
|
10
|
+
title,
|
|
11
|
+
enablers,
|
|
12
|
+
isEnabled,
|
|
13
|
+
config,
|
|
14
|
+
resolveConfig,
|
|
15
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IsPluginEnabled, ResolveConfig } from '#p/types/plugins.js';
|
|
2
|
+
import type { WebpackConfig } from '../webpack/types.js';
|
|
3
|
+
declare const _default: {
|
|
4
|
+
title: string;
|
|
5
|
+
enablers: import("#p/types/config.js").IgnorePatterns;
|
|
6
|
+
isEnabled: IsPluginEnabled;
|
|
7
|
+
config: string[];
|
|
8
|
+
resolveConfig: ResolveConfig<WebpackConfig>;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { hasDependency } from '#p/util/plugin.js';
|
|
2
|
+
import { compact } from '../../util/array.js';
|
|
3
|
+
import { findWebpackDependenciesFromConfig } from '../webpack/index.js';
|
|
4
|
+
const title = 'Rspack';
|
|
5
|
+
const enablers = ['@rspack/core'];
|
|
6
|
+
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
|
|
7
|
+
const config = ['rspack.config*.{js,ts,mjs,cjs}'];
|
|
8
|
+
const resolveConfig = async (localConfig, options) => {
|
|
9
|
+
const { cwd, isProduction } = options;
|
|
10
|
+
const { entryPatterns, dependencies } = await findWebpackDependenciesFromConfig({ config: localConfig, cwd });
|
|
11
|
+
const deps = Array.from(dependencies).filter(dependency => !dependency.startsWith('builtin:'));
|
|
12
|
+
if (isProduction)
|
|
13
|
+
return [...entryPatterns];
|
|
14
|
+
return compact([...entryPatterns, ...deps]);
|
|
15
|
+
};
|
|
16
|
+
export default {
|
|
17
|
+
title,
|
|
18
|
+
enablers,
|
|
19
|
+
isEnabled,
|
|
20
|
+
config,
|
|
21
|
+
resolveConfig,
|
|
22
|
+
};
|
|
@@ -47,7 +47,7 @@ const getConfigs = async (localConfig) => {
|
|
|
47
47
|
return configs;
|
|
48
48
|
};
|
|
49
49
|
export const resolveEntryPaths = async (localConfig, options) => {
|
|
50
|
-
const dependencies = new Set();
|
|
50
|
+
const dependencies = new Set(['src/vite-env.d.ts']);
|
|
51
51
|
const configs = await getConfigs(localConfig);
|
|
52
52
|
for (const cfg of configs) {
|
|
53
53
|
const rootDir = cfg.test?.root ?? '.';
|
package/dist/types/cli.d.ts
CHANGED
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
export interface CommandLineOptions {
|
|
2
|
+
cacheLocation: string;
|
|
2
3
|
cwd: string;
|
|
3
|
-
|
|
4
|
+
excludedIssueTypes: string[];
|
|
5
|
+
fixTypes: string[];
|
|
4
6
|
gitignore: boolean;
|
|
7
|
+
includedIssueTypes: string[];
|
|
8
|
+
isCache: boolean;
|
|
5
9
|
isDebug: boolean;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
isDependenciesShorthand: boolean;
|
|
11
|
+
isExportsShorthand: boolean;
|
|
12
|
+
isFilesShorthand: boolean;
|
|
13
|
+
isFix: boolean;
|
|
14
|
+
isHideConfigHints: boolean;
|
|
9
15
|
isIncludeEntryExports: boolean;
|
|
10
16
|
isIncludeLibs: boolean;
|
|
11
17
|
isIsolateWorkspaces: boolean;
|
|
18
|
+
isProduction: boolean;
|
|
19
|
+
isRemoveFiles: boolean;
|
|
20
|
+
isShowProgress: boolean;
|
|
21
|
+
isStrict: boolean;
|
|
12
22
|
isWatch: boolean;
|
|
13
|
-
isCache?: boolean;
|
|
14
|
-
cacheLocation?: string;
|
|
15
23
|
tags: Tags;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
isRemoveFiles: boolean;
|
|
24
|
+
tsConfigFile: string | undefined;
|
|
25
|
+
workspace: string | undefined;
|
|
19
26
|
}
|
|
20
27
|
export type Tags = [string[], string[]];
|
|
@@ -3,7 +3,7 @@ import path from 'node:path';
|
|
|
3
3
|
import ts from 'typescript';
|
|
4
4
|
import { getCompilerExtensions } from '../compilers/index.js';
|
|
5
5
|
import { SourceFileManager } from './SourceFileManager.js';
|
|
6
|
-
import { createCustomModuleResolver } from './
|
|
6
|
+
import { createCustomModuleResolver } from './resolve-module-names.js';
|
|
7
7
|
const libLocation = path.dirname(ts.getDefaultLibFilePath({}));
|
|
8
8
|
export const createHosts = ({ cwd, compilerOptions, entryPaths, compilers, isSkipLibs, toSourceFilePath, useResolverCache, }) => {
|
|
9
9
|
const fileManager = new SourceFileManager({ compilers, isSkipLibs });
|
|
@@ -5,7 +5,7 @@ import { DEFAULT_EXTENSIONS } from '../constants.js';
|
|
|
5
5
|
import { timerify } from '../util/Performance.js';
|
|
6
6
|
import { sanitizeSpecifier } from '../util/modules.js';
|
|
7
7
|
import { dirname, extname, isAbsolute, isInNodeModules, join } from '../util/path.js';
|
|
8
|
-
import {
|
|
8
|
+
import { _resolveSync, createSyncResolver } from '../util/resolve.js';
|
|
9
9
|
import { isDeclarationFileExtension } from './ast-helpers.js';
|
|
10
10
|
const resolutionCache = new Map();
|
|
11
11
|
const fileExists = (name, containingFile) => {
|
|
@@ -22,6 +22,7 @@ const fileExists = (name, containingFile) => {
|
|
|
22
22
|
export function createCustomModuleResolver(compilerOptions, customCompilerExtensions, toSourceFilePath, useCache = true) {
|
|
23
23
|
const customCompilerExtensionsSet = new Set(customCompilerExtensions);
|
|
24
24
|
const extensions = [...DEFAULT_EXTENSIONS, ...customCompilerExtensions];
|
|
25
|
+
const resolveSync = customCompilerExtensionsSet.size === 0 ? _resolveSync : createSyncResolver(extensions);
|
|
25
26
|
const virtualDeclarationFiles = new Map();
|
|
26
27
|
const tsSys = {
|
|
27
28
|
...ts.sys,
|
|
@@ -56,7 +57,7 @@ export function createCustomModuleResolver(compilerOptions, customCompilerExtens
|
|
|
56
57
|
const sanitizedSpecifier = sanitizeSpecifier(name);
|
|
57
58
|
if (isBuiltin(sanitizedSpecifier) || isInNodeModules(name))
|
|
58
59
|
return undefined;
|
|
59
|
-
const resolvedFileName = resolveSync(sanitizedSpecifier, containingFile
|
|
60
|
+
const resolvedFileName = resolveSync(sanitizedSpecifier, dirname(containingFile));
|
|
60
61
|
if (resolvedFileName) {
|
|
61
62
|
const ext = extname(resolvedFileName);
|
|
62
63
|
if (!customCompilerExtensionsSet.has(ext)) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -2,6 +2,7 @@ import ts from 'typescript';
|
|
|
2
2
|
import { ANONYMOUS } from '../../../constants.js';
|
|
3
3
|
import { findAncestor, findDescendants, isAccessExpression, isImportCall, isTopLevel, stripQuotes, } from '../../ast-helpers.js';
|
|
4
4
|
import { importVisitor as visit } from '../index.js';
|
|
5
|
+
const getSymbol = (node, isTopLevel) => (isTopLevel ? node.symbol : undefined);
|
|
5
6
|
export default visit(() => true, node => {
|
|
6
7
|
if (isImportCall(node)) {
|
|
7
8
|
if (node.arguments[0] && ts.isStringLiteralLike(node.arguments[0])) {
|
|
@@ -34,12 +35,7 @@ export default visit(() => true, node => {
|
|
|
34
35
|
return arg.name.elements.map(element => {
|
|
35
36
|
const identifier = (element.propertyName ?? element.name).getText();
|
|
36
37
|
const alias = element.propertyName ? element.name.getText() : undefined;
|
|
37
|
-
return {
|
|
38
|
-
identifier,
|
|
39
|
-
alias,
|
|
40
|
-
specifier,
|
|
41
|
-
pos: element.pos,
|
|
42
|
-
};
|
|
38
|
+
return { identifier, alias, specifier, pos: element.pos };
|
|
43
39
|
});
|
|
44
40
|
}
|
|
45
41
|
}
|
|
@@ -51,9 +47,9 @@ export default visit(() => true, node => {
|
|
|
51
47
|
return ts.isVariableDeclaration(_node);
|
|
52
48
|
});
|
|
53
49
|
if (variableDeclaration) {
|
|
54
|
-
const isTLA = isTopLevel(variableDeclaration.parent);
|
|
55
50
|
const alias = String(variableDeclaration.name.escapedText);
|
|
56
|
-
|
|
51
|
+
const symbol = getSymbol(variableDeclaration, isTopLevel(variableDeclaration.parent));
|
|
52
|
+
return { identifier, alias, symbol, specifier, pos };
|
|
57
53
|
}
|
|
58
54
|
return { identifier, specifier, pos };
|
|
59
55
|
}
|
|
@@ -71,20 +67,17 @@ export default visit(() => true, node => {
|
|
|
71
67
|
ts.isVariableDeclarationList(variableDeclaration.parent)) {
|
|
72
68
|
const isTLA = isTopLevel(variableDeclaration.parent);
|
|
73
69
|
if (ts.isIdentifier(variableDeclaration.name)) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
symbol: isTLA ? variableDeclaration.symbol : undefined,
|
|
78
|
-
specifier,
|
|
79
|
-
pos: node.arguments[0].pos,
|
|
80
|
-
};
|
|
70
|
+
const alias = String(variableDeclaration.name.escapedText);
|
|
71
|
+
const symbol = getSymbol(variableDeclaration, isTLA);
|
|
72
|
+
return { identifier: 'default', alias, symbol, specifier, pos: node.arguments[0].pos };
|
|
81
73
|
}
|
|
82
74
|
const bindings = findDescendants(variableDeclaration, ts.isBindingElement);
|
|
83
75
|
if (bindings.length > 0) {
|
|
84
76
|
return bindings.map(element => {
|
|
85
77
|
const identifier = (element.propertyName ?? element.name).getText();
|
|
86
78
|
const alias = element.propertyName ? element.name.getText() : undefined;
|
|
87
|
-
|
|
79
|
+
const symbol = getSymbol(element, isTLA);
|
|
80
|
+
return { identifier, alias, symbol, specifier, pos: element.pos };
|
|
88
81
|
});
|
|
89
82
|
}
|
|
90
83
|
return { identifier: ANONYMOUS, specifier, pos: node.arguments[0].pos };
|
|
@@ -98,22 +91,23 @@ export default visit(() => true, node => {
|
|
|
98
91
|
ts.isArrayBindingPattern(variableDeclarationParent.name)) {
|
|
99
92
|
const index = arrayLiteralExpression.elements.indexOf(node);
|
|
100
93
|
const element = variableDeclarationParent.name.elements[index];
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
94
|
+
if (element) {
|
|
95
|
+
const isTL = isTopLevel(variableDeclarationParent.parent);
|
|
96
|
+
if (ts.isBindingElement(element) && ts.isObjectBindingPattern(element.name) && element.name.elements) {
|
|
97
|
+
return element.name.elements.map(element => {
|
|
98
|
+
const identifier = (element.propertyName ?? element.name).getText();
|
|
99
|
+
const alias = element.propertyName ? element.name.getText() : undefined;
|
|
100
|
+
const symbol = getSymbol(element, isTL);
|
|
101
|
+
return { identifier, alias, symbol, specifier, pos: element.pos };
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (!ts.isOmittedExpression(element) && ts.isIdentifier(element.name)) {
|
|
105
|
+
const alias = String(element.name.escapedText);
|
|
106
|
+
const symbol = getSymbol(element, isTL);
|
|
107
|
+
return { identifier: 'default', symbol, alias, specifier, pos: element.pos };
|
|
108
|
+
}
|
|
109
|
+
return { identifier: 'default', specifier, pos: element.pos };
|
|
108
110
|
}
|
|
109
|
-
const alias = element.name.escapedText;
|
|
110
|
-
return {
|
|
111
|
-
identifier: 'default',
|
|
112
|
-
symbol: isTLA ? element.symbol : undefined,
|
|
113
|
-
alias,
|
|
114
|
-
specifier,
|
|
115
|
-
pos: element.pos,
|
|
116
|
-
};
|
|
117
111
|
}
|
|
118
112
|
return { identifier: 'default', specifier, pos: node.arguments[0].pos };
|
|
119
113
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined)[];
|
|
3
3
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import type { ImportNode } from '../../../types/imports.js';
|
|
3
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
3
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => ImportNode | ImportNode[] | undefined;
|
|
4
4
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import { findAncestor, findDescendants, isRequireCall, isTopLevel } from '../../ast-helpers.js';
|
|
3
|
+
import { isNotJS } from '../helpers.js';
|
|
3
4
|
import { importVisitor as visit } from '../index.js';
|
|
4
5
|
export default visit(() => true, node => {
|
|
5
6
|
if (isRequireCall(node)) {
|
|
@@ -11,9 +12,10 @@ export default visit(() => true, node => {
|
|
|
11
12
|
return 'STOP';
|
|
12
13
|
return ts.isPropertyAccessExpression(_node);
|
|
13
14
|
});
|
|
15
|
+
const resolve = isNotJS(node.getSourceFile());
|
|
14
16
|
if (propertyAccessExpression) {
|
|
15
17
|
const identifier = String(propertyAccessExpression.name.escapedText);
|
|
16
|
-
return { identifier, specifier, pos: propertyAccessExpression.name.pos };
|
|
18
|
+
return { identifier, specifier, pos: propertyAccessExpression.name.pos, resolve };
|
|
17
19
|
}
|
|
18
20
|
const variableDeclaration = node.parent;
|
|
19
21
|
if (ts.isVariableDeclaration(variableDeclaration) &&
|
|
@@ -27,6 +29,7 @@ export default visit(() => true, node => {
|
|
|
27
29
|
symbol: isTLA ? variableDeclaration.symbol : undefined,
|
|
28
30
|
specifier,
|
|
29
31
|
pos: node.arguments[0].pos,
|
|
32
|
+
resolve,
|
|
30
33
|
};
|
|
31
34
|
}
|
|
32
35
|
const bindings = findDescendants(variableDeclaration, ts.isBindingElement);
|
|
@@ -34,12 +37,13 @@ export default visit(() => true, node => {
|
|
|
34
37
|
return bindings.map(element => {
|
|
35
38
|
const identifier = (element.propertyName ?? element.name).getText();
|
|
36
39
|
const alias = element.propertyName ? element.name.getText() : undefined;
|
|
37
|
-
|
|
40
|
+
const symbol = isTLA ? element.symbol : undefined;
|
|
41
|
+
return { identifier, specifier, alias, symbol, pos: element.pos, resolve };
|
|
38
42
|
});
|
|
39
43
|
}
|
|
40
|
-
return { identifier: 'default', specifier, pos: node.arguments[0].pos };
|
|
44
|
+
return { identifier: 'default', specifier, pos: node.arguments[0].pos, resolve };
|
|
41
45
|
}
|
|
42
|
-
return { identifier: 'default', specifier, pos: node.arguments[0].pos };
|
|
46
|
+
return { identifier: 'default', specifier, pos: node.arguments[0].pos, resolve };
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/exports.js").ExportNode | import("../../../types/exports.js").ExportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/exports.js").ExportNode | import("../../../types/exports.js").ExportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/exports.js").ExportNode | import("../../../types/exports.js").ExportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/exports.js").ExportNode | import("../../../types/exports.js").ExportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/exports.js").ExportNode | import("../../../types/exports.js").ExportNode[] | undefined)[];
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/exports.js").ExportNode | import("../../../types/exports.js").ExportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
export const isNotJS = (sourceFile) => sourceFile
|
|
2
|
+
export const isNotJS = (sourceFile) => !isJS(sourceFile);
|
|
3
3
|
export const isJS = (sourceFile) => sourceFile.scriptKind === ts.ScriptKind.JS || sourceFile.scriptKind === ts.ScriptKind.JSX;
|
|
4
4
|
export function getImportsFromPragmas(sourceFile) {
|
|
5
5
|
const importNodes = [];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined)[];
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => import("../../../types/imports.js").ImportNode | import("../../../types/imports.js").ImportNode[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type ts from 'typescript';
|
|
2
2
|
import type { ExportNode } from '../../types/exports.js';
|
|
3
3
|
import type { ImportNode } from '../../types/imports.js';
|
|
4
|
-
import type { GetImportsAndExportsOptions } from '../
|
|
4
|
+
import type { GetImportsAndExportsOptions } from '../get-imports-and-exports.js';
|
|
5
5
|
type FileCondition = (sourceFile: ts.SourceFile) => boolean;
|
|
6
6
|
type VisitorFactory<T> = (fileCondition: FileCondition, fn: Visitor<T>) => VisitorCondition<T>;
|
|
7
7
|
type VisitorCondition<T> = (sourceFile: ts.SourceFile) => Visitor<T>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => string | string[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => string | string[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => ((node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => string | string[] | undefined)[];
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../
|
|
2
|
+
declare const _default: (sourceFile: ts.SourceFile) => (node: ts.Node, options: import("../../get-imports-and-exports.js").GetImportsAndExportsOptions) => string | string[] | undefined;
|
|
3
3
|
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PackageJson } from '../types/package-json.js';
|
|
2
|
+
interface Package {
|
|
3
|
+
manifest: PackageJson;
|
|
4
|
+
dir: string;
|
|
5
|
+
}
|
|
6
|
+
export type WorkspaceGraph = Record<string, Set<string>>;
|
|
7
|
+
export declare function createWorkspaceGraph(cwd: string, wsNames: string[], wsPkgNames: Set<string>, byPkgName: Map<string, Package>, byName: Map<string, Package>): WorkspaceGraph;
|
|
8
|
+
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { join } from './path.js';
|
|
2
2
|
const types = ['peerDependencies', 'devDependencies', 'optionalDependencies', 'dependencies'];
|
|
3
|
-
export function
|
|
3
|
+
export function createWorkspaceGraph(cwd, wsNames, wsPkgNames, byPkgName, byName) {
|
|
4
4
|
const graph = {};
|
|
5
|
-
const
|
|
5
|
+
const getWorkspaceDirs = (pkg) => {
|
|
6
6
|
const dirs = new Set();
|
|
7
7
|
for (const type of types) {
|
|
8
8
|
if (pkg.manifest[type]) {
|
|
@@ -20,7 +20,7 @@ export function createPkgGraph(cwd, wsNames, wsPkgNames, byPkgName, byName) {
|
|
|
20
20
|
for (const name of wsNames) {
|
|
21
21
|
const pkg = byName.get(name);
|
|
22
22
|
if (pkg)
|
|
23
|
-
graph[join(cwd, name)] =
|
|
23
|
+
graph[join(cwd, name)] = getWorkspaceDirs(pkg);
|
|
24
24
|
}
|
|
25
25
|
return graph;
|
|
26
26
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { FileNode, IdToFileMap, IdToNsToFileMap, ImportDetails } from '../types/dependency-graph.js';
|
|
2
|
-
export declare const
|
|
1
|
+
import type { DependencyGraph, FileNode, IdToFileMap, IdToNsToFileMap, ImportDetails, ImportMap } from '../types/dependency-graph.js';
|
|
2
|
+
export declare const getOrCreateFileNode: (graph: DependencyGraph, filePath: string) => FileNode;
|
|
3
|
+
export declare const updateImportMap: (file: FileNode, importMap: ImportMap, graph: DependencyGraph) => void;
|
|
3
4
|
export declare const createImports: () => ImportDetails;
|
|
4
5
|
export declare const addValue: (map: IdToFileMap, id: string, value: string) => void;
|
|
5
6
|
export declare const addNsValue: (map: IdToNsToFileMap, id: string, ns: string, value: string) => void;
|
|
6
|
-
export declare const addValues: (map: IdToFileMap, id: string, values: Set<string>) => void;
|
|
7
|
-
export declare const addNsValues: (map: IdToNsToFileMap, id: string, value: IdToFileMap) => void;
|
|
@@ -1,4 +1,36 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const getOrCreateFileNode = (graph, filePath) => graph.get(filePath) ?? createFileNode();
|
|
2
|
+
const updateImportDetails = (importedModule, importItems) => {
|
|
3
|
+
for (const id of importItems.refs)
|
|
4
|
+
importedModule.refs.add(id);
|
|
5
|
+
for (const [id, v] of importItems.imported.entries())
|
|
6
|
+
addValues(importedModule.imported, id, v);
|
|
7
|
+
for (const [id, v] of importItems.importedAs.entries())
|
|
8
|
+
addNsValues(importedModule.importedAs, id, v);
|
|
9
|
+
for (const [id, v] of importItems.importedNs.entries())
|
|
10
|
+
addValues(importedModule.importedNs, id, v);
|
|
11
|
+
for (const [id, v] of importItems.reExported.entries())
|
|
12
|
+
addValues(importedModule.reExported, id, v);
|
|
13
|
+
for (const [id, v] of importItems.reExportedAs.entries())
|
|
14
|
+
addNsValues(importedModule.reExportedAs, id, v);
|
|
15
|
+
for (const [id, v] of importItems.reExportedNs.entries())
|
|
16
|
+
addValues(importedModule.reExportedNs, id, v);
|
|
17
|
+
};
|
|
18
|
+
export const updateImportMap = (file, importMap, graph) => {
|
|
19
|
+
for (const [importedFilePath, importDetails] of importMap.entries()) {
|
|
20
|
+
const importedFileImports = file.imports.internal.get(importedFilePath);
|
|
21
|
+
if (!importedFileImports)
|
|
22
|
+
file.imports.internal.set(importedFilePath, importDetails);
|
|
23
|
+
else
|
|
24
|
+
updateImportDetails(importedFileImports, importDetails);
|
|
25
|
+
const importedFile = getOrCreateFileNode(graph, importedFilePath);
|
|
26
|
+
if (!importedFile.imported)
|
|
27
|
+
importedFile.imported = importDetails;
|
|
28
|
+
else
|
|
29
|
+
updateImportDetails(importedFile.imported, importDetails);
|
|
30
|
+
graph.set(importedFilePath, importedFile);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const createFileNode = () => ({
|
|
2
34
|
imports: {
|
|
3
35
|
internal: new Map(),
|
|
4
36
|
external: new Set(),
|
|
@@ -37,14 +69,14 @@ export const addNsValue = (map, id, ns, value) => {
|
|
|
37
69
|
map.set(id, new Map([[ns, new Set([value])]]));
|
|
38
70
|
}
|
|
39
71
|
};
|
|
40
|
-
|
|
72
|
+
const addValues = (map, id, values) => {
|
|
41
73
|
if (map.has(id))
|
|
42
74
|
for (const v of values)
|
|
43
75
|
map.get(id)?.add(v);
|
|
44
76
|
else
|
|
45
77
|
map.set(id, values);
|
|
46
78
|
};
|
|
47
|
-
|
|
79
|
+
const addNsValues = (map, id, value) => {
|
|
48
80
|
if (map.has(id))
|
|
49
81
|
for (const [ns, v] of value)
|
|
50
82
|
addValues(map.get(id), ns, v);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Report } from '../types/issues.js';
|
|
2
|
-
type CLIArguments = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
export type CLIArguments = {
|
|
3
|
+
includedIssueTypes: string[];
|
|
4
|
+
excludedIssueTypes: string[];
|
|
5
|
+
isDependenciesShorthand: boolean;
|
|
6
|
+
isExportsShorthand: boolean;
|
|
7
|
+
isFilesShorthand: boolean;
|
|
8
8
|
};
|
|
9
9
|
type Options = {
|
|
10
10
|
isProduction?: boolean;
|