* fix(javascript): keep strict module checks unproven when alias walks exhaust their budget
Fixes#8201.
* fix(javascript): examine queued module sources after a strict walk exhausts its budget
A strict check that exhausts the alias budget stopped the whole walk, so a module branch queued beside the growing alias was never examined. Stop expanding instead, and drain the queued sources.
* fix(javascript): drain exhausted strict walks by selected keys and finite expressions
After exhaustion the limiter widens every key, so draining by normalized paths could match process.foo as mainModule. Keep each queued source's selected keys, expand finite expressions such as sequences and conditionals, and stop only at bindings and calls.
* fix(javascript): follow bindings and calls breadth first in exhausted strict walks
An exhausted strict walk skipped every binding and call, so (flag ? m : r).require with const m = module lost the module branch when r was explored first. Drain the queue breadth first after exhaustion and follow bindings and calls under a second alias selection budget, so a growing alias cannot starve a sibling.
* fix(javascript): bound every state a strict walk creates after exhaustion
After the alias budget is exhausted, paths are no longer normalized, so a
cycle through containers or getters can keep growing its selected path
without crossing a binding or call. Count each new state against the
drain budget instead of only binding and call follow-ups.
* fix(javascript): retain uncertainty at alias cutoff
---------
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>