@xylabs/ts-scripts-yarn3 7.4.9 → 7.4.11

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.
Files changed (55) hide show
  1. package/dist/actions/claude-commands.mjs +99 -0
  2. package/dist/actions/claude-commands.mjs.map +1 -0
  3. package/dist/actions/claude-rules.mjs.map +1 -1
  4. package/dist/actions/deplint/checkPackage/checkPackage.mjs +115 -16
  5. package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -1
  6. package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +2 -1
  7. package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -1
  8. package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +114 -20
  9. package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -1
  10. package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +2 -1
  11. package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -1
  12. package/dist/actions/deplint/checkPackage/index.mjs +115 -16
  13. package/dist/actions/deplint/checkPackage/index.mjs.map +1 -1
  14. package/dist/actions/deplint/deplint.mjs +166 -38
  15. package/dist/actions/deplint/deplint.mjs.map +1 -1
  16. package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
  17. package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
  18. package/dist/actions/deplint/getScriptReferencedPackages.mjs +3 -1
  19. package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -1
  20. package/dist/actions/deplint/index.mjs +166 -38
  21. package/dist/actions/deplint/index.mjs.map +1 -1
  22. package/dist/actions/index.mjs +368 -180
  23. package/dist/actions/index.mjs.map +1 -1
  24. package/dist/bin/xy.mjs +356 -134
  25. package/dist/bin/xy.mjs.map +1 -1
  26. package/dist/index.d.ts +27 -2
  27. package/dist/index.mjs +398 -194
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/lib/claudeMdTemplate.mjs +12 -0
  30. package/dist/lib/claudeMdTemplate.mjs.map +1 -1
  31. package/dist/lib/index.mjs +12 -0
  32. package/dist/lib/index.mjs.map +1 -1
  33. package/dist/xy/index.mjs +356 -134
  34. package/dist/xy/index.mjs.map +1 -1
  35. package/dist/xy/xy.mjs +356 -134
  36. package/dist/xy/xy.mjs.map +1 -1
  37. package/dist/xy/xyCommonCommands.mjs +122 -34
  38. package/dist/xy/xyCommonCommands.mjs.map +1 -1
  39. package/dist/xy/xyLintCommands.mjs +205 -71
  40. package/dist/xy/xyLintCommands.mjs.map +1 -1
  41. package/package.json +2 -2
  42. package/templates/commands/xylabs-build.md +5 -0
  43. package/templates/commands/xylabs-clean.md +5 -0
  44. package/templates/commands/xylabs-compile.md +5 -0
  45. package/templates/commands/xylabs-cycle.md +5 -0
  46. package/templates/commands/xylabs-deplint.md +5 -0
  47. package/templates/commands/xylabs-deploy-major.md +7 -0
  48. package/templates/commands/xylabs-deploy-minor.md +7 -0
  49. package/templates/commands/xylabs-deploy.md +7 -0
  50. package/templates/commands/xylabs-fix.md +5 -0
  51. package/templates/commands/xylabs-knip.md +5 -0
  52. package/templates/commands/xylabs-lint.md +5 -0
  53. package/templates/commands/xylabs-publint.md +5 -0
  54. package/templates/commands/xylabs-rebuild.md +5 -0
  55. package/templates/commands/xylabs-test.md +5 -0
@@ -1,5 +1,5 @@
1
1
  // src/actions/deplint/deplint.ts
2
- import chalk6 from "chalk";
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 path5 of allFiles) getImportsFromFile(path5, allImportPaths, allImportPaths).flat();
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 path5 of distCodeFiles) getImportsFromFile(path5, distImportPaths, distImportPaths).flat();
201
- for (const path5 of distTypeFiles) getImportsFromFile(path5, distTypeImportPaths, distTypeImportPaths).flat();
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 chalk from "chalk";
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(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`);
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(` ${chalk.yellow(packageLocation)}
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 chalk2 from "chalk";
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(`[${chalk2.blue(name)}] Missing devDependency in package.json: ${chalk2.red(imp)}`);
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(` ${chalk2.yellow(packageLocation)}
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 chalk3 from "chalk";
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(`[${chalk3.blue(name)}] dependency should be devDependency in package.json: ${chalk3.red(dep)}`);
323
+ console.log(`[${chalk4.blue(name)}] dependency should be devDependency in package.json: ${chalk4.red(dep)}`);
302
324
  } else {
303
- console.log(`[${chalk3.blue(name)}] Unused dependency in package.json: ${chalk3.red(dep)}`);
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(` ${chalk3.yellow(packageLocation)}
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 chalk4 from "chalk";
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 fs7 from "fs";
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 = fs7.readFileSync(file, "utf8");
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(fs7.readFileSync(pkgPath, "utf8"));
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(`[${chalk4.blue(name)}] Unused devDependency in package.json: ${chalk4.red(dep)}`);
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(` ${chalk4.yellow(packageLocation)}
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 chalk5 from "chalk";
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(`[${chalk5.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk5.red(dep)}`);
642
+ console.log(`[${chalk6.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk6.red(dep)}`);
524
643
  } else {
525
- console.log(`[${chalk5.blue(name)}] Unused peerDependency in package.json: ${chalk5.red(dep)}`);
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(` ${chalk5.yellow(packageLocation)}
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 ${chalk6.red(totalErrors)} dependency problems. ${chalk6.red("\u2716")}`);
745
+ console.warn(`Deplint: Found ${chalk7.red(totalErrors)} dependency problems. ${chalk7.red("\u2716")}`);
618
746
  } else {
619
- console.info(`Deplint: Found no dependency problems. ${chalk6.green("\u2714")}`);
747
+ console.info(`Deplint: Found no dependency problems. ${chalk7.green("\u2714")}`);
620
748
  }
621
749
  return 0;
622
750
  };