• Build the entity index by streaming, directly into typed-array columns (M7): identical parse and window behaviour to buildIndexStreaming, but completed records are encoded straight into a ColumnarIndexSink so the per-record object index never materialises. Peak JS heap for the index build becomes window + columns — the object phase (the dominant heap cost on large models) is gone.

    Type Parameters

    • TypeIDType extends number

    Parameters

    • source: ByteSource

      The byte source.

    • parser: default<TypeIDType>

      The STEP parser (typed to the schema).

    • pool: number

      Target window size in bytes.

    • OptionalonRecordIndexed: ((localID: number, expressID: number, typeID: undefined | TypeIDType) => void)

      Optional per-record event (see buildIndexStreaming).

        • (localID, expressID, typeID): void
        • Parameters

          • localID: number
          • expressID: number
          • typeID: undefined | TypeIDType

          Returns void

    Returns StreamingColumnarIndexResult<TypeIDType>

    Columns, header, result, stats.