@xylabs/ts-scripts-yarn3 7.4.10 → 7.4.12
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/deplint/checkPackage/checkPackage.mjs +115 -16
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +2 -1
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +114 -20
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +2 -1
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/index.mjs +115 -16
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -1
- package/dist/actions/deplint/deplint.mjs +166 -38
- package/dist/actions/deplint/deplint.mjs.map +1 -1
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs +3 -1
- package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -1
- package/dist/actions/deplint/index.mjs +166 -38
- package/dist/actions/deplint/index.mjs.map +1 -1
- package/dist/actions/index.mjs +441 -188
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/readme-gen.mjs +173 -0
- package/dist/actions/readme-gen.mjs.map +1 -0
- package/dist/bin/xy.mjs +432 -130
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.d.ts +39 -2
- package/dist/index.mjs +490 -207
- package/dist/index.mjs.map +1 -1
- package/dist/lib/generateReadmeFiles.mjs +160 -0
- package/dist/lib/generateReadmeFiles.mjs.map +1 -0
- package/dist/lib/index.mjs +145 -14
- package/dist/lib/index.mjs.map +1 -1
- package/dist/xy/index.mjs +432 -130
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +432 -130
- package/dist/xy/xy.mjs.map +1 -1
- package/dist/xy/xyCommonCommands.mjs +210 -42
- package/dist/xy/xyCommonCommands.mjs.map +1 -1
- package/dist/xy/xyLintCommands.mjs +205 -71
- package/dist/xy/xyLintCommands.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/actions/deplint/deplint.ts
|
|
2
|
-
import
|
|
2
|
+
import chalk7 from "chalk";
|
|
3
3
|
|
|
4
4
|
// src/lib/yarn/workspace/yarnWorkspaces.ts
|
|
5
5
|
import { spawnSync } from "child_process";
|
|
@@ -20,6 +20,27 @@ var yarnWorkspace = (pkg) => {
|
|
|
20
20
|
return workspace;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
// src/lib/loadConfig.ts
|
|
24
|
+
import chalk from "chalk";
|
|
25
|
+
import { cosmiconfig } from "cosmiconfig";
|
|
26
|
+
import { TypeScriptLoader } from "cosmiconfig-typescript-loader";
|
|
27
|
+
import deepmerge from "deepmerge";
|
|
28
|
+
var config;
|
|
29
|
+
var loadConfig = async (params) => {
|
|
30
|
+
if (config === void 0) {
|
|
31
|
+
const cosmicConfigResult = await cosmiconfig("xy", { cache: true, loaders: { ".ts": TypeScriptLoader() } }).search();
|
|
32
|
+
config = cosmicConfigResult?.config;
|
|
33
|
+
const configFilePath = cosmicConfigResult?.filepath;
|
|
34
|
+
if (configFilePath !== void 0) {
|
|
35
|
+
console.log(chalk.green(`Loaded config from ${configFilePath}`));
|
|
36
|
+
if (config.verbose) {
|
|
37
|
+
console.log(chalk.gray(`${JSON.stringify(config, null, 2)}`));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return deepmerge(config, params ?? {});
|
|
42
|
+
};
|
|
43
|
+
|
|
23
44
|
// src/actions/deplint/findFiles.ts
|
|
24
45
|
import fs from "fs";
|
|
25
46
|
|
|
@@ -194,11 +215,11 @@ function getExternalImportsFromFiles({
|
|
|
194
215
|
const allImportPaths = {};
|
|
195
216
|
const distImportPaths = {};
|
|
196
217
|
const distTypeImportPaths = {};
|
|
197
|
-
for (const
|
|
218
|
+
for (const path6 of allFiles) getImportsFromFile(path6, allImportPaths, allImportPaths).flat();
|
|
198
219
|
const distTypeFiles = distFiles.filter(isDeclarationFile);
|
|
199
220
|
const distCodeFiles = distFiles.filter((file) => !isDeclarationFile(file));
|
|
200
|
-
for (const
|
|
201
|
-
for (const
|
|
221
|
+
for (const path6 of distCodeFiles) getImportsFromFile(path6, distImportPaths, distImportPaths).flat();
|
|
222
|
+
for (const path6 of distTypeFiles) getImportsFromFile(path6, distTypeImportPaths, distTypeImportPaths).flat();
|
|
202
223
|
const allImports = Object.keys(allImportPaths);
|
|
203
224
|
const distImports = Object.keys(distImportPaths);
|
|
204
225
|
const externalAllImports = removeInternalImports(allImports);
|
|
@@ -220,12 +241,12 @@ function getExternalImportsFromFiles({
|
|
|
220
241
|
|
|
221
242
|
// src/actions/deplint/checkPackage/getUnlistedDependencies.ts
|
|
222
243
|
import { builtinModules } from "module";
|
|
223
|
-
import
|
|
244
|
+
import chalk2 from "chalk";
|
|
224
245
|
function isListedOrBuiltin(imp, name, dependencies, peerDependencies) {
|
|
225
246
|
return dependencies.includes(imp) || imp === name || dependencies.includes(`@types/${imp}`) || peerDependencies.includes(imp) || peerDependencies.includes(`@types/${imp}`) || builtinModules.includes(imp) || builtinModules.includes(`@types/${imp}`);
|
|
226
247
|
}
|
|
227
248
|
function logMissing(name, imp, importPaths) {
|
|
228
|
-
console.log(`[${
|
|
249
|
+
console.log(`[${chalk2.blue(name)}] Missing dependency in package.json: ${chalk2.red(imp)}`);
|
|
229
250
|
if (importPaths[imp]) {
|
|
230
251
|
console.log(` ${importPaths[imp].join("\n ")}`);
|
|
231
252
|
}
|
|
@@ -250,7 +271,7 @@ function getUnlistedDependencies({ name, location }, { dependencies, peerDepende
|
|
|
250
271
|
}
|
|
251
272
|
if (unlistedDependencies > 0) {
|
|
252
273
|
const packageLocation = `${location}/package.json`;
|
|
253
|
-
console.log(` ${
|
|
274
|
+
console.log(` ${chalk2.yellow(packageLocation)}
|
|
254
275
|
`);
|
|
255
276
|
}
|
|
256
277
|
return unlistedDependencies;
|
|
@@ -258,7 +279,7 @@ function getUnlistedDependencies({ name, location }, { dependencies, peerDepende
|
|
|
258
279
|
|
|
259
280
|
// src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts
|
|
260
281
|
import { builtinModules as builtinModules2 } from "module";
|
|
261
|
-
import
|
|
282
|
+
import chalk3 from "chalk";
|
|
262
283
|
function getUnlistedDevDependencies({ name, location }, {
|
|
263
284
|
devDependencies,
|
|
264
285
|
dependencies,
|
|
@@ -272,7 +293,7 @@ function getUnlistedDevDependencies({ name, location }, {
|
|
|
272
293
|
for (const imp of externalAllImports) {
|
|
273
294
|
if (!distImports.includes(imp) && imp !== name && !dependencies.includes(imp) && !dependencies.includes(`@types/${imp}`) && !peerDependencies.includes(imp) && !peerDependencies.includes(`@types/${imp}`) && !devDependencies.includes(imp) && !devDependencies.includes(`@types/${imp}`) && !builtinModules2.includes(imp)) {
|
|
274
295
|
unlistedDevDependencies++;
|
|
275
|
-
console.log(`[${
|
|
296
|
+
console.log(`[${chalk3.blue(name)}] Missing devDependency in package.json: ${chalk3.red(imp)}`);
|
|
276
297
|
if (allImportPaths[imp]) {
|
|
277
298
|
console.log(` ${allImportPaths[imp].join("\n ")}`);
|
|
278
299
|
}
|
|
@@ -280,40 +301,50 @@ function getUnlistedDevDependencies({ name, location }, {
|
|
|
280
301
|
}
|
|
281
302
|
if (unlistedDevDependencies > 0) {
|
|
282
303
|
const packageLocation = `${location}/package.json`;
|
|
283
|
-
console.log(` ${
|
|
304
|
+
console.log(` ${chalk3.yellow(packageLocation)}
|
|
284
305
|
`);
|
|
285
306
|
}
|
|
286
307
|
return unlistedDevDependencies;
|
|
287
308
|
}
|
|
288
309
|
|
|
289
310
|
// src/actions/deplint/checkPackage/getUnusedDependencies.ts
|
|
290
|
-
import
|
|
311
|
+
import chalk4 from "chalk";
|
|
291
312
|
function getUnusedDependencies({ name, location }, { dependencies }, {
|
|
292
313
|
externalDistImports,
|
|
293
314
|
externalDistTypeImports,
|
|
294
315
|
externalAllImports
|
|
295
|
-
}) {
|
|
316
|
+
}, exclude) {
|
|
296
317
|
let unusedDependencies = 0;
|
|
297
318
|
for (const dep of dependencies) {
|
|
319
|
+
if (exclude?.has(dep)) continue;
|
|
298
320
|
if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\//, "")) && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\//, ""))) {
|
|
299
321
|
unusedDependencies++;
|
|
300
322
|
if (externalAllImports.includes(dep)) {
|
|
301
|
-
console.log(`[${
|
|
323
|
+
console.log(`[${chalk4.blue(name)}] dependency should be devDependency in package.json: ${chalk4.red(dep)}`);
|
|
302
324
|
} else {
|
|
303
|
-
console.log(`[${
|
|
325
|
+
console.log(`[${chalk4.blue(name)}] Unused dependency in package.json: ${chalk4.red(dep)}`);
|
|
304
326
|
}
|
|
305
327
|
}
|
|
306
328
|
}
|
|
307
329
|
if (unusedDependencies > 0) {
|
|
308
330
|
const packageLocation = `${location}/package.json`;
|
|
309
|
-
console.log(` ${
|
|
331
|
+
console.log(` ${chalk4.yellow(packageLocation)}
|
|
310
332
|
`);
|
|
311
333
|
}
|
|
312
334
|
return unusedDependencies;
|
|
313
335
|
}
|
|
314
336
|
|
|
315
337
|
// src/actions/deplint/checkPackage/getUnusedDevDependencies.ts
|
|
316
|
-
import
|
|
338
|
+
import chalk5 from "chalk";
|
|
339
|
+
|
|
340
|
+
// src/actions/deplint/getCliReferencedPackagesFromFiles.ts
|
|
341
|
+
import fs7 from "fs";
|
|
342
|
+
import path5 from "path";
|
|
343
|
+
import ts2 from "typescript";
|
|
344
|
+
|
|
345
|
+
// src/actions/deplint/getScriptReferencedPackages.ts
|
|
346
|
+
import fs6 from "fs";
|
|
347
|
+
import path4 from "path";
|
|
317
348
|
|
|
318
349
|
// src/actions/deplint/getRequiredPeerDependencies.ts
|
|
319
350
|
import fs5 from "fs";
|
|
@@ -348,8 +379,6 @@ function getRequiredPeerDependencies(location, allDeps) {
|
|
|
348
379
|
}
|
|
349
380
|
|
|
350
381
|
// src/actions/deplint/getScriptReferencedPackages.ts
|
|
351
|
-
import fs6 from "fs";
|
|
352
|
-
import path4 from "path";
|
|
353
382
|
function getBinNames(location, dep) {
|
|
354
383
|
const depPkgPath = findDepPackageJson(location, dep);
|
|
355
384
|
if (!depPkgPath) return [];
|
|
@@ -399,15 +428,101 @@ function getScriptReferencedPackages(location, allDeps) {
|
|
|
399
428
|
return referenced;
|
|
400
429
|
}
|
|
401
430
|
|
|
431
|
+
// src/actions/deplint/getCliReferencedPackagesFromFiles.ts
|
|
432
|
+
var shellCommandFunctions = /* @__PURE__ */ new Set(["execSync", "exec"]);
|
|
433
|
+
var directExecFunctions = /* @__PURE__ */ new Set(["spawn", "spawnSync", "execFile", "execFileSync"]);
|
|
434
|
+
var allExecFunctions = /* @__PURE__ */ new Set([...shellCommandFunctions, ...directExecFunctions]);
|
|
435
|
+
function getCommandTokensFromFile(filePath) {
|
|
436
|
+
const tokens = /* @__PURE__ */ new Set();
|
|
437
|
+
let sourceCode;
|
|
438
|
+
try {
|
|
439
|
+
sourceCode = fs7.readFileSync(filePath, "utf8");
|
|
440
|
+
} catch {
|
|
441
|
+
return tokens;
|
|
442
|
+
}
|
|
443
|
+
const isMjsFile = filePath.endsWith(".mjs");
|
|
444
|
+
const sourceFile = ts2.createSourceFile(
|
|
445
|
+
path5.basename(filePath),
|
|
446
|
+
sourceCode,
|
|
447
|
+
ts2.ScriptTarget.Latest,
|
|
448
|
+
true,
|
|
449
|
+
isMjsFile ? ts2.ScriptKind.JS : void 0
|
|
450
|
+
);
|
|
451
|
+
function visit(node) {
|
|
452
|
+
if (ts2.isCallExpression(node) && node.arguments.length > 0) {
|
|
453
|
+
const fnName = getFunctionName(node.expression);
|
|
454
|
+
if (fnName && allExecFunctions.has(fnName)) {
|
|
455
|
+
const firstArg = node.arguments[0];
|
|
456
|
+
if (ts2.isStringLiteral(firstArg) || ts2.isNoSubstitutionTemplateLiteral(firstArg)) {
|
|
457
|
+
const value = firstArg.text;
|
|
458
|
+
if (shellCommandFunctions.has(fnName)) {
|
|
459
|
+
for (const token of tokenizeScript(value)) {
|
|
460
|
+
tokens.add(token);
|
|
461
|
+
}
|
|
462
|
+
} else {
|
|
463
|
+
tokens.add(value);
|
|
464
|
+
}
|
|
465
|
+
} else if (ts2.isTemplateExpression(firstArg)) {
|
|
466
|
+
const head = firstArg.head.text;
|
|
467
|
+
if (head) {
|
|
468
|
+
for (const token of tokenizeScript(head)) {
|
|
469
|
+
tokens.add(token);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
ts2.forEachChild(node, visit);
|
|
476
|
+
}
|
|
477
|
+
visit(sourceFile);
|
|
478
|
+
return tokens;
|
|
479
|
+
}
|
|
480
|
+
function getFunctionName(expr) {
|
|
481
|
+
if (ts2.isIdentifier(expr)) {
|
|
482
|
+
return expr.text;
|
|
483
|
+
}
|
|
484
|
+
if (ts2.isPropertyAccessExpression(expr) && ts2.isIdentifier(expr.name)) {
|
|
485
|
+
return expr.name.text;
|
|
486
|
+
}
|
|
487
|
+
return void 0;
|
|
488
|
+
}
|
|
489
|
+
function getCliReferencedPackagesFromFiles(allFiles, location, allDeps) {
|
|
490
|
+
const allTokens = /* @__PURE__ */ new Set();
|
|
491
|
+
for (const file of allFiles) {
|
|
492
|
+
for (const token of getCommandTokensFromFile(file)) {
|
|
493
|
+
allTokens.add(token);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
if (allTokens.size === 0) return /* @__PURE__ */ new Set();
|
|
497
|
+
const binToPackage = /* @__PURE__ */ new Map();
|
|
498
|
+
for (const dep of allDeps) {
|
|
499
|
+
for (const bin of getBinNames(location, dep)) {
|
|
500
|
+
binToPackage.set(bin, dep);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
const referenced = /* @__PURE__ */ new Set();
|
|
504
|
+
for (const token of allTokens) {
|
|
505
|
+
const baseName = getBasePackageName(token);
|
|
506
|
+
if (allDeps.includes(baseName)) {
|
|
507
|
+
referenced.add(baseName);
|
|
508
|
+
}
|
|
509
|
+
const pkg = binToPackage.get(token);
|
|
510
|
+
if (pkg) {
|
|
511
|
+
referenced.add(pkg);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
return referenced;
|
|
515
|
+
}
|
|
516
|
+
|
|
402
517
|
// src/actions/deplint/implicitDevDependencies.ts
|
|
403
|
-
import
|
|
518
|
+
import fs8 from "fs";
|
|
404
519
|
var hasFileWithExtension = (files, extensions) => files.some((f) => extensions.some((ext) => f.endsWith(ext)));
|
|
405
520
|
var tsExtensions = [".ts", ".tsx", ".mts", ".cts"];
|
|
406
521
|
var hasTypescriptFiles = ({ allFiles }) => hasFileWithExtension(allFiles, tsExtensions);
|
|
407
522
|
var decoratorPattern = /^\s*@[a-zA-Z]\w*/m;
|
|
408
523
|
var hasDecorators = ({ allFiles }) => allFiles.filter((f) => tsExtensions.some((ext) => f.endsWith(ext))).some((file) => {
|
|
409
524
|
try {
|
|
410
|
-
const content =
|
|
525
|
+
const content = fs8.readFileSync(file, "utf8");
|
|
411
526
|
return decoratorPattern.test(content);
|
|
412
527
|
} catch {
|
|
413
528
|
return false;
|
|
@@ -420,7 +535,7 @@ function hasImportPlugin({ location, allDependencies }) {
|
|
|
420
535
|
const pkgPath = findDepPackageJson(location, dep);
|
|
421
536
|
if (!pkgPath) continue;
|
|
422
537
|
try {
|
|
423
|
-
const pkg = JSON.parse(
|
|
538
|
+
const pkg = JSON.parse(fs8.readFileSync(pkgPath, "utf8"));
|
|
424
539
|
const transitiveDeps = [
|
|
425
540
|
...Object.keys(pkg.dependencies ?? {}),
|
|
426
541
|
...Object.keys(pkg.peerDependencies ?? {})
|
|
@@ -472,10 +587,11 @@ var allExternalImports = ({
|
|
|
472
587
|
...externalDistTypeImports
|
|
473
588
|
]);
|
|
474
589
|
};
|
|
475
|
-
function isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs) {
|
|
590
|
+
function isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs) {
|
|
476
591
|
if (implicitDeps.has(dep)) return true;
|
|
477
592
|
if (requiredPeers.has(dep)) return true;
|
|
478
593
|
if (scriptRefs.has(dep)) return true;
|
|
594
|
+
if (cliRefs.has(dep)) return true;
|
|
479
595
|
if (dep.startsWith("@types/")) {
|
|
480
596
|
const baseName = dep.replace(/^@types\//, "");
|
|
481
597
|
return allImports.has(baseName) || allImports.has(dep) || implicitDeps.has(baseName);
|
|
@@ -486,7 +602,7 @@ function getUnusedDevDependencies({ name, location }, {
|
|
|
486
602
|
devDependencies,
|
|
487
603
|
dependencies,
|
|
488
604
|
peerDependencies
|
|
489
|
-
}, sourceParams, fileContext) {
|
|
605
|
+
}, sourceParams, fileContext, exclude) {
|
|
490
606
|
const allImports = allExternalImports(sourceParams);
|
|
491
607
|
const allDeps = [...dependencies, ...devDependencies, ...peerDependencies];
|
|
492
608
|
const implicitDeps = getImplicitDevDependencies({
|
|
@@ -496,39 +612,42 @@ function getUnusedDevDependencies({ name, location }, {
|
|
|
496
612
|
});
|
|
497
613
|
const requiredPeers = getRequiredPeerDependencies(location, allDeps);
|
|
498
614
|
const scriptRefs = getScriptReferencedPackages(location, allDeps);
|
|
615
|
+
const cliRefs = getCliReferencedPackagesFromFiles(fileContext.allFiles, location, allDeps);
|
|
499
616
|
let unusedDevDependencies = 0;
|
|
500
617
|
for (const dep of devDependencies) {
|
|
618
|
+
if (exclude?.has(dep)) continue;
|
|
501
619
|
if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue;
|
|
502
|
-
if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs)) {
|
|
620
|
+
if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {
|
|
503
621
|
unusedDevDependencies++;
|
|
504
|
-
console.log(`[${
|
|
622
|
+
console.log(`[${chalk5.blue(name)}] Unused devDependency in package.json: ${chalk5.red(dep)}`);
|
|
505
623
|
}
|
|
506
624
|
}
|
|
507
625
|
if (unusedDevDependencies > 0) {
|
|
508
626
|
const packageLocation = `${location}/package.json`;
|
|
509
|
-
console.log(` ${
|
|
627
|
+
console.log(` ${chalk5.yellow(packageLocation)}
|
|
510
628
|
`);
|
|
511
629
|
}
|
|
512
630
|
return unusedDevDependencies;
|
|
513
631
|
}
|
|
514
632
|
|
|
515
633
|
// src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts
|
|
516
|
-
import
|
|
517
|
-
function getUnusedPeerDependencies({ name, location }, { peerDependencies, dependencies }, { externalDistImports, externalDistTypeImports }) {
|
|
634
|
+
import chalk6 from "chalk";
|
|
635
|
+
function getUnusedPeerDependencies({ name, location }, { peerDependencies, dependencies }, { externalDistImports, externalDistTypeImports }, exclude) {
|
|
518
636
|
let unusedDependencies = 0;
|
|
519
637
|
for (const dep of peerDependencies) {
|
|
638
|
+
if (exclude?.has(dep)) continue;
|
|
520
639
|
if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\//, "")) && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\//, ""))) {
|
|
521
640
|
unusedDependencies++;
|
|
522
641
|
if (dependencies.includes(dep)) {
|
|
523
|
-
console.log(`[${
|
|
642
|
+
console.log(`[${chalk6.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk6.red(dep)}`);
|
|
524
643
|
} else {
|
|
525
|
-
console.log(`[${
|
|
644
|
+
console.log(`[${chalk6.blue(name)}] Unused peerDependency in package.json: ${chalk6.red(dep)}`);
|
|
526
645
|
}
|
|
527
646
|
}
|
|
528
647
|
}
|
|
529
648
|
if (unusedDependencies > 0) {
|
|
530
649
|
const packageLocation = `${location}/package.json`;
|
|
531
|
-
console.log(` ${
|
|
650
|
+
console.log(` ${chalk6.yellow(packageLocation)}
|
|
532
651
|
`);
|
|
533
652
|
}
|
|
534
653
|
return unusedDependencies;
|
|
@@ -553,6 +672,7 @@ function checkPackage({
|
|
|
553
672
|
location,
|
|
554
673
|
deps = false,
|
|
555
674
|
devDeps = false,
|
|
675
|
+
exclude,
|
|
556
676
|
peerDeps = false,
|
|
557
677
|
verbose = false
|
|
558
678
|
}) {
|
|
@@ -571,23 +691,29 @@ function checkPackage({
|
|
|
571
691
|
});
|
|
572
692
|
const packageParams = getDependenciesFromPackageJson(`${location}/package.json`);
|
|
573
693
|
const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
574
|
-
const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
694
|
+
const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams, exclude) : 0;
|
|
575
695
|
const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
576
696
|
const fileContext = { allFiles, distFiles };
|
|
577
|
-
const unusedDevDependencies = checkDevDeps ? getUnusedDevDependencies({ name, location }, packageParams, sourceParams, fileContext) : 0;
|
|
578
|
-
const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
697
|
+
const unusedDevDependencies = checkDevDeps ? getUnusedDevDependencies({ name, location }, packageParams, sourceParams, fileContext, exclude) : 0;
|
|
698
|
+
const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams, exclude) : 0;
|
|
579
699
|
const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + unusedDevDependencies + unusedPeerDependencies;
|
|
580
700
|
return totalErrors;
|
|
581
701
|
}
|
|
582
702
|
|
|
583
703
|
// src/actions/deplint/deplint.ts
|
|
584
|
-
var deplint = ({
|
|
704
|
+
var deplint = async ({
|
|
585
705
|
pkg,
|
|
586
706
|
deps,
|
|
587
707
|
devDeps,
|
|
588
708
|
peerDeps,
|
|
589
|
-
verbose
|
|
709
|
+
verbose,
|
|
710
|
+
cliExclude
|
|
590
711
|
}) => {
|
|
712
|
+
const config2 = await loadConfig();
|
|
713
|
+
const exclude = /* @__PURE__ */ new Set([
|
|
714
|
+
...config2.deplint?.exclude ?? [],
|
|
715
|
+
...cliExclude ?? []
|
|
716
|
+
]);
|
|
591
717
|
let totalErrors = 0;
|
|
592
718
|
if (pkg === void 0) {
|
|
593
719
|
const workspaces = yarnWorkspaces();
|
|
@@ -597,6 +723,7 @@ var deplint = ({
|
|
|
597
723
|
...workspace,
|
|
598
724
|
deps,
|
|
599
725
|
devDeps,
|
|
726
|
+
exclude,
|
|
600
727
|
peerDeps,
|
|
601
728
|
verbose
|
|
602
729
|
});
|
|
@@ -609,14 +736,15 @@ var deplint = ({
|
|
|
609
736
|
location,
|
|
610
737
|
devDeps,
|
|
611
738
|
deps,
|
|
739
|
+
exclude,
|
|
612
740
|
peerDeps,
|
|
613
741
|
verbose
|
|
614
742
|
});
|
|
615
743
|
}
|
|
616
744
|
if (totalErrors > 0) {
|
|
617
|
-
console.warn(`Deplint: Found ${
|
|
745
|
+
console.warn(`Deplint: Found ${chalk7.red(totalErrors)} dependency problems. ${chalk7.red("\u2716")}`);
|
|
618
746
|
} else {
|
|
619
|
-
console.info(`Deplint: Found no dependency problems. ${
|
|
747
|
+
console.info(`Deplint: Found no dependency problems. ${chalk7.green("\u2714")}`);
|
|
620
748
|
}
|
|
621
749
|
return 0;
|
|
622
750
|
};
|