@xylabs/ts-scripts-yarn3 6.5.6 → 6.5.8
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/actions/build.mjs +2 -2
- package/dist/actions/clean-docs.mjs +3 -3
- package/dist/actions/clean-eslint.mjs +2 -2
- package/dist/actions/clean-jest.mjs +2 -2
- package/dist/actions/clean.mjs +2 -2
- package/dist/actions/compile-types.mjs +2 -2
- package/dist/actions/compile.mjs +2 -2
- package/dist/actions/copy-assets.mjs +2 -2
- package/dist/actions/cycle.mjs +2 -2
- package/dist/actions/dead.mjs +2 -2
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +85 -103
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +8 -17
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +14 -5
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +13 -7
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +12 -6
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/index.mjs +85 -103
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -1
- package/dist/actions/deplint/deplint.mjs +86 -104
- package/dist/actions/deplint/deplint.mjs.map +1 -1
- package/dist/actions/deplint/findFiles.mjs +4 -14
- package/dist/actions/deplint/findFiles.mjs.map +1 -1
- package/dist/actions/deplint/getBasePackageName.mjs +5 -4
- package/dist/actions/deplint/getBasePackageName.mjs.map +1 -1
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +2 -2
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs +29 -40
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +1 -1
- package/dist/actions/deplint/getImportsFromFile.mjs +14 -11
- package/dist/actions/deplint/getImportsFromFile.mjs.map +1 -1
- package/dist/actions/deplint/index.mjs +86 -104
- package/dist/actions/deplint/index.mjs.map +1 -1
- package/dist/actions/deploy-major.mjs +4 -4
- package/dist/actions/deploy-minor.mjs +4 -4
- package/dist/actions/deploy-next.mjs +4 -4
- package/dist/actions/deploy.mjs +4 -4
- package/dist/actions/dupdeps.mjs +3 -3
- package/dist/actions/fix.mjs +2 -2
- package/dist/actions/gen-docs.mjs +2 -2
- package/dist/actions/gitignore-gen.mjs +2 -2
- package/dist/actions/gitlint-fix.mjs +1 -1
- package/dist/actions/index.mjs +123 -141
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/knip.mjs +2 -2
- package/dist/actions/license.mjs +1 -1
- package/dist/actions/lint.mjs +2 -2
- package/dist/actions/npmignore-gen.mjs +2 -2
- package/dist/actions/package/clean-outputs.mjs +2 -2
- package/dist/actions/package/clean-typescript.mjs +2 -2
- package/dist/actions/package/clean.mjs +3 -3
- package/dist/actions/package/compile/compile.mjs +10 -10
- package/dist/actions/package/compile/compile.mjs.map +1 -1
- package/dist/actions/package/compile/compileTypes.mjs +2 -2
- package/dist/actions/package/compile/copyTypeFiles.mjs +1 -1
- package/dist/actions/package/compile/getCompilerOptions.mjs +1 -1
- package/dist/actions/package/compile/index.mjs +10 -10
- package/dist/actions/package/compile/index.mjs.map +1 -1
- package/dist/actions/package/compile/packageCompileTsc.mjs +2 -2
- package/dist/actions/package/compile/packageCompileTscTypes.mjs +2 -2
- package/dist/actions/package/compile/packageCompileTsup.mjs +9 -9
- package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -1
- package/dist/actions/package/copy-assets.mjs +1 -1
- package/dist/actions/package/gen-docs.mjs +2 -2
- package/dist/actions/package/index.mjs +20 -20
- package/dist/actions/package/index.mjs.map +1 -1
- package/dist/actions/package/lint.mjs +4 -4
- package/dist/actions/package/publint.mjs +1 -1
- package/dist/actions/package/recompile.mjs +13 -13
- package/dist/actions/package/recompile.mjs.map +1 -1
- package/dist/actions/publint.mjs +4 -4
- package/dist/actions/rebuild.mjs +2 -2
- package/dist/actions/recompile.mjs +2 -2
- package/dist/actions/recompile.mjs.map +1 -1
- package/dist/actions/reinstall.mjs +4 -4
- package/dist/actions/relint.mjs +2 -2
- package/dist/actions/retest.mjs +2 -2
- package/dist/actions/sonar.mjs +2 -2
- package/dist/actions/statics.mjs +3 -3
- package/dist/actions/test.mjs +2 -2
- package/dist/actions/up.mjs +2 -2
- package/dist/actions/updo.mjs +2 -2
- package/dist/actions/upplug.mjs +2 -2
- package/dist/actions/upyarn.mjs +2 -2
- package/dist/actions/yarn3only.mjs +1 -1
- package/dist/bin/package/build-only.mjs +10 -10
- package/dist/bin/package/build-only.mjs.map +1 -1
- package/dist/bin/package/build.mjs +10 -10
- package/dist/bin/package/build.mjs.map +1 -1
- package/dist/bin/package/clean-outputs.mjs +2 -2
- package/dist/bin/package/clean-typescript.mjs +2 -2
- package/dist/bin/package/clean.mjs +3 -3
- package/dist/bin/package/compile-only.mjs +10 -10
- package/dist/bin/package/compile-only.mjs.map +1 -1
- package/dist/bin/package/compile-tsup.mjs +9 -9
- package/dist/bin/package/compile-tsup.mjs.map +1 -1
- package/dist/bin/package/compile-types.mjs +2 -2
- package/dist/bin/package/compile.mjs +10 -10
- package/dist/bin/package/compile.mjs.map +1 -1
- package/dist/bin/package/copy-assets-cjs.mjs +1 -1
- package/dist/bin/package/copy-assets-esm.mjs +1 -1
- package/dist/bin/package/fix.mjs +4 -4
- package/dist/bin/package/gen-docs.mjs +2 -2
- package/dist/bin/package/lint.mjs +4 -4
- package/dist/bin/package/publint.mjs +1 -1
- package/dist/bin/package/recompile.mjs +13 -13
- package/dist/bin/package/recompile.mjs.map +1 -1
- package/dist/bin/package/relint.mjs +4 -4
- package/dist/bin/xy.mjs +104 -122
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.mjs +126 -144
- package/dist/index.mjs.map +1 -1
- package/dist/lib/createBuildConfig.mjs +1 -1
- package/dist/lib/deleteGlob.mjs +1 -1
- package/dist/lib/dependencies/DuplicateDetector.mjs +1 -1
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +2 -2
- package/dist/lib/dependencies/index.mjs +2 -2
- package/dist/lib/file/fileLines.mjs +1 -1
- package/dist/lib/file/index.mjs +2 -2
- package/dist/lib/file/tryReadFileSync.mjs +1 -1
- package/dist/lib/generateIgnoreFiles.mjs +2 -2
- package/dist/lib/index.mjs +13 -13
- package/dist/lib/parsedPackageJSON.mjs +1 -1
- package/dist/lib/runSteps.mjs +2 -2
- package/dist/lib/runStepsAsync.mjs +2 -2
- package/dist/lib/runXy.mjs +2 -2
- package/dist/lib/yarn/index.mjs +2 -2
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs +1 -1
- package/dist/lib/yarn/workspace/index.mjs +1 -1
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs +1 -1
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs +1 -1
- package/dist/loadPackageConfig.mjs +1 -1
- package/dist/xy/index.mjs +104 -122
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +104 -122
- package/dist/xy/xy.mjs.map +1 -1
- package/dist/xy/xyBuildCommands.mjs +6 -6
- package/dist/xy/xyBuildCommands.mjs.map +1 -1
- package/dist/xy/xyCommonCommands.mjs +8 -8
- package/dist/xy/xyDeployCommands.mjs +7 -7
- package/dist/xy/xyInstallCommands.mjs +9 -9
- package/dist/xy/xyLintCommands.mjs +90 -108
- package/dist/xy/xyLintCommands.mjs.map +1 -1
- package/package.json +10 -9
- package/dist/actions/deplint/checkPackage/getTypesInDependencies.mjs +0 -19
- package/dist/actions/deplint/checkPackage/getTypesInDependencies.mjs.map +0 -1
package/dist/actions/build.mjs
CHANGED
|
@@ -61,8 +61,8 @@ var safeExitAsync = async (func, exitOnFail = true) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
// src/lib/runStepsAsync.ts
|
|
64
|
-
import { spawn } from "
|
|
65
|
-
import { existsSync } from "
|
|
64
|
+
import { spawn } from "child_process";
|
|
65
|
+
import { existsSync } from "fs";
|
|
66
66
|
import chalk3 from "chalk";
|
|
67
67
|
var runStepAsync = (name, step, exitOnFail = true, message) => {
|
|
68
68
|
return new Promise((resolve) => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// src/actions/clean-docs.ts
|
|
2
|
-
import path from "
|
|
2
|
+
import path from "path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
|
|
5
5
|
// src/lib/deleteGlob.ts
|
|
6
|
-
import fs from "
|
|
6
|
+
import fs from "fs";
|
|
7
7
|
import { glob } from "glob";
|
|
8
8
|
var deleteGlob = (globPath) => {
|
|
9
9
|
const files = glob.sync(globPath);
|
|
@@ -13,7 +13,7 @@ var deleteGlob = (globPath) => {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
// src/lib/yarn/workspace/yarnWorkspaces.ts
|
|
16
|
-
import { spawnSync } from "
|
|
16
|
+
import { spawnSync } from "child_process";
|
|
17
17
|
var yarnWorkspaces = () => {
|
|
18
18
|
const result = spawnSync("yarn", ["workspaces", "list", "--json", "--recursive"], { encoding: "utf8", shell: true });
|
|
19
19
|
if (result.error) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// src/actions/clean-eslint.ts
|
|
2
|
-
import path from "
|
|
2
|
+
import path from "path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
|
|
5
5
|
// src/lib/deleteGlob.ts
|
|
6
|
-
import fs from "
|
|
6
|
+
import fs from "fs";
|
|
7
7
|
import { glob } from "glob";
|
|
8
8
|
var deleteGlob = (globPath) => {
|
|
9
9
|
const files = glob.sync(globPath);
|
|
@@ -58,8 +58,8 @@ var safeExit = (func, exitOnFail = true) => {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
// src/lib/runSteps.ts
|
|
61
|
-
import { spawnSync } from "
|
|
62
|
-
import { existsSync } from "
|
|
61
|
+
import { spawnSync } from "child_process";
|
|
62
|
+
import { existsSync } from "fs";
|
|
63
63
|
import chalk3 from "chalk";
|
|
64
64
|
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
65
65
|
return safeExit(() => {
|
package/dist/actions/clean.mjs
CHANGED
|
@@ -58,8 +58,8 @@ var safeExitAsync = async (func, exitOnFail = true) => {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
// src/lib/runStepsAsync.ts
|
|
61
|
-
import { spawn } from "
|
|
62
|
-
import { existsSync } from "
|
|
61
|
+
import { spawn } from "child_process";
|
|
62
|
+
import { existsSync } from "fs";
|
|
63
63
|
import chalk3 from "chalk";
|
|
64
64
|
var runStepAsync = (name, step, exitOnFail = true, message) => {
|
|
65
65
|
return new Promise((resolve) => {
|
|
@@ -61,8 +61,8 @@ var safeExit = (func, exitOnFail = true) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
// src/lib/runSteps.ts
|
|
64
|
-
import { spawnSync } from "
|
|
65
|
-
import { existsSync } from "
|
|
64
|
+
import { spawnSync } from "child_process";
|
|
65
|
+
import { existsSync } from "fs";
|
|
66
66
|
import chalk3 from "chalk";
|
|
67
67
|
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
68
68
|
return safeExit(() => {
|
package/dist/actions/compile.mjs
CHANGED
|
@@ -61,8 +61,8 @@ var safeExit = (func, exitOnFail = true) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
// src/lib/runSteps.ts
|
|
64
|
-
import { spawnSync } from "
|
|
65
|
-
import { existsSync } from "
|
|
64
|
+
import { spawnSync } from "child_process";
|
|
65
|
+
import { existsSync } from "fs";
|
|
66
66
|
import chalk3 from "chalk";
|
|
67
67
|
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
68
68
|
return safeExit(() => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// src/actions/copy-assets.ts
|
|
2
|
-
import path from "
|
|
2
|
+
import path from "path/posix";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import cpy from "cpy";
|
|
5
5
|
|
|
6
6
|
// src/lib/yarn/workspace/yarnWorkspaces.ts
|
|
7
|
-
import { spawnSync } from "
|
|
7
|
+
import { spawnSync } from "child_process";
|
|
8
8
|
var yarnWorkspaces = () => {
|
|
9
9
|
const result = spawnSync("yarn", ["workspaces", "list", "--json", "--recursive"], { encoding: "utf8", shell: true });
|
|
10
10
|
if (result.error) {
|
package/dist/actions/cycle.mjs
CHANGED
|
@@ -61,8 +61,8 @@ var safeExit = (func, exitOnFail = true) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
// src/lib/runSteps.ts
|
|
64
|
-
import { spawnSync } from "
|
|
65
|
-
import { existsSync } from "
|
|
64
|
+
import { spawnSync } from "child_process";
|
|
65
|
+
import { existsSync } from "fs";
|
|
66
66
|
import chalk3 from "chalk";
|
|
67
67
|
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
68
68
|
return safeExit(() => {
|
package/dist/actions/dead.mjs
CHANGED
|
@@ -58,8 +58,8 @@ var safeExit = (func, exitOnFail = true) => {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
// src/lib/runSteps.ts
|
|
61
|
-
import { spawnSync } from "
|
|
62
|
-
import { existsSync } from "
|
|
61
|
+
import { spawnSync } from "child_process";
|
|
62
|
+
import { existsSync } from "fs";
|
|
63
63
|
import chalk3 from "chalk";
|
|
64
64
|
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
65
65
|
return safeExit(() => {
|
|
@@ -7,25 +7,15 @@ function findFilesByGlob(cwd, pattern) {
|
|
|
7
7
|
// src/actions/deplint/findFiles.ts
|
|
8
8
|
function findFiles(path3) {
|
|
9
9
|
const allSourceInclude = ["./src/**/*.{ts,tsx}"];
|
|
10
|
-
const allDistInclude = ["./dist/**/*.d.ts"];
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const allDistFiles = allDistInclude.flatMap((pattern) => findFilesByGlob(path3, pattern));
|
|
15
|
-
const prodSourceFiles = allSourceFiles.filter((file) => !prodExcludeEndswith.some((ext) => file.endsWith(ext)) && !prodExcludeIncludes.some((excl) => file.includes(excl)));
|
|
16
|
-
const prodDistFiles = allDistFiles.filter((file) => !prodExcludeEndswith.some((ext) => file.endsWith(ext)) && !prodExcludeIncludes.some((excl) => file.includes(excl)));
|
|
17
|
-
const devSourceFiles = allSourceFiles.filter((file) => !prodSourceFiles.includes(file));
|
|
18
|
-
return {
|
|
19
|
-
allSourceFiles,
|
|
20
|
-
prodSourceFiles,
|
|
21
|
-
devSourceFiles,
|
|
22
|
-
prodDistFiles
|
|
23
|
-
};
|
|
10
|
+
const allDistInclude = ["./dist/**/*.d.ts", "./dist/**/*.{mjs,js,cjs}"];
|
|
11
|
+
const srcFiles = allSourceInclude.flatMap((pattern) => findFilesByGlob(path3, pattern));
|
|
12
|
+
const distFiles = allDistInclude.flatMap((pattern) => findFilesByGlob(path3, pattern));
|
|
13
|
+
return { srcFiles, distFiles };
|
|
24
14
|
}
|
|
25
15
|
|
|
26
16
|
// src/actions/deplint/getDependenciesFromPackageJson.ts
|
|
27
|
-
import fs from "
|
|
28
|
-
import path from "
|
|
17
|
+
import fs from "fs";
|
|
18
|
+
import path from "path";
|
|
29
19
|
function getDependenciesFromPackageJson(packageJsonPath) {
|
|
30
20
|
const packageJsonFullPath = path.resolve(packageJsonPath);
|
|
31
21
|
const rawContent = fs.readFileSync(packageJsonFullPath, "utf8");
|
|
@@ -41,27 +31,30 @@ function getDependenciesFromPackageJson(packageJsonPath) {
|
|
|
41
31
|
}
|
|
42
32
|
|
|
43
33
|
// src/actions/deplint/getImportsFromFile.ts
|
|
44
|
-
import fs2 from "
|
|
45
|
-
import path2 from "
|
|
34
|
+
import fs2 from "fs";
|
|
35
|
+
import path2 from "path";
|
|
46
36
|
import ts from "typescript";
|
|
47
37
|
|
|
48
38
|
// src/actions/deplint/getBasePackageName.ts
|
|
49
39
|
function getBasePackageName(importName) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
const importNameScrubbed = importName.replaceAll('"', "").trim();
|
|
41
|
+
if (importNameScrubbed.startsWith("@")) {
|
|
42
|
+
const parts = importNameScrubbed.split("/");
|
|
43
|
+
return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importNameScrubbed;
|
|
53
44
|
}
|
|
54
|
-
return
|
|
45
|
+
return importNameScrubbed.split("/")[0];
|
|
55
46
|
}
|
|
56
47
|
|
|
57
48
|
// src/actions/deplint/getImportsFromFile.ts
|
|
58
49
|
function getImportsFromFile(filePath, importPaths, typeImportPaths) {
|
|
59
50
|
const sourceCode = fs2.readFileSync(filePath, "utf8");
|
|
51
|
+
const isMjsFile = filePath.endsWith(".mjs");
|
|
60
52
|
const sourceFile = ts.createSourceFile(
|
|
61
53
|
path2.basename(filePath),
|
|
62
54
|
sourceCode,
|
|
63
55
|
ts.ScriptTarget.Latest,
|
|
64
|
-
true
|
|
56
|
+
true,
|
|
57
|
+
isMjsFile ? ts.ScriptKind.JS : void 0
|
|
65
58
|
);
|
|
66
59
|
const imports = [];
|
|
67
60
|
const typeImports = [];
|
|
@@ -70,8 +63,8 @@ function getImportsFromFile(filePath, importPaths, typeImportPaths) {
|
|
|
70
63
|
if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
|
|
71
64
|
const moduleSpecifier = node.moduleSpecifier?.getFullText();
|
|
72
65
|
const isTypeImport = ts.isImportDeclaration(node) ? node.importClause?.isTypeOnly ?? false : false;
|
|
73
|
-
if (moduleSpecifier) {
|
|
74
|
-
const trimmed = moduleSpecifier.
|
|
66
|
+
if (typeof moduleSpecifier === "string") {
|
|
67
|
+
const trimmed = moduleSpecifier.replaceAll("'", "").replaceAll('"', "").trim();
|
|
75
68
|
if (isTypeImport || isDeclarationFile) {
|
|
76
69
|
typeImports.push(trimmed);
|
|
77
70
|
} else {
|
|
@@ -92,11 +85,11 @@ function getImportsFromFile(filePath, importPaths, typeImportPaths) {
|
|
|
92
85
|
const cleanedImports = imports.filter((imp) => !importsStartsWithExcludes.some((exc) => imp.startsWith(exc))).map(getBasePackageName);
|
|
93
86
|
const cleanedTypeImports = typeImports.filter((imp) => !importsStartsWithExcludes.some((exc) => imp.startsWith(exc))).map(getBasePackageName);
|
|
94
87
|
for (const imp of cleanedImports) {
|
|
95
|
-
importPaths[imp] = importPaths[imp]
|
|
88
|
+
importPaths[imp] = importPaths[imp] ?? [];
|
|
96
89
|
importPaths[imp].push(filePath);
|
|
97
90
|
}
|
|
98
91
|
for (const imp of cleanedTypeImports) {
|
|
99
|
-
typeImportPaths[imp] = typeImportPaths[imp]
|
|
92
|
+
typeImportPaths[imp] = typeImportPaths[imp] ?? [];
|
|
100
93
|
typeImportPaths[imp].push(filePath);
|
|
101
94
|
}
|
|
102
95
|
return [cleanedImports, cleanedTypeImports];
|
|
@@ -107,117 +100,115 @@ var internalImportPrefixes = [".", "#", "node:"];
|
|
|
107
100
|
var removeInternalImports = (imports) => {
|
|
108
101
|
return imports.filter((imp) => !internalImportPrefixes.some((prefix) => imp.startsWith(prefix)));
|
|
109
102
|
};
|
|
110
|
-
function getExternalImportsFromFiles({
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
const prodImports = prodImportPairs.flatMap((pair) => pair[0]);
|
|
120
|
-
const prodDistImports = prodDistImportPairs.flatMap((pair) => pair[1]);
|
|
121
|
-
const devImportPaths = {};
|
|
122
|
-
const devTypeImportPaths = {};
|
|
123
|
-
const devImportPairs = devSourceFiles.map((path3) => getImportsFromFile(path3, devImportPaths, devTypeImportPaths));
|
|
124
|
-
const devImports = devImportPairs.flatMap((pair) => pair[0]);
|
|
125
|
-
const devTypeImports = devImportPairs.flatMap((pair) => pair[1]);
|
|
126
|
-
const externalProdImports = removeInternalImports(prodImports);
|
|
127
|
-
const externalProdTypeImports = removeInternalImports(prodDistImports);
|
|
128
|
-
const externalDevImports = removeInternalImports(devImports);
|
|
103
|
+
function getExternalImportsFromFiles({ srcFiles, distFiles }) {
|
|
104
|
+
const srcImportPaths = {};
|
|
105
|
+
const distImportPaths = {};
|
|
106
|
+
for (const path3 of srcFiles) getImportsFromFile(path3, srcImportPaths, srcImportPaths).flat();
|
|
107
|
+
for (const path3 of distFiles) getImportsFromFile(path3, distImportPaths, distImportPaths).flat();
|
|
108
|
+
const srcImports = Object.keys(srcImportPaths);
|
|
109
|
+
const distImports = Object.keys(distImportPaths);
|
|
110
|
+
const externalSrcImports = removeInternalImports(srcImports);
|
|
111
|
+
const externalDistImports = removeInternalImports(distImports);
|
|
129
112
|
return {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
externalDevImports,
|
|
137
|
-
prodDistImports,
|
|
138
|
-
devTypeImports,
|
|
139
|
-
externalProdTypeImports
|
|
113
|
+
srcImports,
|
|
114
|
+
srcImportPaths,
|
|
115
|
+
externalSrcImports,
|
|
116
|
+
distImports,
|
|
117
|
+
distImportPaths,
|
|
118
|
+
externalDistImports
|
|
140
119
|
};
|
|
141
120
|
}
|
|
142
121
|
|
|
143
122
|
// src/actions/deplint/checkPackage/getUnlistedDependencies.ts
|
|
144
123
|
import chalk from "chalk";
|
|
145
|
-
function getUnlistedDependencies({ name }, { dependencies, peerDependencies }, {
|
|
146
|
-
externalProdTypeImports,
|
|
147
|
-
prodTypeImportPaths,
|
|
148
|
-
externalProdImports,
|
|
149
|
-
prodImportPaths
|
|
150
|
-
}) {
|
|
124
|
+
function getUnlistedDependencies({ name, location }, { dependencies, peerDependencies }, { externalDistImports, distImportPaths }) {
|
|
151
125
|
let unlistedDependencies = 0;
|
|
152
|
-
for (const imp of
|
|
153
|
-
if (!dependencies.includes(imp) && !peerDependencies.includes(imp) && !dependencies.includes(`@types/${imp}`) && !peerDependencies.includes(`@types/${imp}`)) {
|
|
154
|
-
unlistedDependencies++;
|
|
155
|
-
console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`);
|
|
156
|
-
console.log(` ${prodTypeImportPaths[imp].join("\n")}`);
|
|
157
|
-
console.log("");
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
for (const imp of externalProdImports) {
|
|
126
|
+
for (const imp of externalDistImports) {
|
|
161
127
|
if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {
|
|
162
128
|
unlistedDependencies++;
|
|
163
129
|
console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`);
|
|
164
|
-
console.log(` ${
|
|
165
|
-
console.log("");
|
|
130
|
+
console.log(` ${distImportPaths[imp].join("\n ")}`);
|
|
166
131
|
}
|
|
167
132
|
}
|
|
133
|
+
if (unlistedDependencies > 0) {
|
|
134
|
+
const packageLocation = `${location}/package.json`;
|
|
135
|
+
console.log(` ${chalk.yellow(packageLocation)}
|
|
136
|
+
`);
|
|
137
|
+
}
|
|
168
138
|
return unlistedDependencies;
|
|
169
139
|
}
|
|
170
140
|
|
|
171
141
|
// src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts
|
|
172
142
|
import chalk2 from "chalk";
|
|
173
|
-
function getUnlistedDevDependencies({ name }, {
|
|
143
|
+
function getUnlistedDevDependencies({ name, location }, {
|
|
174
144
|
devDependencies,
|
|
175
145
|
dependencies,
|
|
176
146
|
peerDependencies
|
|
177
|
-
}, {
|
|
147
|
+
}, {
|
|
148
|
+
srcImportPaths,
|
|
149
|
+
externalSrcImports,
|
|
150
|
+
distImports
|
|
151
|
+
}) {
|
|
178
152
|
let unlistedDevDependencies = 0;
|
|
179
|
-
for (const imp of
|
|
180
|
-
if (!
|
|
153
|
+
for (const imp of externalSrcImports) {
|
|
154
|
+
if (!distImports.includes(imp) && !dependencies.includes(imp) && !peerDependencies.includes(imp) && !devDependencies.includes(imp)) {
|
|
181
155
|
unlistedDevDependencies++;
|
|
182
156
|
console.log(`[${chalk2.blue(name)}] Missing devDependency in package.json: ${chalk2.red(imp)}`);
|
|
183
|
-
console.log(`
|
|
157
|
+
console.log(` ${srcImportPaths[imp].join("\n ")}`);
|
|
184
158
|
}
|
|
185
159
|
}
|
|
160
|
+
if (unlistedDevDependencies > 0) {
|
|
161
|
+
const packageLocation = `${location}/package.json`;
|
|
162
|
+
console.log(` ${chalk2.yellow(packageLocation)}
|
|
163
|
+
`);
|
|
164
|
+
}
|
|
186
165
|
return unlistedDevDependencies;
|
|
187
166
|
}
|
|
188
167
|
|
|
189
168
|
// src/actions/deplint/checkPackage/getUnusedDependencies.ts
|
|
190
169
|
import chalk3 from "chalk";
|
|
191
170
|
function getUnusedDependencies({ name, location }, { dependencies }, {
|
|
192
|
-
|
|
193
|
-
|
|
171
|
+
externalDistImports,
|
|
172
|
+
externalSrcImports
|
|
194
173
|
}) {
|
|
195
174
|
let unusedDependencies = 0;
|
|
196
175
|
for (const dep of dependencies) {
|
|
197
|
-
if (!
|
|
176
|
+
if (!externalDistImports.includes(dep)) {
|
|
198
177
|
unusedDependencies++;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
178
|
+
if (externalSrcImports.includes(dep)) {
|
|
179
|
+
console.log(`[${chalk3.blue(name)}] dependency should be devDependency in package.json: ${chalk3.red(dep)}`);
|
|
180
|
+
} else {
|
|
181
|
+
console.log(`[${chalk3.blue(name)}] Unused dependency in package.json: ${chalk3.red(dep)}`);
|
|
182
|
+
}
|
|
203
183
|
}
|
|
204
184
|
}
|
|
185
|
+
if (unusedDependencies > 0) {
|
|
186
|
+
const packageLocation = `${location}/package.json`;
|
|
187
|
+
console.log(` ${chalk3.yellow(packageLocation)}
|
|
188
|
+
`);
|
|
189
|
+
}
|
|
205
190
|
return unusedDependencies;
|
|
206
191
|
}
|
|
207
192
|
|
|
208
193
|
// src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts
|
|
209
194
|
import chalk4 from "chalk";
|
|
210
|
-
function getUnusedPeerDependencies({ name, location }, { peerDependencies }, {
|
|
195
|
+
function getUnusedPeerDependencies({ name, location }, { peerDependencies, dependencies }, { externalDistImports }) {
|
|
211
196
|
let unusedDependencies = 0;
|
|
212
197
|
for (const dep of peerDependencies) {
|
|
213
|
-
if (!
|
|
198
|
+
if (!externalDistImports.includes(dep)) {
|
|
214
199
|
unusedDependencies++;
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
200
|
+
if (dependencies.includes(dep)) {
|
|
201
|
+
console.log(`[${chalk4.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk4.red(dep)}`);
|
|
202
|
+
} else {
|
|
203
|
+
console.log(`[${chalk4.blue(name)}] Unused peerDependency in package.json: ${chalk4.red(dep)}`);
|
|
204
|
+
}
|
|
219
205
|
}
|
|
220
206
|
}
|
|
207
|
+
if (unusedDependencies > 0) {
|
|
208
|
+
const packageLocation = `${location}/package.json`;
|
|
209
|
+
console.log(` ${chalk4.yellow(packageLocation)}
|
|
210
|
+
`);
|
|
211
|
+
}
|
|
221
212
|
return unusedDependencies;
|
|
222
213
|
}
|
|
223
214
|
|
|
@@ -229,26 +220,17 @@ function checkPackage({
|
|
|
229
220
|
devDeps = false,
|
|
230
221
|
peerDeps = false
|
|
231
222
|
}) {
|
|
232
|
-
const {
|
|
233
|
-
prodSourceFiles,
|
|
234
|
-
devSourceFiles,
|
|
235
|
-
prodDistFiles
|
|
236
|
-
} = findFiles(location);
|
|
223
|
+
const { srcFiles, distFiles } = findFiles(location);
|
|
237
224
|
const checkDeps = deps || !(deps || devDeps || peerDeps);
|
|
238
225
|
const checkDevDeps = devDeps || !(deps || devDeps || peerDeps);
|
|
239
226
|
const checkPeerDeps = peerDeps;
|
|
240
|
-
const sourceParams = getExternalImportsFromFiles({
|
|
241
|
-
prodSourceFiles,
|
|
242
|
-
devSourceFiles,
|
|
243
|
-
prodDistFiles
|
|
244
|
-
});
|
|
227
|
+
const sourceParams = getExternalImportsFromFiles({ srcFiles, distFiles });
|
|
245
228
|
const packageParams = getDependenciesFromPackageJson(`${location}/package.json`);
|
|
246
229
|
const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
247
230
|
const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
248
|
-
const typesInDependencies = 0;
|
|
249
231
|
const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
250
232
|
const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
251
|
-
const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies +
|
|
233
|
+
const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + unusedPeerDependencies;
|
|
252
234
|
return totalErrors;
|
|
253
235
|
}
|
|
254
236
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/actions/deplint/findFilesByGlob.ts","../../../../src/actions/deplint/findFiles.ts","../../../../src/actions/deplint/getDependenciesFromPackageJson.ts","../../../../src/actions/deplint/getImportsFromFile.ts","../../../../src/actions/deplint/getBasePackageName.ts","../../../../src/actions/deplint/getExternalImportsFromFiles.ts","../../../../src/actions/deplint/checkPackage/getUnlistedDependencies.ts","../../../../src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts","../../../../src/actions/deplint/checkPackage/getUnusedDependencies.ts","../../../../src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts","../../../../src/actions/deplint/checkPackage/checkPackage.ts"],"sourcesContent":["import { globSync } from 'glob'\n\nexport function findFilesByGlob(cwd: string, pattern: string) {\n return globSync(pattern, { cwd, absolute: true })\n}\n","import { findFilesByGlob } from './findFilesByGlob.ts'\n\nexport function findFiles(path: string) {\n const allSourceInclude = ['./src/**/*.{ts,tsx}']\n const allDistInclude = ['./dist/**/*.d.ts']\n const prodExcludeEndswith = ['.spec.ts', '.stories.tsx']\n const prodExcludeIncludes = ['/spec/', '/stories/', '/scripts/']\n const allSourceFiles = allSourceInclude.flatMap(pattern => findFilesByGlob(path, pattern))\n const allDistFiles = allDistInclude.flatMap(pattern => findFilesByGlob(path, pattern))\n\n const prodSourceFiles = allSourceFiles.filter(file => !prodExcludeEndswith.some(ext => file.endsWith(ext))\n && !prodExcludeIncludes.some(excl => file.includes(excl)))\n\n const prodDistFiles = allDistFiles.filter(file => !prodExcludeEndswith.some(ext => file.endsWith(ext))\n && !prodExcludeIncludes.some(excl => file.includes(excl)))\n\n const devSourceFiles = allSourceFiles.filter(file => !prodSourceFiles.includes(file))\n return {\n allSourceFiles, prodSourceFiles, devSourceFiles, prodDistFiles,\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport function getDependenciesFromPackageJson(packageJsonPath: string) {\n const packageJsonFullPath = path.resolve(packageJsonPath)\n const rawContent = fs.readFileSync(packageJsonFullPath, 'utf8')\n const packageJson = JSON.parse(rawContent)\n\n const dependencies = packageJson.dependencies\n ? Object.keys(packageJson.dependencies)\n : []\n\n const devDependencies = packageJson.devDependencies\n ? Object.keys(packageJson.devDependencies)\n : []\n\n const peerDependencies = packageJson.peerDependencies\n ? Object.keys(packageJson.peerDependencies)\n : []\n\n return {\n dependencies, devDependencies, peerDependencies,\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport ts from 'typescript'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\n\nexport function getImportsFromFile(filePath: string, importPaths: Record<string, string[]>, typeImportPaths: Record<string, string[]>) {\n const sourceCode = fs.readFileSync(filePath, 'utf8')\n\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n )\n\n const imports: string[] = []\n const typeImports: string[] = []\n\n const isDeclarationFile = filePath.endsWith('.d.ts')\n\n function visit(node: ts.Node) {\n if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n const moduleSpecifier = (node.moduleSpecifier)?.getFullText()\n const isTypeImport = ts.isImportDeclaration(node) ? (node.importClause?.isTypeOnly ?? false) : false\n if (moduleSpecifier) {\n const trimmed = moduleSpecifier.split(\"'\").at(1) ?? moduleSpecifier\n // we are determining if the type import is being imported in an exported d.ts file\n if (isTypeImport || isDeclarationFile) {\n typeImports.push(trimmed)\n } else {\n imports.push(trimmed)\n }\n }\n } else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {\n const [arg] = node.arguments\n if (ts.isStringLiteral(arg)) {\n const trimmed = arg.text\n imports.push(trimmed)\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n\n const importsStartsWithExcludes = ['.', '#', 'node:']\n\n const cleanedImports = imports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n const cleanedTypeImports = typeImports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n\n for (const imp of cleanedImports) {\n importPaths[imp] = importPaths[imp] || []\n importPaths[imp].push(filePath)\n }\n\n for (const imp of cleanedTypeImports) {\n typeImportPaths[imp] = typeImportPaths[imp] || []\n typeImportPaths[imp].push(filePath)\n }\n\n return [cleanedImports, cleanedTypeImports]\n}\n","export function getBasePackageName(importName: string) {\n if (importName.startsWith('@')) {\n const parts = importName.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importName\n }\n return importName.split('/')[0]\n}\n","import { getImportsFromFile } from './getImportsFromFile.ts'\n\nconst internalImportPrefixes = ['.', '#', 'node:']\n\nconst removeInternalImports = (imports: string[]) => {\n return imports.filter(imp => !internalImportPrefixes.some(prefix => imp.startsWith(prefix)))\n}\n\nexport function getExternalImportsFromFiles({\n prodSourceFiles, devSourceFiles, prodDistFiles,\n}: { devSourceFiles: string[]; prodDistFiles: string []; prodSourceFiles: string[] }) {\n const prodImportPaths: Record<string, string[]> = {}\n const prodTypeImportPaths: Record<string, string[]> = {}\n const prodImportPairs = prodSourceFiles.map(path => getImportsFromFile(path, prodImportPaths, prodTypeImportPaths))\n const prodDistImportPairs = prodDistFiles.map(path => getImportsFromFile(path, prodImportPaths, prodTypeImportPaths))\n const prodImports = prodImportPairs.flatMap(pair => pair[0])\n const prodDistImports = prodDistImportPairs.flatMap(pair => pair[1])\n\n const devImportPaths: Record<string, string[]> = {}\n const devTypeImportPaths: Record<string, string[]> = {}\n const devImportPairs = devSourceFiles.map(path => getImportsFromFile(path, devImportPaths, devTypeImportPaths))\n const devImports = devImportPairs.flatMap(pair => pair[0])\n const devTypeImports = devImportPairs.flatMap(pair => pair[1])\n\n const externalProdImports = removeInternalImports(prodImports)\n const externalProdTypeImports = removeInternalImports(prodDistImports)\n const externalDevImports = removeInternalImports(devImports)\n return {\n prodImports,\n devImports,\n prodImportPaths,\n prodTypeImportPaths,\n devImportPaths,\n externalProdImports,\n externalDevImports,\n prodDistImports,\n devTypeImports,\n externalProdTypeImports,\n }\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDependencies({ name }: Workspace, { dependencies, peerDependencies }: CheckPackageParams, {\n externalProdTypeImports, prodTypeImportPaths, externalProdImports, prodImportPaths,\n}: CheckSourceParams) {\n let unlistedDependencies = 0\n\n // check production type imports\n for (const imp of externalProdTypeImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp) && !dependencies.includes(`@types/${imp}`)\n && !peerDependencies.includes(`@types/${imp}`)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${prodTypeImportPaths[imp].join('\\n')}`)\n console.log('')\n }\n }\n\n // check production imports\n for (const imp of externalProdImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${prodImportPaths[imp].join('\\n')}`)\n console.log('')\n }\n }\n return unlistedDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDevDependencies(\n { name }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n { devImportPaths, externalDevImports }: CheckSourceParams,\n) {\n let unlistedDevDependencies = 0\n for (const imp of externalDevImports) {\n if (!devDependencies.includes(imp) && !dependencies.includes(imp) && !peerDependencies.includes(imp)) {\n unlistedDevDependencies++\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n console.log(` Found in: ${devImportPaths[imp].join(', ')}`)\n }\n }\n return unlistedDevDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedDependencies(\n { name, location }: Workspace,\n { dependencies }: CheckPackageParams,\n {\n externalProdImports,\n externalProdTypeImports,\n }: CheckSourceParams,\n) {\n let unusedDependencies = 0\n for (const dep of dependencies) {\n if (!externalProdImports.includes(dep) && !externalProdTypeImports.includes(dep)) {\n unusedDependencies++\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n }\n return unusedDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedPeerDependencies(\n { name, location }: Workspace,\n { peerDependencies }: CheckPackageParams,\n { externalProdImports, externalProdTypeImports }: CheckSourceParams,\n) {\n let unusedDependencies = 0\n for (const dep of peerDependencies) {\n if (!externalProdImports.includes(dep) && !externalProdTypeImports.includes(dep)) {\n unusedDependencies++\n console.log(`[${chalk.blue(name)}] Unused peerDependency in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n }\n return unusedDependencies\n}\n","import type { Workspace } from '../../../lib/index.ts'\nimport { findFiles } from '../findFiles.ts'\nimport { getDependenciesFromPackageJson } from '../getDependenciesFromPackageJson.ts'\nimport { getExternalImportsFromFiles } from '../getExternalImportsFromFiles.ts'\n// import { getTypesInDependencies } from './getTypesInDependencies.ts'\nimport { getUnlistedDependencies } from './getUnlistedDependencies.ts'\nimport { getUnlistedDevDependencies } from './getUnlistedDevDependencies.ts'\nimport { getUnusedDependencies } from './getUnusedDependencies.ts'\nimport { getUnusedPeerDependencies } from './getUnusedPeerDependencies.ts'\n\nexport interface CheckPackageOptions extends Workspace {\n deps?: boolean\n devDeps?: boolean\n peerDeps?: boolean\n}\n\nexport function checkPackage({\n name, location, deps = false, devDeps = false, peerDeps = false,\n}: CheckPackageOptions) {\n const {\n prodSourceFiles, devSourceFiles, prodDistFiles,\n } = findFiles(location)\n const checkDeps = deps || !(deps || devDeps || peerDeps)\n const checkDevDeps = devDeps || !(deps || devDeps || peerDeps)\n const checkPeerDeps = peerDeps // || !(deps || devDeps || peerDeps)\n const sourceParams = getExternalImportsFromFiles({\n prodSourceFiles, devSourceFiles, prodDistFiles,\n })\n\n const packageParams = getDependenciesFromPackageJson(`${location}/package.json`)\n\n const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0\n const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams) : 0\n const typesInDependencies = 0 // checkDeps ? getTypesInDependencies({ name, location }, packageParams, sourceParams) : 0\n const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0\n const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams) : 0\n\n const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + typesInDependencies + unusedPeerDependencies\n\n return totalErrors\n}\n"],"mappings":"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","names":["path","fs","path","fs","path","path","chalk","chalk","chalk"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/deplint/findFilesByGlob.ts","../../../../src/actions/deplint/findFiles.ts","../../../../src/actions/deplint/getDependenciesFromPackageJson.ts","../../../../src/actions/deplint/getImportsFromFile.ts","../../../../src/actions/deplint/getBasePackageName.ts","../../../../src/actions/deplint/getExternalImportsFromFiles.ts","../../../../src/actions/deplint/checkPackage/getUnlistedDependencies.ts","../../../../src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts","../../../../src/actions/deplint/checkPackage/getUnusedDependencies.ts","../../../../src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts","../../../../src/actions/deplint/checkPackage/checkPackage.ts"],"sourcesContent":["import { globSync } from 'glob'\n\nexport function findFilesByGlob(cwd: string, pattern: string) {\n return globSync(pattern, { cwd, absolute: true })\n}\n","import { findFilesByGlob } from './findFilesByGlob.ts'\n\nexport function findFiles(path: string) {\n const allSourceInclude = ['./src/**/*.{ts,tsx}']\n const allDistInclude = ['./dist/**/*.d.ts', './dist/**/*.{mjs,js,cjs}']\n const srcFiles = allSourceInclude.flatMap(pattern => findFilesByGlob(path, pattern))\n const distFiles = allDistInclude.flatMap(pattern => findFilesByGlob(path, pattern))\n\n return { srcFiles, distFiles }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport function getDependenciesFromPackageJson(packageJsonPath: string) {\n const packageJsonFullPath = path.resolve(packageJsonPath)\n const rawContent = fs.readFileSync(packageJsonFullPath, 'utf8')\n const packageJson = JSON.parse(rawContent)\n\n const dependencies = packageJson.dependencies\n ? Object.keys(packageJson.dependencies)\n : []\n\n const devDependencies = packageJson.devDependencies\n ? Object.keys(packageJson.devDependencies)\n : []\n\n const peerDependencies = packageJson.peerDependencies\n ? Object.keys(packageJson.peerDependencies)\n : []\n\n return {\n dependencies, devDependencies, peerDependencies,\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport ts from 'typescript'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\n\nexport function getImportsFromFile(filePath: string, importPaths: Record<string, string[]>, typeImportPaths: Record<string, string[]>) {\n const sourceCode = fs.readFileSync(filePath, 'utf8')\n\n const isMjsFile = filePath.endsWith('.mjs')\n\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n isMjsFile ? ts.ScriptKind.JS : undefined,\n )\n\n const imports: string[] = []\n const typeImports: string[] = []\n\n const isDeclarationFile = filePath.endsWith('.d.ts')\n\n function visit(node: ts.Node) {\n if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n const moduleSpecifier = (node.moduleSpecifier)?.getFullText()\n const isTypeImport = ts.isImportDeclaration(node) ? (node.importClause?.isTypeOnly ?? false) : false\n if (typeof moduleSpecifier === 'string') {\n const trimmed = moduleSpecifier.replaceAll(\"'\", '').replaceAll('\"', '').trim()\n // we are determining if the type import is being imported in an exported d.ts file\n if (isTypeImport || isDeclarationFile) {\n typeImports.push(trimmed)\n } else {\n imports.push(trimmed)\n }\n }\n } else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {\n const [arg] = node.arguments\n if (ts.isStringLiteral(arg)) {\n const trimmed = arg.text\n imports.push(trimmed)\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n\n const importsStartsWithExcludes = ['.', '#', 'node:']\n\n const cleanedImports = imports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n const cleanedTypeImports = typeImports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n\n for (const imp of cleanedImports) {\n importPaths[imp] = importPaths[imp] ?? []\n importPaths[imp].push(filePath)\n }\n\n for (const imp of cleanedTypeImports) {\n typeImportPaths[imp] = typeImportPaths[imp] ?? []\n typeImportPaths[imp].push(filePath)\n }\n\n return [cleanedImports, cleanedTypeImports]\n}\n","export function getBasePackageName(importName: string) {\n const importNameScrubbed = importName.replaceAll('\"', '').trim()\n if (importNameScrubbed.startsWith('@')) {\n const parts = importNameScrubbed.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importNameScrubbed\n }\n return importNameScrubbed.split('/')[0]\n}\n","import type { CheckSourceParams } from './checkPackage/index.ts'\nimport { getImportsFromFile } from './getImportsFromFile.ts'\n\nconst internalImportPrefixes = ['.', '#', 'node:']\n\nconst removeInternalImports = (imports: string[]) => {\n return imports.filter(imp => !internalImportPrefixes.some(prefix => imp.startsWith(prefix)))\n}\n\nexport function getExternalImportsFromFiles({ srcFiles, distFiles }: { distFiles: string []; srcFiles: string[] }): CheckSourceParams {\n const srcImportPaths: Record<string, string[]> = {}\n const distImportPaths: Record<string, string[]> = {}\n for (const path of srcFiles) getImportsFromFile(path, srcImportPaths, srcImportPaths).flat()\n for (const path of distFiles) getImportsFromFile(path, distImportPaths, distImportPaths).flat()\n const srcImports = Object.keys(srcImportPaths)\n const distImports = Object.keys(distImportPaths)\n\n const externalSrcImports = removeInternalImports(srcImports)\n const externalDistImports = removeInternalImports(distImports)\n\n return {\n srcImports,\n srcImportPaths,\n externalSrcImports,\n distImports,\n distImportPaths,\n externalDistImports,\n }\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDependencies(\n { name, location }: Workspace,\n { dependencies, peerDependencies }: CheckPackageParams,\n { externalDistImports, distImportPaths }: CheckSourceParams,\n) {\n let unlistedDependencies = 0\n\n for (const imp of externalDistImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${distImportPaths[imp].join('\\n ')}`)\n }\n }\n if (unlistedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n srcImportPaths, externalSrcImports, distImports,\n }: CheckSourceParams,\n) {\n let unlistedDevDependencies = 0\n for (const imp of externalSrcImports) {\n if (!distImports.includes(imp) && !dependencies.includes(imp) && !peerDependencies.includes(imp) && !devDependencies.includes(imp)) {\n unlistedDevDependencies++\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${srcImportPaths[imp].join('\\n ')}`)\n }\n }\n if (unlistedDevDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDevDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedDependencies(\n { name, location }: Workspace,\n { dependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalSrcImports,\n }: CheckSourceParams,\n) {\n let unusedDependencies = 0\n for (const dep of dependencies) {\n if (!externalDistImports.includes(dep)) {\n unusedDependencies++\n if (externalSrcImports.includes(dep)) {\n console.log(`[${chalk.blue(name)}] dependency should be devDependency in package.json: ${chalk.red(dep)}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n }\n }\n }\n if (unusedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedPeerDependencies(\n { name, location }: Workspace,\n { peerDependencies, dependencies }: CheckPackageParams,\n { externalDistImports }: CheckSourceParams,\n) {\n let unusedDependencies = 0\n for (const dep of peerDependencies) {\n if (!externalDistImports.includes(dep)) {\n unusedDependencies++\n if (dependencies.includes(dep)) {\n console.log(`[${chalk.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk.red(dep)}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused peerDependency in package.json: ${chalk.red(dep)}`)\n }\n }\n }\n if (unusedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDependencies\n}\n","import type { Workspace } from '../../../lib/index.ts'\nimport { findFiles } from '../findFiles.ts'\nimport { getDependenciesFromPackageJson } from '../getDependenciesFromPackageJson.ts'\nimport { getExternalImportsFromFiles } from '../getExternalImportsFromFiles.ts'\nimport { getUnlistedDependencies } from './getUnlistedDependencies.ts'\nimport { getUnlistedDevDependencies } from './getUnlistedDevDependencies.ts'\nimport { getUnusedDependencies } from './getUnusedDependencies.ts'\nimport { getUnusedPeerDependencies } from './getUnusedPeerDependencies.ts'\n\nexport interface CheckPackageOptions extends Workspace {\n deps?: boolean\n devDeps?: boolean\n peerDeps?: boolean\n}\n\nexport function checkPackage({\n name, location, deps = false, devDeps = false, peerDeps = false,\n}: CheckPackageOptions) {\n const { srcFiles, distFiles } = findFiles(location)\n const checkDeps = deps || !(deps || devDeps || peerDeps)\n const checkDevDeps = devDeps || !(deps || devDeps || peerDeps)\n const checkPeerDeps = peerDeps // || !(deps || devDeps || peerDeps)\n const sourceParams = getExternalImportsFromFiles({ srcFiles, distFiles })\n\n const packageParams = getDependenciesFromPackageJson(`${location}/package.json`)\n\n const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0\n const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams) : 0\n const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0\n const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams) : 0\n\n const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + unusedPeerDependencies\n return totalErrors\n}\n"],"mappings":"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","names":["path","fs","path","fs","path","path","chalk","chalk","chalk"]}
|
|
@@ -1,28 +1,19 @@
|
|
|
1
1
|
// src/actions/deplint/checkPackage/getUnlistedDependencies.ts
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
function getUnlistedDependencies({ name }, { dependencies, peerDependencies }, {
|
|
4
|
-
externalProdTypeImports,
|
|
5
|
-
prodTypeImportPaths,
|
|
6
|
-
externalProdImports,
|
|
7
|
-
prodImportPaths
|
|
8
|
-
}) {
|
|
3
|
+
function getUnlistedDependencies({ name, location }, { dependencies, peerDependencies }, { externalDistImports, distImportPaths }) {
|
|
9
4
|
let unlistedDependencies = 0;
|
|
10
|
-
for (const imp of
|
|
11
|
-
if (!dependencies.includes(imp) && !peerDependencies.includes(imp) && !dependencies.includes(`@types/${imp}`) && !peerDependencies.includes(`@types/${imp}`)) {
|
|
12
|
-
unlistedDependencies++;
|
|
13
|
-
console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`);
|
|
14
|
-
console.log(` ${prodTypeImportPaths[imp].join("\n")}`);
|
|
15
|
-
console.log("");
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
for (const imp of externalProdImports) {
|
|
5
|
+
for (const imp of externalDistImports) {
|
|
19
6
|
if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {
|
|
20
7
|
unlistedDependencies++;
|
|
21
8
|
console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`);
|
|
22
|
-
console.log(` ${
|
|
23
|
-
console.log("");
|
|
9
|
+
console.log(` ${distImportPaths[imp].join("\n ")}`);
|
|
24
10
|
}
|
|
25
11
|
}
|
|
12
|
+
if (unlistedDependencies > 0) {
|
|
13
|
+
const packageLocation = `${location}/package.json`;
|
|
14
|
+
console.log(` ${chalk.yellow(packageLocation)}
|
|
15
|
+
`);
|
|
16
|
+
}
|
|
26
17
|
return unlistedDependencies;
|
|
27
18
|
}
|
|
28
19
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/actions/deplint/checkPackage/getUnlistedDependencies.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDependencies({ name }: Workspace
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/deplint/checkPackage/getUnlistedDependencies.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDependencies(\n { name, location }: Workspace,\n { dependencies, peerDependencies }: CheckPackageParams,\n { externalDistImports, distImportPaths }: CheckSourceParams,\n) {\n let unlistedDependencies = 0\n\n for (const imp of externalDistImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${distImportPaths[imp].join('\\n ')}`)\n }\n }\n if (unlistedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDependencies\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAKX,SAAS,wBACd,EAAE,MAAM,SAAS,GACjB,EAAE,cAAc,iBAAiB,GACjC,EAAE,qBAAqB,gBAAgB,GACvC;AACA,MAAI,uBAAuB;AAE3B,aAAW,OAAO,qBAAqB;AACrC,QAAI,CAAC,aAAa,SAAS,GAAG,KAAK,CAAC,iBAAiB,SAAS,GAAG,GAAG;AAClE;AACA,cAAQ,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,yCAAyC,MAAM,IAAI,GAAG,CAAC,EAAE;AACzF,cAAQ,IAAI,KAAK,gBAAgB,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE;AAAA,IACrD;AAAA,EACF;AACA,MAAI,uBAAuB,GAAG;AAC5B,UAAM,kBAAkB,GAAG,QAAQ;AACnC,YAAQ,IAAI,KAAK,MAAM,OAAO,eAAe,CAAC;AAAA,CAAI;AAAA,EACpD;AACA,SAAO;AACT;","names":[]}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
// src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
function getUnlistedDevDependencies({ name }, {
|
|
3
|
+
function getUnlistedDevDependencies({ name, location }, {
|
|
4
4
|
devDependencies,
|
|
5
5
|
dependencies,
|
|
6
6
|
peerDependencies
|
|
7
|
-
}, {
|
|
7
|
+
}, {
|
|
8
|
+
srcImportPaths,
|
|
9
|
+
externalSrcImports,
|
|
10
|
+
distImports
|
|
11
|
+
}) {
|
|
8
12
|
let unlistedDevDependencies = 0;
|
|
9
|
-
for (const imp of
|
|
10
|
-
if (!
|
|
13
|
+
for (const imp of externalSrcImports) {
|
|
14
|
+
if (!distImports.includes(imp) && !dependencies.includes(imp) && !peerDependencies.includes(imp) && !devDependencies.includes(imp)) {
|
|
11
15
|
unlistedDevDependencies++;
|
|
12
16
|
console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`);
|
|
13
|
-
console.log(`
|
|
17
|
+
console.log(` ${srcImportPaths[imp].join("\n ")}`);
|
|
14
18
|
}
|
|
15
19
|
}
|
|
20
|
+
if (unlistedDevDependencies > 0) {
|
|
21
|
+
const packageLocation = `${location}/package.json`;
|
|
22
|
+
console.log(` ${chalk.yellow(packageLocation)}
|
|
23
|
+
`);
|
|
24
|
+
}
|
|
16
25
|
return unlistedDevDependencies;
|
|
17
26
|
}
|
|
18
27
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDevDependencies(\n { name }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n srcImportPaths, externalSrcImports, distImports,\n }: CheckSourceParams,\n) {\n let unlistedDevDependencies = 0\n for (const imp of externalSrcImports) {\n if (!distImports.includes(imp) && !dependencies.includes(imp) && !peerDependencies.includes(imp) && !devDependencies.includes(imp)) {\n unlistedDevDependencies++\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${srcImportPaths[imp].join('\\n ')}`)\n }\n }\n if (unlistedDevDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDevDependencies\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAKX,SAAS,2BACd,EAAE,MAAM,SAAS,GACjB;AAAA,EACE;AAAA,EAAiB;AAAA,EAAc;AACjC,GACA;AAAA,EACE;AAAA,EAAgB;AAAA,EAAoB;AACtC,GACA;AACA,MAAI,0BAA0B;AAC9B,aAAW,OAAO,oBAAoB;AACpC,QAAI,CAAC,YAAY,SAAS,GAAG,KAAK,CAAC,aAAa,SAAS,GAAG,KAAK,CAAC,iBAAiB,SAAS,GAAG,KAAK,CAAC,gBAAgB,SAAS,GAAG,GAAG;AAClI;AACA,cAAQ,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,4CAA4C,MAAM,IAAI,GAAG,CAAC,EAAE;AAC5F,cAAQ,IAAI,KAAK,eAAe,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE;AAAA,IACpD;AAAA,EACF;AACA,MAAI,0BAA0B,GAAG;AAC/B,UAAM,kBAAkB,GAAG,QAAQ;AACnC,YAAQ,IAAI,KAAK,MAAM,OAAO,eAAe,CAAC;AAAA,CAAI;AAAA,EACpD;AACA,SAAO;AACT;","names":[]}
|