edfcore 0.6.226 → 0.6.227
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/annotations-query.d.ts.map +1 -1
- package/dist/annotations-query.js +38 -2
- package/dist/annotations-query.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/docs/CHANGELOG.md +19 -0
- package/package.json +1 -1
- package/src/annotations-query.ts +40 -2
- package/src/constants.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations-query.d.ts","sourceRoot":"","sources":["../src/annotations-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAmDrE;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,MAAM,EAAE,mBAAmB,GAC1B,SAAS,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"annotations-query.d.ts","sourceRoot":"","sources":["../src/annotations-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAmDrE;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,MAAM,EAAE,mBAAmB,GAC1B,SAAS,aAAa,EAAE,CA6E1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GACnD,SAAS,aAAa,EAAE,CAiB1B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,aAAa,EAAE,GACpC,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,OAAO,EAAE,MAAM,GACd,SAAS,aAAa,EAAE,CA2B1B"}
|
|
@@ -82,8 +82,29 @@ export function filterAnnotationsByTime(annotations, window) {
|
|
|
82
82
|
// Cannot read properties of undefined (reading 'startSeconds')`, naming a field rather than the
|
|
83
83
|
// argument, with no `Next:` clause.
|
|
84
84
|
if (typeof window !== 'object' || window === null) {
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
/*
|
|
86
|
+
* A NUMBER, which is an INSTANT, and the one wrong window whose advice led somewhere worse than
|
|
87
|
+
* where it started.
|
|
88
|
+
*
|
|
89
|
+
* "Pass a window carrying startSeconds and durationSeconds" is followable: a reader holding a
|
|
90
|
+
* cursor position writes `{ startSeconds: t, durationSeconds: 0 }`, because a window over one
|
|
91
|
+
* instant has no length. `annotationsAt`'s own docblock says what that does — the window form
|
|
92
|
+
* "works — a zero-length window — except that `filterAnnotationsByTime` returns nothing for a
|
|
93
|
+
* non-positive duration, so the obvious call returns an empty list at every position" — and it
|
|
94
|
+
* is why that function exists at all. So the advice ended in silence rather than in an error,
|
|
95
|
+
* at the call a viewer makes on every mouse move.
|
|
96
|
+
*
|
|
97
|
+
* The sibling is one export away and takes exactly what was passed. 0.6.88 made this argument
|
|
98
|
+
* for `readWindow` and `readRecords`, the other pair in this package that differ only in the
|
|
99
|
+
* unit they bound by.
|
|
100
|
+
*/
|
|
101
|
+
throw new RangeError(`filterAnnotationsByTime(): the window is ${describeValue(window)}, not an object.` +
|
|
102
|
+
(typeof window === 'number'
|
|
103
|
+
? ' That is an instant, and this call bounds events by an interval — a zero-length one ' +
|
|
104
|
+
'returns nothing, so a cursor position asked for as a window reads as no annotations ' +
|
|
105
|
+
'at every position. Next: call annotationsAt(annotations, seconds), which takes the ' +
|
|
106
|
+
'instant, or pass a window carrying startSeconds and durationSeconds.'
|
|
107
|
+
: ' Next: pass a window carrying startSeconds and durationSeconds.'));
|
|
87
108
|
}
|
|
88
109
|
/*
|
|
89
110
|
* An ARRAY, which is an object and therefore walked straight past the check above.
|
|
@@ -178,6 +199,21 @@ export function countAnnotationsByText(annotations) {
|
|
|
178
199
|
*/
|
|
179
200
|
export function annotationsAt(annotations, seconds) {
|
|
180
201
|
assertAnnotations(annotations, 'annotationsAt');
|
|
202
|
+
/*
|
|
203
|
+
* And the OTHER WAY. `filterAnnotationsByTime` is the neighbour this function's docblock names,
|
|
204
|
+
* the two differ only in whether they bound by an instant or by an interval, and a window here
|
|
205
|
+
* reached `secondsToTicks` — which answered "seconds must be a number of seconds, and was given
|
|
206
|
+
* an object. Next: convert it first". There is no conversion: a window is not a number spelled
|
|
207
|
+
* differently, and the reader was being sent to invent one.
|
|
208
|
+
*/
|
|
209
|
+
const given = seconds;
|
|
210
|
+
if (typeof given === 'object' && given !== null && !Array.isArray(given)) {
|
|
211
|
+
if ('startSeconds' in given || 'durationSeconds' in given) {
|
|
212
|
+
throw new RangeError('annotationsAt(): that is a time window, and this call takes a single instant in seconds. ' +
|
|
213
|
+
'Next: pass window.startSeconds for the instant under a cursor, or call ' +
|
|
214
|
+
'filterAnnotationsByTime(annotations, window), which is the one that takes an interval.');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
181
217
|
const at = secondsToTicks(seconds, 'seconds');
|
|
182
218
|
return Object.freeze(annotations.filter((annotation) => {
|
|
183
219
|
const onset = annotation.onsetTicksFromFirstRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations-query.js","sourceRoot":"","sources":["../src/annotations-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;;;;;;;;GAYG;AACH,SAAS,iBAAiB,CAAC,WAAqC,EAAE,IAAY;IAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,2BAA2B,aAAa,CAAC,WAAW,CAAC,iCAAiC;YAC3F,0FAA0F;YAC1F,4CAA4C,CAC/C,CAAC;IACJ,CAAC;IACD;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAwD,CAAC;IACpF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,EAAE,yBAAyB,KAAK,QAAQ;QAAE,OAAO;IAC7F,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,wFAAwF;QAC7F,8FAA8F;QAC9F,8FAA8F;QAC9F,8DAA8D,CACjE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAqC,EACrC,MAA2B;IAE3B,iBAAiB,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;IAC1D,6FAA6F;IAC7F,8FAA8F;IAC9F,0FAA0F;IAC1F,gGAAgG;IAChG,oCAAoC;IACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAClB,4CAA4C,aAAa,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"annotations-query.js","sourceRoot":"","sources":["../src/annotations-query.ts"],"names":[],"mappings":"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"}
|
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.227";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,25 @@ 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.227
|
|
10
|
+
|
|
11
|
+
- **Fixed** `annotationsAt` and `filterAnnotationsByTime` refusing each other's argument without
|
|
12
|
+
naming each other. They differ in one thing — an instant or an interval — and `annotationsAt`
|
|
13
|
+
exists because of it: the window form "works — a zero-length window — except that
|
|
14
|
+
`filterAnnotationsByTime` returns nothing for a non-positive duration, so the obvious call
|
|
15
|
+
returns an empty list at every position".
|
|
16
|
+
- A number where the window belongs was the costly direction, because its advice was followable. A
|
|
17
|
+
reader holding a cursor position, told to "pass a window carrying startSeconds and
|
|
18
|
+
durationSeconds", writes `{ startSeconds: t, durationSeconds: 0 }` — and gets `[]` at every
|
|
19
|
+
position, with no error, at the call a viewer makes on every mouse move. The sibling that takes
|
|
20
|
+
the number is one export away and is now named.
|
|
21
|
+
- A window where the instant belongs reached `secondsToTicks` and was told to "convert it first".
|
|
22
|
+
A window is not a number spelled differently, so there was nothing to convert; it now names
|
|
23
|
+
`window.startSeconds` and `filterAnnotationsByTime`. 0.6.88 made the same argument for
|
|
24
|
+
`readWindow` and `readRecords`, the other pair that differ only in the unit they bound by.
|
|
25
|
+
- Every other wrong window keeps the refusal it had, including the array one that names
|
|
26
|
+
`resolveTimeWindow`, and neither function's answer changes.
|
|
27
|
+
|
|
9
28
|
## 0.6.226
|
|
10
29
|
|
|
11
30
|
- **Fixed** `sampleAt`, `sampleStartTicksOf` and `sampleStartSecondsOf` calling the canonical
|
package/package.json
CHANGED
package/src/annotations-query.ts
CHANGED
|
@@ -92,9 +92,30 @@ export function filterAnnotationsByTime(
|
|
|
92
92
|
// Cannot read properties of undefined (reading 'startSeconds')`, naming a field rather than the
|
|
93
93
|
// argument, with no `Next:` clause.
|
|
94
94
|
if (typeof window !== 'object' || window === null) {
|
|
95
|
+
/*
|
|
96
|
+
* A NUMBER, which is an INSTANT, and the one wrong window whose advice led somewhere worse than
|
|
97
|
+
* where it started.
|
|
98
|
+
*
|
|
99
|
+
* "Pass a window carrying startSeconds and durationSeconds" is followable: a reader holding a
|
|
100
|
+
* cursor position writes `{ startSeconds: t, durationSeconds: 0 }`, because a window over one
|
|
101
|
+
* instant has no length. `annotationsAt`'s own docblock says what that does — the window form
|
|
102
|
+
* "works — a zero-length window — except that `filterAnnotationsByTime` returns nothing for a
|
|
103
|
+
* non-positive duration, so the obvious call returns an empty list at every position" — and it
|
|
104
|
+
* is why that function exists at all. So the advice ended in silence rather than in an error,
|
|
105
|
+
* at the call a viewer makes on every mouse move.
|
|
106
|
+
*
|
|
107
|
+
* The sibling is one export away and takes exactly what was passed. 0.6.88 made this argument
|
|
108
|
+
* for `readWindow` and `readRecords`, the other pair in this package that differ only in the
|
|
109
|
+
* unit they bound by.
|
|
110
|
+
*/
|
|
95
111
|
throw new RangeError(
|
|
96
|
-
`filterAnnotationsByTime(): the window is ${describeValue(window)}, not an object
|
|
97
|
-
|
|
112
|
+
`filterAnnotationsByTime(): the window is ${describeValue(window)}, not an object.` +
|
|
113
|
+
(typeof window === 'number'
|
|
114
|
+
? ' That is an instant, and this call bounds events by an interval — a zero-length one ' +
|
|
115
|
+
'returns nothing, so a cursor position asked for as a window reads as no annotations ' +
|
|
116
|
+
'at every position. Next: call annotationsAt(annotations, seconds), which takes the ' +
|
|
117
|
+
'instant, or pass a window carrying startSeconds and durationSeconds.'
|
|
118
|
+
: ' Next: pass a window carrying startSeconds and durationSeconds.'),
|
|
98
119
|
);
|
|
99
120
|
}
|
|
100
121
|
/*
|
|
@@ -213,6 +234,23 @@ export function annotationsAt(
|
|
|
213
234
|
seconds: number,
|
|
214
235
|
): readonly EdfAnnotation[] {
|
|
215
236
|
assertAnnotations(annotations, 'annotationsAt');
|
|
237
|
+
/*
|
|
238
|
+
* And the OTHER WAY. `filterAnnotationsByTime` is the neighbour this function's docblock names,
|
|
239
|
+
* the two differ only in whether they bound by an instant or by an interval, and a window here
|
|
240
|
+
* reached `secondsToTicks` — which answered "seconds must be a number of seconds, and was given
|
|
241
|
+
* an object. Next: convert it first". There is no conversion: a window is not a number spelled
|
|
242
|
+
* differently, and the reader was being sent to invent one.
|
|
243
|
+
*/
|
|
244
|
+
const given = seconds as { startSeconds?: unknown; durationSeconds?: unknown } | null | undefined;
|
|
245
|
+
if (typeof given === 'object' && given !== null && !Array.isArray(given)) {
|
|
246
|
+
if ('startSeconds' in given || 'durationSeconds' in given) {
|
|
247
|
+
throw new RangeError(
|
|
248
|
+
'annotationsAt(): that is a time window, and this call takes a single instant in seconds. ' +
|
|
249
|
+
'Next: pass window.startSeconds for the instant under a cursor, or call ' +
|
|
250
|
+
'filterAnnotationsByTime(annotations, window), which is the one that takes an interval.',
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
216
254
|
const at = secondsToTicks(seconds, 'seconds');
|
|
217
255
|
return Object.freeze(
|
|
218
256
|
annotations.filter((annotation) => {
|
package/src/constants.ts
CHANGED