Parent: #66.
Bun.FileSystemRouter materializes matched query parameters through QueryStringMap, whose iterator uses a fixed 2,048-bit visited set. Home currently collects every query parameter, so a request with more than 2,048 entries lets iteration index beyond that set and the unchanged corpus test times out or aborts. Bun's live implementation caps both counting and collection at 2,048 and bounds the visited scan.
Port the same limit into both QueryStringMap.init and initWithScanner, bound iterator scanning before reading the bitset, and preserve route-parameter precedence. Add direct coverage for plain and percent-decoded 3,000-parameter inputs. Also ensure the newly activated JSObject.putRecord bridge propagates a pending JSC exception rather than returning success.
Acceptance:
- The unchanged
filesystem_router.test.tsquery-cap case completes at its original 5-second deadline. - Direct map tests retain exactly 2,048 entries and terminate iteration.
- Existing query, dynamic-param, URL, and native regression coverage remains green.
- No timeout increase, test edit, retry, or input special case.