@mf-toolkit/shared-inspector 0.1.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 +254 -0
- package/dist/analyzer/analyze-project.d.ts +9 -0
- package/dist/analyzer/analyze-project.d.ts.map +1 -0
- package/dist/analyzer/analyze-project.js +38 -0
- package/dist/analyzer/analyze-project.js.map +1 -0
- package/dist/analyzer/detect-issues.d.ts +33 -0
- package/dist/analyzer/detect-issues.d.ts.map +1 -0
- package/dist/analyzer/detect-issues.js +69 -0
- package/dist/analyzer/detect-issues.js.map +1 -0
- package/dist/analyzer/policy.d.ts +27 -0
- package/dist/analyzer/policy.d.ts.map +1 -0
- package/dist/analyzer/policy.js +84 -0
- package/dist/analyzer/policy.js.map +1 -0
- package/dist/collector/build-project-manifest.d.ts +10 -0
- package/dist/collector/build-project-manifest.d.ts.map +1 -0
- package/dist/collector/build-project-manifest.js +82 -0
- package/dist/collector/build-project-manifest.js.map +1 -0
- package/dist/collector/collect-imports.d.ts +17 -0
- package/dist/collector/collect-imports.d.ts.map +1 -0
- package/dist/collector/collect-imports.js +87 -0
- package/dist/collector/collect-imports.js.map +1 -0
- package/dist/collector/parse-declarations.d.ts +26 -0
- package/dist/collector/parse-declarations.d.ts.map +1 -0
- package/dist/collector/parse-declarations.js +134 -0
- package/dist/collector/parse-declarations.js.map +1 -0
- package/dist/collector/parse-shared-config.d.ts +12 -0
- package/dist/collector/parse-shared-config.d.ts.map +1 -0
- package/dist/collector/parse-shared-config.js +56 -0
- package/dist/collector/parse-shared-config.js.map +1 -0
- package/dist/collector/resolve-tsconfig-paths.d.ts +39 -0
- package/dist/collector/resolve-tsconfig-paths.d.ts.map +1 -0
- package/dist/collector/resolve-tsconfig-paths.js +89 -0
- package/dist/collector/resolve-tsconfig-paths.js.map +1 -0
- package/dist/collector/resolve-versions.d.ts +15 -0
- package/dist/collector/resolve-versions.d.ts.map +1 -0
- package/dist/collector/resolve-versions.js +49 -0
- package/dist/collector/resolve-versions.js.map +1 -0
- package/dist/collector/traverse-local-modules.d.ts +27 -0
- package/dist/collector/traverse-local-modules.d.ts.map +1 -0
- package/dist/collector/traverse-local-modules.js +119 -0
- package/dist/collector/traverse-local-modules.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect.d.ts +12 -0
- package/dist/inspect.d.ts.map +1 -0
- package/dist/inspect.js +15 -0
- package/dist/inspect.js.map +1 -0
- package/dist/plugins/webpack.d.ts +40 -0
- package/dist/plugins/webpack.d.ts.map +1 -0
- package/dist/plugins/webpack.js +95 -0
- package/dist/plugins/webpack.js.map +1 -0
- package/dist/reporter/format-report.d.ts +18 -0
- package/dist/reporter/format-report.d.ts.map +1 -0
- package/dist/reporter/format-report.js +87 -0
- package/dist/reporter/format-report.js.map +1 -0
- package/dist/reporter/write-report.d.ts +12 -0
- package/dist/reporter/write-report.d.ts.map +1 -0
- package/dist/reporter/write-report.js +19 -0
- package/dist/reporter/write-report.js.map +1 -0
- package/dist/types.d.ts +179 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/webpack.d.ts +3 -0
- package/dist/webpack.d.ts.map +1 -0
- package/dist/webpack.js +2 -0
- package/dist/webpack.js.map +1 -0
- package/package.json +55 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
export interface SharedDepConfig {
|
|
2
|
+
singleton?: boolean;
|
|
3
|
+
eager?: boolean;
|
|
4
|
+
requiredVersion?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PackageOccurrence {
|
|
7
|
+
package: string;
|
|
8
|
+
/** File where the package was observed */
|
|
9
|
+
file: string;
|
|
10
|
+
/** 'direct' = explicit import/require; 'reexport' = found via barrel re-export chain */
|
|
11
|
+
via: 'direct' | 'reexport';
|
|
12
|
+
}
|
|
13
|
+
export type ParserStrategy = 'regex' | 'typescript';
|
|
14
|
+
export interface CollectorOptions {
|
|
15
|
+
/** Project name (written into the manifest) */
|
|
16
|
+
name: string;
|
|
17
|
+
/** Directories to scan for source files */
|
|
18
|
+
sourceDirs: string[];
|
|
19
|
+
/**
|
|
20
|
+
* Scan depth.
|
|
21
|
+
* - 'direct': regex-scan imports/requires only (fast, shallow)
|
|
22
|
+
* - 'local-graph': + recursive local module traversal to find packages behind barrel re-exports
|
|
23
|
+
* @default 'local-graph'
|
|
24
|
+
*/
|
|
25
|
+
depth?: 'direct' | 'local-graph';
|
|
26
|
+
/** Shared config from Module Federation */
|
|
27
|
+
sharedConfig?: Record<string, SharedDepConfig>;
|
|
28
|
+
/** Project role. @default 'unknown' */
|
|
29
|
+
kind?: 'host' | 'remote' | 'unknown';
|
|
30
|
+
/** Path to package.json. @default './package.json' */
|
|
31
|
+
packageJsonPath?: string;
|
|
32
|
+
/** File extensions to scan. @default ['.ts', '.tsx', '.js', '.jsx'] */
|
|
33
|
+
extensions?: string[];
|
|
34
|
+
/** Packages to exclude from scan results (supports glob: '@company/*') */
|
|
35
|
+
ignore?: string[];
|
|
36
|
+
/**
|
|
37
|
+
* Path to tsconfig.json for resolving TypeScript path aliases (e.g. '@app/*').
|
|
38
|
+
* When provided, aliased imports are followed during local-graph traversal
|
|
39
|
+
* just like relative imports — packages behind aliases become visible.
|
|
40
|
+
* @default undefined (aliases not resolved)
|
|
41
|
+
*/
|
|
42
|
+
tsconfigPath?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Local workspace package names to treat as internal (not external packages).
|
|
45
|
+
* Imports matching these names are excluded from resolvedPackages.
|
|
46
|
+
* Supports exact names and '@scope/*' globs.
|
|
47
|
+
* @example ['@my-org/design-system', '@my-org/*']
|
|
48
|
+
*/
|
|
49
|
+
workspacePackages?: string[];
|
|
50
|
+
/** Parser strategy. @default 'regex' */
|
|
51
|
+
parser?: ParserStrategy;
|
|
52
|
+
}
|
|
53
|
+
export interface ProjectManifest {
|
|
54
|
+
schemaVersion: 1;
|
|
55
|
+
generatedAt: string;
|
|
56
|
+
project: {
|
|
57
|
+
name: string;
|
|
58
|
+
root: string;
|
|
59
|
+
kind?: 'host' | 'remote' | 'unknown';
|
|
60
|
+
};
|
|
61
|
+
source: {
|
|
62
|
+
/** Depth at which facts were collected — determines what is observable in this manifest */
|
|
63
|
+
depth: 'direct' | 'local-graph';
|
|
64
|
+
sourceDirs: string[];
|
|
65
|
+
filesScanned: number;
|
|
66
|
+
};
|
|
67
|
+
usage: {
|
|
68
|
+
/** Packages found via direct import/require declarations */
|
|
69
|
+
directPackages: string[];
|
|
70
|
+
/**
|
|
71
|
+
* Full package list including packages reachable via local module chains.
|
|
72
|
+
* Equals directPackages when depth === 'direct'.
|
|
73
|
+
*/
|
|
74
|
+
resolvedPackages: string[];
|
|
75
|
+
/**
|
|
76
|
+
* Per-package details.
|
|
77
|
+
* importCount = number of unique files from which the package is observed (= files.length).
|
|
78
|
+
*/
|
|
79
|
+
packageDetails: Array<{
|
|
80
|
+
package: string;
|
|
81
|
+
importCount: number;
|
|
82
|
+
files: string[];
|
|
83
|
+
via: 'direct' | 'reexport';
|
|
84
|
+
}>;
|
|
85
|
+
};
|
|
86
|
+
shared: {
|
|
87
|
+
/** Normalised shared config from webpack/rspack */
|
|
88
|
+
declared: Record<string, {
|
|
89
|
+
singleton?: boolean;
|
|
90
|
+
eager?: boolean;
|
|
91
|
+
requiredVersion?: string;
|
|
92
|
+
}>;
|
|
93
|
+
source: 'explicit' | 'extracted-from-plugin';
|
|
94
|
+
};
|
|
95
|
+
versions: {
|
|
96
|
+
/** From package.json dependencies + devDependencies */
|
|
97
|
+
declared: Record<string, string>;
|
|
98
|
+
/**
|
|
99
|
+
* From node_modules/<pkg>/package.json.
|
|
100
|
+
* Empty object when node_modules is not accessible — mismatch checks are skipped
|
|
101
|
+
* for packages absent from this map.
|
|
102
|
+
*/
|
|
103
|
+
installed: Record<string, string>;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export interface AnalysisOptions {
|
|
107
|
+
/**
|
|
108
|
+
* Packages that will never appear in the `unused` list.
|
|
109
|
+
* Useful for packages consumed transitively (JSX Transform, UI-kit peer deps).
|
|
110
|
+
* @default ['react', 'react-dom']
|
|
111
|
+
*/
|
|
112
|
+
alwaysShared?: string[];
|
|
113
|
+
/**
|
|
114
|
+
* Additional packages to add to the built-in share-candidates list.
|
|
115
|
+
*/
|
|
116
|
+
additionalCandidates?: string[];
|
|
117
|
+
/**
|
|
118
|
+
* Additional packages to add to the built-in singleton-risk list.
|
|
119
|
+
*/
|
|
120
|
+
additionalSingletonRisks?: string[];
|
|
121
|
+
}
|
|
122
|
+
export interface UnusedEntry {
|
|
123
|
+
package: string;
|
|
124
|
+
singleton: boolean;
|
|
125
|
+
}
|
|
126
|
+
export interface CandidateEntry {
|
|
127
|
+
package: string;
|
|
128
|
+
importCount: number;
|
|
129
|
+
files: string[];
|
|
130
|
+
via: 'direct' | 'reexport';
|
|
131
|
+
}
|
|
132
|
+
export interface MismatchedEntry {
|
|
133
|
+
package: string;
|
|
134
|
+
configured: string;
|
|
135
|
+
installed: string;
|
|
136
|
+
}
|
|
137
|
+
export interface SingletonRiskEntry {
|
|
138
|
+
package: string;
|
|
139
|
+
}
|
|
140
|
+
export interface EagerRiskEntry {
|
|
141
|
+
/** Package declared with eager: true but without singleton: true.
|
|
142
|
+
* Eager-loading without singleton can cause duplicate module instances
|
|
143
|
+
* when multiple MFs load the same package before negotiation completes. */
|
|
144
|
+
package: string;
|
|
145
|
+
}
|
|
146
|
+
export interface ProjectReport {
|
|
147
|
+
/** Packages in shared config not observed in resolvedPackages */
|
|
148
|
+
unused: UnusedEntry[];
|
|
149
|
+
/** Observed packages not in shared config that are typically shared */
|
|
150
|
+
candidates: CandidateEntry[];
|
|
151
|
+
/** requiredVersion does not satisfy installed version */
|
|
152
|
+
mismatched: MismatchedEntry[];
|
|
153
|
+
/** Packages with global state shared without singleton: true */
|
|
154
|
+
singletonRisks: SingletonRiskEntry[];
|
|
155
|
+
/** Packages declared with eager: true but without singleton: true */
|
|
156
|
+
eagerRisks: EagerRiskEntry[];
|
|
157
|
+
summary: {
|
|
158
|
+
totalShared: number;
|
|
159
|
+
usedShared: number;
|
|
160
|
+
unusedCount: number;
|
|
161
|
+
candidatesCount: number;
|
|
162
|
+
mismatchedCount: number;
|
|
163
|
+
singletonRisksCount: number;
|
|
164
|
+
eagerRisksCount: number;
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
export interface WebpackPluginOptions extends Omit<CollectorOptions, 'name'> {
|
|
168
|
+
/** Policy options for the analyzer */
|
|
169
|
+
analysis?: AnalysisOptions;
|
|
170
|
+
/** Print warnings to console. @default true */
|
|
171
|
+
warn?: boolean;
|
|
172
|
+
/** Fail the build when these findings are present */
|
|
173
|
+
failOn?: 'mismatch' | 'unused' | 'any';
|
|
174
|
+
/** Write project-manifest.json to outputDir. @default false */
|
|
175
|
+
writeManifest?: boolean;
|
|
176
|
+
/** Output directory for manifest file. @default '.' */
|
|
177
|
+
outputDir?: string;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/webpack.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.js","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mf-toolkit/shared-inspector",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Build-time shared dependency analyzer for Module Federation.",
|
|
5
|
+
"author": "Vitaly Zheltko",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./webpack": {
|
|
14
|
+
"types": "./dist/plugins/webpack.d.ts",
|
|
15
|
+
"default": "./dist/plugins/webpack.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"lint": "tsc --noEmit"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"microfrontend",
|
|
31
|
+
"module-federation",
|
|
32
|
+
"shared",
|
|
33
|
+
"webpack",
|
|
34
|
+
"analyzer"
|
|
35
|
+
],
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "https://github.com/zvitaly7/mf-toolkit",
|
|
39
|
+
"directory": "packages/shared-inspector"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"semver": "^7.6.0"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"typescript": ">=4.7"
|
|
46
|
+
},
|
|
47
|
+
"peerDependenciesMeta": {
|
|
48
|
+
"typescript": { "optional": true }
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/semver": "^7.5.8",
|
|
52
|
+
"@types/node": "^25.4.0",
|
|
53
|
+
"typescript": "^5.9.3"
|
|
54
|
+
}
|
|
55
|
+
}
|