gitnexus 1.6.4-rc.25 → 1.6.4-rc.27

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.
@@ -541,11 +541,59 @@ function deriveSimpleName(def) {
541
541
  return dot === -1 ? q : q.slice(dot + 1);
542
542
  }
543
543
  function findExportByName(defs, name) {
544
+ // GENERIC RULE (applies to every language using this finalize
545
+ // algorithm): when MULTIPLE `SymbolDefinition`s share the same simple
546
+ // name in `localDefs`, prefer callable / type-like defs over plain
547
+ // value defs (`Variable`, `Property`, …). The CALLER side of an
548
+ // import almost always wants the callable, not a value shadow that
549
+ // happens to share the name — and without a deterministic
550
+ // preference, capture order silently decides which def the import
551
+ // binds to.
552
+ //
553
+ // The single-def case is unchanged: when only one def has the name,
554
+ // it's returned regardless of its type (the `fallback` path below).
555
+ //
556
+ // TypeScript is the first known language where this matters in
557
+ // practice: `const fn = () => {}` emits BOTH a `Function` def (from
558
+ // `@declaration.function` on the inner arrow) AND a `Variable` def
559
+ // (from the generic `@declaration.variable` pattern matching the
560
+ // wrapping `lexical_declaration`), and consumers of `import { fn }`
561
+ // need to bind to the callable. Other migrated languages don't
562
+ // currently produce dual emits of this shape, so the rule is a no-op
563
+ // for them today; future languages get the same correctness
564
+ // guarantee for free if they ever do.
565
+ //
566
+ // See `gitnexus/test/integration/resolvers/typescript-hof-callbacks.test.ts`
567
+ // for the cross-file regression this rule prevents.
568
+ let fallback;
544
569
  for (const d of defs) {
545
- if (deriveSimpleName(d) === name)
570
+ if (deriveSimpleName(d) !== name)
571
+ continue;
572
+ if (isCallableOrTypeLike(d.type))
546
573
  return d;
574
+ if (fallback === undefined)
575
+ fallback = d;
547
576
  }
548
- return undefined;
577
+ return fallback;
578
+ }
579
+ const CALLABLE_OR_TYPE_LIKE = new Set([
580
+ 'Function',
581
+ 'Method',
582
+ 'Constructor',
583
+ 'Class',
584
+ 'Interface',
585
+ 'Enum',
586
+ 'Struct',
587
+ 'Record',
588
+ 'Trait',
589
+ 'Namespace',
590
+ 'Module',
591
+ 'TypeAlias',
592
+ 'Type',
593
+ 'Typedef',
594
+ ]);
595
+ function isCallableOrTypeLike(type) {
596
+ return CALLABLE_OR_TYPE_LIKE.has(type);
549
597
  }
550
598
  function countEdgesWithin(edgeIndex, files) {
551
599
  let n = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"finalize-algorithm.js","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finalize-algorithm.js","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,36 @@ import path from 'node:path';
3
3
  import { createHash } from 'node:crypto';
4
4
  import lbug from '@ladybugdb/core';
5
5
  import { BRIDGE_SCHEMA_QUERIES, BRIDGE_SCHEMA_VERSION } from './bridge-schema.js';
6
+ import { closeLbugConnection, openLbugConnection, } from '../lbug/lbug-config.js';
6
7
  import { dedupeContracts, dedupeCrossLinks } from './normalization.js';
8
+ /**
9
+ * Sidecar files that LadybugDB creates next to a `bridge.lbug` file.
10
+ *
11
+ * - `.wal` — write-ahead log; persists across opens but must be associated
12
+ * with the same database instance (LadybugDB 0.16.0 enforces this via a
13
+ * database-id check and rejects opens with the diagnostic
14
+ * `"Database ID for temporary file 'X.wal' does not match the current
15
+ * database. This file may have been left behind from a previous database
16
+ * with the same name"`).
17
+ * - `.shadow` — non-blocking concurrent checkpoint sidecar (added in
18
+ * LadybugDB 0.15.4); same pairing constraint as `.wal`.
19
+ *
20
+ * `bridge-db` writes to a `bridge.lbug.tmp` file and then atomically renames
21
+ * it into place. The rename only moves the main file; sidecars must be
22
+ * cleaned up explicitly or the next writer trips the database-id check.
23
+ */
24
+ const LBUG_SIDECAR_SUFFIXES = ['.wal', '.shadow'];
25
+ async function removeLbugFile(basePath) {
26
+ const candidates = [basePath, ...LBUG_SIDECAR_SUFFIXES.map((s) => `${basePath}${s}`)];
27
+ for (const f of candidates) {
28
+ try {
29
+ await fsp.rm(f, { recursive: true, force: true });
30
+ }
31
+ catch {
32
+ /* best-effort: caller will surface real errors via the open path */
33
+ }
34
+ }
35
+ }
7
36
  export function contractNodeId(repo, contractId, role, filePath) {
8
37
  return createHash('sha256').update(`${repo}\0${contractId}\0${role}\0${filePath}`).digest('hex');
9
38
  }
@@ -74,8 +103,7 @@ export function findContractNode(index, repo, role, symbolUid, filePath, symbolN
74
103
  export async function openBridgeDb(dbPath) {
75
104
  const parentDir = path.dirname(dbPath);
76
105
  await fsp.mkdir(parentDir, { recursive: true });
77
- const db = new lbug.Database(dbPath, 0, false, false); // writable
78
- const conn = new lbug.Connection(db);
106
+ const { db, conn } = await openLbugConnection(lbug, dbPath);
79
107
  return { _db: db, _conn: conn, groupDir: parentDir };
80
108
  }
81
109
  /**
@@ -135,6 +163,18 @@ function unwrapQueryResult(queryResult) {
135
163
  return queryResult;
136
164
  }
137
165
  export async function closeBridgeDb(handle) {
166
+ // CHECKPOINT before close so the WAL/.shadow contents are flushed into
167
+ // the main database file. Without this, LadybugDB 0.16.0's non-blocking
168
+ // checkpoint thread can outlive the close call and leave sidecar pages
169
+ // pending on disk, which makes a subsequent read-side open either race
170
+ // with the WAL replay or trip the database-id check on the sidecars.
171
+ // CHECKPOINT is a no-op when there's nothing pending, so it's cheap.
172
+ try {
173
+ await handle._conn.query('CHECKPOINT');
174
+ }
175
+ catch {
176
+ /* ignore — older LadybugDB or schemaless DB may not accept it */
177
+ }
138
178
  try {
139
179
  await handle._conn.close();
140
180
  }
@@ -221,13 +261,11 @@ export async function writeBridge(groupDir, input) {
221
261
  report.sampleErrors.push({ kind, id, message: errMessage(err) });
222
262
  }
223
263
  };
224
- // Clean up any leftover tmp
225
- try {
226
- await fsp.rm(tmpPath, { recursive: true, force: true });
227
- }
228
- catch {
229
- /* ignore */
230
- }
264
+ // Clean up any leftover tmp main file AND its `.wal` / `.shadow` sidecars.
265
+ // LadybugDB 0.16.0 rejects opening a database whose sidecars belong to a
266
+ // different database instance (database-id check), so any stale sidecar
267
+ // from a crashed previous run will fail the next writeBridge.
268
+ await removeLbugFile(tmpPath);
231
269
  // 1. Create temp DB, insert all data.
232
270
  //
233
271
  // Everything after `openBridgeDb` must run inside a try/finally so that
@@ -368,20 +406,46 @@ export async function writeBridge(groupDir, input) {
368
406
  }
369
407
  }
370
408
  // 3. Atomic swap: old→.bak, tmp→final, rm .bak
409
+ //
410
+ // The current database file (with its `.wal` / `.shadow` sidecars) is
411
+ // moved aside, then the freshly built tmp database takes its place.
412
+ // We move the sidecars together with the main file so the open below
413
+ // and any external readers see a consistent set; orphan sidecars from
414
+ // the tmp namespace are then removed because LadybugDB looks for them
415
+ // under the renamed-to base name and would reject mismatching IDs.
371
416
  try {
372
417
  await fsp.access(finalPath);
373
418
  await retryRename(finalPath, bakPath);
419
+ for (const suffix of LBUG_SIDECAR_SUFFIXES) {
420
+ try {
421
+ await fsp.access(`${finalPath}${suffix}`);
422
+ await retryRename(`${finalPath}${suffix}`, `${bakPath}${suffix}`);
423
+ }
424
+ catch {
425
+ /* sidecar absent — nothing to move */
426
+ }
427
+ }
374
428
  }
375
429
  catch {
376
430
  /* no existing db */
377
431
  }
378
432
  await retryRename(tmpPath, finalPath);
379
- try {
380
- await fsp.rm(bakPath, { recursive: true, force: true });
381
- }
382
- catch {
383
- /* ignore */
433
+ for (const suffix of LBUG_SIDECAR_SUFFIXES) {
434
+ // Rename not delete so the WAL (which may carry uncommitted-at-
435
+ // close-time pages on a graceful close, depending on
436
+ // `autoCheckpoint` / `checkpointThreshold`) and the `.shadow`
437
+ // checkpoint snapshot stay paired with the database file under its
438
+ // final name. LadybugDB 0.16.0's database-id check rejects an open
439
+ // when the sidecars belong to a different base name.
440
+ try {
441
+ await fsp.access(`${tmpPath}${suffix}`);
442
+ await retryRename(`${tmpPath}${suffix}`, `${finalPath}${suffix}`);
443
+ }
444
+ catch {
445
+ /* sidecar absent — nothing to move */
446
+ }
384
447
  }
448
+ await removeLbugFile(bakPath);
385
449
  // 4. Write meta.json
386
450
  await writeBridgeMeta(groupDir, {
387
451
  version: BRIDGE_SCHEMA_VERSION,
@@ -393,10 +457,35 @@ export async function writeBridge(groupDir, input) {
393
457
  /* ------------------------------------------------------------------ */
394
458
  /* openBridgeDbReadOnly */
395
459
  /* ------------------------------------------------------------------ */
396
- export async function openBridgeDbReadOnly(groupDir) {
460
+ /**
461
+ * Substrings observed in the message of an `Error` raised by the LadybugDB
462
+ * native open path when Windows still holds an exclusive lock on the file
463
+ * after a writer's `Database.close()` returned. LadybugDB 0.16.0's
464
+ * non-blocking checkpoint thread can briefly outlive the close call, so a
465
+ * read-side opener that races in immediately afterwards sees Win32 error
466
+ * 33 ("The process cannot access the file because another process has
467
+ * locked a portion of the file"). Retrying with a small back-off lets the
468
+ * background thread settle and the OS release the handle.
469
+ */
470
+ const LBUG_OPEN_RETRY_PATTERNS = [
471
+ 'process cannot access the file',
472
+ 'another process has locked',
473
+ 'could not set lock',
474
+ 'lock held by another process',
475
+ ];
476
+ const LBUG_OPEN_RETRY_ATTEMPTS = 10;
477
+ const LBUG_OPEN_RETRY_BASE_MS = 100;
478
+ /** Cap individual back-off delays so the total wait is bounded (~3s). */
479
+ const LBUG_OPEN_RETRY_MAX_MS = 500;
480
+ function isTransientLockError(err) {
481
+ const msg = (err instanceof Error ? err.message : String(err)).toLowerCase();
482
+ return LBUG_OPEN_RETRY_PATTERNS.some((p) => msg.includes(p));
483
+ }
484
+ async function ensureBridgeDbFileAvailable(groupDir) {
397
485
  const dbPath = path.join(groupDir, 'bridge.lbug');
398
486
  try {
399
487
  await fsp.access(dbPath);
488
+ return true;
400
489
  }
401
490
  catch {
402
491
  // Check for .bak recovery. Use `retryRename` (not `fsp.rename`) for the
@@ -408,53 +497,68 @@ export async function openBridgeDbReadOnly(groupDir) {
408
497
  try {
409
498
  await fsp.access(bakPath);
410
499
  await retryRename(bakPath, dbPath);
500
+ for (const suffix of LBUG_SIDECAR_SUFFIXES) {
501
+ try {
502
+ await fsp.access(`${bakPath}${suffix}`);
503
+ await retryRename(`${bakPath}${suffix}`, `${dbPath}${suffix}`);
504
+ }
505
+ catch {
506
+ /* sidecar absent */
507
+ }
508
+ }
509
+ return true;
411
510
  }
412
511
  catch {
413
- return null;
512
+ return false;
414
513
  }
415
514
  }
515
+ }
516
+ export async function openBridgeDbReadOnly(groupDir) {
517
+ const dbPath = path.join(groupDir, 'bridge.lbug');
518
+ if (!(await ensureBridgeDbFileAvailable(groupDir)))
519
+ return null;
416
520
  // Version gate: check meta.json version compatibility
417
521
  const meta = await readBridgeMeta(groupDir);
418
522
  if (meta.version > 0 && meta.version !== BRIDGE_SCHEMA_VERSION) {
419
523
  return null; // incompatible schema version — fallback to JSON or re-sync
420
524
  }
421
- // Open the native handle. If Connection construction throws AFTER
422
- // Database was successfully allocated, we'd leak the native Database
423
- // object. Wrap each step separately and tear down the partial handle.
424
- let db;
425
- let conn;
426
- try {
427
- db = new lbug.Database(dbPath, 0, false, true); // readOnly
428
- conn = new lbug.Connection(db);
429
- return { _db: db, _conn: conn, groupDir };
430
- }
431
- catch {
432
- if (conn) {
433
- try {
434
- await conn.close();
435
- }
436
- catch {
437
- /* ignore */
438
- }
525
+ // Open the native handle with a bounded retry on transient OS-level file
526
+ // locks (see LBUG_OPEN_RETRY_PATTERNS). If Connection construction throws
527
+ // AFTER Database was successfully allocated, we'd leak the native Database
528
+ // object — wrap each step separately and tear down the partial handle.
529
+ let lastErr;
530
+ for (let attempt = 1; attempt <= LBUG_OPEN_RETRY_ATTEMPTS; attempt++) {
531
+ let handle;
532
+ try {
533
+ handle = await openLbugConnection(lbug, dbPath, { readOnly: true });
534
+ // Force the lazy native init now so a transient lock surfaces here
535
+ // (where we can retry) instead of on the first user query.
536
+ await handle.db.init();
537
+ await handle.conn.init();
538
+ return { _db: handle.db, _conn: handle.conn, groupDir };
439
539
  }
440
- if (db) {
441
- try {
442
- await db.close();
443
- }
444
- catch {
445
- /* ignore */
446
- }
540
+ catch (err) {
541
+ lastErr = err;
542
+ if (handle)
543
+ await closeLbugConnection(handle);
544
+ if (!isTransientLockError(err) || attempt === LBUG_OPEN_RETRY_ATTEMPTS)
545
+ break;
546
+ const delay = Math.min(LBUG_OPEN_RETRY_BASE_MS * attempt, LBUG_OPEN_RETRY_MAX_MS);
547
+ await new Promise((r) => setTimeout(r, delay));
447
548
  }
448
- return null;
449
549
  }
550
+ if (process.env.GITNEXUS_DEBUG_BRIDGE) {
551
+ console.warn(`[bridge-db] openBridgeDbReadOnly(${groupDir}) gave up after ` +
552
+ `${LBUG_OPEN_RETRY_ATTEMPTS} attempts: ${lastErr instanceof Error ? lastErr.message : String(lastErr)}`);
553
+ }
554
+ return null;
450
555
  }
451
556
  /* ------------------------------------------------------------------ */
452
557
  /* bridgeExists */
453
558
  /* ------------------------------------------------------------------ */
454
559
  export async function bridgeExists(groupDir) {
455
- const handle = await openBridgeDbReadOnly(groupDir);
456
- if (!handle)
560
+ if (!(await ensureBridgeDbFileAvailable(groupDir)))
457
561
  return false;
458
- await closeBridgeDb(handle);
459
- return true;
562
+ const meta = await readBridgeMeta(groupDir);
563
+ return meta.version === 0 || meta.version === BRIDGE_SCHEMA_VERSION;
460
564
  }
@@ -73,6 +73,11 @@ function pickFirstDefined(grouped, tags) {
73
73
  * as `@reference.write.member`).
74
74
  * 4. The member_expression is the `function:` of an `await_expression`
75
75
  * being called (handled by the member-call capture).
76
+ * 5. The member_expression is the `name:` of a `jsx_self_closing_element`
77
+ * or `jsx_opening_element` (it's a JSX component invocation, already
78
+ * captured as `@reference.call.member` by the TSX-only query suffix).
79
+ * Without this filter, `<Foo.Bar />` would emit a phantom ACCESSES
80
+ * edge to `Foo.Bar` IN ADDITION to the CALLS edge.
76
81
  *
77
82
  * Returns `true` when the capture should be kept as a read reference,
78
83
  * `false` when it should be dropped.
@@ -89,6 +94,9 @@ function shouldEmitReadMember(memberNode) {
89
94
  case 'assignment_expression':
90
95
  case 'augmented_assignment_expression':
91
96
  return parent.childForFieldName('left')?.id !== memberNode.id;
97
+ case 'jsx_self_closing_element':
98
+ case 'jsx_opening_element':
99
+ return parent.childForFieldName('name')?.id !== memberNode.id;
92
100
  default:
93
101
  return true;
94
102
  }
@@ -201,6 +209,20 @@ export function emitTsScopeCaptures(sourceText, filePath, cachedTree) {
201
209
  // arity filter can narrow overloads. Count the `argument` named
202
210
  // children of the backing `arguments` node. TypeScript constructor
203
211
  // calls use `new_expression`; regular calls use `call_expression`.
212
+ //
213
+ // JSX call anchors (`jsx_self_closing_element` / `jsx_opening_element`
214
+ // captured by the TSX-only suffix in `query.ts`) intentionally do
215
+ // NOT carry arity metadata. The lookup below would resolve `callNode`
216
+ // to `null` for a JSX anchor (the anchor is neither a call_expression
217
+ // nor a new_expression), so the synthesis branch silently no-ops and
218
+ // the JSX call enters the registry with name-only resolution. This
219
+ // is acceptable for React: components are virtually never
220
+ // overloaded in the current GitNexus graph model, so name-only
221
+ // dispatch matches the single component definition. If a future
222
+ // codebase introduces overloaded React components AND needs JSX
223
+ // calls to disambiguate by props-arity, a JSX-aware arity
224
+ // synthesizer would need to count `jsx_attribute` children of the
225
+ // opening tag instead of `arguments`.
204
226
  const callAnchor = pickFirstDefined(grouped, CALL_TAGS);
205
227
  if (callAnchor !== undefined && grouped['@reference.arity'] === undefined) {
206
228
  const callNode = findNodeAtRange(tree.rootNode, callAnchor.range, 'call_expression') ??
@@ -62,6 +62,13 @@ export declare function getTsParser(filePath?: string): Parser;
62
62
  * executed against a Tree produced by the `tsx` grammar — tree-sitter
63
63
  * matches by node-type id, and the two grammars have separate id
64
64
  * spaces.
65
+ *
66
+ * The TSX query is compiled with the JSX-as-call patterns appended.
67
+ * Those patterns reference `jsx_self_closing_element` /
68
+ * `jsx_opening_element` which exist only in the TSX grammar — embedding
69
+ * them in the plain TS query would throw `Query.InvalidNodeType` at
70
+ * compile time (and even if it didn't, the patterns would never fire on
71
+ * `.ts` source).
65
72
  */
66
73
  export declare function getTsScopeQuery(filePath?: string): Parser.Query;
67
74
  /**
@@ -132,25 +132,83 @@ const TYPESCRIPT_SCOPE_QUERY = `
132
132
  ;; Arrow/function-expression assigned to a const/let/var — named by the
133
133
  ;; variable_declarator. Covers \`const fn = () => {}\` and its export
134
134
  ;; variant. Matches the legacy TYPESCRIPT_QUERIES pattern.
135
+ ;;
136
+ ;; The \`@declaration.function\` anchor sits on the INNER arrow_function /
137
+ ;; function_expression node (NOT the wrapping lexical_declaration), so
138
+ ;; \`anchor.range\` aligns with the corresponding \`@scope.function\` scope
139
+ ;; range. \`pass2AttachDeclarations\` then resolves \`innermost\` to the
140
+ ;; arrow's own scope (instead of the module scope) and the def is owned
141
+ ;; by the arrow itself. Without this alignment, calls inside the arrow
142
+ ;; body lose caller attribution: \`resolveCallerGraphId\` walks up past
143
+ ;; the empty arrow scope into the module scope and grabs whichever
144
+ ;; Function-like def appears first there — silently mis-attributing
145
+ ;; every nested call (Zustand stores, TanStack hooks, Promise-all/map,
146
+ ;; etc.). See \`typescript-hof-callbacks.test.ts\`.
135
147
  (lexical_declaration
136
148
  (variable_declarator
137
149
  name: (identifier) @declaration.name
138
- value: (arrow_function))) @declaration.function
150
+ value: (arrow_function) @declaration.function))
139
151
 
140
152
  (lexical_declaration
141
153
  (variable_declarator
142
154
  name: (identifier) @declaration.name
143
- value: (function_expression))) @declaration.function
155
+ value: (function_expression) @declaration.function))
144
156
 
145
157
  (variable_declaration
146
158
  (variable_declarator
147
159
  name: (identifier) @declaration.name
148
- value: (arrow_function))) @declaration.function
160
+ value: (arrow_function) @declaration.function))
149
161
 
150
162
  (variable_declaration
151
163
  (variable_declarator
152
164
  name: (identifier) @declaration.name
153
- value: (function_expression))) @declaration.function
165
+ value: (function_expression) @declaration.function))
166
+
167
+ ;; Object-property arrows / function expressions named by their pair key:
168
+ ;; \`{ addItem: (item) => ..., removeItem: (item) => ... }\`. The legacy
169
+ ;; TYPESCRIPT_QUERIES emits the same shape; mirroring it here keeps
170
+ ;; scope-resolution declarations in sync (issue #1166). Computed keys
171
+ ;; (\`[K]: () => ...\`) intentionally fall through anonymous.
172
+ ;;
173
+ ;; Same anchor discipline as the \`lexical_declaration\` block above: the
174
+ ;; \`@declaration.function\` capture must sit on the INNER \`arrow_function\`
175
+ ;; / \`function_expression\` node — NOT the outer \`pair\`. The pair node
176
+ ;; starts at the property-key token, BEFORE the arrow's
177
+ ;; \`@scope.function\` range. \`pass2AttachDeclarations.atPosition(pair.startLine,
178
+ ;; pair.startCol)\` therefore resolves to the PARENT scope (the enclosing
179
+ ;; function-like, e.g. the \`(set) => ({...})\` callback in
180
+ ;; \`persist((set) => ({...}))\`), not the inner arrow's own scope.
181
+ ;;
182
+ ;; With the anchor on \`pair\`, ALL pair-function defs from the same object
183
+ ;; literal land in the same parent scope's \`ownedDefs\`. \`resolveCallerGraphId\`
184
+ ;; walking up from a call inside any of those arrows then matches the
185
+ ;; FIRST Function-like def via \`ownedDefs.find()\` — silently mis-attributing
186
+ ;; every call to the first sibling. Multi-action Zustand stores
187
+ ;; (\`{ addItem, removeItem, fetchData, … }\`) — the dominant 0%-capture
188
+ ;; pattern in the bug report — would land all calls on \`addItem\`.
189
+ ;;
190
+ ;; With the anchor on the inner \`arrow_function\` / \`function_expression\`,
191
+ ;; \`anchor.range\` matches the arrow's own \`@scope.function\` range; the
192
+ ;; def lands in the arrow scope's own \`ownedDefs\` and \`pass2AttachDeclarations\`'s
193
+ ;; auto-hoist (\`rangesEqual(anchor.range, innermost.range)\`) promotes
194
+ ;; the BINDING to the parent scope (so importers and lookups still find
195
+ ;; the name in the object's surrounding scope). Each pair-arrow becomes
196
+ ;; an independent caller anchor in the walk.
197
+ (pair
198
+ key: (property_identifier) @declaration.name
199
+ value: (arrow_function) @declaration.function)
200
+
201
+ (pair
202
+ key: (property_identifier) @declaration.name
203
+ value: (function_expression) @declaration.function)
204
+
205
+ (pair
206
+ key: (string (string_fragment) @declaration.name)
207
+ value: (arrow_function) @declaration.function)
208
+
209
+ (pair
210
+ key: (string (string_fragment) @declaration.name)
211
+ value: (function_expression) @declaration.function)
154
212
 
155
213
  ;; Method definitions — regular + private (#field) methods.
156
214
  (method_definition
@@ -718,6 +776,52 @@ const TYPESCRIPT_SCOPE_QUERY = `
718
776
  object: (_) @reference.receiver
719
777
  property: (property_identifier) @reference.name) @reference.read.member
720
778
  `;
779
+ /**
780
+ * JSX-only query suffix. Appended to the base query when compiling
781
+ * against the TSX grammar; NOT compiled against the plain TS grammar
782
+ * (which has no \`jsx_*\` node types and would reject these patterns).
783
+ *
784
+ * Why JSX as a CALLS edge: \`<Foo />\` is syntactic sugar for \`Foo(props)\`
785
+ * and the React component is invoked by the renderer, so for blast-radius
786
+ * (\`gitnexus_impact("Badge", direction: "upstream")\`) and call-graph
787
+ * (\`gitnexus_context("Foo")\`) purposes JSX usage IS a call. Routing
788
+ * through \`@reference.call.free\` / \`@reference.call.member\` makes the
789
+ * downstream caller-walk + edge-emission paths handle JSX uniformly with
790
+ * ordinary call expressions — no new edge type, no schema changes.
791
+ *
792
+ * Identifier-only JSX is filtered to PascalCase via \`(#match? ... "^[A-Z]")\`
793
+ * so \`<div>\`, \`<span>\`, \`<button>\` and other native HTML elements (which
794
+ * by JSX convention start lowercase) don't emit edges to nonexistent
795
+ * "div" / "span" symbols. Member-form JSX (\`<Foo.Bar />\`) is always a
796
+ * component (HTML element names can't contain dots), so no predicate
797
+ * filter is applied there.
798
+ *
799
+ * Both \`jsx_self_closing_element\` (\`<Foo />\`) and \`jsx_opening_element\`
800
+ * (\`<Foo>...</Foo>\`) emit; the closing tag is intentionally NOT captured —
801
+ * each JSX element should emit exactly one CALLS edge per use site.
802
+ */
803
+ const TSX_JSX_QUERY_SUFFIX = `
804
+ ;; <Foo />
805
+ ((jsx_self_closing_element
806
+ name: (identifier) @reference.name) @reference.call.free
807
+ (#match? @reference.name "^[A-Z]"))
808
+
809
+ ;; <Foo> ... </Foo> (paired form — match the opening tag only)
810
+ ((jsx_opening_element
811
+ name: (identifier) @reference.name) @reference.call.free
812
+ (#match? @reference.name "^[A-Z]"))
813
+
814
+ ;; <Foo.Bar /> / <Container.Section.Title /> — namespaced JSX
815
+ (jsx_self_closing_element
816
+ name: (member_expression
817
+ object: (_) @reference.receiver
818
+ property: (property_identifier) @reference.name)) @reference.call.member
819
+
820
+ (jsx_opening_element
821
+ name: (member_expression
822
+ object: (_) @reference.receiver
823
+ property: (property_identifier) @reference.name)) @reference.call.member
824
+ `;
721
825
  let _tsParser = null;
722
826
  let _tsxParser = null;
723
827
  let _tsQuery = null;
@@ -746,11 +850,18 @@ export function getTsParser(filePath) {
746
850
  * executed against a Tree produced by the `tsx` grammar — tree-sitter
747
851
  * matches by node-type id, and the two grammars have separate id
748
852
  * spaces.
853
+ *
854
+ * The TSX query is compiled with the JSX-as-call patterns appended.
855
+ * Those patterns reference `jsx_self_closing_element` /
856
+ * `jsx_opening_element` which exist only in the TSX grammar — embedding
857
+ * them in the plain TS query would throw `Query.InvalidNodeType` at
858
+ * compile time (and even if it didn't, the patterns would never fire on
859
+ * `.ts` source).
749
860
  */
750
861
  export function getTsScopeQuery(filePath) {
751
862
  if (filePath !== undefined && isTsxFile(filePath)) {
752
863
  if (_tsxQuery === null) {
753
- _tsxQuery = new Parser.Query(TSX_GRAMMAR, TYPESCRIPT_SCOPE_QUERY);
864
+ _tsxQuery = new Parser.Query(TSX_GRAMMAR, TYPESCRIPT_SCOPE_QUERY + TSX_JSX_QUERY_SUFFIX);
754
865
  }
755
866
  return _tsxQuery;
756
867
  }