@mf-toolkit/shared-inspector 0.4.1 → 0.5.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 +82 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +42 -3
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +12 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-federation.d.ts.map +1 -1
- package/dist/cli/run-federation.js +49 -10
- package/dist/cli/run-federation.js.map +1 -1
- package/dist/cli/run-project.d.ts.map +1 -1
- package/dist/cli/run-project.js +19 -8
- package/dist/cli/run-project.js.map +1 -1
- package/dist/cli/spinner.d.ts +1 -0
- package/dist/cli/spinner.d.ts.map +1 -1
- package/dist/cli/spinner.js +3 -0
- package/dist/cli/spinner.js.map +1 -1
- package/dist/cli/types.d.ts +3 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -251,10 +251,64 @@ jobs:
|
|
|
251
251
|
|
|
252
252
|
Once each MF has emitted its manifest, aggregate them to detect cross-team conflicts: version mismatches, singleton inconsistencies, and shared-config gaps across host and remotes.
|
|
253
253
|
|
|
254
|
+
Manifests can be local files or HTTP/HTTPS URLs — making federation analysis work across separate repositories without manual file passing.
|
|
255
|
+
|
|
254
256
|
### CLI
|
|
255
257
|
|
|
256
258
|
```bash
|
|
259
|
+
# Local files (monorepo or pre-downloaded)
|
|
257
260
|
npx @mf-toolkit/shared-inspector federation checkout.json catalog.json cart.json
|
|
261
|
+
|
|
262
|
+
# URLs — fetch manifests directly from remote storage
|
|
263
|
+
npx @mf-toolkit/shared-inspector federation \
|
|
264
|
+
https://storage.example.com/manifests/checkout.json \
|
|
265
|
+
https://storage.example.com/manifests/cart.json \
|
|
266
|
+
https://storage.example.com/manifests/catalog.json
|
|
267
|
+
|
|
268
|
+
# Mix of local files and URLs
|
|
269
|
+
npx @mf-toolkit/shared-inspector federation checkout.json https://storage.example.com/cart.json
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Polyrepo setup
|
|
273
|
+
|
|
274
|
+
In a polyrepo, each team owns a separate repository. The recommended workflow:
|
|
275
|
+
|
|
276
|
+
**Step 1 — each MF repo publishes its manifest on every build:**
|
|
277
|
+
|
|
278
|
+
```yaml
|
|
279
|
+
# .github/workflows/build.yml (in each MF repo)
|
|
280
|
+
jobs:
|
|
281
|
+
build:
|
|
282
|
+
steps:
|
|
283
|
+
- run: npm run build # MfSharedInspectorPlugin writes project-manifest.json
|
|
284
|
+
- uses: actions/upload-artifact@v4
|
|
285
|
+
with: { name: manifest-${{ github.event.repository.name }}, path: project-manifest.json }
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Step 2 — a dedicated federation-check job downloads all manifests and runs analysis:**
|
|
289
|
+
|
|
290
|
+
```yaml
|
|
291
|
+
# .github/workflows/federation-check.yml (in a shared/platform repo)
|
|
292
|
+
jobs:
|
|
293
|
+
federation-check:
|
|
294
|
+
steps:
|
|
295
|
+
- uses: actions/download-artifact@v4
|
|
296
|
+
with: { name: manifest-checkout, github-token: ${{ secrets.GITHUB_TOKEN }}, repository: org/checkout, run-id: ... }
|
|
297
|
+
- uses: actions/download-artifact@v4
|
|
298
|
+
with: { name: manifest-cart, github-token: ${{ secrets.GITHUB_TOKEN }}, repository: org/cart, run-id: ... }
|
|
299
|
+
- run: |
|
|
300
|
+
npx @mf-toolkit/shared-inspector federation \
|
|
301
|
+
manifest-checkout/project-manifest.json \
|
|
302
|
+
manifest-cart/project-manifest.json
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Alternatively, upload manifests to a shared HTTP storage (S3, CDN, object store) and use URL inputs directly — no artifact coordination required:
|
|
306
|
+
|
|
307
|
+
```yaml
|
|
308
|
+
- run: |
|
|
309
|
+
npx @mf-toolkit/shared-inspector federation \
|
|
310
|
+
https://manifests.internal/checkout/latest.json \
|
|
311
|
+
https://manifests.internal/cart/latest.json
|
|
258
312
|
```
|
|
259
313
|
|
|
260
314
|
### Programmatic
|
|
@@ -387,13 +441,30 @@ Write project-manifest.json? (y/N): n
|
|
|
387
441
|
| `--tsconfig <path>` | — | tsconfig.json for path alias resolution |
|
|
388
442
|
| `--workspace-packages <pkgs>` | — | Comma-separated workspace packages to exclude |
|
|
389
443
|
| `--name <name>` | auto from `package.json` | Project name |
|
|
444
|
+
| `--kind <kind>` | `unknown` | Project role: `host` \| `remote` \| `unknown` |
|
|
390
445
|
| `--fail-on <rule>` | — | Exit 1 when findings match: `mismatch` \| `unused` \| `any` |
|
|
446
|
+
| `--min-score <n>` | — | Exit 1 when score is below n (0–100) |
|
|
447
|
+
| `--json` | `false` | Output findings as JSON (suppresses spinner and banner) |
|
|
391
448
|
| `--write-manifest` | `false` | Write `project-manifest.json` to output dir |
|
|
392
449
|
| `--output-dir <dir>` | `.` | Output directory for manifest |
|
|
393
450
|
| `--interactive, -i` | — | Launch step-by-step wizard |
|
|
394
451
|
| `--version, -v` | — | Print version and exit |
|
|
395
452
|
| `--help, -h` | — | Show help |
|
|
396
453
|
|
|
454
|
+
**Federation subcommand:**
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
mf-inspector federation <manifest1> [manifest2...] [--fail-on <rule>] [--min-score <n>] [--json]
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
Each manifest can be a local file path or an `http(s)://` URL. Local paths are resolved relative to the current working directory.
|
|
461
|
+
|
|
462
|
+
| Flag | Description |
|
|
463
|
+
|------|-------------|
|
|
464
|
+
| `--fail-on <rule>` | Exit 1 when findings match: `mismatch` (version conflicts) \| `unused` (ghost shares) \| `any` |
|
|
465
|
+
| `--min-score <n>` | Exit 1 when federation score is below n |
|
|
466
|
+
| `--json` | Output findings as JSON |
|
|
467
|
+
|
|
397
468
|
## API reference
|
|
398
469
|
|
|
399
470
|
### `buildProjectManifest(options)`
|
|
@@ -441,6 +512,17 @@ Accepts N `ProjectManifest` objects (one per microfrontend) and returns a `Feder
|
|
|
441
512
|
|--------|------|---------|-------------|
|
|
442
513
|
| `alwaysShared` | `string[]` | `['react','react-dom']` | Exclude from ghost/gap detection |
|
|
443
514
|
|
|
515
|
+
### `writeReport(report, outputPath)` / `writeManifest(manifest, outputPath)`
|
|
516
|
+
|
|
517
|
+
Write a `ProjectReport` or `ProjectManifest` to a JSON file. Parent directories are created automatically.
|
|
518
|
+
|
|
519
|
+
```typescript
|
|
520
|
+
import { writeReport, writeManifest } from '@mf-toolkit/shared-inspector';
|
|
521
|
+
|
|
522
|
+
await writeReport(report, './dist/shared-report.json');
|
|
523
|
+
await writeManifest(manifest, './dist/project-manifest.json');
|
|
524
|
+
```
|
|
525
|
+
|
|
444
526
|
### `MfSharedInspectorPlugin` options
|
|
445
527
|
|
|
446
528
|
Extends all `buildProjectManifest` options (except `name`, auto-resolved from compiler) plus:
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA0HjD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAS/E"}
|
package/dist/cli/args.js
CHANGED
|
@@ -2,6 +2,7 @@ import { readFileSync } from 'node:fs';
|
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
const VALID_DEPTHS = new Set(['direct', 'local-graph']);
|
|
4
4
|
const VALID_FAIL_ON = new Set(['mismatch', 'unused', 'any']);
|
|
5
|
+
const VALID_KINDS = new Set(['host', 'remote', 'unknown']);
|
|
5
6
|
export function parseArgs(argv) {
|
|
6
7
|
const args = {
|
|
7
8
|
command: 'project',
|
|
@@ -12,16 +13,35 @@ export function parseArgs(argv) {
|
|
|
12
13
|
writeManifest: false,
|
|
13
14
|
outputDir: '.',
|
|
14
15
|
manifestFiles: [],
|
|
16
|
+
json: false,
|
|
15
17
|
};
|
|
16
18
|
if (argv[0] === 'federation') {
|
|
17
19
|
args.command = 'federation';
|
|
18
20
|
for (let i = 1; i < argv.length; i++) {
|
|
19
|
-
|
|
21
|
+
const arg = argv[i];
|
|
22
|
+
if (arg === '--help' || arg === '-h') {
|
|
20
23
|
args.command = 'help';
|
|
21
24
|
break;
|
|
22
25
|
}
|
|
23
|
-
if (
|
|
24
|
-
|
|
26
|
+
if (arg === '--fail-on') {
|
|
27
|
+
const val = argv[++i] ?? '';
|
|
28
|
+
if (!VALID_FAIL_ON.has(val)) {
|
|
29
|
+
throw new Error(`Invalid --fail-on value "${val}". Expected: mismatch | unused | any`);
|
|
30
|
+
}
|
|
31
|
+
args.failOn = val;
|
|
32
|
+
}
|
|
33
|
+
else if (arg === '--min-score') {
|
|
34
|
+
const val = Number(argv[++i]);
|
|
35
|
+
if (isNaN(val) || val < 0 || val > 100) {
|
|
36
|
+
throw new Error(`Invalid --min-score value. Expected a number between 0 and 100`);
|
|
37
|
+
}
|
|
38
|
+
args.minScore = val;
|
|
39
|
+
}
|
|
40
|
+
else if (arg === '--json') {
|
|
41
|
+
args.json = true;
|
|
42
|
+
}
|
|
43
|
+
else if (!arg.startsWith('-')) {
|
|
44
|
+
args.manifestFiles.push(arg);
|
|
25
45
|
}
|
|
26
46
|
}
|
|
27
47
|
return args;
|
|
@@ -70,6 +90,22 @@ export function parseArgs(argv) {
|
|
|
70
90
|
args.failOn = val;
|
|
71
91
|
break;
|
|
72
92
|
}
|
|
93
|
+
case '--min-score': {
|
|
94
|
+
const val = Number(argv[++i]);
|
|
95
|
+
if (isNaN(val) || val < 0 || val > 100) {
|
|
96
|
+
throw new Error(`Invalid --min-score value. Expected a number between 0 and 100`);
|
|
97
|
+
}
|
|
98
|
+
args.minScore = val;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case '--kind': {
|
|
102
|
+
const val = argv[++i] ?? '';
|
|
103
|
+
if (!VALID_KINDS.has(val)) {
|
|
104
|
+
throw new Error(`Invalid --kind value "${val}". Expected: host | remote | unknown`);
|
|
105
|
+
}
|
|
106
|
+
args.kind = val;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
73
109
|
case '--write-manifest':
|
|
74
110
|
args.writeManifest = true;
|
|
75
111
|
break;
|
|
@@ -79,6 +115,9 @@ export function parseArgs(argv) {
|
|
|
79
115
|
case '--name':
|
|
80
116
|
args.name = argv[++i];
|
|
81
117
|
break;
|
|
118
|
+
case '--json':
|
|
119
|
+
args.json = true;
|
|
120
|
+
break;
|
|
82
121
|
}
|
|
83
122
|
}
|
|
84
123
|
if (!args.interactive && args.sourceDirs.length === 0) {
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AACxD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/help.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const HELP = "Usage:\n mf-inspector [options] Analyse project shared config\n mf-inspector --interactive Step-by-step interactive wizard\n mf-inspector federation <manifest> ... Cross-MF federation analysis\n\nProject options:\n --source, -s <dirs> Source dirs to scan, comma-separated (default: ./src)\n --depth <depth> Scan depth: direct | local-graph (default: local-graph)\n --shared <packages|file> Comma-separated package names or path to .json config\n --tsconfig <path> tsconfig.json for path alias resolution\n --workspace-packages <pkgs> Comma-separated workspace packages to exclude\n --name <name> Project name (default: auto from package.json)\n --fail-on <rule> Exit 1 when findings match: mismatch | unused | any\n --write-manifest Write project-manifest.json to output dir\n --output-dir <dir> Output directory for manifest (default: .)\n --interactive, -i Launch step-by-step wizard instead of flags\n --version, -v Print version and exit\n --help, -h Show this help\n\nFederation:\n mf-inspector federation checkout.json catalog.json cart.json\n\nExamples:\n mf-inspector\n mf-inspector --interactive\n mf-inspector --source ./src --shared react,react-dom --fail-on mismatch\n mf-inspector --shared ./shared-config.json --write-manifest\n mf-inspector federation ./manifests/checkout.json ./manifests/catalog.json\n";
|
|
1
|
+
export declare const HELP = "Usage:\n mf-inspector [options] Analyse project shared config\n mf-inspector --interactive Step-by-step interactive wizard\n mf-inspector federation <manifest> ... Cross-MF federation analysis\n\nProject options:\n --source, -s <dirs> Source dirs to scan, comma-separated (default: ./src)\n --depth <depth> Scan depth: direct | local-graph (default: local-graph)\n --shared <packages|file> Comma-separated package names or path to .json config\n --tsconfig <path> tsconfig.json for path alias resolution\n --workspace-packages <pkgs> Comma-separated workspace packages to exclude\n --name <name> Project name (default: auto from package.json)\n --kind <kind> Project role: host | remote | unknown (default: unknown)\n --fail-on <rule> Exit 1 when findings match: mismatch | unused | any\n --min-score <n> Exit 1 when score is below n (0\u2013100)\n --json Output findings as JSON (suppresses spinner and banner)\n --write-manifest Write project-manifest.json to output dir\n --output-dir <dir> Output directory for manifest (default: .)\n --interactive, -i Launch step-by-step wizard instead of flags\n --version, -v Print version and exit\n --help, -h Show this help\n\nFederation options:\n --fail-on <rule> Exit 1 when findings match: mismatch | unused | any\n --min-score <n> Exit 1 when federation score is below n (0\u2013100)\n --json Output findings as JSON\n\nFederation:\n mf-inspector federation checkout.json catalog.json cart.json\n mf-inspector federation https://cdn.example.com/checkout.json https://cdn.example.com/cart.json\n mf-inspector federation checkout.json https://cdn.example.com/cart.json --fail-on mismatch\n\nExamples:\n mf-inspector\n mf-inspector --interactive\n mf-inspector --source ./src --shared react,react-dom --fail-on mismatch\n mf-inspector --source ./src --kind host --min-score 80\n mf-inspector --shared ./shared-config.json --write-manifest\n mf-inspector federation ./manifests/checkout.json ./manifests/catalog.json --fail-on any\n";
|
|
2
2
|
//# sourceMappingURL=help.d.ts.map
|
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,wuEAuChB,CAAC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -10,21 +10,32 @@ Project options:
|
|
|
10
10
|
--tsconfig <path> tsconfig.json for path alias resolution
|
|
11
11
|
--workspace-packages <pkgs> Comma-separated workspace packages to exclude
|
|
12
12
|
--name <name> Project name (default: auto from package.json)
|
|
13
|
+
--kind <kind> Project role: host | remote | unknown (default: unknown)
|
|
13
14
|
--fail-on <rule> Exit 1 when findings match: mismatch | unused | any
|
|
15
|
+
--min-score <n> Exit 1 when score is below n (0–100)
|
|
16
|
+
--json Output findings as JSON (suppresses spinner and banner)
|
|
14
17
|
--write-manifest Write project-manifest.json to output dir
|
|
15
18
|
--output-dir <dir> Output directory for manifest (default: .)
|
|
16
19
|
--interactive, -i Launch step-by-step wizard instead of flags
|
|
17
20
|
--version, -v Print version and exit
|
|
18
21
|
--help, -h Show this help
|
|
19
22
|
|
|
23
|
+
Federation options:
|
|
24
|
+
--fail-on <rule> Exit 1 when findings match: mismatch | unused | any
|
|
25
|
+
--min-score <n> Exit 1 when federation score is below n (0–100)
|
|
26
|
+
--json Output findings as JSON
|
|
27
|
+
|
|
20
28
|
Federation:
|
|
21
29
|
mf-inspector federation checkout.json catalog.json cart.json
|
|
30
|
+
mf-inspector federation https://cdn.example.com/checkout.json https://cdn.example.com/cart.json
|
|
31
|
+
mf-inspector federation checkout.json https://cdn.example.com/cart.json --fail-on mismatch
|
|
22
32
|
|
|
23
33
|
Examples:
|
|
24
34
|
mf-inspector
|
|
25
35
|
mf-inspector --interactive
|
|
26
36
|
mf-inspector --source ./src --shared react,react-dom --fail-on mismatch
|
|
37
|
+
mf-inspector --source ./src --kind host --min-score 80
|
|
27
38
|
mf-inspector --shared ./shared-config.json --write-manifest
|
|
28
|
-
mf-inspector federation ./manifests/checkout.json ./manifests/catalog.json
|
|
39
|
+
mf-inspector federation ./manifests/checkout.json ./manifests/catalog.json --fail-on any
|
|
29
40
|
`;
|
|
30
41
|
//# sourceMappingURL=help.js.map
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCnB,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -43,7 +43,8 @@ export async function main(argv, write = (s) => process.stdout.write(s), prompt)
|
|
|
43
43
|
write(`@mf-toolkit/shared-inspector ${version}\n`);
|
|
44
44
|
return 0;
|
|
45
45
|
}
|
|
46
|
-
|
|
46
|
+
if (!args.json)
|
|
47
|
+
printBanner(write, version);
|
|
47
48
|
if (args.command === 'federation') {
|
|
48
49
|
return runFederation(args, write);
|
|
49
50
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAwB,CAAC;QAC7E,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAA0B,EAAE,OAAe;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAC9B,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,IAAc,EACd,QAA6B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAC3D,MAAiB;IAEjB,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAK,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,gCAAgC,OAAO,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-federation.d.ts","sourceRoot":"","sources":["../../src/cli/run-federation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-federation.d.ts","sourceRoot":"","sources":["../../src/cli/run-federation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAiB1C,wBAAsB,aAAa,CACjC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
|
|
@@ -2,26 +2,45 @@ import { readFileSync } from 'node:fs';
|
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { analyzeFederation } from '../analyzer/analyze-federation.js';
|
|
4
4
|
import { formatFederationReport } from '../reporter/format-federation-report.js';
|
|
5
|
-
import {
|
|
5
|
+
import { scoreFederationReport } from '../reporter/scoring.js';
|
|
6
|
+
import { createSpinner, createNullSpinner } from './spinner.js';
|
|
6
7
|
import { colorizeReport } from './colorize-report.js';
|
|
8
|
+
function isUrl(source) {
|
|
9
|
+
return source.startsWith('http://') || source.startsWith('https://');
|
|
10
|
+
}
|
|
11
|
+
async function loadManifestContent(source) {
|
|
12
|
+
if (isUrl(source)) {
|
|
13
|
+
const res = await fetch(source);
|
|
14
|
+
if (!res.ok) {
|
|
15
|
+
throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
16
|
+
}
|
|
17
|
+
return res.text();
|
|
18
|
+
}
|
|
19
|
+
return readFileSync(resolve(process.cwd(), source), 'utf-8');
|
|
20
|
+
}
|
|
7
21
|
export async function runFederation(args, write) {
|
|
8
22
|
if (args.manifestFiles.length === 0) {
|
|
9
23
|
write('Error: federation command requires at least one manifest file\n');
|
|
10
|
-
write('Usage: mf-inspector federation <manifest1.json> [manifest2.json...]\n');
|
|
24
|
+
write('Usage: mf-inspector federation <manifest1.json|url> [manifest2.json|url...]\n');
|
|
11
25
|
return 1;
|
|
12
26
|
}
|
|
13
|
-
const spinner = createSpinner();
|
|
27
|
+
const spinner = args.json ? createNullSpinner() : createSpinner();
|
|
14
28
|
spinner.start(`Loading ${args.manifestFiles.length} manifest${args.manifestFiles.length > 1 ? 's' : ''}`);
|
|
15
29
|
const manifests = [];
|
|
16
|
-
for (const
|
|
17
|
-
const filePath = resolve(process.cwd(), file);
|
|
30
|
+
for (const source of args.manifestFiles) {
|
|
18
31
|
let content;
|
|
19
32
|
try {
|
|
20
|
-
content =
|
|
33
|
+
content = await loadManifestContent(source);
|
|
21
34
|
}
|
|
22
|
-
catch {
|
|
35
|
+
catch (err) {
|
|
23
36
|
spinner.stop();
|
|
24
|
-
|
|
37
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
38
|
+
if (isUrl(source)) {
|
|
39
|
+
write(`Error: cannot fetch "${source}": ${reason}\n`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
write(`Error: cannot read file "${source}"\n`);
|
|
43
|
+
}
|
|
25
44
|
return 1;
|
|
26
45
|
}
|
|
27
46
|
try {
|
|
@@ -29,13 +48,33 @@ export async function runFederation(args, write) {
|
|
|
29
48
|
}
|
|
30
49
|
catch {
|
|
31
50
|
spinner.stop();
|
|
32
|
-
write(`Error: "${
|
|
51
|
+
write(`Error: "${source}" is not valid JSON\n`);
|
|
33
52
|
return 1;
|
|
34
53
|
}
|
|
35
54
|
}
|
|
36
55
|
spinner.succeed(`Loaded ${manifests.length} manifest${manifests.length > 1 ? 's' : ''}`);
|
|
37
56
|
const report = analyzeFederation(manifests);
|
|
38
|
-
|
|
57
|
+
const score = scoreFederationReport(report);
|
|
58
|
+
if (args.json) {
|
|
59
|
+
write(JSON.stringify({ ...report, score }, null, 2) + '\n');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
write(colorizeReport(formatFederationReport(report)));
|
|
63
|
+
}
|
|
64
|
+
if (args.failOn && shouldFailFederation(report, args.failOn))
|
|
65
|
+
return 1;
|
|
66
|
+
if (args.minScore !== undefined && score.score < args.minScore)
|
|
67
|
+
return 1;
|
|
39
68
|
return 0;
|
|
40
69
|
}
|
|
70
|
+
function shouldFailFederation(report, failOn) {
|
|
71
|
+
switch (failOn) {
|
|
72
|
+
case 'mismatch': return report.versionConflicts.length > 0;
|
|
73
|
+
case 'unused': return report.ghostShares.length > 0;
|
|
74
|
+
case 'any': return (report.versionConflicts.length > 0 ||
|
|
75
|
+
report.singletonMismatches.length > 0 ||
|
|
76
|
+
report.hostGaps.length > 0 ||
|
|
77
|
+
report.ghostShares.length > 0);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
41
80
|
//# sourceMappingURL=run-federation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-federation.js","sourceRoot":"","sources":["../../src/cli/run-federation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run-federation.js","sourceRoot":"","sources":["../../src/cli/run-federation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-project.d.ts","sourceRoot":"","sources":["../../src/cli/run-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-project.d.ts","sourceRoot":"","sources":["../../src/cli/run-project.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAUhG;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
|
package/dist/cli/run-project.js
CHANGED
|
@@ -4,7 +4,8 @@ import { buildProjectManifest } from '../collector/build-project-manifest.js';
|
|
|
4
4
|
import { analyzeProject } from '../analyzer/analyze-project.js';
|
|
5
5
|
import { formatReport } from '../reporter/format-report.js';
|
|
6
6
|
import { writeManifest } from '../reporter/write-report.js';
|
|
7
|
-
import {
|
|
7
|
+
import { scoreProjectReport } from '../reporter/scoring.js';
|
|
8
|
+
import { createSpinner, createNullSpinner } from './spinner.js';
|
|
8
9
|
import { colorizeReport } from './colorize-report.js';
|
|
9
10
|
export function shouldFail(report, failOn) {
|
|
10
11
|
if (failOn === 'mismatch')
|
|
@@ -28,7 +29,7 @@ export async function runProject(args, write) {
|
|
|
28
29
|
name = 'project';
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
const spinner = createSpinner();
|
|
32
|
+
const spinner = args.json ? createNullSpinner() : createSpinner();
|
|
32
33
|
spinner.start(`Scanning ${args.sourceDirs.join(', ')}`);
|
|
33
34
|
const manifest = await buildProjectManifest({
|
|
34
35
|
name,
|
|
@@ -37,21 +38,31 @@ export async function runProject(args, write) {
|
|
|
37
38
|
sharedConfig: args.sharedConfig,
|
|
38
39
|
tsconfigPath: args.tsconfigPath,
|
|
39
40
|
workspacePackages: args.workspacePackages,
|
|
41
|
+
kind: args.kind,
|
|
40
42
|
});
|
|
41
43
|
spinner.succeed(`Scanned ${manifest.source.filesScanned} files`);
|
|
42
44
|
const report = analyzeProject(manifest);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const score = scoreProjectReport(report);
|
|
46
|
+
if (args.json) {
|
|
47
|
+
write(JSON.stringify({ ...report, score }, null, 2) + '\n');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
write(colorizeReport(formatReport(report, {
|
|
51
|
+
name: manifest.project.name,
|
|
52
|
+
depth: manifest.source.depth,
|
|
53
|
+
filesScanned: manifest.source.filesScanned,
|
|
54
|
+
})));
|
|
55
|
+
}
|
|
48
56
|
if (args.writeManifest) {
|
|
49
57
|
const outPath = resolve(args.outputDir, 'project-manifest.json');
|
|
50
58
|
await writeManifest(manifest, outPath);
|
|
51
|
-
|
|
59
|
+
if (!args.json)
|
|
60
|
+
write(`\n Manifest written to ${outPath}\n`);
|
|
52
61
|
}
|
|
53
62
|
if (args.failOn && shouldFail(report, args.failOn))
|
|
54
63
|
return 1;
|
|
64
|
+
if (args.minScore !== undefined && score.score < args.minScore)
|
|
65
|
+
return 1;
|
|
55
66
|
return 0;
|
|
56
67
|
}
|
|
57
68
|
//# sourceMappingURL=run-project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-project.js","sourceRoot":"","sources":["../../src/cli/run-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run-project.js","sourceRoot":"","sources":["../../src/cli/run-project.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/spinner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/cli/spinner.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iDAAiD;IACjD,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,aAAa,IAAI,OAAO,CAsCvC"}
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/cli/spinner.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iDAAiD;IACjD,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,aAAa,IAAI,OAAO,CAsCvC"}
|
package/dist/cli/spinner.js
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
import { isTTY, green, gray } from './colors.js';
|
|
7
7
|
const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
8
8
|
const INTERVAL_MS = 80;
|
|
9
|
+
export function createNullSpinner() {
|
|
10
|
+
return { start() { }, succeed() { }, stop() { } };
|
|
11
|
+
}
|
|
9
12
|
export function createSpinner() {
|
|
10
13
|
if (!isTTY) {
|
|
11
14
|
// Non-TTY (CI, piped): emit plain text lines via stdout
|
package/dist/cli/spinner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/cli/spinner.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,iFAAiF;AAEjF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,EAAE,CAAC;AAWvB,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,wDAAwD;QACxD,OAAO;YACL,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,KAAI,CAAC;SACV,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAiD,CAAC;IAEtD,SAAS,SAAS;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,yCAAyC;IAC7E,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI;YACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;YACjD,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;gBACvB,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxE,KAAK,EAAE,CAAC;YACV,CAAC,EAAE,WAAW,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;QACnD,CAAC;QACD,IAAI;YACF,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/cli/spinner.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,iFAAiF;AAEjF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,EAAE,CAAC;AAWvB,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,KAAK,KAAI,CAAC,EAAE,OAAO,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,wDAAwD;QACxD,OAAO;YACL,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,KAAI,CAAC;SACV,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAiD,CAAC;IAEtD,SAAS,SAAS;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,yCAAyC;IAC7E,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI;YACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;YACjD,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;gBACvB,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxE,KAAK,EAAE,CAAC;YACV,CAAC,EAAE,WAAW,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;QACnD,CAAC;QACD,IAAI;YACF,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/cli/types.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export interface CliArgs {
|
|
|
8
8
|
tsconfigPath?: string;
|
|
9
9
|
workspacePackages: string[];
|
|
10
10
|
failOn?: 'mismatch' | 'unused' | 'any';
|
|
11
|
+
minScore?: number;
|
|
12
|
+
kind?: 'host' | 'remote' | 'unknown';
|
|
13
|
+
json?: boolean;
|
|
11
14
|
writeManifest: boolean;
|
|
12
15
|
outputDir: string;
|
|
13
16
|
name?: string;
|
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IACvD,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IACvD,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -47,7 +47,11 @@ export interface CollectorOptions {
|
|
|
47
47
|
* @example ['@my-org/design-system', '@my-org/*']
|
|
48
48
|
*/
|
|
49
49
|
workspacePackages?: string[];
|
|
50
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Parser strategy for import extraction.
|
|
52
|
+
* @default 'regex'
|
|
53
|
+
* @planned 'typescript' (AST-based) — not yet implemented; value is accepted but has no effect.
|
|
54
|
+
*/
|
|
51
55
|
parser?: ParserStrategy;
|
|
52
56
|
}
|
|
53
57
|
export interface ProjectManifest {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC5B;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IACjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrC,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC5B;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IACjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrC,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAID,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;KACtC,CAAC;IAEF,MAAM,EAAE;QACN,2FAA2F;QAC3F,KAAK,EAAE,QAAQ,GAAG,aAAa,CAAC;QAChC,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,KAAK,EAAE;QACL,4DAA4D;QAC5D,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB;;;WAGG;QACH,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B;;;WAGG;QACH,cAAc,EAAE,KAAK,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,EAAE,CAAC;YAChB,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAC;SAC5B,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,EAAE;QACN,mDAAmD;QACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;YACvB,SAAS,CAAC,EAAE,OAAO,CAAC;YACpB,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC,CAAC;QACH,MAAM,EAAE,UAAU,GAAG,uBAAuB,CAAC;KAC9C,CAAC;IAEF,QAAQ,EAAE;QACR,uDAAuD;QACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC;;;;WAIG;QACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAID,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B;;gFAE4E;IAC5E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,uEAAuE;IACvE,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,yDAAyD;IACzD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gEAAgE;IAChE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,qEAAqE;IACrE,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAID,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yEAAyE;IACzE,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B;;;OAGG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB;;;OAGG;IACH,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC;;;OAGG;IACH,mBAAmB,EAAE,sBAAsB,EAAE,CAAC;IAC9C,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAID,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1E,sCAAsC;IACtC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/package.json
CHANGED