@gmod/bam 8.2.0 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,14 +22,11 @@ export declare function memoizeByRefId<T>(getIndices: (refId: number) => T | und
22
22
  export default abstract class IndexFile<TParsed extends ParsedIndexBase = ParsedIndexBase> {
23
23
  filehandle: GenericFilehandle;
24
24
  renameRefSeq: (s: string) => string;
25
- private parseP?;
26
25
  /**
27
- * The signal `parseP` was started under, while it is still in flight. The
28
- * index is parsed once and shared by every query against the file, so without
29
- * this the first query to arrive would own a read all the others depend on —
30
- * see {@link parse}.
26
+ * The parsed index, as a shared read — see {@link parse}. One entry, never
27
+ * evicted, which is what a memo is.
31
28
  */
32
- private parseSignal?;
29
+ private parseCache;
33
30
  constructor({ filehandle, renameRefSeq, }: {
34
31
  filehandle: GenericFilehandle;
35
32
  renameRefSeq?: (a: string) => string;
@@ -42,6 +39,7 @@ export default abstract class IndexFile<TParsed extends ParsedIndexBase = Parsed
42
39
  }[]>;
43
40
  protected abstract reg2bins(min: number, max: number): readonly (readonly [number, number])[];
44
41
  protected abstract getLowestChunk(refIndex: RefIndex, min: number): OffsetCoords | undefined;
42
+ protected abstract getHighestChunk(refIndex: RefIndex, max: number): number | undefined;
45
43
  blocksForRange(refId: number, min: number, max: number, opts?: BaseOpts): Promise<Chunk[]>;
46
44
  /**
47
45
  * Parse the index, or join the parse already running.
@@ -49,26 +47,50 @@ export default abstract class IndexFile<TParsed extends ParsedIndexBase = Parsed
49
47
  * The index is downloaded and parsed once for the life of this object, so it
50
48
  * is the one read here that is shared between queries — and therefore the one
51
49
  * place a cancellation can leak from the query that asked for it to a query
52
- * that did not. `_parse` hands `opts` straight to `filehandle.readFile`, so
53
- * without this the first query to arrive owns a read every other query
54
- * depends on: when it pans away, every concurrent query fails with its abort.
50
+ * that did not. `_parse` hands `opts` straight to `filehandle.readFile`, so a
51
+ * bare memoized promise makes the first query to arrive the owner of a read
52
+ * every other query depends on: when it pans away, every concurrent query
53
+ * fails with its abort.
55
54
  *
56
- * A caller that joined someone else's parse and saw it fail because *they*
57
- * aborted starts over rather than inheriting the failure — once, then
58
- * propagates. Bounding it at one attempt is what jbrowse's
59
- * `RemoteFileWithRangeCache.joinChunk` does with the same retry one layer
60
- * down, and for the reason it gives: the pathological case becomes one
61
- * duplicate parse rather than a recursion whose depth depends on how the
62
- * aborts interleave.
55
+ * The same cache the chunk reads use, for the same reason and with the same
56
+ * rule: the parse runs under a signal of its own and is cancelled only once
57
+ * every caller waiting on it has given up, so one query's abort is reported
58
+ * to that query alone. A rejection is dropped rather than cached, so a
59
+ * transient failure does not poison the index for the life of the file.
63
60
  *
64
- * A retry rather than the reference count `_cachedChunkFeatures` uses, for
65
- * the reason `@gmod/cram` gives for the same split in `CraiIndex`: the index
66
- * is parsed once for the life of the object, so there is no repeated waste to
67
- * recover, and this is a dozen lines against restructuring the memo.
61
+ * The fill is per call rather than on the cache so that the caller who starts
62
+ * the parse has its `onProgress` reach `filehandle.readFile` — the index is a
63
+ * whole-file read, and a determinate "downloading index" bar is what that
64
+ * callback exists for.
68
65
  */
69
- parse(opts?: BaseOpts, retried?: boolean): Promise<TParsed>;
70
- private startParse;
66
+ parse(opts?: BaseOpts): Promise<TParsed>;
71
67
  lineCount(refId: number, opts?: BaseOpts): Promise<number>;
72
68
  hasRefSeq(seqId: number, opts?: BaseOpts): Promise<boolean>;
69
+ /**
70
+ * Compressed bytes a `getRecordsForRange` over these regions is expected to
71
+ * download, from the index alone.
72
+ *
73
+ * Per region this is `chunksLikelyRead`, not every chunk `blocksForRange`
74
+ * returns: the difference is the whole point on a long-read file, where a
75
+ * narrow window inherits every chunk of every overlapping bin and reads a
76
+ * handful of them. Measured on a 40x ONT BAM (COLO829BL, chr3), summing all
77
+ * chunks against the bytes the same query really pulls:
78
+ *
79
+ * | window | all chunks | actually read | this estimate |
80
+ * | ------ | ---------- | ------------- | ------------- |
81
+ * | 380bp | 43.5MB | 7.8MB | 7.8MB |
82
+ * | 3.4kb | 43.5MB | 7.8MB | 7.8MB |
83
+ * | 100kb | 46.6MB | 10.4MB | 10.4MB |
84
+ * | 2Mb | 155.9MB | 155.9MB | 123.8MB |
85
+ *
86
+ * A caller gating on this — jbrowse's "too much data" banner is the one that
87
+ * exists — was being told 5.6x the truth on exactly the windows a reader
88
+ * spends their time in, and cannot answer it by zooming: every window narrower
89
+ * than a linear-index interval resolves to the same chunks and so to the same
90
+ * number.
91
+ *
92
+ * Still summed over merged chunks rather than per region, so two regions
93
+ * sharing a chunk are charged for it once.
94
+ */
73
95
  estimatedBytesForRegions(regions: Region[], opts?: BaseOpts): Promise<number>;
74
96
  }
package/dist/indexFile.js CHANGED
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.memoizeByRefId = memoizeByRefId;
7
+ const shared_read_cache_1 = require("@gmod/shared-read-cache");
7
8
  const quick_lru_1 = __importDefault(require("@jbrowse/quick-lru"));
8
9
  const util_ts_1 = require("./util.js");
9
10
  // SYNC: ~/src/gmod/tabix-js/src/util.ts memoizeByRefId
@@ -28,14 +29,11 @@ function memoizeByRefId(getIndices, maxSize = 5) {
28
29
  class IndexFile {
29
30
  filehandle;
30
31
  renameRefSeq;
31
- parseP;
32
32
  /**
33
- * The signal `parseP` was started under, while it is still in flight. The
34
- * index is parsed once and shared by every query against the file, so without
35
- * this the first query to arrive would own a read all the others depend on —
36
- * see {@link parse}.
33
+ * The parsed index, as a shared read — see {@link parse}. One entry, never
34
+ * evicted, which is what a memo is.
37
35
  */
38
- parseSignal;
36
+ parseCache = new shared_read_cache_1.SharedReadCache({});
39
37
  constructor({ filehandle, renameRefSeq = (n) => n, }) {
40
38
  this.filehandle = filehandle;
41
39
  this.renameRefSeq = renameRefSeq;
@@ -67,68 +65,32 @@ class IndexFile {
67
65
  }
68
66
  return (0, util_ts_1.optimizeChunks)(chunks, this.getLowestChunk(ba, min));
69
67
  }
70
- // SYNC: ~/src/gmod/tabix-js/src/indexFile.ts parse — same owner-signal
71
- // tracking and one-attempt retry, and the same reasoning below.
68
+ // SYNC: ~/src/gmod/tabix-js/src/indexFile.ts parse — same shape and the same
69
+ // reasoning below.
72
70
  /**
73
71
  * Parse the index, or join the parse already running.
74
72
  *
75
73
  * The index is downloaded and parsed once for the life of this object, so it
76
74
  * is the one read here that is shared between queries — and therefore the one
77
75
  * place a cancellation can leak from the query that asked for it to a query
78
- * that did not. `_parse` hands `opts` straight to `filehandle.readFile`, so
79
- * without this the first query to arrive owns a read every other query
80
- * depends on: when it pans away, every concurrent query fails with its abort.
76
+ * that did not. `_parse` hands `opts` straight to `filehandle.readFile`, so a
77
+ * bare memoized promise makes the first query to arrive the owner of a read
78
+ * every other query depends on: when it pans away, every concurrent query
79
+ * fails with its abort.
81
80
  *
82
- * A caller that joined someone else's parse and saw it fail because *they*
83
- * aborted starts over rather than inheriting the failure — once, then
84
- * propagates. Bounding it at one attempt is what jbrowse's
85
- * `RemoteFileWithRangeCache.joinChunk` does with the same retry one layer
86
- * down, and for the reason it gives: the pathological case becomes one
87
- * duplicate parse rather than a recursion whose depth depends on how the
88
- * aborts interleave.
81
+ * The same cache the chunk reads use, for the same reason and with the same
82
+ * rule: the parse runs under a signal of its own and is cancelled only once
83
+ * every caller waiting on it has given up, so one query's abort is reported
84
+ * to that query alone. A rejection is dropped rather than cached, so a
85
+ * transient failure does not poison the index for the life of the file.
89
86
  *
90
- * A retry rather than the reference count `_cachedChunkFeatures` uses, for
91
- * the reason `@gmod/cram` gives for the same split in `CraiIndex`: the index
92
- * is parsed once for the life of the object, so there is no repeated waste to
93
- * recover, and this is a dozen lines against restructuring the memo.
87
+ * The fill is per call rather than on the cache so that the caller who starts
88
+ * the parse has its `onProgress` reach `filehandle.readFile` — the index is a
89
+ * whole-file read, and a determinate "downloading index" bar is what that
90
+ * callback exists for.
94
91
  */
95
- async parse(opts = {}, retried = false) {
96
- (0, util_ts_1.throwIfAborted)(opts.signal);
97
- const pending = this.parseP;
98
- if (!pending) {
99
- return this.startParse(opts);
100
- }
101
- // read before awaiting: the owner is forgotten as soon as the parse settles
102
- const ownerSignal = this.parseSignal;
103
- try {
104
- return await pending;
105
- }
106
- catch (e) {
107
- if (retried || !ownerSignal?.aborted || opts.signal?.aborted) {
108
- throw e;
109
- }
110
- return this.parse(opts, true);
111
- }
112
- }
113
- startParse(opts) {
114
- const pending = this._parse(opts);
115
- this.parseP = pending;
116
- this.parseSignal = opts.signal;
117
- // Drop a rejection rather than keeping it, so one transient failure does not
118
- // poison the index for the lifetime of the file. Both branches are
119
- // identity-checked so a retry started after this settles is not cleared by
120
- // the attempt it already replaced.
121
- pending.then(() => {
122
- if (this.parseP === pending) {
123
- this.parseSignal = undefined;
124
- }
125
- }, () => {
126
- if (this.parseP === pending) {
127
- this.parseP = undefined;
128
- this.parseSignal = undefined;
129
- }
130
- });
131
- return pending;
92
+ parse(opts = {}) {
93
+ return this.parseCache.get('index', opts.signal, signal => this._parse({ ...opts, signal }));
132
94
  }
133
95
  async lineCount(refId, opts) {
134
96
  const indexData = await this.parse(opts);
@@ -138,8 +100,41 @@ class IndexFile {
138
100
  const indexData = await this.parse(opts);
139
101
  return !!indexData.indices(seqId);
140
102
  }
103
+ /**
104
+ * Compressed bytes a `getRecordsForRange` over these regions is expected to
105
+ * download, from the index alone.
106
+ *
107
+ * Per region this is `chunksLikelyRead`, not every chunk `blocksForRange`
108
+ * returns: the difference is the whole point on a long-read file, where a
109
+ * narrow window inherits every chunk of every overlapping bin and reads a
110
+ * handful of them. Measured on a 40x ONT BAM (COLO829BL, chr3), summing all
111
+ * chunks against the bytes the same query really pulls:
112
+ *
113
+ * | window | all chunks | actually read | this estimate |
114
+ * | ------ | ---------- | ------------- | ------------- |
115
+ * | 380bp | 43.5MB | 7.8MB | 7.8MB |
116
+ * | 3.4kb | 43.5MB | 7.8MB | 7.8MB |
117
+ * | 100kb | 46.6MB | 10.4MB | 10.4MB |
118
+ * | 2Mb | 155.9MB | 155.9MB | 123.8MB |
119
+ *
120
+ * A caller gating on this — jbrowse's "too much data" banner is the one that
121
+ * exists — was being told 5.6x the truth on exactly the windows a reader
122
+ * spends their time in, and cannot answer it by zooming: every window narrower
123
+ * than a linear-index interval resolves to the same chunks and so to the same
124
+ * number.
125
+ *
126
+ * Still summed over merged chunks rather than per region, so two regions
127
+ * sharing a chunk are charged for it once.
128
+ */
141
129
  async estimatedBytesForRegions(regions, opts) {
142
- const blockResults = await Promise.all(regions.map(r => this.blocksForRange(r.refId, r.start, r.end, opts)));
130
+ const indexData = await this.parse(opts);
131
+ const blockResults = await Promise.all(regions.map(async (r) => {
132
+ const chunks = await this.blocksForRange(r.refId, r.start, r.end, opts);
133
+ const refIndex = indexData.indices(r.refId);
134
+ return refIndex
135
+ ? (0, util_ts_1.chunksLikelyRead)(chunks, this.getHighestChunk(refIndex, r.end))
136
+ : chunks;
137
+ }));
143
138
  // Deduplicate and merge overlapping blocks across all regions
144
139
  const mergedBlocks = (0, util_ts_1.optimizeChunks)(blockResults.flat());
145
140
  let total = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -25,6 +25,46 @@ export interface BaseOpts {
25
25
  */
26
26
  onProgress?: (bytesDownloaded: number, totalBytes?: number) => void;
27
27
  }
28
+ export { throwIfAborted } from '@gmod/shared-read-cache';
29
+ export declare const MAX_CONCURRENT_CHUNK_READS = 6;
30
+ /**
31
+ * The prefix of `chunks` a query is expected to actually read, for callers that
32
+ * want to forecast a query's cost without running it.
33
+ *
34
+ * `blocksForRange` returns every chunk of every bin overlapping the query, at
35
+ * every level of the binning scheme, minus the ones the linear index puts
36
+ * entirely before it. On a long-read file that is wildly more than the query
37
+ * reads: a coarse bin's chunks run to the end of the bin's span, so a 380bp
38
+ * window on a deep ONT BAM resolves to 90 chunks / 43.5MB, of which
39
+ * `getRecordsForRange` reads 6 / 7.8MB before the early stop fires.
40
+ *
41
+ * Two bounds, and the answer is the larger:
42
+ *
43
+ * - `upperBoundBlockPosition` — the file offset past which a chunk holds no
44
+ * record the query wants, from the linear index one window beyond the query
45
+ * end. Chunks come back sorted by `minv`, so the ones under it are a prefix.
46
+ * - `MAX_CONCURRENT_CHUNK_READS` — the first batch is read unconditionally, so
47
+ * no query ever costs less than that however tight the upper bound is.
48
+ *
49
+ * **This is a forecast, not a bound the reader obeys**, and it is deliberately
50
+ * only used to describe a query rather than to answer one. The upper bound is
51
+ * an approximation: a record starting before the query end can sit at a higher
52
+ * offset than the linear-index entry past it (a long read reaching into the
53
+ * next window pins that entry low), so pruning a fetch this way would drop
54
+ * records. A forecast that is occasionally 20% under warns slightly early;
55
+ * a fetch that is occasionally short returns wrong data.
56
+ *
57
+ * An EMPTY prefix is that pin at its worst — the bound has landed at or before
58
+ * the query's own first chunk, so it orders nothing — and the answer there is
59
+ * every chunk rather than the batch floor. Without it this returns the floor on
60
+ * a file whose features are long against the linear-index interval, which is
61
+ * where the same forecast really does go wrong: ported to tabix-js and measured
62
+ * on the 1000 Genomes SV callset, whose 1.4Mb deletions pin the entry at the
63
+ * data start, it forecast 0.04MB against the 0.22MB the query read. On this
64
+ * corpus the fallback costs one fixture's win (chr22_nanopore, whose 10kb
65
+ * window keeps summing all 22 chunks) and no accuracy anywhere else.
66
+ */
67
+ export declare function chunksLikelyRead(chunks: Chunk[], upperBoundBlockPosition?: number): Chunk[];
28
68
  /**
29
69
  * Merge and order the chunks a query resolved to.
30
70
  *
@@ -35,7 +75,6 @@ export interface BaseOpts {
35
75
  * underneath you. (The Chunk objects themselves are never mutated; a merged
36
76
  * span produces a new instance.)
37
77
  */
38
- export { throwIfAborted } from '@gmod/shared-read-cache';
39
78
  export declare function optimizeChunks(chunks: Chunk[], lowest?: OffsetCoords): Chunk[];
40
79
  export declare function parsePseudoBin(bytes: Uint8Array, offset: number): {
41
80
  lineCount: number;
package/dist/util.js CHANGED
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.throwIfAborted = void 0;
6
+ exports.MAX_CONCURRENT_CHUNK_READS = exports.throwIfAborted = void 0;
7
+ exports.chunksLikelyRead = chunksLikelyRead;
7
8
  exports.optimizeChunks = optimizeChunks;
8
9
  exports.parsePseudoBin = parsePseudoBin;
9
10
  exports.clampChunkEnds = clampChunkEnds;
@@ -14,6 +15,70 @@ exports.concatUint8Array = concatUint8Array;
14
15
  exports.appendInRange = appendInRange;
15
16
  const chunk_ts_1 = __importDefault(require("./chunk.js"));
16
17
  const virtualOffset_ts_1 = require("./virtualOffset.js");
18
+ // Re-exported so the internal import path stays './util.ts'. The
19
+ // implementation moved to @gmod/shared-read-cache, which needs it anyway --
20
+ // every consumer of that package was carrying an identical copy.
21
+ var shared_read_cache_1 = require("@gmod/shared-read-cache");
22
+ Object.defineProperty(exports, "throwIfAborted", { enumerable: true, get: function () { return shared_read_cache_1.throwIfAborted; } });
23
+ // How many of a query's chunks to read at once. Six is the HTTP/1.1 per-host
24
+ // connection cap browsers enforce, so going much above it buys nothing on the
25
+ // transport that matters and only widens peak memory.
26
+ //
27
+ // It is also the SMALLEST number of chunks any query reads, because
28
+ // `_fetchChunkFeatures` checks its early stop once, after this first batch
29
+ // (ADR 0010) — which is what `chunksLikelyRead` below is built on.
30
+ exports.MAX_CONCURRENT_CHUNK_READS = 6;
31
+ /**
32
+ * The prefix of `chunks` a query is expected to actually read, for callers that
33
+ * want to forecast a query's cost without running it.
34
+ *
35
+ * `blocksForRange` returns every chunk of every bin overlapping the query, at
36
+ * every level of the binning scheme, minus the ones the linear index puts
37
+ * entirely before it. On a long-read file that is wildly more than the query
38
+ * reads: a coarse bin's chunks run to the end of the bin's span, so a 380bp
39
+ * window on a deep ONT BAM resolves to 90 chunks / 43.5MB, of which
40
+ * `getRecordsForRange` reads 6 / 7.8MB before the early stop fires.
41
+ *
42
+ * Two bounds, and the answer is the larger:
43
+ *
44
+ * - `upperBoundBlockPosition` — the file offset past which a chunk holds no
45
+ * record the query wants, from the linear index one window beyond the query
46
+ * end. Chunks come back sorted by `minv`, so the ones under it are a prefix.
47
+ * - `MAX_CONCURRENT_CHUNK_READS` — the first batch is read unconditionally, so
48
+ * no query ever costs less than that however tight the upper bound is.
49
+ *
50
+ * **This is a forecast, not a bound the reader obeys**, and it is deliberately
51
+ * only used to describe a query rather than to answer one. The upper bound is
52
+ * an approximation: a record starting before the query end can sit at a higher
53
+ * offset than the linear-index entry past it (a long read reaching into the
54
+ * next window pins that entry low), so pruning a fetch this way would drop
55
+ * records. A forecast that is occasionally 20% under warns slightly early;
56
+ * a fetch that is occasionally short returns wrong data.
57
+ *
58
+ * An EMPTY prefix is that pin at its worst — the bound has landed at or before
59
+ * the query's own first chunk, so it orders nothing — and the answer there is
60
+ * every chunk rather than the batch floor. Without it this returns the floor on
61
+ * a file whose features are long against the linear-index interval, which is
62
+ * where the same forecast really does go wrong: ported to tabix-js and measured
63
+ * on the 1000 Genomes SV callset, whose 1.4Mb deletions pin the entry at the
64
+ * data start, it forecast 0.04MB against the 0.22MB the query read. On this
65
+ * corpus the fallback costs one fixture's win (chr22_nanopore, whose 10kb
66
+ * window keeps summing all 22 chunks) and no accuracy anywhere else.
67
+ */
68
+ function chunksLikelyRead(chunks, upperBoundBlockPosition) {
69
+ if (upperBoundBlockPosition === undefined ||
70
+ chunks.length <= exports.MAX_CONCURRENT_CHUNK_READS) {
71
+ return chunks;
72
+ }
73
+ let n = 0;
74
+ while (n < chunks.length &&
75
+ chunks[n].minv.blockPosition < upperBoundBlockPosition) {
76
+ n++;
77
+ }
78
+ return n === 0 || n >= chunks.length
79
+ ? chunks
80
+ : chunks.slice(0, Math.max(n, exports.MAX_CONCURRENT_CHUNK_READS));
81
+ }
17
82
  /**
18
83
  * Merge and order the chunks a query resolved to.
19
84
  *
@@ -24,11 +89,6 @@ const virtualOffset_ts_1 = require("./virtualOffset.js");
24
89
  * underneath you. (The Chunk objects themselves are never mutated; a merged
25
90
  * span produces a new instance.)
26
91
  */
27
- // Re-exported so the internal import path stays './util.ts'. The
28
- // implementation moved to @gmod/shared-read-cache, which needs it anyway --
29
- // every consumer of that package was carrying an identical copy.
30
- var shared_read_cache_1 = require("@gmod/shared-read-cache");
31
- Object.defineProperty(exports, "throwIfAborted", { enumerable: true, get: function () { return shared_read_cache_1.throwIfAborted; } });
32
92
  function optimizeChunks(chunks, lowest) {
33
93
  const n = chunks.length;
34
94
  if (n === 0) {
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/esm/bai.d.ts CHANGED
@@ -21,5 +21,6 @@ export default class BAI extends IndexFile<BaiParsed> {
21
21
  blockPosition: number;
22
22
  dataPosition: number;
23
23
  } | undefined;
24
+ protected getHighestChunk(refIndex: BaiRefIndex, max: number): number | undefined;
24
25
  }
25
26
  export {};
package/esm/bai.js CHANGED
@@ -223,5 +223,20 @@ export default class BAI extends IndexFile {
223
223
  dataPosition: linearDataPositions[i],
224
224
  };
225
225
  }
226
+ // The linear-index entry one window PAST the query: the smallest file offset
227
+ // of any record overlapping the window after it. Records the query wants are
228
+ // overwhelmingly below it, which is what makes it a usable forecast — but not
229
+ // a bound, because a long read reaching into that next window pins the entry
230
+ // at ITS offset, and records starting later (still before the query end) sit
231
+ // above it. chunksLikelyRead says why an estimate may use it and a fetch may
232
+ // not.
233
+ //
234
+ // undefined past the end of the linear index, i.e. for a query running to the
235
+ // end of the reference, where there is no next window to bound anything with.
236
+ getHighestChunk(refIndex, max) {
237
+ const { linearBlockPositions } = refIndex;
238
+ const i = (max >> BAI_LINEAR_SHIFT) + 1;
239
+ return i < linearBlockPositions.length ? linearBlockPositions[i] : undefined;
240
+ }
226
241
  }
227
242
  //# sourceMappingURL=bai.js.map
package/esm/bai.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}