@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.
- package/README.md +196 -130
- package/dist/cli/args.d.ts +5 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +98 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/colorize-report.d.ts +6 -0
- package/dist/cli/colorize-report.d.ts.map +1 -0
- package/dist/cli/colorize-report.js +71 -0
- package/dist/cli/colorize-report.js.map +1 -0
- package/dist/cli/colors.d.ts +14 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +26 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/help.d.ts +2 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +30 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +62 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive.d.ts +8 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +41 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/run-federation.d.ts +3 -0
- package/dist/cli/run-federation.d.ts.map +1 -0
- package/dist/cli/run-federation.js +41 -0
- package/dist/cli/run-federation.js.map +1 -0
- package/dist/cli/run-project.d.ts +5 -0
- package/dist/cli/run-project.d.ts.map +1 -0
- package/dist/cli/run-project.js +57 -0
- package/dist/cli/run-project.js.map +1 -0
- package/dist/cli/spinner.d.ts +10 -0
- package/dist/cli/spinner.d.ts.map +1 -0
- package/dist/cli/spinner.js +45 -0
- package/dist/cli/spinner.js.map +1 -0
- package/dist/cli/types.d.ts +17 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/reporter/diagnostics.d.ts +23 -0
- package/dist/reporter/diagnostics.d.ts.map +1 -0
- package/dist/reporter/diagnostics.js +138 -0
- package/dist/reporter/diagnostics.js.map +1 -0
- package/dist/reporter/format-federation-report.d.ts +11 -5
- package/dist/reporter/format-federation-report.d.ts.map +1 -1
- package/dist/reporter/format-federation-report.js +78 -37
- package/dist/reporter/format-federation-report.js.map +1 -1
- package/dist/reporter/format-report.d.ts +14 -7
- package/dist/reporter/format-report.d.ts.map +1 -1
- package/dist/reporter/format-report.js +67 -38
- package/dist/reporter/format-report.js.map +1 -1
- package/dist/reporter/scoring.d.ts +28 -0
- package/dist/reporter/scoring.d.ts.map +1 -0
- package/dist/reporter/scoring.js +74 -0
- package/dist/reporter/scoring.js.map +1 -0
- 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.
|
|
4
|
-
"description": "
|
|
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",
|