@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
|
@@ -33,6 +33,17 @@ export function parseBarrelTopLevelDetailed(source) {
|
|
|
33
33
|
catch {
|
|
34
34
|
return { reExports: [], unsupported: [] };
|
|
35
35
|
}
|
|
36
|
+
return parseBarrelTopLevelDetailedFromAst(ast);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* AST-taking variant of {@link parseBarrelTopLevelDetailed}. Lets callers
|
|
40
|
+
* that already hold a parsed `BabelFile` reuse it across passes (the lazy
|
|
41
|
+
* resolver caches barrel ASTs to avoid re-parsing the same file once per
|
|
42
|
+
* import resolution).
|
|
43
|
+
*
|
|
44
|
+
* Performs the same top-level analysis on `ast.program` — never re-parses.
|
|
45
|
+
*/
|
|
46
|
+
export function parseBarrelTopLevelDetailedFromAst(ast) {
|
|
36
47
|
const reExports = [];
|
|
37
48
|
const unsupported = [];
|
|
38
49
|
for (const node of ast.program.body) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barrel-parser.js","sourceRoot":"","sources":["../../src/manifest/barrel-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"barrel-parser.js","sourceRoot":"","sources":["../../src/manifest/barrel-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DerivedLeafPayload } from "@component-compass/plugin-core";
|
|
2
2
|
/**
|
|
3
|
-
* Phase 4 hook
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* Phase 4 hook: extract derived manifest data from leaf source when no
|
|
4
|
+
* authored manifest (CEM / CCM) exists.
|
|
5
|
+
*
|
|
6
|
+
* Fires only for workspace packages — those whose realpath resolves outside
|
|
7
|
+
* `node_modules`. Published packages with only a `dist/` tree are skipped;
|
|
8
|
+
* both extractor implementations return `null` in that case.
|
|
9
|
+
*
|
|
10
|
+
* The extractor to run is inferred from the package's source content:
|
|
11
|
+
* - `.vue` files present in `src/` → manifest-vue extractor
|
|
12
|
+
* - Otherwise → manifest-react extractor (handles TS/JS source)
|
|
13
|
+
*
|
|
14
|
+
* Pre-MVP: source-mapping config (no source-mapping paradigm for publishing
|
|
15
|
+
* packages without source — pre-MVP scope) is out of scope. Only source that
|
|
16
|
+
* lives at the default `src/` path is walked.
|
|
8
17
|
*/
|
|
9
|
-
export declare function extractDerivedManifest(
|
|
18
|
+
export declare function extractDerivedManifest(leafPackageDir: string): DerivedLeafPayload | null;
|
|
@@ -1,11 +1,47 @@
|
|
|
1
|
+
import { extractReactManifestSync } from "@component-compass/manifest-react";
|
|
2
|
+
import { extractVueManifestSync } from "@component-compass/manifest-vue";
|
|
3
|
+
import { readdirSync, existsSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
1
5
|
/**
|
|
2
|
-
* Phase 4 hook
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
6
|
+
* Phase 4 hook: extract derived manifest data from leaf source when no
|
|
7
|
+
* authored manifest (CEM / CCM) exists.
|
|
8
|
+
*
|
|
9
|
+
* Fires only for workspace packages — those whose realpath resolves outside
|
|
10
|
+
* `node_modules`. Published packages with only a `dist/` tree are skipped;
|
|
11
|
+
* both extractor implementations return `null` in that case.
|
|
12
|
+
*
|
|
13
|
+
* The extractor to run is inferred from the package's source content:
|
|
14
|
+
* - `.vue` files present in `src/` → manifest-vue extractor
|
|
15
|
+
* - Otherwise → manifest-react extractor (handles TS/JS source)
|
|
16
|
+
*
|
|
17
|
+
* Pre-MVP: source-mapping config (no source-mapping paradigm for publishing
|
|
18
|
+
* packages without source — pre-MVP scope) is out of scope. Only source that
|
|
19
|
+
* lives at the default `src/` path is walked.
|
|
7
20
|
*/
|
|
8
|
-
export function extractDerivedManifest(
|
|
9
|
-
|
|
21
|
+
export function extractDerivedManifest(leafPackageDir) {
|
|
22
|
+
const srcDir = join(leafPackageDir, "src");
|
|
23
|
+
if (existsSync(srcDir) && hasVueSources(srcDir)) {
|
|
24
|
+
return extractVueManifestSync(leafPackageDir);
|
|
25
|
+
}
|
|
26
|
+
return extractReactManifestSync(leafPackageDir);
|
|
27
|
+
}
|
|
28
|
+
function hasVueSources(dir) {
|
|
29
|
+
let entries;
|
|
30
|
+
try {
|
|
31
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
const name = entry.name;
|
|
38
|
+
if (entry.isFile() && name.endsWith(".vue"))
|
|
39
|
+
return true;
|
|
40
|
+
if (entry.isDirectory()) {
|
|
41
|
+
if (hasVueSources(join(dir, name)))
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
10
46
|
}
|
|
11
47
|
//# sourceMappingURL=derived-manifest-stub.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derived-manifest-stub.js","sourceRoot":"","sources":["../../src/manifest/derived-manifest-stub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"derived-manifest-stub.js","sourceRoot":"","sources":["../../src/manifest/derived-manifest-stub.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAe,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB,CAAC,cAAsB;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,wBAAwB,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAa,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACzD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,52 +1,70 @@
|
|
|
1
|
-
import { type IndexedComponent, type LazyResolverHit, type ManifestRef } from "@component-compass/plugin-core";
|
|
1
|
+
import { type IndexedComponent, type LazyResolverHit, type ManifestRef, type Diagnostic, type DiagnosticCollector } from "@component-compass/plugin-core";
|
|
2
2
|
import type { ResolveImport } from "../walker/resolve-import.js";
|
|
3
|
-
export type ResolverDiagnostic = {
|
|
4
|
-
code: "barrel-unsupported-form";
|
|
5
|
-
file: string;
|
|
6
|
-
form: string;
|
|
7
|
-
line?: number;
|
|
8
|
-
packageName?: string;
|
|
9
|
-
} | {
|
|
10
|
-
code: "untraceable-barrel";
|
|
11
|
-
packageName: string;
|
|
12
|
-
resolvedFile: string;
|
|
13
|
-
} | {
|
|
14
|
-
code: "cycle-detected";
|
|
15
|
-
file: string;
|
|
16
|
-
exportName: string;
|
|
17
|
-
packageName?: string;
|
|
18
|
-
} | {
|
|
19
|
-
code: "chain-too-deep";
|
|
20
|
-
file: string;
|
|
21
|
-
exportName: string;
|
|
22
|
-
depth: number;
|
|
23
|
-
packageName?: string;
|
|
24
|
-
};
|
|
25
3
|
export type CreateLazyResolverOptions = {
|
|
26
4
|
resolveImport: ResolveImport;
|
|
27
5
|
/**
|
|
28
|
-
* Anchor for
|
|
6
|
+
* Anchor for eager loads via `.warm()`. Optional — `resolveLazyManifest`
|
|
29
7
|
* itself never reads it (resolution is anchored on the calling file). When
|
|
30
|
-
* absent, `
|
|
8
|
+
* absent, `.warm()` falls back to `process.cwd()`.
|
|
31
9
|
*/
|
|
32
10
|
repoRoot?: string;
|
|
33
|
-
/**
|
|
34
|
-
extractDerivedManifest?: (leafPackageDir: string) => import("@component-compass/plugin-core").
|
|
11
|
+
/** Derived-manifest extractor; defaults to the workspace-scoped impl from derived-manifest-stub.ts. */
|
|
12
|
+
extractDerivedManifest?: (leafPackageDir: string) => import("@component-compass/plugin-core").DerivedLeafPayload | null;
|
|
13
|
+
/**
|
|
14
|
+
* Optional shared diagnostic collector. If absent, the resolver creates
|
|
15
|
+
* its own internal collector accessible via `diagnostics()`.
|
|
16
|
+
*/
|
|
17
|
+
collector?: DiagnosticCollector;
|
|
18
|
+
/**
|
|
19
|
+
* Glob patterns identifying packages whose manifests should be loaded.
|
|
20
|
+
* When set, the resolver loads manifests only for matching packages —
|
|
21
|
+
* non-matching packages still get identity resolution (`leafPackage` +
|
|
22
|
+
* `modulePath`) but `matched` is always null. When omitted or empty,
|
|
23
|
+
* manifest enrichment is fully disabled; identity resolution still runs.
|
|
24
|
+
* Use `["**"]` to enrich every package the resolver reaches (the
|
|
25
|
+
* single-star pattern `*` won't match scoped names like `@scope/pkg`
|
|
26
|
+
* because picomatch's `*` doesn't cross `/`).
|
|
27
|
+
*/
|
|
28
|
+
manifestPatterns?: readonly string[];
|
|
35
29
|
};
|
|
36
30
|
export interface LazyResolver {
|
|
37
31
|
resolveLazyManifest(fromFile: string, specifier: string, exportName: string): LazyResolverHit | null;
|
|
38
|
-
lookupByTag(tagName: string): Extract<IndexedComponent, {
|
|
39
|
-
kind: "custom-element";
|
|
40
|
-
}> | null;
|
|
41
32
|
snapshotComponents(): IndexedComponent[];
|
|
42
33
|
snapshotManifestRefs(): ManifestRef[];
|
|
43
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Returns the set of package names whose enrichment came from the derived
|
|
36
|
+
* extractor (no authored CEM/CCM was found). Used by scan.ts to label
|
|
37
|
+
* `enrichmentSource: "derived"` on the snapshot entries for these packages.
|
|
38
|
+
*/
|
|
39
|
+
snapshotDerivedPackages(): Set<string>;
|
|
40
|
+
diagnostics(): Diagnostic[];
|
|
44
41
|
/**
|
|
45
42
|
* Eagerly load each named package's root CEM/CCM (if present) so the
|
|
46
43
|
* `byTag` cache covers tag-only consumers (HTML / Vue templates with no
|
|
47
|
-
* JS-side import to prime the resolver).
|
|
48
|
-
*
|
|
44
|
+
* JS-side import to prime the resolver). Returns a `WarmedResolver` that
|
|
45
|
+
* adds `lookupByTag` — the only way to obtain it. No barrel walking; just
|
|
46
|
+
* one leaf-load per package, mirroring the resolver's terminal-load step.
|
|
47
|
+
*/
|
|
48
|
+
warm(packageNames: string[]): WarmedResolver;
|
|
49
|
+
/**
|
|
50
|
+
* Test-only hook: number of times the named barrel path was passed through
|
|
51
|
+
* the parse step. The resolver caches parsed barrel ASTs per absolute path,
|
|
52
|
+
* so on the happy path this is 1 regardless of how many import resolutions
|
|
53
|
+
* traverse the same barrel. Underscore-prefixed because production callers
|
|
54
|
+
* shouldn't depend on it.
|
|
49
55
|
*/
|
|
50
|
-
|
|
56
|
+
_barrelParseCount(absPath: string): number;
|
|
57
|
+
}
|
|
58
|
+
export interface WarmedResolver extends LazyResolver {
|
|
59
|
+
/**
|
|
60
|
+
* Tag-only lookup against the CEM index loaded during `warm(...)` (and any
|
|
61
|
+
* subsequent `resolveLazyManifest` calls that walked into eligible
|
|
62
|
+
* packages). Returns null when no matching custom-element has been indexed,
|
|
63
|
+
* including for resolvers constructed without any `manifestPatterns`
|
|
64
|
+
* (identity-only mode — `warm(...)` is then a structural no-op).
|
|
65
|
+
*/
|
|
66
|
+
lookupByTag(tagName: string): Extract<IndexedComponent, {
|
|
67
|
+
kind: "custom-element";
|
|
68
|
+
}> | null;
|
|
51
69
|
}
|
|
52
70
|
export declare function createLazyResolver(opts: CreateLazyResolverOptions): LazyResolver;
|