perf: O(1) builtin lookups + SCIP resolvedBy type #31
+41
−23
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Setobjects (jsBuiltIns,reactHooks,pythonBuiltIns) for O(1) built-in/external reference filtering, replacing inline array.includes()checks inisBuiltInOrExternal()isPathWithinRootvalidation infileExistsandreadFileresolution context methods to prevent path traversal'scip'to theresolvedByunion type in preparation for SCIP import supportDetails
The builtin sets are defined at module scope so they're allocated once. Previously,
isBuiltInOrExternalused local arrays with.includes()on every call — O(n) per lookup. WithSet.has(), each lookup is O(1).The
isPathWithinRootguard uses the existing utility fromsrc/utils.tsto block path traversal attempts in the resolution context'sfileExistsandreadFilemethods, matching the security pattern already used elsewhere in the codebase.The
'scip'addition toresolvedByis a type-only change that extends the union to support SCIP-based resolution results.Test plan
npm run buildcompiles without errorsnpm testpasses with same baseline (28 pre-existing failures, 326 passing)src/resolution/index.ts,src/resolution/types.tscaptureException) preserved — 3 call sites in resolution/index.ts