* Run each framework resolver's cross-file finalization pass and persist * the returned node updates. Idempotent — safe to call after every indexAll * and every incremental sync. Returns the number of nodes updated. * * Caches are cleared before/after so the post-extract pass sees fresh
()
| 320 | * state and downstream queries see the updated names. |
| 321 | */ |
| 322 | runPostExtract(): number { |
| 323 | let updated = 0; |
| 324 | this.clearCaches(); |
| 325 | for (const fw of this.frameworks) { |
| 326 | if (!fw.postExtract) continue; |
| 327 | try { |
| 328 | const nodes = fw.postExtract(this.context); |
| 329 | for (const node of nodes) { |
| 330 | this.queries.updateNode(node); |
| 331 | updated++; |
| 332 | } |
| 333 | } catch (err) { |
| 334 | logDebug(`Framework '${fw.name}' postExtract failed`, { |
| 335 | error: err instanceof Error ? err.message : String(err), |
| 336 | }); |
| 337 | } |
| 338 | } |
| 339 | if (updated > 0) this.clearCaches(); |
| 340 | return updated; |
| 341 | } |
| 342 | |
| 343 | /** |
| 344 | * Pre-build lightweight caches for resolution. |
no test coverage detected