edfcore 0.6.204 → 0.6.206
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/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/format-header.d.ts.map +1 -1
- package/dist/format-header.js +17 -4
- package/dist/format-header.js.map +1 -1
- package/dist/time/window.d.ts.map +1 -1
- package/dist/time/window.js +34 -0
- package/dist/time/window.js.map +1 -1
- package/docs/CHANGELOG.md +30 -0
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/format-header.ts +17 -4
- package/src/time/window.ts +38 -0
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.6.
|
|
112
|
+
export declare const VERSION = "0.6.206";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-header.d.ts","sourceRoot":"","sources":["../src/format-header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,KAAK,EAAmB,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAsElF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"format-header.d.ts","sourceRoot":"","sources":["../src/format-header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,KAAK,EAAmB,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAsElF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAgOrF"}
|
package/dist/format-header.js
CHANGED
|
@@ -178,15 +178,28 @@ export function formatHeader(header, options) {
|
|
|
178
178
|
// recording that spans 3604 s. Someone pasting that into a bug report says "a 4-second file".
|
|
179
179
|
//
|
|
180
180
|
// A header alone cannot know the span: it is the last record's onset minus the first's, and
|
|
181
|
-
// those live in the timekeeping TALs. What a header does know is that this file claims
|
|
182
|
-
//
|
|
181
|
+
// those live in the timekeeping TALs. What a header does know is that this file claims its
|
|
182
|
+
// records do not run end to end, so the label says what the number is and the next line says
|
|
183
|
+
// where the span comes from.
|
|
184
|
+
//
|
|
185
|
+
// WHICH WAY they fail to run end to end is the part a header cannot know either, and the two
|
|
186
|
+
// notes below asserted one of them. `EDF+D` means discontinuous; the records may leave gaps, and
|
|
187
|
+
// they may also OVERLAP — an overlap is one instant two records both claim, and a file with one
|
|
188
|
+
// covers MORE time than it spans. "the gaps between them are not in it" told a reader the
|
|
189
|
+
// recording reaches further than the number, on a file where it reaches less far: 6 s covered
|
|
190
|
+
// against a span of 3.5 s, printed as though 6 s were a floor.
|
|
191
|
+
//
|
|
192
|
+
// 0.3.3 stated the partition — "a gap is time no record covers; an overlap is one instant two
|
|
193
|
+
// records both claim" — and 0.3.33, 0.3.41 and 0.3.59 applied it to a site each. This is the
|
|
194
|
+
// fifth, and the first line of `edfcore header`.
|
|
183
195
|
const discontinuous = header.continuity === 'discontinuous';
|
|
184
196
|
const label = discontinuous ? 'covered ' : 'duration ';
|
|
185
197
|
lines.push(`${label} ${formatDurationTicks(header.recordDurationTicks * BigInt(header.recordCount))} ` +
|
|
186
198
|
`(${header.recordCount} × ${header.recordDurationSeconds} s)`);
|
|
187
199
|
if (discontinuous) {
|
|
188
|
-
lines.push(' what the records cover
|
|
189
|
-
lines.push('
|
|
200
|
+
lines.push(' what the records cover, which on this file is not the span: its');
|
|
201
|
+
lines.push(' records may leave gaps between them, and may overlap each other');
|
|
202
|
+
lines.push(' buildRecordIndex(recording) reports the span and which it is');
|
|
190
203
|
}
|
|
191
204
|
if (header.recordCountSource === 'sourceByteLength') {
|
|
192
205
|
// Worth saying out loud: the count came from the file size, not from the header field.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-header.js","sourceRoot":"","sources":["../src/format-header.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"format-header.js","sourceRoot":"","sources":["../src/format-header.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/time/window.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,cAAc,EAEd,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAcrB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAkC/F;AAiDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,SAAS,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/time/window.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,cAAc,EAEd,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAcrB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAkC/F;AAiDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,SAAS,WAAW,EAAE,CA+JxB;AA6ED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,cAAc,EAC3B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,cAAc,CA6EhB"}
|
package/dist/time/window.js
CHANGED
|
@@ -150,6 +150,40 @@ export function resolveTimeWindow(timeline, index, startSeconds, durationSeconds
|
|
|
150
150
|
throw new RangeError('resolveTimeWindow(): the second argument is not a record index — it has no coverage. ' +
|
|
151
151
|
'Next: pass recording.index, or the index buildRecordIndex(recording) returns.');
|
|
152
152
|
}
|
|
153
|
+
/*
|
|
154
|
+
* And that the two describe the SAME recording.
|
|
155
|
+
*
|
|
156
|
+
* They arrive as separate arguments and are only ever paired by a caller. `buildRecordIndex`
|
|
157
|
+
* resolves to a bare index, so `{ ...recording, index: await buildRecordIndex(recording) }` is the
|
|
158
|
+
* documented way to put one on — which makes holding the wrong one an ordinary slip:
|
|
159
|
+
* `validate-index-reuse.test.ts` lists it as "a viewer holding indices for several open
|
|
160
|
+
* recordings, a helper that caches one per session, a loop that forgets to rebuild", and states
|
|
161
|
+
* the cost: "not a wrong number but a wrong FILE: the segments and gaps of recording A reported
|
|
162
|
+
* as the structure of recording B".
|
|
163
|
+
*
|
|
164
|
+
* `validateRecording` refuses a mismatched index. Every READ went through here and did not: a
|
|
165
|
+
* continuous eight-record file carrying a gapped file's index returned records 0..3 for a window
|
|
166
|
+
* over the whole recording — half the data missing, silently — and `[]` for a window inside the
|
|
167
|
+
* other file's gap, which reads as a hole in a file that has none.
|
|
168
|
+
*
|
|
169
|
+
* A complete index's last segment ends at the recording's span, by construction, so the two
|
|
170
|
+
* numbers disagreeing is the contradiction. The record counts are compared first because they are
|
|
171
|
+
* the cheaper test and the commoner mistake; the span is what catches two files of the same
|
|
172
|
+
* length. A file with no records has no segments and is left to the branch below.
|
|
173
|
+
*/
|
|
174
|
+
if (index.recordCount !== timeline.recordCount) {
|
|
175
|
+
throw new RangeError(`resolveTimeWindow(): the index counts ${index.recordCount} records and the timeline ` +
|
|
176
|
+
`${timeline.recordCount}, so they were built from different files. Next: pass the index ` +
|
|
177
|
+
'this recording was scanned with — buildRecordIndex(recording) returns it.');
|
|
178
|
+
}
|
|
179
|
+
const lastSegment = index.segments?.[index.segments.length - 1];
|
|
180
|
+
if (lastSegment !== undefined && lastSegment.endTicks !== timeline.spanTicks) {
|
|
181
|
+
throw new RangeError(`resolveTimeWindow(): the index describes a recording spanning ${lastSegment.endTicks} ticks ` +
|
|
182
|
+
`and the timeline one spanning ${timeline.spanTicks}, so they were built from different ` +
|
|
183
|
+
"files. Reading through the wrong one reports another recording's gaps as this one's, " +
|
|
184
|
+
'which is data missing rather than data wrong. Next: pass the index this recording was ' +
|
|
185
|
+
'scanned with — buildRecordIndex(recording) returns it.');
|
|
186
|
+
}
|
|
153
187
|
const recordCount = timeline.recordCount;
|
|
154
188
|
if (recordCount <= 0)
|
|
155
189
|
return NO_RANGES;
|
package/dist/time/window.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/time/window.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/time/window.ts"],"names":[],"mappings":"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"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,36 @@ 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.6.206
|
|
10
|
+
|
|
11
|
+
- **Fixed** `formatHeader` telling a reader which way an EDF+D file's records fail to run end to
|
|
12
|
+
end. Printing what the records COVER rather than a duration is right — the span lives in the
|
|
13
|
+
timekeeping TALs and a header cannot see it — but the two notes under it said "the gaps between
|
|
14
|
+
them are not in it" and "where the gaps are", and a header cannot know that either.
|
|
15
|
+
- An EDF+D file's records may leave gaps, and they may OVERLAP. A file with overlaps covers MORE time
|
|
16
|
+
than it spans, so the note told a reader the recording reaches further than the printed number when
|
|
17
|
+
it reaches less far: six seconds covered against a span of three and a half, printed as a floor.
|
|
18
|
+
- 0.3.3 stated the partition — "a gap is time no record covers; an overlap is one instant two records
|
|
19
|
+
both claim" — and 0.3.33, 0.3.41 and 0.3.59 each applied it to one site. This is the fifth, and it
|
|
20
|
+
is the first thing `edfcore header` prints.
|
|
21
|
+
|
|
22
|
+
## 0.6.205
|
|
23
|
+
|
|
24
|
+
- **Fixed** a recording reading through another recording's index. The timeline and the index reach
|
|
25
|
+
`resolveTimeWindow` as separate arguments and are only ever paired by a caller —
|
|
26
|
+
`buildRecordIndex` resolves to a bare index, so attaching one is a spread — and nothing checked
|
|
27
|
+
that the two came from the same file.
|
|
28
|
+
- A continuous eight-record file carrying a gapped file's index returned records 0..3 for a window
|
|
29
|
+
over the whole recording: half the data missing, silently. A window inside the other file's gap
|
|
30
|
+
came back `[]`, which reads as a hole in a file that has none.
|
|
31
|
+
- `validateRecording` has refused a mismatched index all along, and
|
|
32
|
+
`validate-index-reuse.test.ts` states the cost — "not a wrong number but a wrong FILE: the segments
|
|
33
|
+
and gaps of recording A reported as the structure of recording B". Every read went through this
|
|
34
|
+
call and did not.
|
|
35
|
+
- The record counts are compared first, and the span second, because two files of the same length are
|
|
36
|
+
the case a count cannot catch: a complete index's last segment ends at the recording's span, by
|
|
37
|
+
construction. Verified against every fixture and corpus file in the suite.
|
|
38
|
+
|
|
9
39
|
## 0.6.204
|
|
10
40
|
|
|
11
41
|
- **Fixed** `decodeAnnotations` taking `startOffsetTicks` or `originTicks` in the wrong unit. They
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
package/src/format-header.ts
CHANGED
|
@@ -201,8 +201,20 @@ export function formatHeader(header: EdfHeader, options?: FormatHeaderOptions):
|
|
|
201
201
|
// recording that spans 3604 s. Someone pasting that into a bug report says "a 4-second file".
|
|
202
202
|
//
|
|
203
203
|
// A header alone cannot know the span: it is the last record's onset minus the first's, and
|
|
204
|
-
// those live in the timekeeping TALs. What a header does know is that this file claims
|
|
205
|
-
//
|
|
204
|
+
// those live in the timekeeping TALs. What a header does know is that this file claims its
|
|
205
|
+
// records do not run end to end, so the label says what the number is and the next line says
|
|
206
|
+
// where the span comes from.
|
|
207
|
+
//
|
|
208
|
+
// WHICH WAY they fail to run end to end is the part a header cannot know either, and the two
|
|
209
|
+
// notes below asserted one of them. `EDF+D` means discontinuous; the records may leave gaps, and
|
|
210
|
+
// they may also OVERLAP — an overlap is one instant two records both claim, and a file with one
|
|
211
|
+
// covers MORE time than it spans. "the gaps between them are not in it" told a reader the
|
|
212
|
+
// recording reaches further than the number, on a file where it reaches less far: 6 s covered
|
|
213
|
+
// against a span of 3.5 s, printed as though 6 s were a floor.
|
|
214
|
+
//
|
|
215
|
+
// 0.3.3 stated the partition — "a gap is time no record covers; an overlap is one instant two
|
|
216
|
+
// records both claim" — and 0.3.33, 0.3.41 and 0.3.59 applied it to a site each. This is the
|
|
217
|
+
// fifth, and the first line of `edfcore header`.
|
|
206
218
|
const discontinuous = header.continuity === 'discontinuous';
|
|
207
219
|
const label = discontinuous ? 'covered ' : 'duration ';
|
|
208
220
|
lines.push(
|
|
@@ -210,8 +222,9 @@ export function formatHeader(header: EdfHeader, options?: FormatHeaderOptions):
|
|
|
210
222
|
`(${header.recordCount} × ${header.recordDurationSeconds} s)`,
|
|
211
223
|
);
|
|
212
224
|
if (discontinuous) {
|
|
213
|
-
lines.push(' what the records cover
|
|
214
|
-
lines.push('
|
|
225
|
+
lines.push(' what the records cover, which on this file is not the span: its');
|
|
226
|
+
lines.push(' records may leave gaps between them, and may overlap each other');
|
|
227
|
+
lines.push(' buildRecordIndex(recording) reports the span and which it is');
|
|
215
228
|
}
|
|
216
229
|
if (header.recordCountSource === 'sourceByteLength') {
|
|
217
230
|
// Worth saying out loud: the count came from the file size, not from the header field.
|
package/src/time/window.ts
CHANGED
|
@@ -183,6 +183,44 @@ export function resolveTimeWindow(
|
|
|
183
183
|
'Next: pass recording.index, or the index buildRecordIndex(recording) returns.',
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
|
+
/*
|
|
187
|
+
* And that the two describe the SAME recording.
|
|
188
|
+
*
|
|
189
|
+
* They arrive as separate arguments and are only ever paired by a caller. `buildRecordIndex`
|
|
190
|
+
* resolves to a bare index, so `{ ...recording, index: await buildRecordIndex(recording) }` is the
|
|
191
|
+
* documented way to put one on — which makes holding the wrong one an ordinary slip:
|
|
192
|
+
* `validate-index-reuse.test.ts` lists it as "a viewer holding indices for several open
|
|
193
|
+
* recordings, a helper that caches one per session, a loop that forgets to rebuild", and states
|
|
194
|
+
* the cost: "not a wrong number but a wrong FILE: the segments and gaps of recording A reported
|
|
195
|
+
* as the structure of recording B".
|
|
196
|
+
*
|
|
197
|
+
* `validateRecording` refuses a mismatched index. Every READ went through here and did not: a
|
|
198
|
+
* continuous eight-record file carrying a gapped file's index returned records 0..3 for a window
|
|
199
|
+
* over the whole recording — half the data missing, silently — and `[]` for a window inside the
|
|
200
|
+
* other file's gap, which reads as a hole in a file that has none.
|
|
201
|
+
*
|
|
202
|
+
* A complete index's last segment ends at the recording's span, by construction, so the two
|
|
203
|
+
* numbers disagreeing is the contradiction. The record counts are compared first because they are
|
|
204
|
+
* the cheaper test and the commoner mistake; the span is what catches two files of the same
|
|
205
|
+
* length. A file with no records has no segments and is left to the branch below.
|
|
206
|
+
*/
|
|
207
|
+
if (index.recordCount !== timeline.recordCount) {
|
|
208
|
+
throw new RangeError(
|
|
209
|
+
`resolveTimeWindow(): the index counts ${index.recordCount} records and the timeline ` +
|
|
210
|
+
`${timeline.recordCount}, so they were built from different files. Next: pass the index ` +
|
|
211
|
+
'this recording was scanned with — buildRecordIndex(recording) returns it.',
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
const lastSegment = index.segments?.[index.segments.length - 1];
|
|
215
|
+
if (lastSegment !== undefined && lastSegment.endTicks !== timeline.spanTicks) {
|
|
216
|
+
throw new RangeError(
|
|
217
|
+
`resolveTimeWindow(): the index describes a recording spanning ${lastSegment.endTicks} ticks ` +
|
|
218
|
+
`and the timeline one spanning ${timeline.spanTicks}, so they were built from different ` +
|
|
219
|
+
"files. Reading through the wrong one reports another recording's gaps as this one's, " +
|
|
220
|
+
'which is data missing rather than data wrong. Next: pass the index this recording was ' +
|
|
221
|
+
'scanned with — buildRecordIndex(recording) returns it.',
|
|
222
|
+
);
|
|
223
|
+
}
|
|
186
224
|
const recordCount = timeline.recordCount;
|
|
187
225
|
if (recordCount <= 0) return NO_RANGES;
|
|
188
226
|
|