edfcore 0.2.13 → 0.2.14
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/CHANGELOG.md +8 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/record-index.d.ts +19 -1
- package/dist/record-index.d.ts.map +1 -1
- package/dist/record-index.js +44 -0
- package/dist/record-index.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/index.ts +1 -1
- package/src/record-index.ts +45 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,14 @@ alone does not tell you whether you were affected.
|
|
|
6
6
|
edfcore is pre-1.0. Patch releases have carried behaviour changes where the old behaviour was a
|
|
7
7
|
defect; those are called out below.
|
|
8
8
|
|
|
9
|
+
## 0.2.14
|
|
10
|
+
|
|
11
|
+
- **Added** `segmentAt(index, seconds)` — the pure, synchronous form of `index.locate()`. A viewer
|
|
12
|
+
asks which segment covers the cursor on every mouse move and should not issue a read to find
|
|
13
|
+
out; a completed index already holds the segments. Throws on a probed index rather than
|
|
14
|
+
returning `undefined`, because `undefined` means "no records cover this instant" and a probed
|
|
15
|
+
index cannot say that about anything in the middle of the file.
|
|
16
|
+
|
|
9
17
|
## 0.2.13
|
|
10
18
|
|
|
11
19
|
- **Added** `edfcore events <file> --list`: one tab-separated event per line instead of counts by
|
package/dist/constants.d.ts
CHANGED
|
@@ -109,5 +109,5 @@ export declare const SIGNAL_FIELD_BLOCK_OFFSETS: {
|
|
|
109
109
|
readonly reserved: 224;
|
|
110
110
|
};
|
|
111
111
|
/** Published package version. Kept in sync with package.json by a test. */
|
|
112
|
-
export declare const VERSION = "0.2.
|
|
112
|
+
export declare const VERSION = "0.2.14";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export { byteSource } from './io/bytes.js';
|
|
|
40
40
|
export { cachedSource } from './io/cached.js';
|
|
41
41
|
export { httpSource } from './io/http.js';
|
|
42
42
|
export { readHeader, readRecordBytes } from './io/read.js';
|
|
43
|
-
export { buildRecordIndex, buildTimeline, contiguityOf } from './record-index.js';
|
|
43
|
+
export { buildRecordIndex, buildTimeline, contiguityOf, segmentAt } from './record-index.js';
|
|
44
44
|
export { annotationsAt, countAnnotationsByText, filterAnnotationsByText, filterAnnotationsByTime, } from './annotations-query.js';
|
|
45
45
|
export { decodeStatusWord, getStatusSignal, readTriggers } from './biosemi.js';
|
|
46
46
|
export { mergeChunks } from './chunks.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,mFAAmF;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,YAAY,EACV,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,wBAAwB,EACxB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AAUpB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,EAChB,OAAO,GACR,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQnE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -50,7 +50,7 @@ export { httpSource } from './io/http.js';
|
|
|
50
50
|
// I/O layer — thin, async, no caching.
|
|
51
51
|
// ===========================================================================
|
|
52
52
|
export { readHeader, readRecordBytes } from './io/read.js';
|
|
53
|
-
export { buildRecordIndex, buildTimeline, contiguityOf } from './record-index.js';
|
|
53
|
+
export { buildRecordIndex, buildTimeline, contiguityOf, segmentAt } from './record-index.js';
|
|
54
54
|
// ===========================================================================
|
|
55
55
|
// Convenience layer
|
|
56
56
|
// ===========================================================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA0EH,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,EAChB,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,2EAA2E;AAC3E,2CAA2C;AAC3C,8EAA8E;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE,8EAA8E;AAC9E,yEAAyE;AACzE,2EAA2E;AAC3E,6CAA6C;AAC7C,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA0EH,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,EAChB,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,2EAA2E;AAC3E,2CAA2C;AAC3C,8EAA8E;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE,8EAA8E;AAC9E,yEAAyE;AACzE,2EAA2E;AAC3E,6CAA6C;AAC7C,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE7F,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/record-index.d.ts
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* it is also what lets `decodeAnnotations` own the timekeeping rule: it requires the record's
|
|
26
26
|
* full bytes, and reading less would mean reimplementing that rule here.
|
|
27
27
|
*/
|
|
28
|
-
import type { BuildIndexOptions, ByteSource, EdfHeader, EdfRecordIndex, EdfRecording, EdfTimeline, OpenOptions } from './types.js';
|
|
28
|
+
import type { BuildIndexOptions, ByteSource, EdfHeader, EdfRecordIndex, EdfRecording, EdfSegment, EdfTimeline, OpenOptions } from './types.js';
|
|
29
29
|
/** Records per chunk of a full traversal: bounded memory, and never fewer than one record. */
|
|
30
30
|
export declare function scanChunkRecords(header: EdfHeader, maxMaterializeBytes?: number): number;
|
|
31
31
|
/**
|
|
@@ -66,4 +66,22 @@ export declare function buildRecordIndex(recording: EdfRecording, options?: Buil
|
|
|
66
66
|
* `buildRecordIndex()` is what turns `'unknown'` into a real answer.
|
|
67
67
|
*/
|
|
68
68
|
export declare function contiguityOf(index: EdfRecordIndex): 'contiguous' | 'discontinuous' | 'unknown';
|
|
69
|
+
/**
|
|
70
|
+
* The segment covering an instant, or `undefined` when the instant falls in a gap or outside the
|
|
71
|
+
* recording.
|
|
72
|
+
*
|
|
73
|
+
* Pure and synchronous, which is the point: `index.locate()` answers the same question by probing
|
|
74
|
+
* the file, and a viewer that asks on every mouse move should not be issuing reads. A completed
|
|
75
|
+
* index already holds the segments, so this is a binary search over them.
|
|
76
|
+
*
|
|
77
|
+
* THROWS on a probed index rather than returning `undefined`. `undefined` here means "no records
|
|
78
|
+
* cover this time", and a probed index has read record 0 and the last record and nothing between —
|
|
79
|
+
* it does not know where the segments are, so it cannot say that about any instant in the middle.
|
|
80
|
+
* Returning `undefined` would merge "there is a gap here" with "nobody looked", which are the two
|
|
81
|
+
* answers a caller most needs to keep apart.
|
|
82
|
+
*
|
|
83
|
+
* `seconds` is on the recording's own axis: `t = 0` is the start of record 0, matching
|
|
84
|
+
* `segment.startSeconds`, `readWindow` and `readEnvelope`.
|
|
85
|
+
*/
|
|
86
|
+
export declare function segmentAt(index: EdfRecordIndex, seconds: number): EdfSegment | undefined;
|
|
69
87
|
//# sourceMappingURL=record-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-index.d.ts","sourceRoot":"","sources":["../src/record-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAeH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAIV,SAAS,EAET,cAAc,EACd,YAAY,
|
|
1
|
+
{"version":3,"file":"record-index.d.ts","sourceRoot":"","sources":["../src/record-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAeH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAIV,SAAS,EAET,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EAGZ,MAAM,YAAY,CAAC;AAWpB,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAOxF;AAwKD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC,CAkE3D;AAmDD;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAyBzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,SAAS,CAG9F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CA0BxF"}
|
package/dist/record-index.js
CHANGED
|
@@ -323,4 +323,48 @@ export function contiguityOf(index) {
|
|
|
323
323
|
return 'unknown';
|
|
324
324
|
return index.gaps.length === 0 ? 'contiguous' : 'discontinuous';
|
|
325
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* The segment covering an instant, or `undefined` when the instant falls in a gap or outside the
|
|
328
|
+
* recording.
|
|
329
|
+
*
|
|
330
|
+
* Pure and synchronous, which is the point: `index.locate()` answers the same question by probing
|
|
331
|
+
* the file, and a viewer that asks on every mouse move should not be issuing reads. A completed
|
|
332
|
+
* index already holds the segments, so this is a binary search over them.
|
|
333
|
+
*
|
|
334
|
+
* THROWS on a probed index rather than returning `undefined`. `undefined` here means "no records
|
|
335
|
+
* cover this time", and a probed index has read record 0 and the last record and nothing between —
|
|
336
|
+
* it does not know where the segments are, so it cannot say that about any instant in the middle.
|
|
337
|
+
* Returning `undefined` would merge "there is a gap here" with "nobody looked", which are the two
|
|
338
|
+
* answers a caller most needs to keep apart.
|
|
339
|
+
*
|
|
340
|
+
* `seconds` is on the recording's own axis: `t = 0` is the start of record 0, matching
|
|
341
|
+
* `segment.startSeconds`, `readWindow` and `readEnvelope`.
|
|
342
|
+
*/
|
|
343
|
+
export function segmentAt(index, seconds) {
|
|
344
|
+
const segments = index.segments;
|
|
345
|
+
if (index.coverage !== 'complete' || segments === undefined) {
|
|
346
|
+
throw new RangeError('segmentAt() needs a complete index: this one is probed, so it knows record 0 and the last ' +
|
|
347
|
+
'record and nothing between, and cannot say which segment covers a time in the middle. ' +
|
|
348
|
+
'Next: await buildRecordIndex(recording) and pass the index it returns.');
|
|
349
|
+
}
|
|
350
|
+
// NaN fails every comparison below, so the binary search would walk to an arbitrary segment and
|
|
351
|
+
// return it. Refusing is the only honest answer for a time that is not a time.
|
|
352
|
+
if (!Number.isFinite(seconds)) {
|
|
353
|
+
throw new RangeError(`segmentAt() needs a finite time in seconds, received ${seconds}.`);
|
|
354
|
+
}
|
|
355
|
+
let low = 0;
|
|
356
|
+
let high = segments.length - 1;
|
|
357
|
+
while (low <= high) {
|
|
358
|
+
const middle = (low + high) >> 1;
|
|
359
|
+
const segment = segments[middle];
|
|
360
|
+
// Half-open, so a segment that ends exactly where the next begins is not both.
|
|
361
|
+
if (seconds < segment.startSeconds)
|
|
362
|
+
high = middle - 1;
|
|
363
|
+
else if (seconds >= segment.endSeconds)
|
|
364
|
+
low = middle + 1;
|
|
365
|
+
else
|
|
366
|
+
return segment;
|
|
367
|
+
}
|
|
368
|
+
return undefined;
|
|
369
|
+
}
|
|
326
370
|
//# sourceMappingURL=record-index.js.map
|
package/dist/record-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-index.js","sourceRoot":"","sources":["../src/record-index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"record-index.js","sourceRoot":"","sources":["../src/record-index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -158,7 +158,7 @@ export { httpSource } from './io/http.js';
|
|
|
158
158
|
// ===========================================================================
|
|
159
159
|
|
|
160
160
|
export { readHeader, readRecordBytes } from './io/read.js';
|
|
161
|
-
export { buildRecordIndex, buildTimeline, contiguityOf } from './record-index.js';
|
|
161
|
+
export { buildRecordIndex, buildTimeline, contiguityOf, segmentAt } from './record-index.js';
|
|
162
162
|
|
|
163
163
|
// ===========================================================================
|
|
164
164
|
// Convenience layer
|
package/src/record-index.ts
CHANGED
|
@@ -428,3 +428,48 @@ export function contiguityOf(index: EdfRecordIndex): 'contiguous' | 'discontinuo
|
|
|
428
428
|
if (index.coverage !== 'complete' || index.gaps === undefined) return 'unknown';
|
|
429
429
|
return index.gaps.length === 0 ? 'contiguous' : 'discontinuous';
|
|
430
430
|
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* The segment covering an instant, or `undefined` when the instant falls in a gap or outside the
|
|
434
|
+
* recording.
|
|
435
|
+
*
|
|
436
|
+
* Pure and synchronous, which is the point: `index.locate()` answers the same question by probing
|
|
437
|
+
* the file, and a viewer that asks on every mouse move should not be issuing reads. A completed
|
|
438
|
+
* index already holds the segments, so this is a binary search over them.
|
|
439
|
+
*
|
|
440
|
+
* THROWS on a probed index rather than returning `undefined`. `undefined` here means "no records
|
|
441
|
+
* cover this time", and a probed index has read record 0 and the last record and nothing between —
|
|
442
|
+
* it does not know where the segments are, so it cannot say that about any instant in the middle.
|
|
443
|
+
* Returning `undefined` would merge "there is a gap here" with "nobody looked", which are the two
|
|
444
|
+
* answers a caller most needs to keep apart.
|
|
445
|
+
*
|
|
446
|
+
* `seconds` is on the recording's own axis: `t = 0` is the start of record 0, matching
|
|
447
|
+
* `segment.startSeconds`, `readWindow` and `readEnvelope`.
|
|
448
|
+
*/
|
|
449
|
+
export function segmentAt(index: EdfRecordIndex, seconds: number): EdfSegment | undefined {
|
|
450
|
+
const segments = index.segments;
|
|
451
|
+
if (index.coverage !== 'complete' || segments === undefined) {
|
|
452
|
+
throw new RangeError(
|
|
453
|
+
'segmentAt() needs a complete index: this one is probed, so it knows record 0 and the last ' +
|
|
454
|
+
'record and nothing between, and cannot say which segment covers a time in the middle. ' +
|
|
455
|
+
'Next: await buildRecordIndex(recording) and pass the index it returns.',
|
|
456
|
+
);
|
|
457
|
+
}
|
|
458
|
+
// NaN fails every comparison below, so the binary search would walk to an arbitrary segment and
|
|
459
|
+
// return it. Refusing is the only honest answer for a time that is not a time.
|
|
460
|
+
if (!Number.isFinite(seconds)) {
|
|
461
|
+
throw new RangeError(`segmentAt() needs a finite time in seconds, received ${seconds}.`);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
let low = 0;
|
|
465
|
+
let high = segments.length - 1;
|
|
466
|
+
while (low <= high) {
|
|
467
|
+
const middle = (low + high) >> 1;
|
|
468
|
+
const segment = segments[middle] as EdfSegment;
|
|
469
|
+
// Half-open, so a segment that ends exactly where the next begins is not both.
|
|
470
|
+
if (seconds < segment.startSeconds) high = middle - 1;
|
|
471
|
+
else if (seconds >= segment.endSeconds) low = middle + 1;
|
|
472
|
+
else return segment;
|
|
473
|
+
}
|
|
474
|
+
return undefined;
|
|
475
|
+
}
|