@xylabs/ts-scripts-yarn3 3.2.32 → 3.2.34
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.
|
@@ -35,9 +35,15 @@ var import_chalk = __toESM(require("chalk"));
|
|
|
35
35
|
var import_depcheck = __toESM(require("depcheck"));
|
|
36
36
|
var import_fs = require("fs");
|
|
37
37
|
var import_lib = require("../../lib");
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const defaultIgnorePatterns = ["*.d.ts", "dist", ".*", "node_modules"];
|
|
39
|
+
const defaultIgnoreDevDeps = [
|
|
40
|
+
"@xylabs/ts-scripts-yarn3",
|
|
41
|
+
"@xylabs/tsconfig",
|
|
42
|
+
"@xylabs/tsconfig-dom",
|
|
43
|
+
"@xylabs/tsconfig-react",
|
|
44
|
+
"@xylabs/tsconfig-jest",
|
|
45
|
+
"typescript"
|
|
46
|
+
];
|
|
41
47
|
const reportUnused = (name, unused) => {
|
|
42
48
|
if (unused.length) {
|
|
43
49
|
const message = [import_chalk.default.yellow(`${unused.length} Unused ${name}`)];
|
|
@@ -46,7 +52,7 @@ const reportUnused = (name, unused) => {
|
|
|
46
52
|
}
|
|
47
53
|
};
|
|
48
54
|
const reportMissing = (name, missing) => {
|
|
49
|
-
if (missing.length) {
|
|
55
|
+
if (Object.keys(missing).length) {
|
|
50
56
|
const message = [import_chalk.default.yellow(`${Object.entries(missing).length} Missing ${name}`)];
|
|
51
57
|
Object.entries(missing).forEach(([key, value]) => {
|
|
52
58
|
message.push(`${key}`);
|
|
@@ -67,65 +73,54 @@ const packageDeps = async () => {
|
|
|
67
73
|
const error = ex;
|
|
68
74
|
console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`);
|
|
69
75
|
}
|
|
70
|
-
const defaultIgnorePatterns = ["*.d.ts", "dist", ".*", "node_modules"];
|
|
71
|
-
const defaultIgnoreMatches = [
|
|
72
|
-
"@xylabs/ts-scripts-yarn3",
|
|
73
|
-
"@xylabs/tsconfig",
|
|
74
|
-
"@xylabs/tsconfig-dom",
|
|
75
|
-
"@xylabs/tsconfig-react",
|
|
76
|
-
"@xylabs/tsconfig-jest",
|
|
77
|
-
"typescript"
|
|
78
|
-
];
|
|
79
76
|
const [srcUnused, allUnused] = await Promise.all([
|
|
80
77
|
(0, import_depcheck.default)(`${pkg}/src`, {
|
|
81
|
-
ignoreMatches
|
|
78
|
+
ignoreMatches,
|
|
82
79
|
ignorePatterns: ["*.stories.*", "*.spec.*", "spec", ...defaultIgnorePatterns],
|
|
83
80
|
package: packageContent
|
|
84
81
|
}),
|
|
85
82
|
(0, import_depcheck.default)(`${pkg}/.`, {
|
|
86
|
-
ignoreMatches
|
|
83
|
+
ignoreMatches,
|
|
87
84
|
ignorePatterns: [...defaultIgnorePatterns],
|
|
88
85
|
package: packageContent,
|
|
89
86
|
specials: [import_depcheck.special.eslint, import_depcheck.special.babel, import_depcheck.special.bin, import_depcheck.special.prettier, import_depcheck.special.jest, import_depcheck.special.mocha]
|
|
90
87
|
})
|
|
91
88
|
]);
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
};
|
|
89
|
+
const unusedDeps = srcUnused.dependencies;
|
|
90
|
+
const unusedDevDeps = allUnused.devDependencies;
|
|
91
|
+
const usedDeps = srcUnused.using;
|
|
92
|
+
const usedDevDeps = allUnused.using;
|
|
93
|
+
const { invalidDirs, invalidFiles } = allUnused;
|
|
97
94
|
const declaredDeps = Object.keys(packageContent.dependencies ?? {});
|
|
98
95
|
const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {});
|
|
99
|
-
const
|
|
100
|
-
|
|
96
|
+
const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {});
|
|
97
|
+
const missingDeps = Object.keys(usedDeps).filter(
|
|
98
|
+
(key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith("@types/")
|
|
101
99
|
);
|
|
102
|
-
const
|
|
103
|
-
(
|
|
104
|
-
if (missingDeps.includes(key)) {
|
|
105
|
-
prev[key] = value;
|
|
106
|
-
}
|
|
107
|
-
return prev;
|
|
108
|
-
},
|
|
109
|
-
{}
|
|
100
|
+
const missingDevDeps = Object.keys(usedDevDeps).filter(
|
|
101
|
+
(key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key) && !defaultIgnoreDevDeps.includes(key)
|
|
110
102
|
);
|
|
111
|
-
const
|
|
103
|
+
const missingDepsObject = {};
|
|
104
|
+
missingDeps.forEach((key) => {
|
|
105
|
+
missingDepsObject[key] = srcUnused.missing[key];
|
|
106
|
+
});
|
|
107
|
+
const missingDevDepsObject = {};
|
|
108
|
+
missingDevDeps.forEach((key) => {
|
|
109
|
+
missingDevDepsObject[key] = allUnused.missing[key];
|
|
110
|
+
});
|
|
111
|
+
const errorCount = unusedDeps.length + unusedDevDeps.length + Object.entries(invalidDirs).length + Object.entries(invalidFiles).length + Object.entries(missingDepsObject).length;
|
|
112
112
|
if (errorCount > 0) {
|
|
113
113
|
console.log(`Deps [${pkgName}]`);
|
|
114
|
-
console.log(`unused.dependencies: ${JSON.stringify(unused.dependencies)}`);
|
|
115
|
-
console.log(`unused.devDependencies: ${JSON.stringify(unused.devDependencies)}`);
|
|
116
|
-
console.log(`unused.invalidDirs: ${JSON.stringify(unused.invalidDirs)}`);
|
|
117
|
-
console.log(`unused.invalidFiles: ${JSON.stringify(unused.invalidFiles)}`);
|
|
118
|
-
console.log(`missingDepsObject: ${JSON.stringify(missingDepsObject)}`);
|
|
119
114
|
} else {
|
|
120
115
|
console.log(`Deps [${pkgName}] - Ok`);
|
|
121
116
|
}
|
|
122
|
-
reportUnused("dependencies",
|
|
123
|
-
reportUnused("devDependencies",
|
|
124
|
-
if (Object.entries(
|
|
125
|
-
Object.entries(
|
|
117
|
+
reportUnused("dependencies", unusedDeps);
|
|
118
|
+
reportUnused("devDependencies", unusedDevDeps);
|
|
119
|
+
if (Object.entries(invalidDirs).length) {
|
|
120
|
+
Object.entries(invalidDirs).forEach(([key, value]) => console.warn(import_chalk.default.gray(`Invalid Dir: ${key}: ${value}`)));
|
|
126
121
|
}
|
|
127
|
-
if (Object.entries(
|
|
128
|
-
Object.entries(
|
|
122
|
+
if (Object.entries(invalidFiles).length) {
|
|
123
|
+
Object.entries(invalidFiles).forEach(([key, value]) => console.warn(import_chalk.default.gray(`Invalid File: ${key}: ${value}`)));
|
|
129
124
|
}
|
|
130
125
|
reportMissing("dependencies", missingDepsObject);
|
|
131
126
|
reportMissing("devDependencies", allUnused.missing);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\nconst defaultIgnoreDevDeps = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n]\n\nconst reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {\n if (unused.length) {\n const message = [chalk.yellow(`${unused.length} Unused ${name}`)]\n unused.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n}\n\nconst reportMissing = (name: string, missing: depcheck.Results['missing']) => {\n if (Object.keys(missing).length) {\n const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]\n Object.entries(missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.at(0)}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\n\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n\n const rawIgnore = existsSync(`${pkg}/.depcheckrc`)\n ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '\"ignores\":')\n : undefined\n let ignoreMatches: string[] = []\n try {\n ignoreMatches = rawIgnore ? (JSON.parse(`{${rawIgnore}}`).ignores as string[]) : []\n } catch (ex) {\n const error = ex as Error\n console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)\n }\n\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: ignoreMatches,\n ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: ignoreMatches,\n ignorePatterns: [...defaultIgnorePatterns],\n package: packageContent,\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unusedDeps = srcUnused.dependencies\n const unusedDevDeps = allUnused.devDependencies\n const usedDeps = srcUnused.using\n const usedDevDeps = allUnused.using\n\n const { invalidDirs, invalidFiles } = allUnused\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})\n\n const missingDeps = Object.keys(usedDeps).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),\n )\n\n const missingDevDeps = Object.keys(usedDevDeps).filter(\n (key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key) && !defaultIgnoreDevDeps.includes(key),\n )\n\n const missingDepsObject: Record<string, string[]> = {}\n missingDeps.forEach((key) => {\n missingDepsObject[key] = srcUnused.missing[key]\n })\n\n const missingDevDepsObject: Record<string, string[]> = {}\n missingDevDeps.forEach((key) => {\n missingDevDepsObject[key] = allUnused.missing[key]\n })\n\n const errorCount =\n unusedDeps.length +\n unusedDevDeps.length +\n Object.entries(invalidDirs).length +\n Object.entries(invalidFiles).length +\n Object.entries(missingDepsObject).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unusedDeps)\n reportUnused('devDependencies', unusedDevDeps)\n\n if (Object.entries(invalidDirs).length) {\n Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(invalidFiles).length) {\n Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', allUnused.missing)\n\n checkResult(`Deps [${pkgName}]`, errorCount, 'warn', false)\n\n //returning 0 here since we never want deps to be fatal\n return 0\n}\n"],"mappings":"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","names":["chalk","depcheck"]}
|
|
@@ -2,9 +2,15 @@ import chalk from "chalk";
|
|
|
2
2
|
import depcheck, { special } from "depcheck";
|
|
3
3
|
import { existsSync, readFileSync } from "fs";
|
|
4
4
|
import { checkResult } from "../../lib";
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const defaultIgnorePatterns = ["*.d.ts", "dist", ".*", "node_modules"];
|
|
6
|
+
const defaultIgnoreDevDeps = [
|
|
7
|
+
"@xylabs/ts-scripts-yarn3",
|
|
8
|
+
"@xylabs/tsconfig",
|
|
9
|
+
"@xylabs/tsconfig-dom",
|
|
10
|
+
"@xylabs/tsconfig-react",
|
|
11
|
+
"@xylabs/tsconfig-jest",
|
|
12
|
+
"typescript"
|
|
13
|
+
];
|
|
8
14
|
const reportUnused = (name, unused) => {
|
|
9
15
|
if (unused.length) {
|
|
10
16
|
const message = [chalk.yellow(`${unused.length} Unused ${name}`)];
|
|
@@ -13,7 +19,7 @@ const reportUnused = (name, unused) => {
|
|
|
13
19
|
}
|
|
14
20
|
};
|
|
15
21
|
const reportMissing = (name, missing) => {
|
|
16
|
-
if (missing.length) {
|
|
22
|
+
if (Object.keys(missing).length) {
|
|
17
23
|
const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)];
|
|
18
24
|
Object.entries(missing).forEach(([key, value]) => {
|
|
19
25
|
message.push(`${key}`);
|
|
@@ -34,65 +40,54 @@ const packageDeps = async () => {
|
|
|
34
40
|
const error = ex;
|
|
35
41
|
console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`);
|
|
36
42
|
}
|
|
37
|
-
const defaultIgnorePatterns = ["*.d.ts", "dist", ".*", "node_modules"];
|
|
38
|
-
const defaultIgnoreMatches = [
|
|
39
|
-
"@xylabs/ts-scripts-yarn3",
|
|
40
|
-
"@xylabs/tsconfig",
|
|
41
|
-
"@xylabs/tsconfig-dom",
|
|
42
|
-
"@xylabs/tsconfig-react",
|
|
43
|
-
"@xylabs/tsconfig-jest",
|
|
44
|
-
"typescript"
|
|
45
|
-
];
|
|
46
43
|
const [srcUnused, allUnused] = await Promise.all([
|
|
47
44
|
depcheck(`${pkg}/src`, {
|
|
48
|
-
ignoreMatches
|
|
45
|
+
ignoreMatches,
|
|
49
46
|
ignorePatterns: ["*.stories.*", "*.spec.*", "spec", ...defaultIgnorePatterns],
|
|
50
47
|
package: packageContent
|
|
51
48
|
}),
|
|
52
49
|
depcheck(`${pkg}/.`, {
|
|
53
|
-
ignoreMatches
|
|
50
|
+
ignoreMatches,
|
|
54
51
|
ignorePatterns: [...defaultIgnorePatterns],
|
|
55
52
|
package: packageContent,
|
|
56
53
|
specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha]
|
|
57
54
|
})
|
|
58
55
|
]);
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
56
|
+
const unusedDeps = srcUnused.dependencies;
|
|
57
|
+
const unusedDevDeps = allUnused.devDependencies;
|
|
58
|
+
const usedDeps = srcUnused.using;
|
|
59
|
+
const usedDevDeps = allUnused.using;
|
|
60
|
+
const { invalidDirs, invalidFiles } = allUnused;
|
|
64
61
|
const declaredDeps = Object.keys(packageContent.dependencies ?? {});
|
|
65
62
|
const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {});
|
|
66
|
-
const
|
|
67
|
-
|
|
63
|
+
const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {});
|
|
64
|
+
const missingDeps = Object.keys(usedDeps).filter(
|
|
65
|
+
(key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith("@types/")
|
|
68
66
|
);
|
|
69
|
-
const
|
|
70
|
-
(
|
|
71
|
-
if (missingDeps.includes(key)) {
|
|
72
|
-
prev[key] = value;
|
|
73
|
-
}
|
|
74
|
-
return prev;
|
|
75
|
-
},
|
|
76
|
-
{}
|
|
67
|
+
const missingDevDeps = Object.keys(usedDevDeps).filter(
|
|
68
|
+
(key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key) && !defaultIgnoreDevDeps.includes(key)
|
|
77
69
|
);
|
|
78
|
-
const
|
|
70
|
+
const missingDepsObject = {};
|
|
71
|
+
missingDeps.forEach((key) => {
|
|
72
|
+
missingDepsObject[key] = srcUnused.missing[key];
|
|
73
|
+
});
|
|
74
|
+
const missingDevDepsObject = {};
|
|
75
|
+
missingDevDeps.forEach((key) => {
|
|
76
|
+
missingDevDepsObject[key] = allUnused.missing[key];
|
|
77
|
+
});
|
|
78
|
+
const errorCount = unusedDeps.length + unusedDevDeps.length + Object.entries(invalidDirs).length + Object.entries(invalidFiles).length + Object.entries(missingDepsObject).length;
|
|
79
79
|
if (errorCount > 0) {
|
|
80
80
|
console.log(`Deps [${pkgName}]`);
|
|
81
|
-
console.log(`unused.dependencies: ${JSON.stringify(unused.dependencies)}`);
|
|
82
|
-
console.log(`unused.devDependencies: ${JSON.stringify(unused.devDependencies)}`);
|
|
83
|
-
console.log(`unused.invalidDirs: ${JSON.stringify(unused.invalidDirs)}`);
|
|
84
|
-
console.log(`unused.invalidFiles: ${JSON.stringify(unused.invalidFiles)}`);
|
|
85
|
-
console.log(`missingDepsObject: ${JSON.stringify(missingDepsObject)}`);
|
|
86
81
|
} else {
|
|
87
82
|
console.log(`Deps [${pkgName}] - Ok`);
|
|
88
83
|
}
|
|
89
|
-
reportUnused("dependencies",
|
|
90
|
-
reportUnused("devDependencies",
|
|
91
|
-
if (Object.entries(
|
|
92
|
-
Object.entries(
|
|
84
|
+
reportUnused("dependencies", unusedDeps);
|
|
85
|
+
reportUnused("devDependencies", unusedDevDeps);
|
|
86
|
+
if (Object.entries(invalidDirs).length) {
|
|
87
|
+
Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)));
|
|
93
88
|
}
|
|
94
|
-
if (Object.entries(
|
|
95
|
-
Object.entries(
|
|
89
|
+
if (Object.entries(invalidFiles).length) {
|
|
90
|
+
Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)));
|
|
96
91
|
}
|
|
97
92
|
reportMissing("dependencies", missingDepsObject);
|
|
98
93
|
reportMissing("devDependencies", allUnused.missing);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\nconst defaultIgnoreDevDeps = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n]\n\nconst reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {\n if (unused.length) {\n const message = [chalk.yellow(`${unused.length} Unused ${name}`)]\n unused.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n}\n\nconst reportMissing = (name: string, missing: depcheck.Results['missing']) => {\n if (Object.keys(missing).length) {\n const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]\n Object.entries(missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.at(0)}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\n\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n\n const rawIgnore = existsSync(`${pkg}/.depcheckrc`)\n ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '\"ignores\":')\n : undefined\n let ignoreMatches: string[] = []\n try {\n ignoreMatches = rawIgnore ? (JSON.parse(`{${rawIgnore}}`).ignores as string[]) : []\n } catch (ex) {\n const error = ex as Error\n console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)\n }\n\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: ignoreMatches,\n ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: ignoreMatches,\n ignorePatterns: [...defaultIgnorePatterns],\n package: packageContent,\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unusedDeps = srcUnused.dependencies\n const unusedDevDeps = allUnused.devDependencies\n const usedDeps = srcUnused.using\n const usedDevDeps = allUnused.using\n\n const { invalidDirs, invalidFiles } = allUnused\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})\n\n const missingDeps = Object.keys(usedDeps).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),\n )\n\n const missingDevDeps = Object.keys(usedDevDeps).filter(\n (key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key) && !defaultIgnoreDevDeps.includes(key),\n )\n\n const missingDepsObject: Record<string, string[]> = {}\n missingDeps.forEach((key) => {\n missingDepsObject[key] = srcUnused.missing[key]\n })\n\n const missingDevDepsObject: Record<string, string[]> = {}\n missingDevDeps.forEach((key) => {\n missingDevDepsObject[key] = allUnused.missing[key]\n })\n\n const errorCount =\n unusedDeps.length +\n unusedDevDeps.length +\n Object.entries(invalidDirs).length +\n Object.entries(invalidFiles).length +\n Object.entries(missingDepsObject).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unusedDeps)\n reportUnused('devDependencies', unusedDevDeps)\n\n if (Object.entries(invalidDirs).length) {\n Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(invalidFiles).length) {\n Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', allUnused.missing)\n\n checkResult(`Deps [${pkgName}]`, errorCount, 'warn', false)\n\n //returning 0 here since we never want deps to be fatal\n return 0\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"@types/yargs": "^17.0.32",
|
|
65
65
|
"@typescript-eslint/eslint-plugin": "^6.18.0",
|
|
66
66
|
"@typescript-eslint/parser": "^6.18.0",
|
|
67
|
-
"@xylabs/tsconfig": "~3.2.
|
|
67
|
+
"@xylabs/tsconfig": "~3.2.34",
|
|
68
68
|
"async-mutex": "^0.4.0",
|
|
69
69
|
"chalk": "^4.1.2",
|
|
70
70
|
"cosmiconfig": "^8.3.6",
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
"@types/license-checker": "^25.0.6",
|
|
113
113
|
"@types/lodash": "^4.14.202",
|
|
114
114
|
"@types/parse-git-config": "^3.0.4",
|
|
115
|
-
"@xylabs/eslint-config": "~3.2.
|
|
116
|
-
"@xylabs/tsconfig": "~3.2.
|
|
115
|
+
"@xylabs/eslint-config": "~3.2.34",
|
|
116
|
+
"@xylabs/tsconfig": "~3.2.34",
|
|
117
117
|
"publint": "^0.2.7",
|
|
118
118
|
"typescript": "^5.3.3"
|
|
119
119
|
},
|
|
@@ -169,6 +169,6 @@
|
|
|
169
169
|
"package-clean": "echo Not cleaning..."
|
|
170
170
|
},
|
|
171
171
|
"sideEffects": false,
|
|
172
|
-
"version": "3.2.
|
|
172
|
+
"version": "3.2.34",
|
|
173
173
|
"type": "commonjs"
|
|
174
174
|
}
|
|
@@ -5,9 +5,15 @@ import { existsSync, readFileSync } from 'fs'
|
|
|
5
5
|
|
|
6
6
|
import { checkResult } from '../../lib'
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']
|
|
9
|
+
const defaultIgnoreDevDeps = [
|
|
10
|
+
'@xylabs/ts-scripts-yarn3',
|
|
11
|
+
'@xylabs/tsconfig',
|
|
12
|
+
'@xylabs/tsconfig-dom',
|
|
13
|
+
'@xylabs/tsconfig-react',
|
|
14
|
+
'@xylabs/tsconfig-jest',
|
|
15
|
+
'typescript',
|
|
16
|
+
]
|
|
11
17
|
|
|
12
18
|
const reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {
|
|
13
19
|
if (unused.length) {
|
|
@@ -18,7 +24,7 @@ const reportUnused = (name: string, unused: depcheck.Results['dependencies']) =>
|
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
const reportMissing = (name: string, missing: depcheck.Results['missing']) => {
|
|
21
|
-
if (missing.length) {
|
|
27
|
+
if (Object.keys(missing).length) {
|
|
22
28
|
const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]
|
|
23
29
|
Object.entries(missing).forEach(([key, value]) => {
|
|
24
30
|
message.push(`${key}`)
|
|
@@ -45,80 +51,71 @@ export const packageDeps = async () => {
|
|
|
45
51
|
console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)
|
|
46
52
|
}
|
|
47
53
|
|
|
48
|
-
const defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']
|
|
49
|
-
const defaultIgnoreMatches = [
|
|
50
|
-
'@xylabs/ts-scripts-yarn3',
|
|
51
|
-
'@xylabs/tsconfig',
|
|
52
|
-
'@xylabs/tsconfig-dom',
|
|
53
|
-
'@xylabs/tsconfig-react',
|
|
54
|
-
'@xylabs/tsconfig-jest',
|
|
55
|
-
'typescript',
|
|
56
|
-
]
|
|
57
|
-
|
|
58
54
|
const [srcUnused, allUnused] = await Promise.all([
|
|
59
55
|
depcheck(`${pkg}/src`, {
|
|
60
|
-
ignoreMatches:
|
|
56
|
+
ignoreMatches: ignoreMatches,
|
|
61
57
|
ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],
|
|
62
58
|
package: packageContent,
|
|
63
59
|
}),
|
|
64
60
|
depcheck(`${pkg}/.`, {
|
|
65
|
-
ignoreMatches:
|
|
61
|
+
ignoreMatches: ignoreMatches,
|
|
66
62
|
ignorePatterns: [...defaultIgnorePatterns],
|
|
67
63
|
package: packageContent,
|
|
68
64
|
specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],
|
|
69
65
|
}),
|
|
70
66
|
])
|
|
71
67
|
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
const unusedDeps = srcUnused.dependencies
|
|
69
|
+
const unusedDevDeps = allUnused.devDependencies
|
|
70
|
+
const usedDeps = srcUnused.using
|
|
71
|
+
const usedDevDeps = allUnused.using
|
|
72
|
+
|
|
73
|
+
const { invalidDirs, invalidFiles } = allUnused
|
|
77
74
|
|
|
78
75
|
const declaredDeps = Object.keys(packageContent.dependencies ?? {})
|
|
79
76
|
const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})
|
|
77
|
+
const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})
|
|
80
78
|
|
|
81
|
-
const missingDeps = Object.keys(
|
|
82
|
-
(key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/')
|
|
79
|
+
const missingDeps = Object.keys(usedDeps).filter(
|
|
80
|
+
(key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),
|
|
83
81
|
)
|
|
84
82
|
|
|
85
|
-
const
|
|
86
|
-
(
|
|
87
|
-
if (missingDeps.includes(key)) {
|
|
88
|
-
prev[key] = value
|
|
89
|
-
}
|
|
90
|
-
return prev
|
|
91
|
-
},
|
|
92
|
-
{} as Record<string, string[]>,
|
|
83
|
+
const missingDevDeps = Object.keys(usedDevDeps).filter(
|
|
84
|
+
(key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key) && !defaultIgnoreDevDeps.includes(key),
|
|
93
85
|
)
|
|
94
86
|
|
|
87
|
+
const missingDepsObject: Record<string, string[]> = {}
|
|
88
|
+
missingDeps.forEach((key) => {
|
|
89
|
+
missingDepsObject[key] = srcUnused.missing[key]
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
const missingDevDepsObject: Record<string, string[]> = {}
|
|
93
|
+
missingDevDeps.forEach((key) => {
|
|
94
|
+
missingDevDepsObject[key] = allUnused.missing[key]
|
|
95
|
+
})
|
|
96
|
+
|
|
95
97
|
const errorCount =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
Object.entries(
|
|
99
|
-
Object.entries(
|
|
98
|
+
unusedDeps.length +
|
|
99
|
+
unusedDevDeps.length +
|
|
100
|
+
Object.entries(invalidDirs).length +
|
|
101
|
+
Object.entries(invalidFiles).length +
|
|
100
102
|
Object.entries(missingDepsObject).length
|
|
101
103
|
|
|
102
104
|
if (errorCount > 0) {
|
|
103
105
|
console.log(`Deps [${pkgName}]`)
|
|
104
|
-
console.log(`unused.dependencies: ${JSON.stringify(unused.dependencies)}`)
|
|
105
|
-
console.log(`unused.devDependencies: ${JSON.stringify(unused.devDependencies)}`)
|
|
106
|
-
console.log(`unused.invalidDirs: ${JSON.stringify(unused.invalidDirs)}`)
|
|
107
|
-
console.log(`unused.invalidFiles: ${JSON.stringify(unused.invalidFiles)}`)
|
|
108
|
-
console.log(`missingDepsObject: ${JSON.stringify(missingDepsObject)}`)
|
|
109
106
|
} else {
|
|
110
107
|
console.log(`Deps [${pkgName}] - Ok`)
|
|
111
108
|
}
|
|
112
109
|
|
|
113
|
-
reportUnused('dependencies',
|
|
114
|
-
reportUnused('devDependencies',
|
|
110
|
+
reportUnused('dependencies', unusedDeps)
|
|
111
|
+
reportUnused('devDependencies', unusedDevDeps)
|
|
115
112
|
|
|
116
|
-
if (Object.entries(
|
|
117
|
-
Object.entries(
|
|
113
|
+
if (Object.entries(invalidDirs).length) {
|
|
114
|
+
Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))
|
|
118
115
|
}
|
|
119
116
|
|
|
120
|
-
if (Object.entries(
|
|
121
|
-
Object.entries(
|
|
117
|
+
if (Object.entries(invalidFiles).length) {
|
|
118
|
+
Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))
|
|
122
119
|
}
|
|
123
120
|
|
|
124
121
|
reportMissing('dependencies', missingDepsObject)
|