edfcore 0.6.220 → 0.6.222
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/io/read.d.ts.map +1 -1
- package/dist/io/read.js +29 -2
- package/dist/io/read.js.map +1 -1
- package/dist/io/source.d.ts.map +1 -1
- package/dist/io/source.js +23 -0
- package/dist/io/source.js.map +1 -1
- package/docs/CHANGELOG.md +39 -0
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/io/read.ts +29 -2
- package/src/io/source.ts +23 -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.222";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/dist/io/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBhG;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAuC9F;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBhG;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAuC9F;AA4ID;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CA0CrB"}
|
package/dist/io/read.js
CHANGED
|
@@ -151,9 +151,36 @@ function assertRecordRange(header, records) {
|
|
|
151
151
|
const countValid = Number.isSafeInteger(range.count) && range.count >= 0;
|
|
152
152
|
if (startValid && countValid && range.start + range.count <= header.recordCount)
|
|
153
153
|
return;
|
|
154
|
+
/*
|
|
155
|
+
* A CLAMP is advice you can only follow when there are two numbers to clamp.
|
|
156
|
+
*
|
|
157
|
+
* The two branches above are each documented as a fix for this sentence, and both name the same
|
|
158
|
+
* half of it: "advice to clamp it against `header.recordCount`, which no clamp can satisfy". Each
|
|
159
|
+
* carved out one shape. Every other range with no numbers in it still got the clamp — the
|
|
160
|
+
* `records ?? {}` stand-in at the top of this guard, which exists because `undefined` and `null`
|
|
161
|
+
* are "the likeliest two"; a half-built `{ start: 0 }`; a range whose fields arrived as strings
|
|
162
|
+
* from JSON.
|
|
163
|
+
*
|
|
164
|
+
* The belief behind writing one is the part no message addressed. `readRecords` refuses a missing
|
|
165
|
+
* SELECTION with "pass { records, signalIndices }", and 0.6.88 refuses one carrying
|
|
166
|
+
* `startSeconds` instead, so a selection holding only `signalIndices` passes both guards and
|
|
167
|
+
* arrives here with nothing — written that way because the range reads as optional. It is not,
|
|
168
|
+
* deliberately, and `readAnnotations` gives the reason: a full-file scan "is a legitimate thing to
|
|
169
|
+
* want and an expensive thing to do by accident, so it is always visible in the caller's source".
|
|
170
|
+
* So the advice for a range with no numbers is the range itself, counted for this file.
|
|
171
|
+
*
|
|
172
|
+
* Only the advice differs. The sentence naming the range and the file's record count is what
|
|
173
|
+
* every caller of this guard is pinned on, and it is true of both.
|
|
174
|
+
*/
|
|
175
|
+
const clampable = typeof range.start === 'number' && typeof range.count === 'number';
|
|
154
176
|
throw new EdfRangeError(`records ${describeRecordRange(range)} is not inside the ` +
|
|
155
|
-
`${header.recordCount} data records this file contains. Next:
|
|
156
|
-
|
|
177
|
+
`${header.recordCount} data records this file contains. Next: ` +
|
|
178
|
+
(clampable
|
|
179
|
+
? 'clamp the range against header.recordCount, or call index.locate(seconds) to find a ' +
|
|
180
|
+
'record index for a time.'
|
|
181
|
+
: 'pass a start and a count — there is no default, so a whole-file read is written out ' +
|
|
182
|
+
`rather than implied, and here that is start 0, count ${header.recordCount}. Or call ` +
|
|
183
|
+
'readWindow(), which takes seconds and resolves the records itself.'), { requested: range, available });
|
|
157
184
|
}
|
|
158
185
|
/**
|
|
159
186
|
* Refused BEFORE the allocation, never during it.
|
package/dist/io/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"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"}
|
package/dist/io/source.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/io/source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC;AAMvB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAYhG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA8BxF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAG1D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BxD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAmCnE;
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/io/source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC;AAMvB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAYhG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA8BxF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAG1D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BxD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAmCnE;AA0ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAyC9E"}
|
package/dist/io/source.js
CHANGED
|
@@ -207,6 +207,29 @@ function adapterFor(source) {
|
|
|
207
207
|
typeof candidate.arrayBuffer === 'function') {
|
|
208
208
|
return 'that looks like a Blob or a File — use blobSource(file)';
|
|
209
209
|
}
|
|
210
|
+
/*
|
|
211
|
+
* The RECORDING, which carries the source on `.source` rather than being it.
|
|
212
|
+
*
|
|
213
|
+
* No adapter turns one into a `ByteSource` — it already holds the one it was opened from — so
|
|
214
|
+
* this reader is the only one the generic list has nothing for: four adapters for bytes, a path,
|
|
215
|
+
* a File and a URL, to someone holding none of them and an open file instead.
|
|
216
|
+
*
|
|
217
|
+
* `inspectEdf(source)` is where they meet it. It is the one call in the convenience layer whose
|
|
218
|
+
* first argument is a source, and it sits in the barrel beside `readWindow`, `readRecords`,
|
|
219
|
+
* `readAnnotations`, `readEnvelope` and `readTriggers` — every one of which takes the recording.
|
|
220
|
+
* `readRecordBytes(recording.source, recording.header, records)` is the other route: the idiom
|
|
221
|
+
* `physical-values.md` and `reading-signals.md` both write out, with one field left off the
|
|
222
|
+
* argument that needs it and kept on the one beside it.
|
|
223
|
+
*
|
|
224
|
+
* `assertRecording` has named the mirror of this since 0.6.90 — "that is a header, not a
|
|
225
|
+
* recording — a recording also carries the source, the timeline and the index" — because every
|
|
226
|
+
* primitive takes the header and the shape is easy to reach for. This is that confusion pointed
|
|
227
|
+
* the other way, and it is the one direction the package answered with a list.
|
|
228
|
+
*/
|
|
229
|
+
const opened = source;
|
|
230
|
+
if (typeof opened?.source?.read === 'function' && typeof opened.header === 'object') {
|
|
231
|
+
return 'that is a recording — it carries the source on .source rather than being one, so pass recording.source';
|
|
232
|
+
}
|
|
210
233
|
return ('use byteSource(bytes) for bytes in memory, fileSource(path) from "edfcore/node" for a file, ' +
|
|
211
234
|
'blobSource(file) for a File, or httpSource(url) for a URL');
|
|
212
235
|
}
|
package/dist/io/source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/io/source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/io/source.ts"],"names":[],"mappings":"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"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,45 @@ 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.222
|
|
10
|
+
|
|
11
|
+
- **Fixed** the source guard offering four adapters to a caller holding an open recording.
|
|
12
|
+
`assertByteSource` answers a wrong first argument with the adapter that would have fixed it —
|
|
13
|
+
`byteSource(bytes)` for bytes, `fileSource(path)` for a path, `blobSource(file)` for a File — and
|
|
14
|
+
falls back to listing all four. A recording is the one shape no adapter applies to: it already
|
|
15
|
+
holds the source it was opened from, on `.source`. The reader least in need of one got four.
|
|
16
|
+
- `inspectEdf(source)` is where they meet it. It is the one call in the convenience layer whose
|
|
17
|
+
first argument is a source, and it sits in the barrel beside `readWindow`, `readRecords`,
|
|
18
|
+
`readAnnotations`, `readEnvelope` and `readTriggers` — every one of which takes the recording.
|
|
19
|
+
`readRecordBytes(recording.source, recording.header, records)` is the other route, reached by
|
|
20
|
+
leaving `.source` off the argument that needs it while keeping `.header` on the one beside it.
|
|
21
|
+
- 0.6.90 named the mirror of this for `assertRecording` — "that is a header, not a recording" —
|
|
22
|
+
because every primitive takes the header. This is the same confusion pointed the other way, and
|
|
23
|
+
it was the direction the package answered with a list.
|
|
24
|
+
- Only the `Next:` clause changes. It stays an `EdfSourceError` carrying `offset` and
|
|
25
|
+
`requestedLength`, and every other wrong argument keeps the adapter it always had.
|
|
26
|
+
|
|
27
|
+
## 0.6.221
|
|
28
|
+
|
|
29
|
+
- **Fixed** the record-range refusal advising a clamp to a caller who passed no numbers to clamp.
|
|
30
|
+
`assertRecordRange` sits behind `readRecords`, `readAnnotations` and `readRecordBytes`, and its
|
|
31
|
+
two shape branches are each documented as a fix for the sentence beneath them, both naming the
|
|
32
|
+
same half of it: advice "to clamp it against `header.recordCount`, which no clamp can satisfy".
|
|
33
|
+
A chunk got its own sentence in 0.4.443 and an array of ranges one in 0.6.212 — one shape each.
|
|
34
|
+
- Every other range with no numbers in it kept the clamp: the `records ?? {}` stand-in at the top
|
|
35
|
+
of the guard, a half-built `{ start: 0 }`, a range whose fields arrived from JSON as strings.
|
|
36
|
+
And a caller need not pass any of those literally — `readRecords` refuses a missing selection
|
|
37
|
+
with "pass { records, signalIndices }", 0.6.88 refuses one carrying `startSeconds` instead, and
|
|
38
|
+
a selection holding only `signalIndices` passes both guards and arrives here with nothing.
|
|
39
|
+
- It is written that way because the range reads as optional. It is not, deliberately, and
|
|
40
|
+
`readAnnotations` gives the reason: a full-file scan "is a legitimate thing to want and an
|
|
41
|
+
expensive thing to do by accident, so it is always visible in the caller's source". The clause
|
|
42
|
+
now asks for the two numbers and spells that range out, counted for the file in hand.
|
|
43
|
+
- Only the advice changed. A range that is two numbers and lands outside the file still gets the
|
|
44
|
+
clamp, the sentence naming the range and the record count is unchanged, and the absent range and
|
|
45
|
+
the half-built one still answer identically, as `missing-record-range.test.ts` has required
|
|
46
|
+
since 0.4.443.
|
|
47
|
+
|
|
9
48
|
## 0.6.220
|
|
10
49
|
|
|
11
50
|
- **Fixed** `readEnvelope` offering the whole plot's pixel width for a count that is per run.
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
package/src/io/read.ts
CHANGED
|
@@ -165,10 +165,37 @@ function assertRecordRange(header: EdfHeader, records: RecordRange): void {
|
|
|
165
165
|
const startValid = Number.isSafeInteger(range.start) && range.start >= 0;
|
|
166
166
|
const countValid = Number.isSafeInteger(range.count) && range.count >= 0;
|
|
167
167
|
if (startValid && countValid && range.start + range.count <= header.recordCount) return;
|
|
168
|
+
/*
|
|
169
|
+
* A CLAMP is advice you can only follow when there are two numbers to clamp.
|
|
170
|
+
*
|
|
171
|
+
* The two branches above are each documented as a fix for this sentence, and both name the same
|
|
172
|
+
* half of it: "advice to clamp it against `header.recordCount`, which no clamp can satisfy". Each
|
|
173
|
+
* carved out one shape. Every other range with no numbers in it still got the clamp — the
|
|
174
|
+
* `records ?? {}` stand-in at the top of this guard, which exists because `undefined` and `null`
|
|
175
|
+
* are "the likeliest two"; a half-built `{ start: 0 }`; a range whose fields arrived as strings
|
|
176
|
+
* from JSON.
|
|
177
|
+
*
|
|
178
|
+
* The belief behind writing one is the part no message addressed. `readRecords` refuses a missing
|
|
179
|
+
* SELECTION with "pass { records, signalIndices }", and 0.6.88 refuses one carrying
|
|
180
|
+
* `startSeconds` instead, so a selection holding only `signalIndices` passes both guards and
|
|
181
|
+
* arrives here with nothing — written that way because the range reads as optional. It is not,
|
|
182
|
+
* deliberately, and `readAnnotations` gives the reason: a full-file scan "is a legitimate thing to
|
|
183
|
+
* want and an expensive thing to do by accident, so it is always visible in the caller's source".
|
|
184
|
+
* So the advice for a range with no numbers is the range itself, counted for this file.
|
|
185
|
+
*
|
|
186
|
+
* Only the advice differs. The sentence naming the range and the file's record count is what
|
|
187
|
+
* every caller of this guard is pinned on, and it is true of both.
|
|
188
|
+
*/
|
|
189
|
+
const clampable = typeof range.start === 'number' && typeof range.count === 'number';
|
|
168
190
|
throw new EdfRangeError(
|
|
169
191
|
`records ${describeRecordRange(range)} is not inside the ` +
|
|
170
|
-
`${header.recordCount} data records this file contains. Next:
|
|
171
|
-
|
|
192
|
+
`${header.recordCount} data records this file contains. Next: ` +
|
|
193
|
+
(clampable
|
|
194
|
+
? 'clamp the range against header.recordCount, or call index.locate(seconds) to find a ' +
|
|
195
|
+
'record index for a time.'
|
|
196
|
+
: 'pass a start and a count — there is no default, so a whole-file read is written out ' +
|
|
197
|
+
`rather than implied, and here that is start 0, count ${header.recordCount}. Or call ` +
|
|
198
|
+
'readWindow(), which takes seconds and resolves the records itself.'),
|
|
172
199
|
{ requested: range, available },
|
|
173
200
|
);
|
|
174
201
|
}
|
package/src/io/source.ts
CHANGED
|
@@ -242,6 +242,29 @@ function adapterFor(source: unknown): string {
|
|
|
242
242
|
) {
|
|
243
243
|
return 'that looks like a Blob or a File — use blobSource(file)';
|
|
244
244
|
}
|
|
245
|
+
/*
|
|
246
|
+
* The RECORDING, which carries the source on `.source` rather than being it.
|
|
247
|
+
*
|
|
248
|
+
* No adapter turns one into a `ByteSource` — it already holds the one it was opened from — so
|
|
249
|
+
* this reader is the only one the generic list has nothing for: four adapters for bytes, a path,
|
|
250
|
+
* a File and a URL, to someone holding none of them and an open file instead.
|
|
251
|
+
*
|
|
252
|
+
* `inspectEdf(source)` is where they meet it. It is the one call in the convenience layer whose
|
|
253
|
+
* first argument is a source, and it sits in the barrel beside `readWindow`, `readRecords`,
|
|
254
|
+
* `readAnnotations`, `readEnvelope` and `readTriggers` — every one of which takes the recording.
|
|
255
|
+
* `readRecordBytes(recording.source, recording.header, records)` is the other route: the idiom
|
|
256
|
+
* `physical-values.md` and `reading-signals.md` both write out, with one field left off the
|
|
257
|
+
* argument that needs it and kept on the one beside it.
|
|
258
|
+
*
|
|
259
|
+
* `assertRecording` has named the mirror of this since 0.6.90 — "that is a header, not a
|
|
260
|
+
* recording — a recording also carries the source, the timeline and the index" — because every
|
|
261
|
+
* primitive takes the header and the shape is easy to reach for. This is that confusion pointed
|
|
262
|
+
* the other way, and it is the one direction the package answered with a list.
|
|
263
|
+
*/
|
|
264
|
+
const opened = source as { source?: { read?: unknown }; header?: unknown } | null | undefined;
|
|
265
|
+
if (typeof opened?.source?.read === 'function' && typeof opened.header === 'object') {
|
|
266
|
+
return 'that is a recording — it carries the source on .source rather than being one, so pass recording.source';
|
|
267
|
+
}
|
|
245
268
|
return (
|
|
246
269
|
'use byteSource(bytes) for bytes in memory, fileSource(path) from "edfcore/node" for a file, ' +
|
|
247
270
|
'blobSource(file) for a File, or httpSource(url) for a URL'
|