@mf-toolkit/shared-inspector 0.3.1 → 0.4.0

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 (66) hide show
  1. package/README.md +196 -130
  2. package/dist/cli/args.d.ts +5 -0
  3. package/dist/cli/args.d.ts.map +1 -0
  4. package/dist/cli/args.js +98 -0
  5. package/dist/cli/args.js.map +1 -0
  6. package/dist/cli/colorize-report.d.ts +6 -0
  7. package/dist/cli/colorize-report.d.ts.map +1 -0
  8. package/dist/cli/colorize-report.js +71 -0
  9. package/dist/cli/colorize-report.js.map +1 -0
  10. package/dist/cli/colors.d.ts +14 -0
  11. package/dist/cli/colors.d.ts.map +1 -0
  12. package/dist/cli/colors.js +26 -0
  13. package/dist/cli/colors.js.map +1 -0
  14. package/dist/cli/help.d.ts +2 -0
  15. package/dist/cli/help.d.ts.map +1 -0
  16. package/dist/cli/help.js +30 -0
  17. package/dist/cli/help.js.map +1 -0
  18. package/dist/cli/index.d.ts +8 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +62 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/interactive.d.ts +8 -0
  23. package/dist/cli/interactive.d.ts.map +1 -0
  24. package/dist/cli/interactive.js +41 -0
  25. package/dist/cli/interactive.js.map +1 -0
  26. package/dist/cli/run-federation.d.ts +3 -0
  27. package/dist/cli/run-federation.d.ts.map +1 -0
  28. package/dist/cli/run-federation.js +41 -0
  29. package/dist/cli/run-federation.js.map +1 -0
  30. package/dist/cli/run-project.d.ts +5 -0
  31. package/dist/cli/run-project.d.ts.map +1 -0
  32. package/dist/cli/run-project.js +57 -0
  33. package/dist/cli/run-project.js.map +1 -0
  34. package/dist/cli/spinner.d.ts +10 -0
  35. package/dist/cli/spinner.d.ts.map +1 -0
  36. package/dist/cli/spinner.js +45 -0
  37. package/dist/cli/spinner.js.map +1 -0
  38. package/dist/cli/types.d.ts +17 -0
  39. package/dist/cli/types.d.ts.map +1 -0
  40. package/dist/cli/types.js +2 -0
  41. package/dist/cli/types.js.map +1 -0
  42. package/dist/cli.d.ts +3 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +13 -0
  45. package/dist/cli.js.map +1 -0
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/reporter/diagnostics.d.ts +23 -0
  51. package/dist/reporter/diagnostics.d.ts.map +1 -0
  52. package/dist/reporter/diagnostics.js +138 -0
  53. package/dist/reporter/diagnostics.js.map +1 -0
  54. package/dist/reporter/format-federation-report.d.ts +11 -5
  55. package/dist/reporter/format-federation-report.d.ts.map +1 -1
  56. package/dist/reporter/format-federation-report.js +78 -37
  57. package/dist/reporter/format-federation-report.js.map +1 -1
  58. package/dist/reporter/format-report.d.ts +14 -7
  59. package/dist/reporter/format-report.d.ts.map +1 -1
  60. package/dist/reporter/format-report.js +67 -38
  61. package/dist/reporter/format-report.js.map +1 -1
  62. package/dist/reporter/scoring.d.ts +28 -0
  63. package/dist/reporter/scoring.d.ts.map +1 -0
  64. package/dist/reporter/scoring.js +74 -0
  65. package/dist/reporter/scoring.js.map +1 -0
  66. package/package.json +5 -2
@@ -0,0 +1,74 @@
1
+ // ─── Severity mapping ─────────────────────────────────────────────────────────
2
+ //
3
+ // ProjectReport:
4
+ // HIGH — mismatched versions (sharing silently broken, runtime crash)
5
+ // MEDIUM — singletonRisks + eagerRisks + candidates (duplicate instances / bundles)
6
+ // LOW — unused (dead config, over-sharing)
7
+ //
8
+ // FederationReport:
9
+ // HIGH — versionConflicts (cross-MF singleton negotiation fails)
10
+ // MEDIUM — singletonMismatches + hostGaps (inconsistent setup / unbundled copies)
11
+ // LOW — ghostShares (one-sided dead coupling)
12
+ const PENALTY = {
13
+ high: 20,
14
+ medium: 8,
15
+ low: 3,
16
+ };
17
+ // ─── Scorers ─────────────────────────────────────────────────────────────────
18
+ export function scoreProjectReport(report) {
19
+ const high = report.mismatched.length;
20
+ const medium = report.singletonRisks.length + report.eagerRisks.length + report.candidates.length;
21
+ const low = report.unused.length;
22
+ return buildScore(high, medium, low);
23
+ }
24
+ export function scoreFederationReport(report) {
25
+ const high = report.versionConflicts.length;
26
+ const medium = report.singletonMismatches.length + report.hostGaps.length;
27
+ const low = report.ghostShares.length;
28
+ return buildScore(high, medium, low);
29
+ }
30
+ // ─── Internal ─────────────────────────────────────────────────────────────────
31
+ function buildScore(high, medium, low) {
32
+ const penalty = high * PENALTY.high + medium * PENALTY.medium + low * PENALTY.low;
33
+ const score = Math.max(0, 100 - penalty);
34
+ return { score, label: scoreLabel(score), high, medium, low };
35
+ }
36
+ function scoreLabel(score) {
37
+ if (score >= 90)
38
+ return 'HEALTHY';
39
+ if (score >= 70)
40
+ return 'GOOD';
41
+ if (score >= 40)
42
+ return 'RISKY';
43
+ return 'CRITICAL';
44
+ }
45
+ // ─── Formatter helper ─────────────────────────────────────────────────────────
46
+ const LABEL_ICON = {
47
+ HEALTHY: '✅',
48
+ GOOD: '🟡',
49
+ RISKY: '🟠',
50
+ CRITICAL: '🔴',
51
+ };
52
+ /**
53
+ * Renders the score block appended to reports.
54
+ *
55
+ * @example
56
+ * Score: 62/100 🟠 RISKY
57
+ *
58
+ * Issues:
59
+ * 🔴 1 high — version mismatch
60
+ * 🟠 2 medium — singleton gaps, duplicate libs
61
+ * 🟡 0 low — over-sharing
62
+ */
63
+ export function formatScoreBlock(score, highLabel, mediumLabel, lowLabel) {
64
+ const icon = LABEL_ICON[score.label];
65
+ const lines = [];
66
+ lines.push(`Score: ${score.score}/100 ${icon} ${score.label}`);
67
+ lines.push('');
68
+ lines.push('Issues:');
69
+ lines.push(` 🔴 ${score.high} high — ${highLabel}`);
70
+ lines.push(` 🟠 ${score.medium} medium — ${mediumLabel}`);
71
+ lines.push(` 🟡 ${score.low} low — ${lowLabel}`);
72
+ return lines.join('\n');
73
+ }
74
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/reporter/scoring.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@mf-toolkit/shared-inspector",
3
- "version": "0.3.1",
4
- "description": "Build-time shared dependency analyzer for Module Federation.",
3
+ "version": "0.4.0",
4
+ "description": "Stop debugging Module Federation in production. Audit shared config at build time.",
5
5
  "author": "Vitaly Zheltko",
6
6
  "license": "MIT",
7
7
  "type": "module",
8
+ "bin": {
9
+ "mf-inspector": "./dist/cli.js"
10
+ },
8
11
  "exports": {
9
12
  ".": {
10
13
  "types": "./dist/index.d.ts",