@gmod/tabix 3.5.7 → 3.6.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.
- package/README.md +13 -12
- package/dist/indexFile.d.ts +19 -23
- package/dist/indexFile.js +23 -67
- package/dist/indexFile.js.map +1 -1
- package/dist/tabix-bundle.js +1 -1
- package/dist/tabixIndexedFile.d.ts +57 -4
- package/dist/tabixIndexedFile.js +72 -85
- package/dist/tabixIndexedFile.js.map +1 -1
- package/dist/util.d.ts +1 -18
- package/dist/util.js +6 -31
- package/dist/util.js.map +1 -1
- package/esm/indexFile.d.ts +19 -23
- package/esm/indexFile.js +24 -68
- package/esm/indexFile.js.map +1 -1
- package/esm/tabixIndexedFile.d.ts +57 -4
- package/esm/tabixIndexedFile.js +72 -85
- package/esm/tabixIndexedFile.js.map +1 -1
- package/esm/util.d.ts +1 -18
- package/esm/util.js +4 -30
- package/esm/util.js.map +1 -1
- package/package.json +11 -9
- package/src/indexFile.ts +26 -68
- package/src/tabixIndexedFile.ts +96 -113
- package/src/util.ts +4 -30
package/esm/indexFile.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { unzip } from '@gmod/bgzf-filehandle';
|
|
2
|
-
import {
|
|
2
|
+
import { SharedReadCache } from '@gmod/shared-read-cache';
|
|
3
|
+
import { optimizeChunks } from "./util.js";
|
|
3
4
|
export default class IndexFile {
|
|
4
5
|
filehandle;
|
|
5
|
-
parseP;
|
|
6
6
|
/**
|
|
7
|
-
* The
|
|
8
|
-
*
|
|
9
|
-
* this the first query to arrive would own a read all the others depend on —
|
|
10
|
-
* see {@link parse}.
|
|
7
|
+
* The parsed index, as a shared read — see {@link parse}. One entry, never
|
|
8
|
+
* evicted, which is what a memo is.
|
|
11
9
|
*/
|
|
12
|
-
|
|
10
|
+
parseCache = new SharedReadCache({});
|
|
13
11
|
constructor({ filehandle }) {
|
|
14
12
|
this.filehandle = filehandle;
|
|
15
13
|
}
|
|
@@ -73,78 +71,36 @@ export default class IndexFile {
|
|
|
73
71
|
}
|
|
74
72
|
return optimizeChunks(chunks, this.lowestOffset(ba, min, indexData));
|
|
75
73
|
}
|
|
74
|
+
// SYNC: ~/src/gmod/bam-js/src/indexFile.ts parse — same shape and the same
|
|
75
|
+
// reasoning below.
|
|
76
76
|
/**
|
|
77
77
|
* Parse the index, or join the parse already running.
|
|
78
78
|
*
|
|
79
79
|
* The index is downloaded and parsed once for the life of this object, so it
|
|
80
80
|
* is the one read here that is shared between queries — and therefore the one
|
|
81
81
|
* place a cancellation can leak from the query that asked for it to a query
|
|
82
|
-
* that did not. `_parse` hands `opts` straight to `readIndexBytes`, so
|
|
83
|
-
*
|
|
84
|
-
* depends on: when it pans away, every concurrent query fails
|
|
82
|
+
* that did not. `_parse` hands `opts` straight to `readIndexBytes`, so a bare
|
|
83
|
+
* memoized promise makes the first query to arrive the owner of a read every
|
|
84
|
+
* other query depends on: when it pans away, every concurrent query fails
|
|
85
|
+
* with its abort.
|
|
85
86
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
87
|
+
* The same cache `ChunkCache` uses, for the same reason and with the same
|
|
88
|
+
* rule: the parse runs under a signal of its own and is cancelled only once
|
|
89
|
+
* every caller waiting on it has given up, so one query's abort is reported
|
|
90
|
+
* to that query alone and a bystander gets the parse already in flight rather
|
|
91
|
+
* than having to re-read the index. A rejection is dropped rather than
|
|
92
|
+
* cached, so a transient failure does not poison the index for the life of
|
|
93
|
+
* the file.
|
|
93
94
|
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* `@gmod/cram`'s `CraiIndex` make the same split for the same reason.
|
|
95
|
+
* The fill is per call rather than on the cache so that the caller who starts
|
|
96
|
+
* the parse has its `onProgress` reach `readIndexBytes` — the index is a
|
|
97
|
+
* whole-file read, and a determinate "downloading index" bar is what that
|
|
98
|
+
* callback exists for.
|
|
99
99
|
*
|
|
100
100
|
* @internal
|
|
101
101
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const pending = this.parseP;
|
|
105
|
-
if (!pending) {
|
|
106
|
-
return this.startParse(opts);
|
|
107
|
-
}
|
|
108
|
-
// read before awaiting: the owner is forgotten as soon as the parse settles
|
|
109
|
-
const ownerSignal = this.parseSignal;
|
|
110
|
-
try {
|
|
111
|
-
return await pending;
|
|
112
|
-
}
|
|
113
|
-
catch (e) {
|
|
114
|
-
if (retried || !ownerSignal?.aborted || opts.signal?.aborted) {
|
|
115
|
-
throw e;
|
|
116
|
-
}
|
|
117
|
-
return this.parse(opts, true);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
startParse(opts) {
|
|
121
|
-
const pending = this._parse(opts);
|
|
122
|
-
this.parseP = pending;
|
|
123
|
-
this.parseSignal = opts.signal;
|
|
124
|
-
// Drop a rejection rather than keeping it, so one transient failure does not
|
|
125
|
-
// poison the index for the lifetime of the file. Identity-checked so a retry
|
|
126
|
-
// started after this settles is not cleared by the attempt it replaced.
|
|
127
|
-
//
|
|
128
|
-
// Written as one try/catch rather than `.then(onFulfilled, onRejected)`
|
|
129
|
-
// because `unicorn/prefer-then-catch` rewrites the two-argument form to
|
|
130
|
-
// `.then(...).catch(...)`, which is not the same thing — that catch would
|
|
131
|
-
// also swallow anything the fulfilment handler threw.
|
|
132
|
-
void (async () => {
|
|
133
|
-
let failed = false;
|
|
134
|
-
try {
|
|
135
|
-
await pending;
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
failed = true;
|
|
139
|
-
}
|
|
140
|
-
if (this.parseP === pending) {
|
|
141
|
-
if (failed) {
|
|
142
|
-
this.parseP = undefined;
|
|
143
|
-
}
|
|
144
|
-
this.parseSignal = undefined;
|
|
145
|
-
}
|
|
146
|
-
})();
|
|
147
|
-
return pending;
|
|
102
|
+
parse(opts = {}) {
|
|
103
|
+
return this.parseCache.get('index', opts.signal, signal => this._parse({ ...opts, signal }));
|
|
148
104
|
}
|
|
149
105
|
/** @internal */
|
|
150
106
|
async hasRefSeq(seqId, opts = {}) {
|
package/esm/indexFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SharedReadCache } from '@gmod/shared-read-cache';
|
|
1
2
|
import type Chunk from './chunk.ts';
|
|
2
3
|
import type { Options } from './indexFile.ts';
|
|
3
4
|
import type { ChunkSlice } from '@gmod/bgzf-filehandle';
|
|
@@ -15,15 +16,20 @@ interface GetLinesOpts {
|
|
|
15
16
|
*/
|
|
16
17
|
onProgress?: (bytesDownloaded: number, totalBytes?: number) => void;
|
|
17
18
|
}
|
|
19
|
+
type ReadChunk = ChunkSlice;
|
|
18
20
|
/**
|
|
19
21
|
* Reads Tabix-indexed files (bgzipped), supporting both .tbi and .csi index formats.
|
|
20
22
|
*/
|
|
21
23
|
export default class TabixIndexedFile {
|
|
22
24
|
private filehandle;
|
|
23
25
|
private index;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
chunkCache: SharedReadCache<Chunk, ReadChunk>;
|
|
27
|
+
/**
|
|
28
|
+
* The parsed header, as a shared read — see {@link getParsedHeader}. One
|
|
29
|
+
* entry, never evicted, which is what a memo is.
|
|
30
|
+
*/
|
|
31
|
+
private headerCache;
|
|
32
|
+
constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, chunkCacheSize, chunkCacheIdleTimeoutMs, }: {
|
|
27
33
|
path?: string;
|
|
28
34
|
filehandle?: GenericFilehandle;
|
|
29
35
|
url?: string;
|
|
@@ -33,9 +39,34 @@ export default class TabixIndexedFile {
|
|
|
33
39
|
csiPath?: string;
|
|
34
40
|
csiUrl?: string;
|
|
35
41
|
csiFilehandle?: GenericFilehandle;
|
|
36
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Budget for the decompressed chunk cache, in bytes. Default 1GB.
|
|
44
|
+
*
|
|
45
|
+
* A retention bound, not a bound on peak memory: reads in flight are never
|
|
46
|
+
* evicted and the last settled entry is kept whatever the budget. Size it
|
|
47
|
+
* to hold several queries — below one query's working set the hit rate
|
|
48
|
+
* drops to zero while the memory is retained anyway, so a number between
|
|
49
|
+
* the two is the worst available choice.
|
|
50
|
+
*/
|
|
37
51
|
chunkCacheSize?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Drop a cached chunk once nothing has read it for this many milliseconds.
|
|
54
|
+
* Default 3 minutes; `0` keeps chunks until `chunkCacheSize` evicts them.
|
|
55
|
+
*
|
|
56
|
+
* The only thing that lowers the cache while nothing is happening, and what
|
|
57
|
+
* makes the budget above a peak rather than a resting level.
|
|
58
|
+
*/
|
|
59
|
+
chunkCacheIdleTimeoutMs?: number;
|
|
38
60
|
});
|
|
61
|
+
/**
|
|
62
|
+
* Drops every decompressed chunk held by the cache, and stops the idle sweep
|
|
63
|
+
* until something is cached again.
|
|
64
|
+
*
|
|
65
|
+
* `chunkCacheIdleTimeoutMs` reclaims a view the user has wandered away from;
|
|
66
|
+
* this is for a consumer that knows it is finished — a closed track, a
|
|
67
|
+
* changed assembly — and should not have to wait it out.
|
|
68
|
+
*/
|
|
69
|
+
clearChunkCache(): void;
|
|
39
70
|
/**
|
|
40
71
|
* Estimates the compressed byte size of the index chunks covering the given
|
|
41
72
|
* regions. Useful for byte budgeting before issuing a `getLines` call to
|
|
@@ -92,6 +123,28 @@ export default class TabixIndexedFile {
|
|
|
92
123
|
* which matters for a VCF header that can run to megabytes.
|
|
93
124
|
*/
|
|
94
125
|
private parseHeader;
|
|
126
|
+
/**
|
|
127
|
+
* Parse the header, or join the parse already running.
|
|
128
|
+
*
|
|
129
|
+
* `parseHeader` threads `opts` into both `getMetadata` and the header read,
|
|
130
|
+
* so memoizing it on the first caller's opts put that caller's signal in
|
|
131
|
+
* charge of a read every later caller joins: when it aborted, they failed
|
|
132
|
+
* with its cancellation, their own signals untouched.
|
|
133
|
+
*
|
|
134
|
+
* The same cache the chunk reads use, and the same rule: the parse runs under
|
|
135
|
+
* a signal of its own and is cancelled only once every caller waiting on it
|
|
136
|
+
* has given up, so one caller's abort is reported to that caller alone and a
|
|
137
|
+
* bystander gets the parse already in flight. There is no retry here because
|
|
138
|
+
* there is nothing to retry — the parse a bystander joined is not cancelled by
|
|
139
|
+
* someone else's abort. A rejection is dropped rather than cached, so a
|
|
140
|
+
* transient failure does not poison the header for the life of the file.
|
|
141
|
+
*
|
|
142
|
+
* The fill is per call rather than on the cache, so the caller that starts the
|
|
143
|
+
* parse has its `onProgress` reach the index download inside `getMetadata`.
|
|
144
|
+
*
|
|
145
|
+
* SYNC: ~/src/gmod/bam-js/src/bamFile.ts getHeader — same shape for the same
|
|
146
|
+
* reason, on the header rather than the index.
|
|
147
|
+
*/
|
|
95
148
|
private getParsedHeader;
|
|
96
149
|
/**
|
|
97
150
|
* The bytes of the commented header. Deliberately not memoized, unlike the
|
package/esm/tabixIndexedFile.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import AbortablePromiseCache from '@gmod/abortable-promise-cache';
|
|
2
1
|
import { unzip, unzipChunkSlice } from '@gmod/bgzf-filehandle';
|
|
2
|
+
import { SharedReadCache } from '@gmod/shared-read-cache';
|
|
3
3
|
import { LocalFile, RemoteFile } from 'generic-filehandle2';
|
|
4
4
|
import CSI from "./csi.js";
|
|
5
5
|
import TBI from "./tbi.js";
|
|
@@ -19,78 +19,27 @@ const MAX_READ_AHEAD_CHUNKS = 6;
|
|
|
19
19
|
// a dense VCF (test/data/1kg.chr1.subset.vcf.gz — 213MB over 600kb of chr1)
|
|
20
20
|
// has single index bins of 17MB compressed, 120MB decompressed. Panning it
|
|
21
21
|
// under the old 80-entry cache peaked at 2GB RSS.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
has(key) {
|
|
45
|
-
return this.entries.has(key);
|
|
46
|
-
}
|
|
47
|
-
get(key) {
|
|
48
|
-
const cached = this.entries.get(key);
|
|
49
|
-
if (cached) {
|
|
50
|
-
// re-insert so Map iteration order stays least-recently-used first
|
|
51
|
-
this.entries.delete(key);
|
|
52
|
-
this.entries.set(key, cached);
|
|
53
|
-
}
|
|
54
|
-
return cached?.entry;
|
|
55
|
-
}
|
|
56
|
-
set(key, entry) {
|
|
57
|
-
this.delete(key);
|
|
58
|
-
const cached = { entry, bytes: 0 };
|
|
59
|
-
this.entries.set(key, cached);
|
|
60
|
-
void entry.promise
|
|
61
|
-
.then(chunk => {
|
|
62
|
-
// a later set() may have replaced this key while the read was in
|
|
63
|
-
// flight; charging these bytes to it would then double-count
|
|
64
|
-
if (this.entries.get(key) === cached) {
|
|
65
|
-
cached.bytes = chunk.buffer.byteLength;
|
|
66
|
-
this.bytes += cached.bytes;
|
|
67
|
-
this.evict();
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
.catch(() => {
|
|
71
|
-
// a failed or aborted read caches nothing and costs nothing
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
delete(key) {
|
|
75
|
-
const cached = this.entries.get(key);
|
|
76
|
-
if (cached) {
|
|
77
|
-
this.entries.delete(key);
|
|
78
|
-
this.bytes -= cached.bytes;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
keys() {
|
|
82
|
-
return this.entries.keys();
|
|
83
|
-
}
|
|
84
|
-
// Evict from the least-recently-used end. The size > 1 guard means a single
|
|
85
|
-
// chunk larger than the whole budget is still kept: the caller needs it for
|
|
86
|
-
// the query in flight, and dropping it would only force a re-decompress.
|
|
87
|
-
evict() {
|
|
88
|
-
const lru = this.entries.keys();
|
|
89
|
-
while (this.bytes > this.maxBytes && this.entries.size > 1) {
|
|
90
|
-
this.delete(lru.next().value);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
22
|
+
//
|
|
23
|
+
// That 120MB figure is also why this is no longer 100MB. A budget below one
|
|
24
|
+
// query's working set does not cache less, it caches NOTHING: each entry is
|
|
25
|
+
// evicted before the next pan can reuse it, so the hit rate is zero and the
|
|
26
|
+
// decompress is paid again every time. On that same fixture, a six-window 50kb
|
|
27
|
+
// pan measured 17 refills out of 17 — a total miss — at 100MB, against 0 at
|
|
28
|
+
// 800MB, and 2596ms against 600ms. The working set plateaus at 497MB held, so
|
|
29
|
+
// 1GB clears it with headroom and nothing above 800MB buys anything.
|
|
30
|
+
//
|
|
31
|
+
// Affordable as a ceiling only because of the idle timeout below: it is a peak
|
|
32
|
+
// under panning, not a level a parked consumer holds. A small file is
|
|
33
|
+
// unaffected either way, this being a ceiling and not an allocation.
|
|
34
|
+
const DEFAULT_CHUNK_CACHE_BYTES = 1024 * 2 ** 20;
|
|
35
|
+
// SYNC: ~/src/gmod/bam-js/src/bamFile.ts DEFAULT_CACHE_IDLE_TIMEOUT_MS
|
|
36
|
+
//
|
|
37
|
+
// Drop a chunk nothing has looked at for three minutes. The budget above is
|
|
38
|
+
// only applied when a read settles, so it does nothing at all for a consumer
|
|
39
|
+
// sitting still — and a genome browser holds one of these per track for as long
|
|
40
|
+
// as the track is open. Timed from the last read, not the fetch, so panning
|
|
41
|
+
// back and forth over one region never expires it.
|
|
42
|
+
const DEFAULT_CHUNK_CACHE_IDLE_TIMEOUT_MS = 3 * 60 * 1000;
|
|
94
43
|
function resolveFilehandle(filehandle, path, url) {
|
|
95
44
|
if (filehandle) {
|
|
96
45
|
return filehandle;
|
|
@@ -239,8 +188,12 @@ export default class TabixIndexedFile {
|
|
|
239
188
|
filehandle;
|
|
240
189
|
index;
|
|
241
190
|
chunkCache;
|
|
242
|
-
|
|
243
|
-
|
|
191
|
+
/**
|
|
192
|
+
* The parsed header, as a shared read — see {@link getParsedHeader}. One
|
|
193
|
+
* entry, never evicted, which is what a memo is.
|
|
194
|
+
*/
|
|
195
|
+
headerCache = new SharedReadCache({});
|
|
196
|
+
constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, chunkCacheSize = DEFAULT_CHUNK_CACHE_BYTES, chunkCacheIdleTimeoutMs = DEFAULT_CHUNK_CACHE_IDLE_TIMEOUT_MS, }) {
|
|
244
197
|
this.filehandle = resolveFilehandle(filehandle, path, url);
|
|
245
198
|
this.index = resolveIndex({
|
|
246
199
|
tbiFilehandle,
|
|
@@ -252,11 +205,27 @@ export default class TabixIndexedFile {
|
|
|
252
205
|
path,
|
|
253
206
|
url,
|
|
254
207
|
});
|
|
255
|
-
this.chunkCache = new
|
|
256
|
-
|
|
257
|
-
|
|
208
|
+
this.chunkCache = new SharedReadCache({
|
|
209
|
+
maxSize: chunkCacheSize,
|
|
210
|
+
// decompressed bytes, not entry count: we fetch compressed and cache
|
|
211
|
+
// decompressed, and an entry is a whole chunk
|
|
212
|
+
sizeOf: read => read.buffer.byteLength,
|
|
213
|
+
cacheKey: chunk => chunk.toString(),
|
|
214
|
+
idleTimeoutMs: chunkCacheIdleTimeoutMs,
|
|
215
|
+
fill: (chunk, signal) => this.readChunk(chunk, { signal }),
|
|
258
216
|
});
|
|
259
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Drops every decompressed chunk held by the cache, and stops the idle sweep
|
|
220
|
+
* until something is cached again.
|
|
221
|
+
*
|
|
222
|
+
* `chunkCacheIdleTimeoutMs` reclaims a view the user has wandered away from;
|
|
223
|
+
* this is for a consumer that knows it is finished — a closed track, a
|
|
224
|
+
* changed assembly — and should not have to wait it out.
|
|
225
|
+
*/
|
|
226
|
+
clearChunkCache() {
|
|
227
|
+
this.chunkCache.clear();
|
|
228
|
+
}
|
|
260
229
|
/**
|
|
261
230
|
* Estimates the compressed byte size of the index chunks covering the given
|
|
262
231
|
* regions. Useful for byte budgeting before issuing a `getLines` call to
|
|
@@ -345,7 +314,7 @@ export default class TabixIndexedFile {
|
|
|
345
314
|
const ensureReadsStarted = (count) => {
|
|
346
315
|
while (reads.length < Math.min(count, chunks.length)) {
|
|
347
316
|
const c = chunks[reads.length];
|
|
348
|
-
const read = this.chunkCache.get(c
|
|
317
|
+
const read = this.chunkCache.get(c, signal);
|
|
349
318
|
void read.catch(() => {
|
|
350
319
|
// a prefetch the early return skips is never awaited, so swallow its
|
|
351
320
|
// rejection here rather than let it surface unhandled
|
|
@@ -469,12 +438,30 @@ export default class TabixIndexedFile {
|
|
|
469
438
|
skippedLines: skipLines > 0 ? firstLines(bytes, skipLines) : [],
|
|
470
439
|
};
|
|
471
440
|
}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
441
|
+
/**
|
|
442
|
+
* Parse the header, or join the parse already running.
|
|
443
|
+
*
|
|
444
|
+
* `parseHeader` threads `opts` into both `getMetadata` and the header read,
|
|
445
|
+
* so memoizing it on the first caller's opts put that caller's signal in
|
|
446
|
+
* charge of a read every later caller joins: when it aborted, they failed
|
|
447
|
+
* with its cancellation, their own signals untouched.
|
|
448
|
+
*
|
|
449
|
+
* The same cache the chunk reads use, and the same rule: the parse runs under
|
|
450
|
+
* a signal of its own and is cancelled only once every caller waiting on it
|
|
451
|
+
* has given up, so one caller's abort is reported to that caller alone and a
|
|
452
|
+
* bystander gets the parse already in flight. There is no retry here because
|
|
453
|
+
* there is nothing to retry — the parse a bystander joined is not cancelled by
|
|
454
|
+
* someone else's abort. A rejection is dropped rather than cached, so a
|
|
455
|
+
* transient failure does not poison the header for the life of the file.
|
|
456
|
+
*
|
|
457
|
+
* The fill is per call rather than on the cache, so the caller that starts the
|
|
458
|
+
* parse has its `onProgress` reach the index download inside `getMetadata`.
|
|
459
|
+
*
|
|
460
|
+
* SYNC: ~/src/gmod/bam-js/src/bamFile.ts getHeader — same shape for the same
|
|
461
|
+
* reason, on the header rather than the index.
|
|
462
|
+
*/
|
|
463
|
+
getParsedHeader(opts = {}) {
|
|
464
|
+
return this.headerCache.get('header', opts.signal, signal => this.parseHeader({ ...opts, signal }));
|
|
478
465
|
}
|
|
479
466
|
/**
|
|
480
467
|
* The bytes of the commented header. Deliberately not memoized, unlike the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabixIndexedFile.js","sourceRoot":"","sources":["../src/tabixIndexedFile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabixIndexedFile.js","sourceRoot":"","sources":["../src/tabixIndexedFile.ts"],"names":[],"mappings":"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"}
|
package/esm/util.d.ts
CHANGED
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import Chunk from './chunk.ts';
|
|
2
2
|
import VirtualOffset from './virtualOffset.ts';
|
|
3
|
-
|
|
4
|
-
* `signal.throwIfAborted()`, without requiring either that method or `reason`.
|
|
5
|
-
*
|
|
6
|
-
* Two reasons not to call the built-in directly. It assumes a *real*
|
|
7
|
-
* `AbortSignal`, and callers pass duck-typed ones, where calling a missing
|
|
8
|
-
* method is a `TypeError` rather than the cancellation the caller asked for —
|
|
9
|
-
* a strictly worse failure.
|
|
10
|
-
*
|
|
11
|
-
* And it sets a browser floor. `AbortSignal.prototype.throwIfAborted` and
|
|
12
|
-
* `AbortSignal.reason` are Safari 15.4 / Chrome 100 / Firefox 97 (March 2022),
|
|
13
|
-
* higher than anything else here needs: this package otherwise touches only
|
|
14
|
-
* `.aborted`, and `generic-filehandle2` only forwards a signal to `fetch`.
|
|
15
|
-
*
|
|
16
|
-
* Faithful to the spec otherwise: an aborted signal throws its `reason`
|
|
17
|
-
* whatever that is, and only synthesizes an `AbortError` when there is none.
|
|
18
|
-
* Kept in sync with the copy in `@gmod/bam`'s `src/util.ts`.
|
|
19
|
-
*/
|
|
20
|
-
export declare function throwIfAborted(signal?: AbortSignal): void;
|
|
3
|
+
export { throwIfAborted } from '@gmod/shared-read-cache';
|
|
21
4
|
export declare function optimizeChunks(chunks: Chunk[], lowest?: VirtualOffset): Chunk[];
|
|
22
5
|
export declare function clampChunkEnds(chunks: Chunk[], extraBoundaries?: number[]): void;
|
|
23
6
|
/**
|
package/esm/util.js
CHANGED
|
@@ -3,36 +3,10 @@ import Chunk from "./chunk.js";
|
|
|
3
3
|
import { longFromBytesToUnsigned } from "./long.js";
|
|
4
4
|
import VirtualOffset from "./virtualOffset.js";
|
|
5
5
|
// SYNC: ~/src/gmod/bam-js/src/util.ts optimizeChunks
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* `AbortSignal`, and callers pass duck-typed ones, where calling a missing
|
|
11
|
-
* method is a `TypeError` rather than the cancellation the caller asked for —
|
|
12
|
-
* a strictly worse failure.
|
|
13
|
-
*
|
|
14
|
-
* And it sets a browser floor. `AbortSignal.prototype.throwIfAborted` and
|
|
15
|
-
* `AbortSignal.reason` are Safari 15.4 / Chrome 100 / Firefox 97 (March 2022),
|
|
16
|
-
* higher than anything else here needs: this package otherwise touches only
|
|
17
|
-
* `.aborted`, and `generic-filehandle2` only forwards a signal to `fetch`.
|
|
18
|
-
*
|
|
19
|
-
* Faithful to the spec otherwise: an aborted signal throws its `reason`
|
|
20
|
-
* whatever that is, and only synthesizes an `AbortError` when there is none.
|
|
21
|
-
* Kept in sync with the copy in `@gmod/bam`'s `src/util.ts`.
|
|
22
|
-
*/
|
|
23
|
-
export function throwIfAborted(signal) {
|
|
24
|
-
if (signal?.aborted) {
|
|
25
|
-
const reason = signal.reason;
|
|
26
|
-
// Spec-faithful: throwIfAborted throws `reason` verbatim, and `reason` is
|
|
27
|
-
// whatever the caller passed to abort() — `controller.abort('too slow')`
|
|
28
|
-
// makes it a string. Coercing it to an Error here would hide that from a
|
|
29
|
-
// consumer who set it deliberately.
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/only-throw-error
|
|
31
|
-
throw reason === undefined
|
|
32
|
-
? new DOMException('This operation was aborted', 'AbortError')
|
|
33
|
-
: reason;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
6
|
+
// Re-exported so the internal import path stays './util.ts'. The
|
|
7
|
+
// implementation moved to @gmod/shared-read-cache, which needs it anyway --
|
|
8
|
+
// every consumer of that package was carrying an identical copy.
|
|
9
|
+
export { throwIfAborted } from '@gmod/shared-read-cache';
|
|
36
10
|
export function optimizeChunks(chunks, lowest) {
|
|
37
11
|
const n = chunks.length;
|
|
38
12
|
if (n === 0) {
|
package/esm/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,oBAAoB,CAAA;AAEpC,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAE9C,qDAAqD;AACrD
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|