ReadonlycolumnsRaw decoded columns; iterate these by index for bulk consumption.
ReadonlysizeNumber of entities (Map-compatible).
Map-compatible iteration, in row (server emission) order.
Map-compatible forEach, including the third (value, key, collection)
argument — consumers written against a Map may destructure it.
Map-compatible lookup; materializes the row object lazily.
Map-compatible existence check.
Row index into columns for an expressId, or -1 when absent.
StaticfromBuild from row objects (tests / small in-memory models).
Columnar entity index for the server data model (issue #1841).
Replaces the previous
Map<number, EntityMetadata>: V8 caps Map/Set at 2^24 (~16.7M) entries, so huge models hit a hard ceiling the canonical parser path (CompactEntityIndex) avoids. This mirrors that design — the decoded columns are kept as-is, lookups binary-search a sorted expressId view, andEntityMetadatarows are materialized lazily on access.The read surface is Map-compatible (
size/get/has/iteration/keys/values/entries/forEach) so existing consumers keep working; columnar consumers should iteratecolumnsby index instead.