@component-compass/parser-react 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/dist/index.js CHANGED
@@ -6,10 +6,12 @@ export const reactPlugin = {
6
6
  return walkJsx({
7
7
  file,
8
8
  source,
9
- index: ctx.index,
9
+ resolveLazyManifest: ctx.resolveLazyManifest,
10
+ lookupByTag: ctx.lookupByTag,
11
+ localIndex: ctx.localIndex,
10
12
  captureValues: ctx.config.captureValues,
11
- packageScopes: ctx.config.packageScopes,
12
13
  repoRoot: ctx.repoRoot,
14
+ ...(ctx.collector !== undefined ? { collector: ctx.collector } : {}),
13
15
  });
14
16
  },
15
17
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;IAC1C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QACrB,OAAO,OAAO,CAAC;YACb,IAAI;YACJ,MAAM;YACN,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;YACvC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;IAC1C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QACrB,OAAO,OAAO,CAAC;YACb,IAAI;YACJ,MAAM;YACN,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;YAC5C,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -1,11 +1,13 @@
1
- import type { ComponentIndex, Occurrence, FileImport, WrapperDef, Warning } from "@component-compass/plugin-core";
1
+ import type { DiagnosticCollector, Occurrence, FileImport, WrapperDef, Warning, LocalDefinitionIndex, LookupByTag, ResolveLazyManifest } from "@component-compass/plugin-core";
2
2
  type WalkOptions = {
3
3
  file: string;
4
4
  source: string;
5
- index: ComponentIndex;
5
+ resolveLazyManifest: ResolveLazyManifest;
6
+ lookupByTag: LookupByTag;
7
+ localIndex: LocalDefinitionIndex;
6
8
  captureValues: boolean;
7
- packageScopes: string[];
8
9
  repoRoot: string;
10
+ collector?: DiagnosticCollector;
9
11
  };
10
12
  export type WalkOutput = {
11
13
  occurrences: Occurrence[];
package/dist/walk-jsx.js CHANGED
@@ -1,15 +1,59 @@
1
1
  import { parse } from "@babel/parser";
2
- import picomatch from "picomatch";
2
+ import { extname, relative, isAbsolute } from "node:path";
3
3
  import { serialiseComponentId, externalPackageOf } from "@component-compass/plugin-core";
4
4
  import { asTagName, asWrapperId } from "@component-compass/plugin-core";
5
- import { traverse, posixPath, classifyImportOrigin } from "@component-compass/ast-utils";
5
+ import { traverse, posixPath, classifyImportOrigin, findEnclosingComponentBinding } from "@component-compass/ast-utils";
6
+ function resolveOwnerComponentId(path, filePath, localIndex, repoRoot) {
7
+ // localIndex.byPath uses repo-root-relative POSIX keys; filePath is absolute.
8
+ const relPath = isAbsolute(filePath) ? posixPath(relative(repoRoot, filePath)) : filePath;
9
+ const defs = localIndex.byPath.get(relPath) ?? [];
10
+ const knownExportNames = new Set(defs.map((d) => d.exportName));
11
+ const binding = findEnclosingComponentBinding(path, (name) => knownExportNames.has(name));
12
+ if (!binding)
13
+ return undefined;
14
+ return {
15
+ kind: "react-component",
16
+ export: binding.name,
17
+ source: { type: "local", filePath: posixPath(filePath) },
18
+ };
19
+ }
20
+ function withOwner(owner) {
21
+ return owner === undefined ? {} : { ownerComponentId: owner };
22
+ }
23
+ // React-API factories whose return value is conventionally a component.
24
+ // Detected by callee identifier name OR `React.<name>` member-expression.
25
+ // Detection is callee-name only — we don't try to verify the factory's
26
+ // return shape.
27
+ const LOCAL_COMPONENT_FACTORIES = new Set(["forwardRef", "memo", "lazy"]);
28
+ /**
29
+ * Walk a JSXMemberExpression chain to its root identifier, returning the
30
+ * flat dotted name (e.g. "Tabs.Trigger.Inner") and the root identifier name.
31
+ * Returns null if the chain bottoms out at anything other than a JSXIdentifier.
32
+ */
33
+ function readMemberChain(node) {
34
+ const parts = [];
35
+ let current = node;
36
+ while (current.type === "JSXMemberExpression") {
37
+ parts.unshift(current.property.name);
38
+ current = current.object;
39
+ }
40
+ if (current.type !== "JSXIdentifier")
41
+ return null;
42
+ parts.unshift(current.name);
43
+ return { compoundName: parts.join("."), rootName: current.name };
44
+ }
6
45
  // `errorRecovery: true` only handles a narrow band of recoverable parse errors;
7
46
  // unrecoverable syntax errors still throw synchronously. Callers must wrap
8
47
  // invocations in try/catch and convert thrown errors into PARSE_FAILURE warnings.
9
48
  export function walkJsx(opts) {
49
+ // `.ts` files cannot contain JSX; enabling the jsx plugin there causes
50
+ // valid TypeScript like `return <const>{...}` to fail to parse.
51
+ const plugins = ["typescript", "decorators-legacy", "classProperties"];
52
+ if (extname(opts.file) !== ".ts")
53
+ plugins.push("jsx");
10
54
  const ast = parse(opts.source, {
11
55
  sourceType: "module",
12
- plugins: ["typescript", "jsx", "decorators-legacy", "classProperties"],
56
+ plugins,
13
57
  errorRecovery: true,
14
58
  });
15
59
  const occurrences = [];
@@ -27,70 +71,117 @@ export function walkJsx(opts) {
27
71
  });
28
72
  }
29
73
  const localBindings = new Map();
30
- // Tracks imports that did NOT match a manifest entry: local → { importedName, specifier }.
31
- // Used in the third pass to opportunistically classify and emit external occurrences.
74
+ // Tracks imports that did NOT match a manifest entry: local → { importedName, specifier, leafPackage }.
75
+ // `leafPackage` is non-null when the lazy resolver landed on a leaf package
76
+ // but had no manifest entry for `importedName` — in that case the third pass
77
+ // attributes the opaque external occurrence to the leaf rather than re-running
78
+ // origin classification on the user-written aggregator specifier.
32
79
  const unmappedImports = new Map();
33
- // First pass: collect imports and resolve to known tags / react-component entries.
80
+ // First pass: collect imports + local Context bindings, resolving imports
81
+ // via the lazy manifest resolver. Both visitors share a single AST walk;
82
+ // wrapper detection (second pass) and JSX emission (third pass) depend on
83
+ // the fully-populated `localBindings` map.
34
84
  traverse(ast, {
85
+ VariableDeclarator(path) {
86
+ // Detect var bindings whose initializer is a known React-API call:
87
+ // - `const X = createContext(...)` / `React.createContext(...)`
88
+ // - `const X = forwardRef(...)` / `memo(...)` / `lazy(...)` (and React.* variants)
89
+ // Scope-agnostic — any binding to a recognised callee gets tracked. The
90
+ // identity downstream uses `source: { type: "local", filePath }`, so two
91
+ // identically-named bindings in different files do not collide.
92
+ if (path.node.init?.type !== "CallExpression")
93
+ return;
94
+ if (path.node.id.type !== "Identifier")
95
+ return;
96
+ const callee = path.node.init.callee;
97
+ const localName = path.node.id.name;
98
+ const isCreateContext = (callee.type === "Identifier" && callee.name === "createContext") ||
99
+ (callee.type === "MemberExpression" &&
100
+ !callee.computed &&
101
+ callee.property.type === "Identifier" &&
102
+ callee.property.name === "createContext");
103
+ if (isCreateContext) {
104
+ localBindings.set(localName, { kind: "local-context", localName });
105
+ return;
106
+ }
107
+ const factoryName = callee.type === "Identifier"
108
+ ? callee.name
109
+ : callee.type === "MemberExpression" &&
110
+ !callee.computed &&
111
+ callee.property.type === "Identifier"
112
+ ? callee.property.name
113
+ : null;
114
+ if (factoryName && LOCAL_COMPONENT_FACTORIES.has(factoryName)) {
115
+ localBindings.set(localName, { kind: "local-component", localName });
116
+ }
117
+ },
35
118
  ImportDeclaration(path) {
36
119
  const source = path.node.source.value;
120
+ if (path.node.specifiers.length === 0) {
121
+ // Side-effect import: `import "pkg"`. Prime the resolver's leaf cache
122
+ // so later HTML / Lit-template tag references find the leaf's CEM
123
+ // even though no JS-side identifier was ever bound. The empty
124
+ // exportName won't match anything in matchInLeaf, but the call still
125
+ // walks into the leaf and populates byTag for tag-only consumers.
126
+ opts.resolveLazyManifest(opts.file, source, "");
127
+ return;
128
+ }
37
129
  for (const spec of path.node.specifiers) {
130
+ if (spec.type === "ImportNamespaceSpecifier") {
131
+ // Namespace imports skip the lazy resolver — there's no specific
132
+ // exportName to resolve until a compound JSX usage picks one out.
133
+ // Record the binding so the compound branch in `resolveOpening` can
134
+ // emit the tail as the export name. `package` is the user-written
135
+ // specifier; aggregator-following for namespace imports would
136
+ // require a separate resolver pass and is deferred.
137
+ const local = spec.local.name;
138
+ localBindings.set(local, {
139
+ kind: "react-namespace",
140
+ package: source,
141
+ specifier: source,
142
+ importName: local,
143
+ });
144
+ imports.push({ file: posixPath(opts.file), imported: local, source, loc: locOf(spec, opts.file) });
145
+ continue;
146
+ }
38
147
  if (spec.type !== "ImportSpecifier" && spec.type !== "ImportDefaultSpecifier")
39
148
  continue;
40
149
  const imported = spec.type === "ImportSpecifier" ? identName(spec.imported) : "default";
41
150
  const local = spec.local.name;
42
- const wrapperKey = `${source}::${imported}`;
43
- const indexed = opts.index.byImport.get(wrapperKey);
44
- if (indexed?.kind === "custom-element") {
151
+ const hit = opts.resolveLazyManifest(opts.file, source, imported);
152
+ if (hit?.matched?.kind === "custom-element") {
45
153
  localBindings.set(local, {
46
154
  kind: "wc-wrapper",
47
- tagName: asTagName(indexed.tagName),
48
- package: externalPackageOf(indexed.source),
155
+ tagName: asTagName(hit.matched.tagName),
156
+ package: hit.leafPackage,
49
157
  specifier: source,
50
158
  importName: imported,
51
- viaHeuristic: false,
52
159
  });
53
160
  }
54
- else if (indexed?.kind === "react-component") {
161
+ else if (hit?.matched?.kind === "react-component") {
55
162
  localBindings.set(local, {
56
163
  kind: "react-direct",
57
- package: externalPackageOf(indexed.source),
58
- export: indexed.export,
164
+ package: hit.leafPackage,
165
+ export: hit.matched.export,
59
166
  specifier: source,
60
167
  importName: imported,
61
168
  });
62
169
  }
170
+ else if (hit) {
171
+ // Resolver landed on a leaf but no manifest match → opaque external bound to leaf.
172
+ unmappedImports.set(local, {
173
+ importedName: imported,
174
+ specifier: source,
175
+ leafPackage: hit.leafPackage,
176
+ });
177
+ }
63
178
  else {
64
- // Heuristic: source matches one of the configured packageScopes (glob patterns),
65
- // and the imported name matches a className in the index. WC-only fallback.
66
- const heuristicTag = heuristicMatch(source, imported, opts.index, opts.packageScopes);
67
- if (heuristicTag) {
68
- const indexedHeur = opts.index.byTag.get(heuristicTag);
69
- if (indexedHeur) {
70
- localBindings.set(local, {
71
- kind: "wc-wrapper",
72
- tagName: heuristicTag,
73
- package: externalPackageOf(indexedHeur.source),
74
- specifier: source,
75
- importName: imported,
76
- viaHeuristic: true,
77
- });
78
- warnings.push({
79
- code: "MISSING_REACT_EXPORT_EXTENSION",
80
- message: `Heuristic match for ${imported} from ${source}; resolved to <${heuristicTag}>. Recommend publishing componentCompass.imports.react in the manifest.`,
81
- file: opts.file,
82
- package: source,
83
- });
84
- }
85
- else {
86
- // Heuristic found a tag but it's not in byTag — treat as unmapped.
87
- unmappedImports.set(local, { importedName: imported, specifier: source });
88
- }
89
- }
90
- else {
91
- // No manifest match, no heuristic match — track for opportunistic classification.
92
- unmappedImports.set(local, { importedName: imported, specifier: source });
93
- }
179
+ // Specifier did not resolve (could be local relative or unresolvable).
180
+ unmappedImports.set(local, {
181
+ importedName: imported,
182
+ specifier: source,
183
+ leafPackage: null,
184
+ });
94
185
  }
95
186
  imports.push({ file: posixPath(opts.file), imported: local, source, loc: locOf(spec, opts.file) });
96
187
  }
@@ -99,130 +190,359 @@ export function walkJsx(opts) {
99
190
  // Second pass: detect wrapper definitions.
100
191
  traverse(ast, {
101
192
  Function(path) {
102
- detectWrapper(path, opts.file, localBindings, opts.index, wrappers);
193
+ detectWrapper(path, opts.file, localBindings, opts.lookupByTag, wrappers);
103
194
  },
104
195
  ClassDeclaration(path) {
105
- detectWrapper(path, opts.file, localBindings, opts.index, wrappers);
196
+ detectWrapper(path, opts.file, localBindings, opts.lookupByTag, wrappers);
106
197
  },
107
198
  });
108
- traverse(ast, {
109
- JSXOpeningElement(path) {
110
- const nameNode = path.node.name;
111
- let resolved;
112
- if (nameNode.type === "JSXIdentifier") {
113
- const id = nameNode.name;
114
- if (/^[a-z]/.test(id) && id.includes("-")) {
115
- const indexed = opts.index.byTag.get(asTagName(id));
116
- if (indexed) {
117
- resolved = { kind: "wc-tag", tagName: asTagName(id), package: externalPackageOf(indexed.source) };
118
- }
199
+ /** Topmost element is the current tracked parent. node is kept for matched
200
+ * pop on exit (depth-first traversal guarantees the topmost stack entry is
201
+ * the current node when its exit handler fires). */
202
+ const parentStack = [];
203
+ function resolveOpening(opening) {
204
+ const nameNode = opening.name;
205
+ const loc = opening.loc?.start;
206
+ if (nameNode.type === "JSXMemberExpression") {
207
+ const chain = readMemberChain(nameNode);
208
+ if (!chain) {
209
+ opts.collector?.emit({
210
+ code: "jsx-shape-unsupported",
211
+ severity: "warning",
212
+ filePath: opts.file,
213
+ ...(loc?.line !== undefined && { line: loc.line }),
214
+ ...(loc?.column !== undefined && { column: loc.column }),
215
+ nameType: "JSXMemberExpression-malformed",
216
+ detail: "member chain did not bottom out at JSXIdentifier",
217
+ });
218
+ return undefined;
219
+ }
220
+ if (/^[a-z]/.test(chain.rootName)) {
221
+ opts.collector?.emit({
222
+ code: "jsx-shape-unsupported",
223
+ severity: "warning",
224
+ filePath: opts.file,
225
+ ...(loc?.line !== undefined && { line: loc.line }),
226
+ ...(loc?.column !== undefined && { column: loc.column }),
227
+ nameType: "JSXMemberExpression-lowercase-root",
228
+ detail: `lowercase root identifier "${chain.rootName}" cannot be a React component`,
229
+ });
230
+ return undefined;
231
+ }
232
+ const bound = localBindings.get(chain.rootName);
233
+ if (bound) {
234
+ // Compound subcomponents always emit as react-component, regardless of
235
+ // whether the root binding is react-direct or wc-wrapper. The WC-wrapper
236
+ // folding rule applies only to bare root usage (<Tabs />), never to
237
+ // compound subcomponents (<Tabs.Trigger />).
238
+ if (bound.kind === "local-context") {
239
+ // `<MyContext.Provider>` / `<MyContext.Consumer>` is access to a
240
+ // member of a React Context object, not a separate component
241
+ // definition. Skip emission so the artifact doesn't gain a spurious
242
+ // `MyContext.Provider` component identity without a real binding site.
243
+ return undefined;
119
244
  }
120
- else {
121
- const bound = localBindings.get(id);
122
- if (bound?.kind === "wc-wrapper") {
123
- resolved = {
124
- kind: "wc-wrapper",
125
- tagName: bound.tagName,
126
- package: bound.package,
127
- specifier: bound.specifier,
128
- importName: bound.importName,
129
- };
130
- }
131
- else if (bound?.kind === "react-direct") {
132
- resolved = {
133
- kind: "react-direct",
134
- package: bound.package,
135
- export: bound.export,
136
- specifier: bound.specifier,
137
- importName: bound.importName,
138
- };
139
- }
140
- else {
141
- // Opportunistic emission: classify unmapped imports and emit for external ones.
142
- const unmapped = unmappedImports.get(id);
143
- if (unmapped) {
144
- const origin = classifyImportOrigin(unmapped.specifier, {
145
- repoRoot: opts.repoRoot,
146
- fromFile: opts.file,
147
- });
148
- if (origin.type === "external") {
149
- const { props, events } = readJsxAttrs(path.node, opts.captureValues);
150
- const loc = locOf(path.node, opts.file);
151
- const occurrence = {
152
- componentId: {
153
- kind: "react-component",
154
- export: unmapped.importedName,
155
- source: { type: "external", package: origin.package },
156
- },
157
- loc,
158
- via: { kind: "direct-import", specifier: unmapped.specifier, import: unmapped.importedName },
159
- props,
160
- events,
161
- };
162
- occurrences.push(occurrence);
245
+ if (bound.kind === "local-component") {
246
+ // Compound usage of a local var-bound component (e.g. forwardRef'd
247
+ // root with static subcomponents attached: `<Button.Header />`).
248
+ // Full compound name preserves the access pattern so subcomponents
249
+ // surface as distinct identities under the same local-source root.
250
+ return { kind: "local-component", export: chain.compoundName };
251
+ }
252
+ if (bound.kind === "react-namespace") {
253
+ // `import * as Foo from "pkg"` — strip the namespace alias and emit
254
+ // the tail as the package's actual export. `via.import` (set in the
255
+ // emission step) preserves the local namespace alias so consumers
256
+ // can still distinguish namespace-style access from named imports.
257
+ const tail = chain.compoundName.slice(chain.rootName.length + 1);
258
+ return {
259
+ kind: "react-direct",
260
+ package: bound.package,
261
+ export: tail,
262
+ specifier: bound.specifier,
263
+ importName: bound.importName,
264
+ };
265
+ }
266
+ return {
267
+ kind: "react-direct",
268
+ package: bound.package,
269
+ export: chain.compoundName,
270
+ specifier: bound.specifier,
271
+ importName: bound.importName,
272
+ };
273
+ }
274
+ // Root unbound. If the root matches an unmapped import, skip the
275
+ // diagnostic the JSX-element opportunistic block will attempt to emit
276
+ // an opaque external (or local-source) occurrence using the unmapped
277
+ // binding. Symmetric with the single-identifier branch which is silent
278
+ // on unmapped misses.
279
+ if (!unmappedImports.has(chain.rootName)) {
280
+ opts.collector?.emit({
281
+ code: "jsx-shape-unsupported",
282
+ severity: "warning",
283
+ filePath: opts.file,
284
+ ...(loc?.line !== undefined && { line: loc.line }),
285
+ ...(loc?.column !== undefined && { column: loc.column }),
286
+ nameType: "JSXMemberExpression-unbound-root",
287
+ detail: `compound JSX with unbound root "${chain.rootName}"`,
288
+ });
289
+ }
290
+ return undefined;
291
+ }
292
+ if (nameNode.type !== "JSXIdentifier") {
293
+ opts.collector?.emit({
294
+ code: "jsx-shape-unsupported",
295
+ severity: "warning",
296
+ filePath: opts.file,
297
+ ...(loc?.line !== undefined && { line: loc.line }),
298
+ ...(loc?.column !== undefined && { column: loc.column }),
299
+ nameType: nameNode.type,
300
+ detail: `unhandled JSX element name type: ${nameNode.type}`,
301
+ });
302
+ return undefined;
303
+ }
304
+ const id = nameNode.name;
305
+ if (/^[a-z]/.test(id) && id.includes("-")) {
306
+ const indexed = opts.lookupByTag(asTagName(id));
307
+ if (indexed) {
308
+ return { kind: "wc-tag", tagName: asTagName(id), package: externalPackageOf(indexed.source) };
309
+ }
310
+ return undefined;
311
+ }
312
+ const bound = localBindings.get(id);
313
+ if (bound?.kind === "wc-wrapper") {
314
+ return {
315
+ kind: "wc-wrapper",
316
+ tagName: bound.tagName,
317
+ package: bound.package,
318
+ specifier: bound.specifier,
319
+ importName: bound.importName,
320
+ };
321
+ }
322
+ if (bound?.kind === "react-direct") {
323
+ return {
324
+ kind: "react-direct",
325
+ package: bound.package,
326
+ export: bound.export,
327
+ specifier: bound.specifier,
328
+ importName: bound.importName,
329
+ };
330
+ }
331
+ if (bound?.kind === "local-component") {
332
+ return { kind: "local-component", export: id };
333
+ }
334
+ return undefined;
335
+ }
336
+ traverse(ast, {
337
+ JSXElement: {
338
+ enter(path) {
339
+ const opening = path.node.openingElement;
340
+ const resolved = resolveOpening(opening);
341
+ let occurrence;
342
+ if (!resolved) {
343
+ // Opportunistic emission for unmapped imports (preserves Phase 1 behaviour).
344
+ const nameNode = opening.name;
345
+ if (nameNode.type === "JSXIdentifier") {
346
+ const id = nameNode.name;
347
+ if (!/^[a-z]/.test(id) || !id.includes("-")) {
348
+ const unmapped = unmappedImports.get(id);
349
+ if (unmapped) {
350
+ if (unmapped.leafPackage) {
351
+ const { props, events } = readJsxAttrs(opening, opts.captureValues);
352
+ occurrence = {
353
+ componentId: {
354
+ kind: "react-component",
355
+ export: unmapped.importedName,
356
+ source: { type: "external", package: unmapped.leafPackage },
357
+ },
358
+ loc: locOf(opening, opts.file),
359
+ via: { kind: "direct-import", specifier: unmapped.specifier, import: unmapped.importedName },
360
+ props,
361
+ events,
362
+ };
363
+ }
364
+ else {
365
+ const origin = classifyImportOrigin(unmapped.specifier, {
366
+ repoRoot: opts.repoRoot,
367
+ fromFile: opts.file,
368
+ });
369
+ if (origin.type === "local") {
370
+ const localDefs = opts.localIndex.byPath.get(origin.filePath);
371
+ const matched = localDefs?.find((d) => unmapped.importedName === "default"
372
+ ? d.isDefault
373
+ : d.exportName === unmapped.importedName && !d.isDefault);
374
+ if (matched && matched.componentId.kind === "react-component") {
375
+ const { props, events } = readJsxAttrs(opening, opts.captureValues);
376
+ occurrence = {
377
+ componentId: matched.componentId,
378
+ loc: locOf(opening, opts.file),
379
+ via: { kind: "direct-import", specifier: unmapped.specifier, import: unmapped.importedName },
380
+ props,
381
+ events,
382
+ };
383
+ }
384
+ }
385
+ }
163
386
  }
164
- else if (origin.type === "local") {
165
- // Look up the local-component definition by repo-relative path,
166
- // then match the imported binding (default vs named) against
167
- // a recorded LocalDefinition. Misses skip silently this avoids
168
- // mis-emitting identities for local utilities, hooks, or
169
- // re-exports that don't have a detector match.
170
- const localDefs = opts.index.local.byPath.get(origin.filePath);
171
- const matched = localDefs?.find((d) => unmapped.importedName === "default"
172
- ? d.isDefault
173
- : d.exportName === unmapped.importedName && !d.isDefault);
174
- if (matched && matched.componentId.kind === "react-component") {
175
- const { props, events } = readJsxAttrs(path.node, opts.captureValues);
176
- const loc = locOf(path.node, opts.file);
177
- const occurrence = {
178
- componentId: matched.componentId,
179
- loc,
387
+ }
388
+ }
389
+ else if (nameNode.type === "JSXMemberExpression") {
390
+ // Compound JSX rooted in an unmapped named import (e.g. Base UI primitives,
391
+ // local workspace packages without a CCM, or aliased imports). Walks the
392
+ // member chain, then mirrors the single-identifier path: leafPackage →
393
+ // opaque external; else classifyImportOrigin → local-source match.
394
+ const chain = readMemberChain(nameNode);
395
+ if (chain && !/^[a-z]/.test(chain.rootName)) {
396
+ const unmapped = unmappedImports.get(chain.rootName);
397
+ if (unmapped) {
398
+ // Tail = the chain after the root identifier ("Root" for
399
+ // <ComboboxPrimitive.Root />, "Foo.Bar" for <Outer.Foo.Bar />).
400
+ const tail = chain.compoundName.slice(chain.rootName.length + 1);
401
+ // Package-side compound name: importedName + tail. For renamed
402
+ // imports (`import { Combobox as ComboboxPrimitive }`), this
403
+ // normalises away the local alias so two consumers using
404
+ // different aliases roll up under the same identity.
405
+ //
406
+ // Default-import roots (`import React from "react"` then
407
+ // `<React.Fragment>`) skip the prefix entirely — `default` is
408
+ // the import-spec sentinel, not a meaningful name component.
409
+ // The compound tail (`Fragment`) IS the package's named
410
+ // export. Treats `<React.Fragment>` and `import { Fragment }`
411
+ // as the same identity.
412
+ const compoundExport = unmapped.importedName === "default"
413
+ ? tail
414
+ : `${unmapped.importedName}.${tail}`;
415
+ if (unmapped.leafPackage) {
416
+ const { props, events } = readJsxAttrs(opening, opts.captureValues);
417
+ occurrence = {
418
+ componentId: {
419
+ kind: "react-component",
420
+ export: compoundExport,
421
+ source: { type: "external", package: unmapped.leafPackage },
422
+ },
423
+ loc: locOf(opening, opts.file),
180
424
  via: { kind: "direct-import", specifier: unmapped.specifier, import: unmapped.importedName },
181
425
  props,
182
426
  events,
183
427
  };
184
- occurrences.push(occurrence);
185
428
  }
186
- // Miss → skip silently.
429
+ else {
430
+ const origin = classifyImportOrigin(unmapped.specifier, {
431
+ repoRoot: opts.repoRoot,
432
+ fromFile: opts.file,
433
+ });
434
+ if (origin.type === "local") {
435
+ const localDefs = opts.localIndex.byPath.get(origin.filePath);
436
+ const matched = localDefs?.find((d) => unmapped.importedName === "default"
437
+ ? d.isDefault
438
+ : d.exportName === unmapped.importedName && !d.isDefault);
439
+ if (matched &&
440
+ matched.componentId.kind === "react-component" &&
441
+ matched.componentId.source.type === "local") {
442
+ const { props, events } = readJsxAttrs(opening, opts.captureValues);
443
+ // Same default-prefix strip as the leafPackage path:
444
+ // a default-exported local accessed as `<Foo.Bar />`
445
+ // emits `Bar`, not `default.Bar`.
446
+ const localCompoundExport = matched.exportName === "default"
447
+ ? tail
448
+ : `${matched.exportName}.${tail}`;
449
+ occurrence = {
450
+ componentId: {
451
+ kind: "react-component",
452
+ export: localCompoundExport,
453
+ source: matched.componentId.source,
454
+ },
455
+ loc: locOf(opening, opts.file),
456
+ via: { kind: "direct-import", specifier: unmapped.specifier, import: unmapped.importedName },
457
+ props,
458
+ events,
459
+ };
460
+ }
461
+ }
462
+ }
187
463
  }
188
- // unresolved → skip silently
189
464
  }
190
465
  }
191
466
  }
192
- }
193
- if (!resolved)
194
- return;
195
- const { props, events } = readJsxAttrs(path.node, opts.captureValues);
196
- const loc = locOf(path.node, opts.file);
197
- let occurrence;
198
- if (resolved.kind === "wc-tag") {
199
- occurrence = {
200
- componentId: { kind: "custom-element", tagName: resolved.tagName, source: { type: "external", package: resolved.package } },
201
- loc,
202
- via: { kind: "html-tag" },
203
- props,
204
- events,
205
- };
206
- }
207
- else if (resolved.kind === "wc-wrapper") {
208
- occurrence = {
209
- componentId: { kind: "custom-element", tagName: resolved.tagName, source: { type: "external", package: resolved.package } },
210
- loc,
211
- via: { kind: "react-wrapper", specifier: resolved.specifier, import: resolved.importName },
212
- props,
213
- events,
214
- };
215
- }
216
- else {
217
- occurrence = {
218
- componentId: { kind: "react-component", export: resolved.export, source: { type: "external", package: resolved.package } },
219
- loc,
220
- via: { kind: "direct-import", specifier: resolved.specifier, import: resolved.importName },
221
- props,
222
- events,
223
- };
224
- }
225
- occurrences.push(occurrence);
467
+ else {
468
+ const { props, events } = readJsxAttrs(opening, opts.captureValues);
469
+ const loc = locOf(opening, opts.file);
470
+ if (resolved.kind === "wc-tag") {
471
+ occurrence = {
472
+ componentId: { kind: "custom-element", tagName: resolved.tagName, source: { type: "external", package: resolved.package } },
473
+ loc,
474
+ via: { kind: "html-tag" },
475
+ props,
476
+ events,
477
+ };
478
+ }
479
+ else if (resolved.kind === "wc-wrapper") {
480
+ occurrence = {
481
+ componentId: { kind: "custom-element", tagName: resolved.tagName, source: { type: "external", package: resolved.package } },
482
+ loc,
483
+ via: { kind: "react-wrapper", specifier: resolved.specifier, import: resolved.importName },
484
+ props,
485
+ events,
486
+ };
487
+ }
488
+ else if (resolved.kind === "local-context") {
489
+ occurrence = {
490
+ componentId: {
491
+ kind: "react-component",
492
+ export: resolved.export,
493
+ source: { type: "local", filePath: posixPath(opts.file) },
494
+ },
495
+ loc,
496
+ via: { kind: "context-provider" },
497
+ props,
498
+ events,
499
+ };
500
+ }
501
+ else if (resolved.kind === "local-component") {
502
+ occurrence = {
503
+ componentId: {
504
+ kind: "react-component",
505
+ export: resolved.export,
506
+ source: { type: "local", filePath: posixPath(opts.file) },
507
+ },
508
+ loc,
509
+ via: { kind: "local-component" },
510
+ props,
511
+ events,
512
+ };
513
+ }
514
+ else {
515
+ occurrence = {
516
+ componentId: { kind: "react-component", export: resolved.export, source: { type: "external", package: resolved.package } },
517
+ loc,
518
+ via: { kind: "direct-import", specifier: resolved.specifier, import: resolved.importName },
519
+ props,
520
+ events,
521
+ };
522
+ }
523
+ }
524
+ if (!occurrence)
525
+ return;
526
+ const parentEntry = parentStack[parentStack.length - 1];
527
+ if (parentEntry && !isInRenderPropScope(path, parentEntry.node)) {
528
+ occurrence.parentRef = parentEntry.idx;
529
+ occurrence.depth = parentStack.length;
530
+ }
531
+ else {
532
+ // Render-prop scope OR no parent: treated as fresh root in this lexical scope.
533
+ occurrence.depth = 0;
534
+ }
535
+ const owner = resolveOwnerComponentId(path, opts.file, opts.localIndex, opts.repoRoot);
536
+ occurrence = { ...occurrence, ...withOwner(owner) };
537
+ const idx = occurrences.length;
538
+ occurrences.push(occurrence);
539
+ parentStack.push({ idx, node: path.node });
540
+ },
541
+ exit(path) {
542
+ const top = parentStack[parentStack.length - 1];
543
+ if (top && top.node === path.node)
544
+ parentStack.pop();
545
+ },
226
546
  },
227
547
  });
228
548
  return { occurrences, wrappers, imports, warnings };
@@ -237,21 +557,6 @@ function locOf(node, file) {
237
557
  function identName(node) {
238
558
  return node.type === "Identifier" ? node.name : node.value;
239
559
  }
240
- function heuristicMatch(source, imported, index, packageScopes) {
241
- const matchesScope = packageScopes.some((pattern) => {
242
- if (!/^[@a-zA-Z*]/.test(pattern))
243
- return false;
244
- return picomatch.isMatch(source, pattern) ||
245
- picomatch.isMatch(source, `${pattern}/**`);
246
- });
247
- if (!matchesScope)
248
- return undefined;
249
- for (const def of index.byTag.values()) {
250
- if (def.className === imported)
251
- return asTagName(def.tagName);
252
- }
253
- return undefined;
254
- }
255
560
  function readJsxAttrs(node, captureValues) {
256
561
  const props = [];
257
562
  const events = [];
@@ -320,7 +625,7 @@ function readJsxAttrs(node, captureValues) {
320
625
  }
321
626
  return { props, events };
322
627
  }
323
- function detectWrapper(path, file, localBindings, index, wrappers) {
628
+ function detectWrapper(path, file, localBindings, lookupByTag, wrappers) {
324
629
  const name = wrapperName(path);
325
630
  if (!name)
326
631
  return;
@@ -338,11 +643,37 @@ function detectWrapper(path, file, localBindings, index, wrappers) {
338
643
  path.traverse({
339
644
  JSXOpeningElement(inner) {
340
645
  const n = inner.node.name;
646
+ if (n.type === "JSXMemberExpression") {
647
+ const chain = readMemberChain(n);
648
+ if (!chain)
649
+ return;
650
+ if (/^[a-z]/.test(chain.rootName))
651
+ return;
652
+ const bound = localBindings.get(chain.rootName);
653
+ if (!bound)
654
+ return;
655
+ // Locally-declared bindings (Context, var-bound components) are not
656
+ // external component deps the wrapper "wraps". Skip.
657
+ if (bound.kind === "local-context" || bound.kind === "local-component")
658
+ return;
659
+ // Namespace imports: tail is the package's actual export — strip the
660
+ // local namespace alias so the wrapper dep records the same export
661
+ // identity downstream consumers see for non-namespace access patterns.
662
+ const exportName = bound.kind === "react-namespace"
663
+ ? chain.compoundName.slice(chain.rootName.length + 1)
664
+ : chain.compoundName;
665
+ addDep({
666
+ kind: "react-component",
667
+ export: exportName,
668
+ source: { type: "external", package: bound.package },
669
+ });
670
+ return;
671
+ }
341
672
  if (n.type !== "JSXIdentifier")
342
673
  return;
343
674
  const id = n.name;
344
675
  if (/^[a-z]/.test(id) && id.includes("-")) {
345
- const indexed = index.byTag.get(asTagName(id));
676
+ const indexed = lookupByTag(asTagName(id));
346
677
  if (indexed) {
347
678
  addDep({
348
679
  kind: "custom-element",
@@ -426,4 +757,34 @@ function wrapperId(name) {
426
757
  const kebab = name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
427
758
  return asWrapperId(`wrap-${kebab}`);
428
759
  }
760
+ /**
761
+ * Render-prop guard: returns true when `path` (a JSXElement) is lexically
762
+ * nested inside a function body or JSXAttribute that lives between it and
763
+ * the topmost tracked parent (`parentNode`). React render-props pass children
764
+ * opaquely through a function (`<DataLoader>{(d) => <Card />}</DataLoader>`,
765
+ * `{items.map(i => <Card />)}`) or through a prop value (`<Modal title={<H/>}>`),
766
+ * so descendants in that scope must NOT inherit the host as their parent.
767
+ *
768
+ * JSXExpressionContainer alone is transparent — `{cond && <Card />}` and
769
+ * `{a ? <X /> : <Y />}` should keep lexical-parent attribution per
770
+ * §Failure modes' "conditional rendering visible" rule. The function/attribute
771
+ * boundary is what differentiates render-prop from a bare expression escape.
772
+ *
773
+ * (Vue scoped slots are lexical and handled differently in parser-vue.)
774
+ */
775
+ function isInRenderPropScope(path, parentNode) {
776
+ if (!parentNode)
777
+ return false;
778
+ let p = path.parentPath;
779
+ while (p && p.node !== parentNode) {
780
+ if (p.isArrowFunctionExpression() ||
781
+ p.isFunctionExpression() ||
782
+ p.isFunctionDeclaration() ||
783
+ p.isJSXAttribute()) {
784
+ return true;
785
+ }
786
+ p = p.parentPath;
787
+ }
788
+ return false;
789
+ }
429
790
  //# sourceMappingURL=walk-jsx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"walk-jsx.js","sourceRoot":"","sources":["../src/walk-jsx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"walk-jsx.js","sourceRoot":"","sources":["../src/walk-jsx.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@component-compass/parser-react",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Consumer-scan parser for React JSX. Detects component usages in .tsx and .jsx files.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,14 +29,12 @@
29
29
  "dependencies": {
30
30
  "@babel/parser": "^7.29.0",
31
31
  "@babel/types": "^7.29.0",
32
- "@component-compass/ast-utils": "^0.0.1",
33
- "@component-compass/plugin-core": "^0.0.1",
34
- "picomatch": "^4.0.4"
32
+ "@component-compass/ast-utils": "^0.0.3",
33
+ "@component-compass/plugin-core": "^0.0.3"
35
34
  },
36
35
  "devDependencies": {
37
36
  "@types/babel__traverse": "^7.28.0",
38
37
  "@types/node": "^24.0.0",
39
- "@types/picomatch": "^4.0.3",
40
38
  "typescript": "^5.9.0",
41
39
  "vitest": "^4.0.0"
42
40
  },