@cityjson/flatcitybuf
    Preparing search index...

    Interface SelectOptions

    What to select. Every field is optional; select() with no options is selectAll().

    limit/offset apply AFTER the search, over the sorted result list -- they page the answer, they do not change it. featuresCount on the returned cursor therefore reports the TOTAL number of matches (or the file's total, for an unfiltered select), regardless of paging.

    interface SelectOptions {
        limit?: number;
        offset?: number;
        signal?: AbortSignal;
        spatial?: SpatialQuery;
        where?: AttrCondition[];
        wholeIndexThreshold?: number;
    }
    Index
    limit?: number

    At most this many features are iterated. Applied to the sorted result list, so it pages the answer without changing it -- the cursor's featuresCount still reports the total. Omitted means no cap; 0 yields nothing.

    offset?: number

    How many matches to skip before the first one iterated. On an indexed query the skipped features are never read (the exception is a String condition, where every candidate has to be read once to be post-filtered before the list can be paged at all). Defaults to 0.

    signal?: AbortSignal

    Cancels the query. Threaded into the actual in-flight reads -- the index traversal and each feature read -- not merely held on this facade, and re-checked between features, so aborting a cursor that has already yielded stops the reads that have not happened yet.

    spatial?: SpatialQuery

    Spatial filter, answered from the packed Hilbert R-tree: { kind: 'bbox', value: [minX, minY, maxX, maxY] }, { kind: 'point', value: [x, y] }, or { kind: 'nearest', value: [x, y] } (at most one feature). A file with no spatial index throws NoIndex.

    where?: AttrCondition[]

    Attribute predicates, each answered from that column's static B+tree and AND-intersected with the others. Matching is EXISTENTIAL over a feature's CityObjects: the feature matches if any one of its objects does. An empty array is treated as no filter at all.

    wholeIndexThreshold?: number

    Byte size at or below which a nearest query fetches the WHOLE R-tree in one read and walks it in memory, instead of streaming a read per node range. Defaults to WHOLE_INDEX_THRESHOLD (256 KB). Only nearest reads it. Overridable chiefly so tests can force the streaming path -- every corpus index is below the default, so without lowering it the best-first traversal would never execute and the fast path would mask any bug in it.