@component-compass/cli 0.0.1 → 0.0.3
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 +1 -1
- package/dist/cli.js +12 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +3 -2
- package/dist/commands/init.js +50 -62
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/no-deps-diagnostic.d.ts +15 -0
- package/dist/commands/no-deps-diagnostic.js +23 -0
- package/dist/commands/no-deps-diagnostic.js.map +1 -0
- package/dist/commands/scan.d.ts +1 -0
- package/dist/commands/scan.js +126 -82
- package/dist/commands/scan.js.map +1 -1
- package/dist/composition-rollup.d.ts +23 -0
- package/dist/composition-rollup.js +64 -0
- package/dist/composition-rollup.js.map +1 -0
- package/dist/config/loader.js +5 -3
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +1 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/identity.d.ts +21 -3
- package/dist/identity.js +40 -3
- package/dist/identity.js.map +1 -1
- package/dist/local-index/detect-react.js +224 -47
- package/dist/local-index/detect-react.js.map +1 -1
- package/dist/local-index/index.d.ts +4 -1
- package/dist/local-index/index.js +30 -13
- package/dist/local-index/index.js.map +1 -1
- package/dist/manifest/barrel-parser.d.ts +20 -0
- package/dist/manifest/barrel-parser.js +101 -16
- package/dist/manifest/barrel-parser.js.map +1 -1
- package/dist/manifest/derived-manifest-stub.d.ts +9 -0
- package/dist/manifest/derived-manifest-stub.js +11 -0
- package/dist/manifest/derived-manifest-stub.js.map +1 -0
- package/dist/manifest/diagnostic-filter.d.ts +13 -0
- package/dist/manifest/diagnostic-filter.js +36 -0
- package/dist/manifest/diagnostic-filter.js.map +1 -0
- package/dist/manifest/lazy-resolver.d.ts +44 -0
- package/dist/manifest/lazy-resolver.js +532 -0
- package/dist/manifest/lazy-resolver.js.map +1 -0
- package/dist/occurrences.d.ts +17 -0
- package/dist/occurrences.js +97 -0
- package/dist/occurrences.js.map +1 -0
- package/dist/reporter/index.d.ts +47 -9
- package/dist/reporter/index.js +167 -17
- package/dist/reporter/index.js.map +1 -1
- package/dist/reporter/json.d.ts +6 -2
- package/dist/reporter/json.js +7 -3
- package/dist/reporter/json.js.map +1 -1
- package/dist/reporter/stdout.d.ts +2 -2
- package/dist/reporter/stdout.js +11 -23
- package/dist/reporter/stdout.js.map +1 -1
- package/dist/rollup.d.ts +8 -2
- package/dist/rollup.js +2 -3
- package/dist/rollup.js.map +1 -1
- package/dist/seeds.d.ts +41 -0
- package/dist/seeds.js +145 -0
- package/dist/seeds.js.map +1 -0
- package/dist/types.d.ts +0 -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 +2 -0
- package/dist/workspace/find-owning-package.js +49 -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 +11 -9
- package/schema/config.schema.json +2 -10
- package/dist/graph/builder.d.ts +0 -25
- package/dist/graph/builder.js +0 -176
- package/dist/graph/builder.js.map +0 -1
- package/dist/manifest/discovery.d.ts +0 -24
- package/dist/manifest/discovery.js +0 -194
- package/dist/manifest/discovery.js.map +0 -1
- package/dist/manifest/index.d.ts +0 -6
- package/dist/manifest/index.js +0 -98
- package/dist/manifest/index.js.map +0 -1
- package/dist/manifest/resolver.d.ts +0 -30
- package/dist/manifest/resolver.js +0 -136
- package/dist/manifest/resolver.js.map +0 -1
- package/dist/manifest/run-discovery.d.ts +0 -12
- package/dist/manifest/run-discovery.js +0 -46
- package/dist/manifest/run-discovery.js.map +0 -1
- package/dist/manifest/types.d.ts +0 -3
- package/dist/manifest/types.js +0 -2
- package/dist/manifest/types.js.map +0 -1
- package/dist/reporter/types.d.ts +0 -69
- package/dist/reporter/types.js +0 -2
- package/dist/reporter/types.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export function applyCompositionRollup(components, occurrences) {
|
|
2
|
+
const childrenByOwner = new Map();
|
|
3
|
+
const ownersByChild = new Map();
|
|
4
|
+
const rootCountByChild = new Map();
|
|
5
|
+
for (const o of occurrences) {
|
|
6
|
+
if (o.ownerComponentId) {
|
|
7
|
+
let m = childrenByOwner.get(o.ownerComponentId);
|
|
8
|
+
if (!m) {
|
|
9
|
+
m = new Map();
|
|
10
|
+
childrenByOwner.set(o.ownerComponentId, m);
|
|
11
|
+
}
|
|
12
|
+
m.set(o.componentId, (m.get(o.componentId) ?? 0) + 1);
|
|
13
|
+
let m2 = ownersByChild.get(o.componentId);
|
|
14
|
+
if (!m2) {
|
|
15
|
+
m2 = new Map();
|
|
16
|
+
ownersByChild.set(o.componentId, m2);
|
|
17
|
+
}
|
|
18
|
+
m2.set(o.ownerComponentId, (m2.get(o.ownerComponentId) ?? 0) + 1);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
rootCountByChild.set(o.componentId, (rootCountByChild.get(o.componentId) ?? 0) + 1);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const occsByComp = new Map();
|
|
25
|
+
for (const o of occurrences) {
|
|
26
|
+
const list = occsByComp.get(o.componentId);
|
|
27
|
+
if (list)
|
|
28
|
+
list.push(o);
|
|
29
|
+
else
|
|
30
|
+
occsByComp.set(o.componentId, [o]);
|
|
31
|
+
}
|
|
32
|
+
const validIds = new Set(components.map((c) => c.id));
|
|
33
|
+
return components.map((c) => {
|
|
34
|
+
const rendersByCount = {};
|
|
35
|
+
const renderedByCount = {};
|
|
36
|
+
const isRootCount = rootCountByChild.get(c.id) ?? 0;
|
|
37
|
+
let isLeafCount = 0;
|
|
38
|
+
const renders = childrenByOwner.get(c.id);
|
|
39
|
+
if (renders)
|
|
40
|
+
for (const [childId, n] of renders)
|
|
41
|
+
rendersByCount[childId] = n;
|
|
42
|
+
const owners = ownersByChild.get(c.id);
|
|
43
|
+
if (owners)
|
|
44
|
+
for (const [ownerId, n] of owners)
|
|
45
|
+
renderedByCount[ownerId] = n;
|
|
46
|
+
for (const k of Object.keys(rendersByCount))
|
|
47
|
+
if (!validIds.has(k))
|
|
48
|
+
delete rendersByCount[k];
|
|
49
|
+
for (const k of Object.keys(renderedByCount))
|
|
50
|
+
if (!validIds.has(k))
|
|
51
|
+
delete renderedByCount[k];
|
|
52
|
+
if (Object.keys(rendersByCount).length === 0) {
|
|
53
|
+
isLeafCount = (occsByComp.get(c.id) ?? []).length;
|
|
54
|
+
}
|
|
55
|
+
const composition = {
|
|
56
|
+
rendersByCount,
|
|
57
|
+
renderedByCount,
|
|
58
|
+
isRootCount,
|
|
59
|
+
isLeafCount,
|
|
60
|
+
};
|
|
61
|
+
return { ...c, composition };
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=composition-rollup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-rollup.js","sourceRoot":"","sources":["../src/composition-rollup.ts"],"names":[],"mappings":"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"}
|
package/dist/config/loader.js
CHANGED
|
@@ -30,6 +30,9 @@ export async function loadConfig(configPath) {
|
|
|
30
30
|
if (parsed && typeof parsed === "object" && "manifests" in parsed) {
|
|
31
31
|
throw new ConfigError("CONFIG_INVALID", `${abs}: the \`manifests\` field was removed. Replace with \`packageScopes\` (array of glob patterns matching package names). See docs/usage.md.`);
|
|
32
32
|
}
|
|
33
|
+
if (parsed && typeof parsed === "object" && "manifestSources" in parsed) {
|
|
34
|
+
throw new ConfigError("CONFIG_INVALID", `${abs}: the \`manifestSources\` field was removed in Phase 1 (lazy resolution). Lazy follow now handles aggregator chains automatically. Drop the field; if you have a bundled-barrel package, ship a component-compass-manifest.json at its package root. See docs/usage.md.`);
|
|
35
|
+
}
|
|
33
36
|
if (!validateConfig(parsed)) {
|
|
34
37
|
const issues = (validateConfig.errors ?? [])
|
|
35
38
|
.map((e) => `${e.instancePath || "<root>"}: ${e.message}`)
|
|
@@ -37,11 +40,12 @@ export async function loadConfig(configPath) {
|
|
|
37
40
|
throw new ConfigError("CONFIG_INVALID", `Invalid config at ${abs}: ${issues}`);
|
|
38
41
|
}
|
|
39
42
|
// parsed is now narrowed to ConfigFile by the typed validator.
|
|
43
|
+
// Default packageScopes to [] when absent (visibility-first).
|
|
40
44
|
const resolved = {
|
|
41
45
|
configPath: abs,
|
|
42
46
|
configDir: dirname(abs),
|
|
43
47
|
repoId: parsed.repoId,
|
|
44
|
-
packageScopes: parsed.packageScopes,
|
|
48
|
+
packageScopes: parsed.packageScopes ?? [],
|
|
45
49
|
include: parsed.include,
|
|
46
50
|
exclude: parsed.exclude ?? [],
|
|
47
51
|
captureValues: parsed.captureValues ?? false,
|
|
@@ -49,8 +53,6 @@ export async function loadConfig(configPath) {
|
|
|
49
53
|
};
|
|
50
54
|
// Optional passthroughs — only assigned when present so we satisfy
|
|
51
55
|
// `exactOptionalPropertyTypes` (undefined ≠ absent).
|
|
52
|
-
if (parsed.manifestSources !== undefined)
|
|
53
|
-
resolved.manifestSources = parsed.manifestSources;
|
|
54
56
|
if (parsed.tsconfigPath !== undefined)
|
|
55
57
|
resolved.tsconfigPath = parsed.tsconfigPath;
|
|
56
58
|
if (parsed.aliases !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,MAAM,OAAO,WAAY,SAAQ,KAAK;IACjB;IAAnB,YAAmB,IAAyC,EAAE,OAAe;QAC3E,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,SAAI,GAAJ,IAAI,CAAqC;IAE5D,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAErF,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CACnB,gBAAgB,EAChB,yCAAyC,GAAG,mDAAmD,CAChG,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,GAAG,uBAAuB,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,0EAA0E;IAC1E,yDAAyD;IACzD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAClE,MAAM,IAAI,WAAW,CACnB,gBAAgB,EAChB,GAAG,GAAG,2IAA2I,CAClJ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,+DAA+D;IAC/D,MAAM,QAAQ,GAAmB;QAC/B,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -18,8 +18,7 @@ export type TagRule = {
|
|
|
18
18
|
*/
|
|
19
19
|
export interface ConfigFile {
|
|
20
20
|
repoId: string;
|
|
21
|
-
packageScopes
|
|
22
|
-
manifestSources?: Record<string, string[]>;
|
|
21
|
+
packageScopes?: string[];
|
|
23
22
|
include: string[];
|
|
24
23
|
exclude?: string[];
|
|
25
24
|
captureValues?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,sEAAsE;AACtE,6EAA6E;AAC7E,0EAA0E;AAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAE7E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;AACzE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,sEAAsE;AACtE,6EAA6E;AAC7E,0EAA0E;AAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAE7E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;AACzE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AA4BhE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,cAAc,GACzB,GAAG,CAAC,OAAO,CAAa,UAAU,CAAC,CAAC"}
|
package/dist/identity.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Three-lane identity derivation + stable id keying.
|
|
3
3
|
*
|
|
4
|
-
* Two pure functions that translate a per-occurrence `ComponentId +
|
|
4
|
+
* Two pure functions that translate a per-occurrence `ComponentId +
|
|
5
5
|
* derivedTags + repoId` tuple into the rolled-up `OutputIdentity` and a
|
|
6
6
|
* deterministic short hash used as the component's `id` in the emitted
|
|
7
7
|
* artifact.
|
|
@@ -23,12 +23,30 @@
|
|
|
23
23
|
*
|
|
24
24
|
* NOT yet wired into the scan pipeline — wiring is a separate task.
|
|
25
25
|
*/
|
|
26
|
-
import type { ComponentId,
|
|
26
|
+
import type { ComponentId, OutputIdentity } from "@component-compass/plugin-core";
|
|
27
|
+
import type { WorkspaceGraph } from "./workspace/types.js";
|
|
27
28
|
export type IdentityInputs = {
|
|
28
29
|
componentId: ComponentId;
|
|
29
|
-
via: OccurrenceVia;
|
|
30
30
|
derivedTags: readonly string[];
|
|
31
31
|
repoId: string;
|
|
32
|
+
workspaceGraph?: WorkspaceGraph;
|
|
33
|
+
/** Optional declaration position (only meaningful for local scope). */
|
|
34
|
+
definitionLoc?: {
|
|
35
|
+
line: number;
|
|
36
|
+
column: number;
|
|
37
|
+
};
|
|
32
38
|
};
|
|
33
39
|
export declare function computeOutputIdentity(inputs: IdentityInputs): OutputIdentity;
|
|
34
40
|
export declare function computeStableId(identity: OutputIdentity): string;
|
|
41
|
+
/**
|
|
42
|
+
* Produce the same stable id as `computeStableId` from a raw `ComponentId`
|
|
43
|
+
* (as emitted by parsers), without needing to first build an `OutputIdentity`.
|
|
44
|
+
*
|
|
45
|
+
* This is used in `occurrences.ts` so that occurrence `componentId` fields
|
|
46
|
+
* hash-match the `id` values produced by `buildComponentSeeds` → `rollupOccurrencesToComponents`
|
|
47
|
+
* can correctly correlate occurrences to seeds.
|
|
48
|
+
*
|
|
49
|
+
* For local components, `repoId` is absent from the `ComponentId` source, so
|
|
50
|
+
* we use `""` — matching the `repoId: ""` convention in `buildComponentSeeds`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computeStableIdFromComponentId(c: ComponentId): string;
|
package/dist/identity.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Three-lane identity derivation + stable id keying.
|
|
3
3
|
*
|
|
4
|
-
* Two pure functions that translate a per-occurrence `ComponentId +
|
|
4
|
+
* Two pure functions that translate a per-occurrence `ComponentId +
|
|
5
5
|
* derivedTags + repoId` tuple into the rolled-up `OutputIdentity` and a
|
|
6
6
|
* deterministic short hash used as the component's `id` in the emitted
|
|
7
7
|
* artifact.
|
|
@@ -24,8 +24,10 @@
|
|
|
24
24
|
* NOT yet wired into the scan pipeline — wiring is a separate task.
|
|
25
25
|
*/
|
|
26
26
|
import { createHash } from "node:crypto";
|
|
27
|
+
import { join } from "node:path";
|
|
28
|
+
import { findOwningPackage } from "./workspace/find-owning-package.js";
|
|
27
29
|
export function computeOutputIdentity(inputs) {
|
|
28
|
-
const { componentId,
|
|
30
|
+
const { componentId, derivedTags, repoId, definitionLoc } = inputs;
|
|
29
31
|
const { source, kind } = componentId;
|
|
30
32
|
const isLocal = source.type === "local";
|
|
31
33
|
const scope = isLocal
|
|
@@ -36,7 +38,6 @@ export function computeOutputIdentity(inputs) {
|
|
|
36
38
|
const identity = {
|
|
37
39
|
scope,
|
|
38
40
|
kind,
|
|
39
|
-
via: { kind: via.kind },
|
|
40
41
|
};
|
|
41
42
|
if (source.type === "external") {
|
|
42
43
|
identity.packageName = source.package;
|
|
@@ -51,6 +52,17 @@ export function computeOutputIdentity(inputs) {
|
|
|
51
52
|
if (isLocal && source.type === "local") {
|
|
52
53
|
identity.repoId = repoId;
|
|
53
54
|
identity.filePath = source.filePath;
|
|
55
|
+
if (inputs.workspaceGraph) {
|
|
56
|
+
// findOwningPackage operates on absolute paths; source.filePath is
|
|
57
|
+
// repo-relative, so resolve against workspaceGraph.rootPath.
|
|
58
|
+
const abs = join(inputs.workspaceGraph.rootPath, source.filePath);
|
|
59
|
+
const owning = findOwningPackage(inputs.workspaceGraph, abs);
|
|
60
|
+
if (owning)
|
|
61
|
+
identity.packageName = owning.name;
|
|
62
|
+
}
|
|
63
|
+
if (definitionLoc !== undefined) {
|
|
64
|
+
identity.definition = definitionLoc;
|
|
65
|
+
}
|
|
54
66
|
}
|
|
55
67
|
return identity;
|
|
56
68
|
}
|
|
@@ -64,4 +76,29 @@ export function computeStableId(identity) {
|
|
|
64
76
|
}
|
|
65
77
|
return sha1Short(`rc::${identity.packageName}::${identity.exportName}`);
|
|
66
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Produce the same stable id as `computeStableId` from a raw `ComponentId`
|
|
81
|
+
* (as emitted by parsers), without needing to first build an `OutputIdentity`.
|
|
82
|
+
*
|
|
83
|
+
* This is used in `occurrences.ts` so that occurrence `componentId` fields
|
|
84
|
+
* hash-match the `id` values produced by `buildComponentSeeds` → `rollupOccurrencesToComponents`
|
|
85
|
+
* can correctly correlate occurrences to seeds.
|
|
86
|
+
*
|
|
87
|
+
* For local components, `repoId` is absent from the `ComponentId` source, so
|
|
88
|
+
* we use `""` — matching the `repoId: ""` convention in `buildComponentSeeds`.
|
|
89
|
+
*/
|
|
90
|
+
export function computeStableIdFromComponentId(c) {
|
|
91
|
+
if (c.source.type === "local") {
|
|
92
|
+
const exportOrTag = c.kind === "custom-element" ? c.tagName : c.export;
|
|
93
|
+
// repoId is not carried on ComponentId.source; use "" to match the
|
|
94
|
+
// repoId: "" convention in buildComponentSeeds (seeds for local
|
|
95
|
+
// components are keyed the same way).
|
|
96
|
+
return sha1Short(`local::::${c.source.filePath}::${exportOrTag}::${c.kind}`);
|
|
97
|
+
}
|
|
98
|
+
const pkg = c.source.type === "external" ? c.source.package : "unknown";
|
|
99
|
+
if (c.kind === "custom-element") {
|
|
100
|
+
return sha1Short(`ce::${pkg}::${c.tagName}`);
|
|
101
|
+
}
|
|
102
|
+
return sha1Short(`rc::${pkg}::${c.export}`);
|
|
103
|
+
}
|
|
67
104
|
//# sourceMappingURL=identity.js.map
|
package/dist/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { parse } from "@babel/parser";
|
|
2
|
-
import { traverse } from "@component-compass/ast-utils";
|
|
3
2
|
const REACT_EXTS = new Set([".tsx", ".jsx", ".ts", ".js"]);
|
|
4
3
|
export function detectReactComponents(source, filePath, extension) {
|
|
5
4
|
if (!REACT_EXTS.has(extension))
|
|
6
5
|
return [];
|
|
6
|
+
// `.ts` files cannot contain JSX; enabling the jsx plugin there causes
|
|
7
|
+
// valid TypeScript like `return <const>{...}` to fail to parse.
|
|
8
|
+
const plugins = ["typescript", "decorators-legacy", "classProperties"];
|
|
9
|
+
if (extension !== ".ts")
|
|
10
|
+
plugins.push("jsx");
|
|
7
11
|
const ast = (() => {
|
|
8
12
|
try {
|
|
9
13
|
return parse(source, {
|
|
10
14
|
sourceType: "module",
|
|
11
|
-
plugins
|
|
15
|
+
plugins,
|
|
12
16
|
errorRecovery: true,
|
|
13
17
|
});
|
|
14
18
|
}
|
|
@@ -20,60 +24,232 @@ export function detectReactComponents(source, filePath, extension) {
|
|
|
20
24
|
return [];
|
|
21
25
|
const found = [];
|
|
22
26
|
const filePathSource = { type: "local", filePath };
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
// ── Pass 1: collect top-level PascalCase declarations as candidates ──────
|
|
28
|
+
// "Top-level" = direct child of Program, or inline declaration inside an
|
|
29
|
+
// Export*Declaration that is a direct child of Program.
|
|
30
|
+
const candidates = new Map();
|
|
31
|
+
for (const stmt of ast.program.body) {
|
|
32
|
+
// Unwrap export wrappers to get the inner declaration (if any).
|
|
33
|
+
const inner = stmt.type === "ExportNamedDeclaration" && stmt.declaration
|
|
34
|
+
? stmt.declaration
|
|
35
|
+
: stmt.type === "ExportDefaultDeclaration" && isDeclaration(stmt.declaration)
|
|
36
|
+
? stmt.declaration
|
|
37
|
+
: stmt;
|
|
38
|
+
if (inner.type === "FunctionDeclaration" && inner.id && isPascalCase(inner.id.name) && returnsJsx(inner)) {
|
|
39
|
+
const name = inner.id.name;
|
|
40
|
+
candidates.set(name, {
|
|
41
|
+
componentId: { kind: "react-component", export: name, source: filePathSource },
|
|
42
|
+
detector: "react-default-fn",
|
|
43
|
+
loc: nodeLoc(inner, filePath),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else if (inner.type === "ClassDeclaration" && inner.id && isPascalCase(inner.id.name) && hasRenderMethod(inner)) {
|
|
47
|
+
const name = inner.id.name;
|
|
48
|
+
candidates.set(name, {
|
|
49
|
+
componentId: { kind: "react-component", export: name, source: filePathSource },
|
|
50
|
+
detector: "react-class",
|
|
51
|
+
loc: nodeLoc(inner, filePath),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else if (inner.type === "VariableDeclaration") {
|
|
55
|
+
for (const d of inner.declarations) {
|
|
56
|
+
if (d.id.type !== "Identifier" || !isPascalCase(d.id.name) || !d.init)
|
|
57
|
+
continue;
|
|
58
|
+
const detector = classifyVariableInit(d.init);
|
|
59
|
+
if (detector) {
|
|
60
|
+
const name = d.id.name;
|
|
61
|
+
candidates.set(name, {
|
|
62
|
+
componentId: { kind: "react-component", export: name, source: filePathSource },
|
|
63
|
+
detector,
|
|
64
|
+
loc: nodeLoc(d, filePath),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ── Pass 2: walk exports and emit LocalDefinitions ───────────────────────
|
|
71
|
+
// Track what we've already emitted to avoid double-emission.
|
|
72
|
+
// Key = `${exportName}:${isDefault}` for deduplication.
|
|
73
|
+
const emitted = new Set();
|
|
74
|
+
function emitKey(exportName, isDefault) {
|
|
75
|
+
return `${exportName}:${isDefault}`;
|
|
76
|
+
}
|
|
77
|
+
function emit(def) {
|
|
78
|
+
const key = emitKey(def.exportName, def.isDefault);
|
|
79
|
+
if (emitted.has(key))
|
|
80
|
+
return;
|
|
81
|
+
emitted.add(key);
|
|
82
|
+
found.push(def);
|
|
83
|
+
}
|
|
84
|
+
for (const stmt of ast.program.body) {
|
|
85
|
+
// ── ExportDefaultDeclaration ──────────────────────────────────────────
|
|
86
|
+
if (stmt.type === "ExportDefaultDeclaration") {
|
|
87
|
+
const decl = stmt.declaration;
|
|
88
|
+
// Named function declaration: `export default function Foo() {}`
|
|
26
89
|
if (decl.type === "FunctionDeclaration" && decl.id && isPascalCase(decl.id.name) && returnsJsx(decl)) {
|
|
27
|
-
|
|
90
|
+
emit({
|
|
28
91
|
componentId: { kind: "react-component", export: decl.id.name, source: filePathSource },
|
|
29
92
|
exportName: decl.id.name,
|
|
30
93
|
isDefault: true,
|
|
31
94
|
detector: "react-default-fn",
|
|
95
|
+
...withLoc(nodeLoc(decl, filePath)),
|
|
96
|
+
});
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// Anonymous function-declaration default: `export default function() {}`
|
|
100
|
+
if (decl.type === "FunctionDeclaration" && returnsJsx(decl)) {
|
|
101
|
+
emit({
|
|
102
|
+
componentId: { kind: "react-component", export: "default", source: filePathSource },
|
|
103
|
+
exportName: "default",
|
|
104
|
+
isDefault: true,
|
|
105
|
+
detector: "react-default-fn",
|
|
106
|
+
...withLoc(nodeLoc(decl, filePath)),
|
|
107
|
+
});
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
// Anonymous arrow / function expression default: `export default () => <Foo/>`
|
|
111
|
+
if ((decl.type === "ArrowFunctionExpression" || decl.type === "FunctionExpression") &&
|
|
112
|
+
returnsJsx(decl)) {
|
|
113
|
+
emit({
|
|
114
|
+
componentId: { kind: "react-component", export: "default", source: filePathSource },
|
|
115
|
+
exportName: "default",
|
|
116
|
+
isDefault: true,
|
|
117
|
+
detector: "react-arrow",
|
|
118
|
+
...withLoc(nodeLoc(decl, filePath)),
|
|
32
119
|
});
|
|
120
|
+
continue;
|
|
33
121
|
}
|
|
122
|
+
// Class component default: `export default class Foo extends Component { render() {} }`
|
|
34
123
|
if (decl.type === "ClassDeclaration" &&
|
|
35
124
|
decl.id &&
|
|
36
125
|
isPascalCase(decl.id.name) &&
|
|
37
|
-
|
|
38
|
-
|
|
126
|
+
hasRenderMethod(decl)) {
|
|
127
|
+
emit({
|
|
39
128
|
componentId: { kind: "react-component", export: decl.id.name, source: filePathSource },
|
|
40
129
|
exportName: decl.id.name,
|
|
41
130
|
isDefault: true,
|
|
42
131
|
detector: "react-class",
|
|
132
|
+
...withLoc(nodeLoc(decl, filePath)),
|
|
43
133
|
});
|
|
134
|
+
continue;
|
|
44
135
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
136
|
+
// NEW: `export default Identifier` — look up in candidates
|
|
137
|
+
if (decl.type === "Identifier") {
|
|
138
|
+
const candidate = candidates.get(decl.name);
|
|
139
|
+
if (candidate) {
|
|
140
|
+
emit({
|
|
141
|
+
componentId: candidate.componentId,
|
|
142
|
+
exportName: candidate.componentId.kind === "react-component" ? candidate.componentId.export : decl.name,
|
|
143
|
+
isDefault: true,
|
|
144
|
+
detector: candidate.detector,
|
|
145
|
+
...withLoc(candidate.loc),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
continue;
|
|
57
149
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
150
|
+
// NEW: `export default memo(Foo)` / `export default forwardRef(Foo)` etc.
|
|
151
|
+
if (decl.type === "CallExpression") {
|
|
152
|
+
const callee = decl.callee;
|
|
153
|
+
let calleeName;
|
|
154
|
+
if (callee.type === "Identifier")
|
|
155
|
+
calleeName = callee.name;
|
|
156
|
+
else if (callee.type === "MemberExpression" && callee.property.type === "Identifier")
|
|
157
|
+
calleeName = callee.property.name;
|
|
158
|
+
const isHoc = calleeName === "memo" || calleeName === "forwardRef" || calleeName === "observer";
|
|
159
|
+
if (isHoc && decl.arguments.length > 0) {
|
|
160
|
+
const firstArg = decl.arguments[0];
|
|
161
|
+
if (firstArg && firstArg.type === "Identifier") {
|
|
162
|
+
const candidate = candidates.get(firstArg.name);
|
|
163
|
+
if (candidate) {
|
|
164
|
+
const detector = calleeName === "forwardRef" ? "react-forward-ref" :
|
|
165
|
+
calleeName === "memo" ? "react-memo" :
|
|
166
|
+
"react-arrow";
|
|
167
|
+
emit({
|
|
168
|
+
componentId: candidate.componentId,
|
|
169
|
+
exportName: candidate.componentId.kind === "react-component" ? candidate.componentId.export : firstArg.name,
|
|
170
|
+
isDefault: true,
|
|
171
|
+
detector,
|
|
172
|
+
...withLoc(candidate.loc),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
70
175
|
}
|
|
71
176
|
}
|
|
177
|
+
continue;
|
|
72
178
|
}
|
|
73
|
-
|
|
74
|
-
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
// ── ExportNamedDeclaration ────────────────────────────────────────────
|
|
182
|
+
if (stmt.type === "ExportNamedDeclaration") {
|
|
183
|
+
const decl = stmt.declaration;
|
|
184
|
+
// Inline declaration: `export function Foo() {}`, `export const Foo = ...`, etc.
|
|
185
|
+
if (decl) {
|
|
186
|
+
if (decl.type === "FunctionDeclaration" && decl.id && isPascalCase(decl.id.name) && returnsJsx(decl)) {
|
|
187
|
+
emit({
|
|
188
|
+
componentId: { kind: "react-component", export: decl.id.name, source: filePathSource },
|
|
189
|
+
exportName: decl.id.name,
|
|
190
|
+
isDefault: false,
|
|
191
|
+
detector: "react-default-fn",
|
|
192
|
+
...withLoc(nodeLoc(decl, filePath)),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
if (decl.type === "ClassDeclaration" && decl.id && isPascalCase(decl.id.name) && hasRenderMethod(decl)) {
|
|
196
|
+
emit({
|
|
197
|
+
componentId: { kind: "react-component", export: decl.id.name, source: filePathSource },
|
|
198
|
+
exportName: decl.id.name,
|
|
199
|
+
isDefault: false,
|
|
200
|
+
detector: "react-class",
|
|
201
|
+
...withLoc(nodeLoc(decl, filePath)),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (decl.type === "VariableDeclaration") {
|
|
205
|
+
for (const d of decl.declarations) {
|
|
206
|
+
if (d.id.type !== "Identifier" || !isPascalCase(d.id.name) || !d.init)
|
|
207
|
+
continue;
|
|
208
|
+
const detector = classifyVariableInit(d.init);
|
|
209
|
+
if (detector) {
|
|
210
|
+
emit({
|
|
211
|
+
componentId: { kind: "react-component", export: d.id.name, source: filePathSource },
|
|
212
|
+
exportName: d.id.name,
|
|
213
|
+
isDefault: false,
|
|
214
|
+
detector,
|
|
215
|
+
...withLoc(nodeLoc(d, filePath)),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
// NEW: `export { X }` or `export { X as Y }` — local re-exports (no source).
|
|
223
|
+
// Skip if this is a re-export from another module (`stmt.source` is non-null).
|
|
224
|
+
if (!stmt.source && stmt.specifiers.length > 0) {
|
|
225
|
+
for (const specifier of stmt.specifiers) {
|
|
226
|
+
if (specifier.type !== "ExportSpecifier")
|
|
227
|
+
continue;
|
|
228
|
+
const localName = specifier.local.name;
|
|
229
|
+
const exportedNode = specifier.exported;
|
|
230
|
+
const exportedName = exportedNode.type === "Identifier" ? exportedNode.name : exportedNode.value;
|
|
231
|
+
const isDefault = exportedName === "default";
|
|
232
|
+
const candidate = candidates.get(localName);
|
|
233
|
+
if (!candidate)
|
|
234
|
+
continue;
|
|
235
|
+
emit({
|
|
236
|
+
componentId: candidate.componentId,
|
|
237
|
+
exportName: isDefault ? "default" : exportedName,
|
|
238
|
+
isDefault,
|
|
239
|
+
detector: candidate.detector,
|
|
240
|
+
...withLoc(candidate.loc),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
75
246
|
return found;
|
|
76
247
|
}
|
|
248
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
249
|
+
/** Narrow whether an ExportDefaultDeclaration's `.declaration` is a statement-like node */
|
|
250
|
+
function isDeclaration(node) {
|
|
251
|
+
return node.type === "FunctionDeclaration" || node.type === "ClassDeclaration";
|
|
252
|
+
}
|
|
77
253
|
function isPascalCase(name) {
|
|
78
254
|
return /^[A-Z]/.test(name);
|
|
79
255
|
}
|
|
@@ -84,7 +260,9 @@ function returnsJsx(fn) {
|
|
|
84
260
|
const block = fn.body;
|
|
85
261
|
if (!block || block.type !== "BlockStatement")
|
|
86
262
|
return false;
|
|
87
|
-
return block.body.some((stmt) => stmt.type === "ReturnStatement" &&
|
|
263
|
+
return block.body.some((stmt) => stmt.type === "ReturnStatement" &&
|
|
264
|
+
stmt.argument != null &&
|
|
265
|
+
(isJsxNode(stmt.argument) || stmt.argument.type === "CallExpression"));
|
|
88
266
|
}
|
|
89
267
|
function isJsxNode(node) {
|
|
90
268
|
if (node.type === "JSXElement" || node.type === "JSXFragment")
|
|
@@ -95,18 +273,17 @@ function isJsxNode(node) {
|
|
|
95
273
|
return isJsxNode(node.right);
|
|
96
274
|
return false;
|
|
97
275
|
}
|
|
98
|
-
function
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
return false;
|
|
276
|
+
function hasRenderMethod(decl) {
|
|
277
|
+
return decl.body.body.some((m) => (m.type === "ClassMethod" || m.type === "ClassProperty") &&
|
|
278
|
+
m.key.type === "Identifier" &&
|
|
279
|
+
m.key.name === "render");
|
|
280
|
+
}
|
|
281
|
+
function nodeLoc(node, filePath) {
|
|
282
|
+
const s = node.loc?.start;
|
|
283
|
+
return s ? { file: filePath, line: s.line, column: s.column } : undefined;
|
|
284
|
+
}
|
|
285
|
+
function withLoc(loc) {
|
|
286
|
+
return loc !== undefined ? { loc } : {};
|
|
110
287
|
}
|
|
111
288
|
function classifyVariableInit(init) {
|
|
112
289
|
if (init.type === "ArrowFunctionExpression" || init.type === "FunctionExpression")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-react.js","sourceRoot":"","sources":["../../src/local-index/detect-react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3D,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,QAAgB,EAAE,SAAiB;IACvF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;QAChB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,MAAM,EAAE;gBACnB,UAAU,EAAE,QAAQ;gBACpB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;gBACtE,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,OAAgB,EAAE,QAAQ,EAAE,CAAC;IAE5D,QAAQ,CAAC,GAAG,EAAE;QACZ,wBAAwB,CAAC,IAAI;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrG,KAAK,CAAC,IAAI,CAAC;oBACT,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE;oBACtF,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI;oBACxB,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,kBAAkB;iBAC7B,CAAC,CAAC;YACL,CAAC;YACD,IACE,IAAI,CAAC,IAAI,KAAK,kBAAkB;gBAChC,IAAI,CAAC,EAAE;gBACP,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;gBAC1B,iBAAiB,CAAC,IAAI,CAAC,EACvB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE;oBACtF,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI;oBACxB,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,sBAAsB,CAAC,IAAI;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrG,KAAK,CAAC,IAAI,CAAC;oBACT,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE;oBACtF,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI;oBACxB,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,kBAAkB;iBAC7B,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;wBAAE,SAAS;oBAChF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC9C,IAAI,QAAQ,EAAE,CAAC;wBACb,KAAK,CAAC,IAAI,CAAC;4BACT,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE;4BACnF,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI;4BACrB,SAAS,EAAE,KAAK;4BAChB,QAAQ;yBACT,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,EAA4E;IAC9F,IAAI,EAAE,CAAC,IAAI,KAAK,yBAAyB,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC/E,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1G,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAwB;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC;IAClE,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvG,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;YAClC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,CAAC,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAAE,OAAO,aAAa,CAAC;IACxG,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,UAA8B,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;YAAE,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;aACtD,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;YAAE,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxH,IAAI,UAAU,KAAK,YAAY;YAAE,OAAO,mBAAmB,CAAC;QAC5D,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,YAAY,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"detect-react.js","sourceRoot":"","sources":["../../src/local-index/detect-react.ts"],"names":[],"mappings":"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"}
|