@component-compass/cli 0.0.2 → 0.0.4
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/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.js +1 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/scan.d.ts +13 -1
- package/dist/commands/scan.js +192 -72
- package/dist/commands/scan.js.map +1 -1
- package/dist/composition-rollup.d.ts +16 -14
- package/dist/composition-rollup.js +33 -43
- package/dist/composition-rollup.js.map +1 -1
- package/dist/config/loader.js +5 -9
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +2 -15
- package/dist/config/schema.js.map +1 -1
- package/dist/envelope/index.d.ts +0 -9
- package/dist/envelope/index.js +1 -46
- package/dist/envelope/index.js.map +1 -1
- package/dist/identity.d.ts +19 -17
- package/dist/identity.js +42 -21
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/local-index/detect-react.d.ts +2 -1
- package/dist/local-index/detect-react.js +269 -72
- package/dist/local-index/detect-react.js.map +1 -1
- package/dist/local-index/detect-vue.d.ts +15 -1
- package/dist/local-index/detect-vue.js +130 -107
- package/dist/local-index/detect-vue.js.map +1 -1
- package/dist/local-index/detect-wc.d.ts +7 -1
- package/dist/local-index/detect-wc.js +56 -60
- package/dist/local-index/detect-wc.js.map +1 -1
- package/dist/local-index/index.d.ts +12 -4
- package/dist/local-index/index.js +40 -25
- package/dist/local-index/index.js.map +1 -1
- package/dist/manifest/barrel-parser.d.ts +10 -0
- package/dist/manifest/barrel-parser.js +11 -0
- package/dist/manifest/barrel-parser.js.map +1 -1
- package/dist/manifest/derived-manifest-stub.d.ts +16 -7
- package/dist/manifest/derived-manifest-stub.js +43 -7
- package/dist/manifest/derived-manifest-stub.js.map +1 -1
- package/dist/manifest/lazy-resolver.d.ts +52 -34
- package/dist/manifest/lazy-resolver.js +269 -69
- package/dist/manifest/lazy-resolver.js.map +1 -1
- package/dist/occurrences.d.ts +4 -4
- package/dist/occurrences.js +49 -9
- package/dist/occurrences.js.map +1 -1
- package/dist/parse-by-ext.d.ts +21 -0
- package/dist/parse-by-ext.js +53 -0
- package/dist/parse-by-ext.js.map +1 -0
- package/dist/reporter/index.d.ts +27 -28
- package/dist/reporter/index.js +99 -58
- package/dist/reporter/index.js.map +1 -1
- package/dist/reporter/stdout.js +4 -4
- package/dist/reporter/stdout.js.map +1 -1
- package/dist/rollup.d.ts +13 -6
- package/dist/rollup.js +9 -6
- package/dist/rollup.js.map +1 -1
- package/dist/scan/cem-index.d.ts +38 -0
- package/dist/scan/cem-index.js +139 -0
- package/dist/scan/cem-index.js.map +1 -0
- package/dist/scan/git-mtime.d.ts +2 -0
- package/dist/scan/git-mtime.js +22 -0
- package/dist/scan/git-mtime.js.map +1 -0
- package/dist/scan/meta.d.ts +5 -0
- package/dist/scan/meta.js +58 -0
- package/dist/scan/meta.js.map +1 -0
- package/dist/scan/stamp-deprecated.d.ts +16 -0
- package/dist/scan/stamp-deprecated.js +33 -0
- package/dist/scan/stamp-deprecated.js.map +1 -0
- package/dist/scan/stamp-version.d.ts +18 -0
- package/dist/scan/stamp-version.js +94 -0
- package/dist/scan/stamp-version.js.map +1 -0
- package/dist/seeds.d.ts +20 -19
- package/dist/seeds.js +136 -68
- package/dist/seeds.js.map +1 -1
- package/dist/types.d.ts +2 -5
- package/dist/util/git.d.ts +8 -0
- package/dist/util/git.js +73 -0
- package/dist/util/git.js.map +1 -1
- package/dist/util/progress.d.ts +21 -0
- package/dist/util/progress.js +54 -0
- package/dist/util/progress.js.map +1 -0
- package/dist/walker/files.d.ts +1 -0
- package/dist/walker/files.js +11 -5
- package/dist/walker/files.js.map +1 -1
- package/dist/workspace/build-graph.d.ts +2 -0
- package/dist/workspace/build-graph.js +117 -0
- package/dist/workspace/build-graph.js.map +1 -0
- package/dist/workspace/declared-deps.d.ts +5 -0
- package/dist/workspace/declared-deps.js +42 -0
- package/dist/workspace/declared-deps.js.map +1 -0
- package/dist/workspace/find-owning-package.d.ts +8 -0
- package/dist/workspace/find-owning-package.js +69 -0
- package/dist/workspace/find-owning-package.js.map +1 -0
- package/dist/workspace/index.d.ts +4 -0
- package/dist/workspace/index.js +4 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/types.d.ts +46 -0
- package/dist/workspace/types.js +13 -0
- package/dist/workspace/types.js.map +1 -0
- package/package.json +15 -7
- package/schema/config.schema.json +2 -24
- package/dist/config/tag-rules.d.ts +0 -2
- package/dist/config/tag-rules.js +0 -34
- package/dist/config/tag-rules.js.map +0 -1
- package/dist/local-index/walker.d.ts +0 -11
- package/dist/local-index/walker.js +0 -47
- package/dist/local-index/walker.js.map +0 -1
- package/dist/manifest/diagnostic-filter.d.ts +0 -12
- package/dist/manifest/diagnostic-filter.js +0 -23
- package/dist/manifest/diagnostic-filter.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -17,7 +17,8 @@ Scan options:
|
|
|
17
17
|
--quiet Suppress STDOUT summary
|
|
18
18
|
--json Print JSON to stdout (implies --quiet)
|
|
19
19
|
--fail-on <metric> CI gate (e.g. deprecated-usage)
|
|
20
|
-
--
|
|
20
|
+
--strict Exit non-zero if any warning-severity diagnostics fire
|
|
21
|
+
--repo-id <value> Override repo identifier in the artifact (else env COMPONENT_COMPASS_REPO_ID, git remote, package.json name, or cwd hash)
|
|
21
22
|
|
|
22
23
|
Other:
|
|
23
24
|
--help, -h
|
|
@@ -43,6 +44,7 @@ async function main(argv) {
|
|
|
43
44
|
const scanOpts = {
|
|
44
45
|
configPath: flags.config ?? "./component-compass.config.json",
|
|
45
46
|
quiet: Boolean(flags.quiet || flags.json),
|
|
47
|
+
strict: Boolean(flags.strict),
|
|
46
48
|
};
|
|
47
49
|
if (flags.output)
|
|
48
50
|
scanOpts.outputOverride = flags.output;
|
|
@@ -90,6 +92,8 @@ function parseFlags(args) {
|
|
|
90
92
|
out.quiet = true;
|
|
91
93
|
else if (a === "--json")
|
|
92
94
|
out.json = true;
|
|
95
|
+
else if (a === "--strict")
|
|
96
|
+
out.strict = true;
|
|
93
97
|
else if (a === "--fail-on") {
|
|
94
98
|
const next = args[++i];
|
|
95
99
|
if (next)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -6,10 +6,8 @@ const TEMPLATE = (repoId) => ({
|
|
|
6
6
|
repoId,
|
|
7
7
|
include: ["src/**/*.{ts,tsx,jsx,js,vue,html}"],
|
|
8
8
|
exclude: ["**/*.{test,spec,stories}.*", "**/node_modules/**"],
|
|
9
|
-
packageScopes: [],
|
|
10
9
|
captureValues: false,
|
|
11
10
|
output: "./component-compass.json",
|
|
12
|
-
tagRules: [],
|
|
13
11
|
});
|
|
14
12
|
export async function runInit(opts) {
|
|
15
13
|
const cwd = isAbsolute(opts.cwd) ? opts.cwd : resolve(opts.cwd);
|
|
@@ -33,7 +31,7 @@ export async function runInit(opts) {
|
|
|
33
31
|
const cfg = TEMPLATE(repoId);
|
|
34
32
|
await writeFile(out, `${JSON.stringify(cfg, null, 2)}\n`, "utf8");
|
|
35
33
|
// eslint-disable-next-line no-console
|
|
36
|
-
console.log(`Wrote ${out}.\
|
|
34
|
+
console.log(`Wrote ${out}.\nCustomize the config to match your repo structure.`);
|
|
37
35
|
}
|
|
38
36
|
async function deriveRepoId(cwd) {
|
|
39
37
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAO5D,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,EAAE,oEAAoE;IAC7E,MAAM;IACN,OAAO,EAAE,CAAC,mCAAmC,CAAC;IAC9C,OAAO,EAAE,CAAC,4BAA4B,EAAE,oBAAoB,CAAC;IAC7D,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAO5D,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,EAAE,oEAAoE;IAC7E,MAAM;IACN,OAAO,EAAE,CAAC,mCAAmC,CAAC;IAC9C,OAAO,EAAE,CAAC,4BAA4B,EAAE,oBAAoB,CAAC;IAC7D,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,0BAA0B;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAiB;IAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;IAE7E,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0BAA0B,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAmD,CAAC;QAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,2EAA2E;YAC3E,mCAAmC;YACnC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAElE,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,uDAAuD,CAAC,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAsB,CAAC;QACpD,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
package/dist/commands/scan.d.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
|
+
import type { ScanOutput } from "@component-compass/plugin-core";
|
|
1
2
|
export type ScanOptions = {
|
|
2
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Path to the config file. Defaults to `<cwd>/component-compass.config.json`
|
|
5
|
+
* when `cwd` is provided and `configPath` is omitted.
|
|
6
|
+
*/
|
|
7
|
+
configPath?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Working directory used to locate the config when `configPath` is omitted.
|
|
10
|
+
* Has no effect when `configPath` is supplied.
|
|
11
|
+
*/
|
|
12
|
+
cwd?: string;
|
|
3
13
|
outputOverride?: string;
|
|
4
14
|
captureValuesOverride?: boolean;
|
|
5
15
|
quiet?: boolean;
|
|
6
16
|
failOn?: string;
|
|
17
|
+
strict?: boolean;
|
|
7
18
|
repoId?: string;
|
|
8
19
|
};
|
|
9
20
|
export type ScanResult = {
|
|
10
21
|
exitCode: number;
|
|
22
|
+
output: ScanOutput | null;
|
|
11
23
|
};
|
|
12
24
|
export declare function runScan(opts: ScanOptions): Promise<ScanResult>;
|
package/dist/commands/scan.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { performance } from "node:perf_hooks";
|
|
2
|
-
import { isAbsolute,
|
|
2
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
|
-
import { readFileSync } from "node:fs";
|
|
5
4
|
import { loadConfig, ConfigError } from "../config/loader.js";
|
|
6
5
|
import { createLazyResolver } from "../manifest/lazy-resolver.js";
|
|
7
|
-
import { buildDiagnosticGate } from "../manifest/diagnostic-filter.js";
|
|
8
6
|
import { buildLocalIndex } from "../local-index/index.js";
|
|
7
|
+
import { detectReactComponents } from "../local-index/detect-react.js";
|
|
8
|
+
import { detectVueComponents } from "../local-index/detect-vue.js";
|
|
9
|
+
import { detectWebComponents } from "../local-index/detect-wc.js";
|
|
10
|
+
import { parseByExt } from "../parse-by-ext.js";
|
|
11
|
+
import { createProgress } from "../util/progress.js";
|
|
9
12
|
import { walkFiles } from "../walker/files.js";
|
|
10
13
|
import { createImportResolver } from "../walker/resolve-import.js";
|
|
11
14
|
import { Dispatcher } from "../dispatcher.js";
|
|
@@ -15,31 +18,45 @@ import { litTemplatePlugin } from "@component-compass/parser-lit";
|
|
|
15
18
|
import { vuePlugin } from "@component-compass/parser-vue";
|
|
16
19
|
import { writeJson } from "../reporter/json.js";
|
|
17
20
|
import { printSummary } from "../reporter/stdout.js";
|
|
18
|
-
import {
|
|
21
|
+
import { stampMeta } from "../scan/meta.js";
|
|
22
|
+
import { stampGitMTime } from "../scan/git-mtime.js";
|
|
23
|
+
import { stampVersion } from "../scan/stamp-version.js";
|
|
24
|
+
import { stampDeprecated } from "../scan/stamp-deprecated.js";
|
|
25
|
+
import { buildCemIndex } from "../scan/cem-index.js";
|
|
19
26
|
import { isPnpProject } from "../util/pnp-check.js";
|
|
20
27
|
import { Logger } from "../util/log.js";
|
|
21
|
-
import { errorMessage } from "@component-compass/ast-utils";
|
|
28
|
+
import { errorMessage, posixPath } from "@component-compass/ast-utils";
|
|
22
29
|
import { buildComponentSeeds } from "../seeds.js";
|
|
23
30
|
import { parseResultsToOccurrences } from "../occurrences.js";
|
|
24
31
|
import { buildScanOutput } from "../reporter/index.js";
|
|
32
|
+
import { buildWorkspaceGraph, declaredDeps, resetFindOwningPackageCache, } from "../workspace/index.js";
|
|
33
|
+
import { createDiagnosticCollector } from "@component-compass/plugin-core";
|
|
25
34
|
export async function runScan(opts) {
|
|
26
35
|
const log = new Logger(opts.quiet);
|
|
27
36
|
const t0 = performance.now();
|
|
37
|
+
const configPath = opts.configPath ??
|
|
38
|
+
resolve(opts.cwd ?? process.cwd(), "component-compass.config.json");
|
|
28
39
|
let cfg;
|
|
29
40
|
try {
|
|
30
|
-
cfg = await loadConfig(
|
|
41
|
+
cfg = await loadConfig(configPath);
|
|
31
42
|
}
|
|
32
43
|
catch (err) {
|
|
33
44
|
if (err instanceof ConfigError) {
|
|
34
45
|
log.error(err.message);
|
|
35
|
-
return { exitCode: 2 };
|
|
46
|
+
return { exitCode: 2, output: null };
|
|
36
47
|
}
|
|
37
48
|
throw err;
|
|
38
49
|
}
|
|
39
50
|
if (isPnpProject(cfg.configDir)) {
|
|
40
51
|
log.error("yarn PnP detected; component-compass requires nodeLinker: node-modules. See docs/usage.md.");
|
|
41
|
-
return { exitCode: 2 };
|
|
52
|
+
return { exitCode: 2, output: null };
|
|
42
53
|
}
|
|
54
|
+
// Stamp meta early — throws if not a git work tree, which is a hard
|
|
55
|
+
// prerequisite for a stable repo identity.
|
|
56
|
+
const metaOpts = { cwd: cfg.configDir };
|
|
57
|
+
if (opts.repoId !== undefined)
|
|
58
|
+
metaOpts.repoIdOverride = opts.repoId;
|
|
59
|
+
const meta = await stampMeta(metaOpts);
|
|
43
60
|
if (opts.outputOverride)
|
|
44
61
|
cfg.output = opts.outputOverride;
|
|
45
62
|
if (opts.captureValuesOverride !== undefined)
|
|
@@ -55,19 +72,45 @@ export async function runScan(opts) {
|
|
|
55
72
|
: resolve(cfg.configDir, cfg.tsconfigPath);
|
|
56
73
|
}
|
|
57
74
|
const resolveImport = createImportResolver(resolveImportOpts);
|
|
58
|
-
const
|
|
75
|
+
const collector = createDiagnosticCollector();
|
|
76
|
+
// Reset per-scan caches so in-process invocations (tests, watch mode) start
|
|
77
|
+
// clean. Memoized realpath results from a prior scan would still be valid,
|
|
78
|
+
// but explicit reset avoids state leakage if the filesystem changed.
|
|
79
|
+
resetFindOwningPackageCache();
|
|
80
|
+
const workspaceGraph = buildWorkspaceGraph(cfg.configDir);
|
|
81
|
+
// Build global CEM index once per scan. Enumerates every package under
|
|
82
|
+
// <root>/node_modules, finds CEM/CCM files, and builds byTag + byPackageName
|
|
83
|
+
// maps so parsers can resolve hyphenated tags without consumer-side config.
|
|
84
|
+
// Parsers consume cemIndex starting from T08.
|
|
85
|
+
const cemIndex = await buildCemIndex(cfg.configDir);
|
|
86
|
+
// Identity resolution (leafPackage + modulePath) runs unconditionally for
|
|
87
|
+
// external imports. `manifestPatterns` is the per-package gate for manifest
|
|
88
|
+
// IO only. `["**"]` opts every package in — picomatch's `*` won't cross `/`
|
|
89
|
+
// so it misses scoped names, but `**` does. The workspace gate inside
|
|
90
|
+
// extractDerived (realpathSync check for node_modules in path) decides which
|
|
91
|
+
// packages actually get extractor enrichment; published packages bail
|
|
92
|
+
// immediately, so there is no meaningful performance cost for the wider gate.
|
|
93
|
+
const manifestPatterns = ["**"];
|
|
94
|
+
const lazyResolver = createLazyResolver({
|
|
95
|
+
resolveImport,
|
|
96
|
+
repoRoot: cfg.configDir,
|
|
97
|
+
collector,
|
|
98
|
+
manifestPatterns,
|
|
99
|
+
});
|
|
59
100
|
// Warm-up: load each declared dep's root CEM/CCM (if any) so tag-only
|
|
60
101
|
// consumers (HTML files, Vue templates with no JS-side import for the tag)
|
|
61
102
|
// can resolve external custom elements via lookupByTag. Cheap (one
|
|
62
103
|
// package.json + one manifest read per dep) and matches the lazy
|
|
63
104
|
// resolver's terminal-load step in depth — no barrel walking, no
|
|
64
|
-
// re-export chasing.
|
|
65
|
-
|
|
66
|
-
const
|
|
105
|
+
// re-export chasing. `.warm()` returns a WarmedResolver whose lookupByTag
|
|
106
|
+
// is the only typed access to the byTag index.
|
|
107
|
+
const declared = declaredDeps(workspaceGraph);
|
|
108
|
+
const warmedResolver = lazyResolver.warm(declared);
|
|
67
109
|
const files = await walkFiles({
|
|
68
110
|
root: cfg.configDir,
|
|
69
111
|
include: cfg.include,
|
|
70
112
|
exclude: cfg.exclude,
|
|
113
|
+
gitignore: cfg.gitignore,
|
|
71
114
|
});
|
|
72
115
|
if (files.length === 0) {
|
|
73
116
|
log.warn(`No files matched include globs: ${cfg.include.join(", ")}`);
|
|
@@ -82,69 +125,147 @@ export async function runScan(opts) {
|
|
|
82
125
|
});
|
|
83
126
|
const dispatcher = new Dispatcher([reactPlugin, htmlPlugin, litTemplatePlugin, vuePlugin]);
|
|
84
127
|
const results = [];
|
|
128
|
+
// Single-pass scan: one IO + one parse per file, shared across the local-
|
|
129
|
+
// index build and plugin dispatch. ASTs are cached for the gap between the
|
|
130
|
+
// two phases, then evicted post-dispatch to bound peak memory on large
|
|
131
|
+
// monorepos. Two progress reporters cover each phase so the user sees both
|
|
132
|
+
// legs — phase 2's plugin dispatch can dominate on JSX-heavy repos, and a
|
|
133
|
+
// single phase-1-only reporter looked frozen at 99% during phase 2.
|
|
134
|
+
const writer = opts.quiet ? () => { } : (s) => process.stderr.write(s);
|
|
135
|
+
const isTTY = !!process.stderr.isTTY;
|
|
136
|
+
const parseProgress = createProgress({
|
|
137
|
+
total: orderedFiles.length,
|
|
138
|
+
writer,
|
|
139
|
+
isTTY,
|
|
140
|
+
label: "Parsing",
|
|
141
|
+
});
|
|
142
|
+
const astCache = new Map();
|
|
143
|
+
const sourceCache = new Map();
|
|
144
|
+
const localDefs = [];
|
|
145
|
+
// ── Phase 1: read + parse + emit local definitions ──────────────────────
|
|
85
146
|
for (const file of orderedFiles) {
|
|
86
147
|
const source = await readFile(file, "utf8").catch(() => "");
|
|
87
|
-
if (!source)
|
|
148
|
+
if (!source) {
|
|
149
|
+
parseProgress.tick();
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
let parsed;
|
|
153
|
+
try {
|
|
154
|
+
parsed = parseByExt(file, source);
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
// parseByExt throws on unrecoverable syntax (EOF mid-expression, malformed
|
|
158
|
+
// SFC). Mirror the plugin-loop's warn-and-continue pattern so one broken
|
|
159
|
+
// file can't tank the scan.
|
|
160
|
+
log.warn(`[component-compass] parse failure in ${file}: ${errorMessage(err)}`);
|
|
161
|
+
parseProgress.tick();
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
// `unsupported` extensions never reach phase 2; skip caching to bound
|
|
165
|
+
// peak memory on scans whose include glob covers unsupported file types.
|
|
166
|
+
if (parsed.kind === "unsupported") {
|
|
167
|
+
parseProgress.tick();
|
|
88
168
|
continue;
|
|
169
|
+
}
|
|
170
|
+
astCache.set(file, parsed);
|
|
171
|
+
sourceCache.set(file, source);
|
|
172
|
+
// Detectors record `componentId.source.filePath` as POSIX repo-relative so
|
|
173
|
+
// it joins with seeds + parser occurrences without a normalisation step.
|
|
174
|
+
const relPath = posixPath(relative(cfg.configDir, file));
|
|
175
|
+
if (parsed.kind === "babel") {
|
|
176
|
+
localDefs.push(...detectReactComponents(parsed.ast, relPath, parsed.source));
|
|
177
|
+
localDefs.push(...detectWebComponents(parsed.ast, relPath));
|
|
178
|
+
// Vue script-mode catches `defineComponent` in plain .ts/.js, mirroring
|
|
179
|
+
// local-index/index.ts pre-Task-11 routing for non-SFC files.
|
|
180
|
+
localDefs.push(...detectVueComponents({ kind: "script", program: parsed.ast, source: parsed.source }, relPath));
|
|
181
|
+
}
|
|
182
|
+
else if (parsed.kind === "vue") {
|
|
183
|
+
const wrapper = parsed.scriptAst !== undefined
|
|
184
|
+
? { descriptor: parsed.descriptor, scriptProgram: parsed.scriptAst }
|
|
185
|
+
: { descriptor: parsed.descriptor };
|
|
186
|
+
localDefs.push(...detectVueComponents({ kind: "sfc", wrapper }, relPath));
|
|
187
|
+
}
|
|
188
|
+
parseProgress.tick();
|
|
189
|
+
}
|
|
190
|
+
parseProgress.done();
|
|
191
|
+
const localIndex = buildLocalIndex(localDefs, collector);
|
|
192
|
+
// ── Phase 2: dispatch plugins with shared oxc Program through ctx.ast ────
|
|
193
|
+
// walkProgress total is the cached-file count: files dropped by phase 1
|
|
194
|
+
// (empty source / parse failure / unsupported extension) aren't in the
|
|
195
|
+
// cache and won't be walked.
|
|
196
|
+
const walkProgress = createProgress({
|
|
197
|
+
total: astCache.size,
|
|
198
|
+
writer,
|
|
199
|
+
isTTY,
|
|
200
|
+
label: "Walking",
|
|
201
|
+
});
|
|
202
|
+
for (const file of orderedFiles) {
|
|
203
|
+
const parsed = astCache.get(file);
|
|
204
|
+
const source = sourceCache.get(file);
|
|
205
|
+
if (!parsed || parsed.kind === "unsupported" || source === undefined)
|
|
206
|
+
continue;
|
|
207
|
+
// Carrier shape per file-kind; plugins narrow internally via their own
|
|
208
|
+
// ctx.ast cast. `babel` → oxc Program, `vue` → VueParseWrapper,
|
|
209
|
+
// `html` → parse5 Document. Unsupported never reaches here.
|
|
210
|
+
const astForCtx = parsed.kind === "babel" ? parsed.ast :
|
|
211
|
+
parsed.kind === "vue" ? (parsed.scriptAst !== undefined
|
|
212
|
+
? { descriptor: parsed.descriptor, scriptProgram: parsed.scriptAst }
|
|
213
|
+
: { descriptor: parsed.descriptor }) :
|
|
214
|
+
parsed.kind === "html" ? parsed.document :
|
|
215
|
+
undefined;
|
|
89
216
|
for (const plugin of dispatcher.allPluginsFor(file)) {
|
|
90
217
|
try {
|
|
91
218
|
results.push(plugin.parse(file, source, {
|
|
92
219
|
localIndex,
|
|
93
220
|
config: cfg,
|
|
94
221
|
resolveImport,
|
|
95
|
-
resolveLazyManifest:
|
|
96
|
-
lookupByTag:
|
|
222
|
+
resolveLazyManifest: warmedResolver.resolveLazyManifest,
|
|
223
|
+
lookupByTag: warmedResolver.lookupByTag,
|
|
97
224
|
repoRoot: cfg.configDir,
|
|
225
|
+
collector,
|
|
226
|
+
ast: astForCtx,
|
|
227
|
+
cemIndex,
|
|
98
228
|
}));
|
|
99
229
|
}
|
|
100
230
|
catch (err) {
|
|
101
231
|
log.warn(`[component-compass] parse failure in ${file}: ${errorMessage(err)}`);
|
|
102
232
|
}
|
|
103
233
|
}
|
|
234
|
+
// Evict after dispatch — keeps peak heap proportional to one file, not
|
|
235
|
+
// the whole repo, on large monorepos.
|
|
236
|
+
astCache.delete(file);
|
|
237
|
+
sourceCache.delete(file);
|
|
238
|
+
walkProgress.tick();
|
|
104
239
|
}
|
|
240
|
+
walkProgress.done();
|
|
105
241
|
const t1 = performance.now();
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
// `packageName` falls outside the same allowlist `buildScanOutput` uses
|
|
109
|
-
// for the artifact. Real-world scans against multi-package consumer apps
|
|
110
|
-
// showed unfiltered diagnostics flooding stderr with warnings about
|
|
111
|
-
// dependencies the user never asked about.
|
|
242
|
+
// Drain the shared collector.
|
|
243
|
+
const diagnostics = collector.drain();
|
|
112
244
|
if (!opts.quiet) {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
if (!allowDiagnostic(d))
|
|
116
|
-
continue;
|
|
117
|
-
if (d.code === "barrel-unsupported-form") {
|
|
118
|
-
log.warn(`[component-compass] ${d.file} contains an unsupported re-export form (${d.form}); treating file as terminal.`);
|
|
119
|
-
}
|
|
120
|
-
else if (d.code === "untraceable-barrel") {
|
|
121
|
-
log.warn(`[component-compass] "${d.packageName}" resolved to ${d.resolvedFile} which has no statically-traceable re-exports (likely bundled). Components from this package will surface with manifest: null. Add a component-compass-manifest.json at the package root to enrich.`);
|
|
122
|
-
}
|
|
123
|
-
else if (d.code === "cycle-detected") {
|
|
124
|
-
log.warn(`[component-compass] cycle detected in re-export chain at ${d.file} (export: ${d.exportName}). Truncating.`);
|
|
125
|
-
}
|
|
126
|
-
else if (d.code === "chain-too-deep") {
|
|
127
|
-
log.warn(`[component-compass] re-export chain at ${d.file} exceeded ${d.depth} hops; bailing. (export: ${d.exportName})`);
|
|
128
|
-
}
|
|
245
|
+
for (const d of diagnostics) {
|
|
246
|
+
log.warn(formatDiagnostic(d));
|
|
129
247
|
}
|
|
130
248
|
}
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
cliRepoIdFlag: opts.repoId,
|
|
134
|
-
});
|
|
135
|
-
const snapshot = lazyResolver
|
|
249
|
+
const derivedPackages = warmedResolver.snapshotDerivedPackages();
|
|
250
|
+
const snapshot = warmedResolver
|
|
136
251
|
.snapshotComponents()
|
|
137
|
-
.map((c) =>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
252
|
+
.map((c) => {
|
|
253
|
+
const pkg = c.source.type === "external" ? c.source.package : null;
|
|
254
|
+
const enrichmentSource = pkg !== null && derivedPackages.has(pkg) ? "derived" : "authored";
|
|
255
|
+
return { component: c, enrichmentSource };
|
|
256
|
+
});
|
|
257
|
+
const manifests = warmedResolver.snapshotManifestRefs();
|
|
258
|
+
const seeds = buildComponentSeeds(snapshot, results, localIndex, cfg.configDir, workspaceGraph);
|
|
259
|
+
const occurrences = parseResultsToOccurrences(results, cfg.captureValues, cfg.configDir);
|
|
142
260
|
const partialStats = {
|
|
143
261
|
filesScanned: files.length,
|
|
144
262
|
filesWithUsage: countFilesWithUsage(occurrences),
|
|
145
263
|
scanDurationMs: Math.round(t1 - t0),
|
|
146
264
|
};
|
|
147
|
-
const scanOutput = buildScanOutput(
|
|
265
|
+
const scanOutput = buildScanOutput(meta, manifests, partialStats, seeds, occurrences, diagnostics);
|
|
266
|
+
await stampGitMTime(cfg.configDir, scanOutput.components);
|
|
267
|
+
await stampVersion(cfg.configDir, scanOutput.components, scanOutput.occurrences);
|
|
268
|
+
stampDeprecated(scanOutput.components, cemIndex);
|
|
148
269
|
const outputPath = isAbsolute(cfg.output) ? cfg.output : resolve(cfg.configDir, cfg.output);
|
|
149
270
|
await writeJson(scanOutput, outputPath);
|
|
150
271
|
if (!opts.quiet) {
|
|
@@ -152,12 +273,14 @@ export async function runScan(opts) {
|
|
|
152
273
|
}
|
|
153
274
|
let exitCode = 0;
|
|
154
275
|
if (opts.failOn === "deprecated-usage") {
|
|
155
|
-
const hasDeprecated = scanOutput.components.some((c) => c.
|
|
156
|
-
c.stats.occurrenceCount > 0);
|
|
276
|
+
const hasDeprecated = scanOutput.components.some((c) => c.deprecated && c.stats.occurrenceCount > 0);
|
|
157
277
|
if (hasDeprecated)
|
|
158
278
|
exitCode = 1;
|
|
159
279
|
}
|
|
160
|
-
|
|
280
|
+
if (opts.strict && diagnostics.some((d) => d.severity === "warning")) {
|
|
281
|
+
exitCode = 1;
|
|
282
|
+
}
|
|
283
|
+
return { exitCode, output: scanOutput };
|
|
161
284
|
}
|
|
162
285
|
function countFilesWithUsage(occurrences) {
|
|
163
286
|
const files = new Set();
|
|
@@ -165,27 +288,24 @@ function countFilesWithUsage(occurrences) {
|
|
|
165
288
|
files.add(o.filePath);
|
|
166
289
|
return files.size;
|
|
167
290
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
for (const name of Object.keys(m))
|
|
187
|
-
all.add(name);
|
|
291
|
+
function assertUnreachable(x) {
|
|
292
|
+
throw new Error(`Unhandled diagnostic code: ${x.code}`);
|
|
293
|
+
}
|
|
294
|
+
function formatDiagnostic(d) {
|
|
295
|
+
const tag = d.severity === "warning" ? "warn " : "info ";
|
|
296
|
+
switch (d.code) {
|
|
297
|
+
case "jsx-shape-unsupported":
|
|
298
|
+
return `${tag} [component-compass] ${d.code} at ${d.filePath}:${d.line ?? "?"} — ${d.detail}`;
|
|
299
|
+
case "vue-tag-low-confidence":
|
|
300
|
+
return `${tag} [component-compass] ${d.code} at ${d.filePath}:${d.line ?? "?"} — emitted <${d.tagName}> as ${d.emittedAs}`;
|
|
301
|
+
case "local-index-duplicate-tag":
|
|
302
|
+
return `${tag} [component-compass] ${d.code} at ${d.filePath} — <${d.tagName}> conflicts with ${d.conflictsWith}`;
|
|
303
|
+
case "cycle-detected":
|
|
304
|
+
return `${tag} [component-compass] ${d.code} at ${d.filePath} (export: ${d.exportName})`;
|
|
305
|
+
case "chain-too-deep":
|
|
306
|
+
return `${tag} [component-compass] ${d.code} at ${d.filePath} (export: ${d.exportName}, depth: ${d.depth})`;
|
|
307
|
+
default:
|
|
308
|
+
return assertUnreachable(d);
|
|
188
309
|
}
|
|
189
|
-
return [...all];
|
|
190
310
|
}
|
|
191
311
|
//# sourceMappingURL=scan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Owner-edge composition rollup. Pure two-pass fold over the flat occurrence
|
|
3
|
+
* stream — does not mutate inputs.
|
|
4
4
|
*
|
|
5
|
-
* Pass 1
|
|
6
|
-
*
|
|
5
|
+
* Pass 1 indexes occurrences by their ownerComponentId so we can compute
|
|
6
|
+
* rendersByCount per owner without re-scanning the occurrence list once per
|
|
7
|
+
* component.
|
|
7
8
|
*
|
|
8
|
-
* Pass 2 visits each component
|
|
9
|
-
* -
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
* - isRootCount: occurrences with no
|
|
14
|
-
* - isLeafCount:
|
|
15
|
-
*
|
|
16
|
-
* - childCount metrics: avg + max children per occurrence.
|
|
9
|
+
* Pass 2 visits each component and accumulates:
|
|
10
|
+
* - rendersByCount: child componentId → count of occurrences this component
|
|
11
|
+
* owns. Built from the pass-1 index.
|
|
12
|
+
* - renderedByCount: parent componentId → count of times this component
|
|
13
|
+
* appears with that owner.
|
|
14
|
+
* - isRootCount: occurrences of this component with no ownerComponentId.
|
|
15
|
+
* - isLeafCount: this component's own occurrences whose rendersByCount is
|
|
16
|
+
* empty (i.e. the component doesn't own anything).
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Every component receives a composition block — even when it has zero
|
|
19
|
+
* occurrences and owns nothing — so downstream graph traversals always find
|
|
20
|
+
* the field present.
|
|
19
21
|
*/
|
|
20
22
|
import type { OutputComponent, OutputOccurrence } from "@component-compass/plugin-core";
|
|
21
23
|
export declare function applyCompositionRollup(components: OutputComponent[], occurrences: OutputOccurrence[]): OutputComponent[];
|