edfcore 0.6.206 → 0.6.208
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 +29 -4
- package/dist/annotations-query.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +22 -0
- package/dist/node.js.map +1 -1
- package/docs/CHANGELOG.md +26 -0
- package/package.json +1 -1
- package/src/annotations-query.ts +31 -4
- package/src/constants.ts +1 -1
- package/src/node.ts +26 -0
|
@@ -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;
|
|
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,CAwD1B;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,CAU1B"}
|
|
@@ -35,11 +35,36 @@ import { describeValue } from './text/describe.js';
|
|
|
35
35
|
* 0.6.107).
|
|
36
36
|
*/
|
|
37
37
|
function assertAnnotations(annotations, call) {
|
|
38
|
-
if (Array.isArray(annotations))
|
|
38
|
+
if (!Array.isArray(annotations)) {
|
|
39
|
+
throw new RangeError(`${call}(): the annotations are ${describeValue(annotations)}, not an array. Next: pass the ` +
|
|
40
|
+
'`annotations` field of what readAnnotations(recording, records) resolved to, which is a ' +
|
|
41
|
+
'result object rather than the list itself.');
|
|
42
|
+
}
|
|
43
|
+
/*
|
|
44
|
+
* And the ELEMENTS, which being an array says nothing about.
|
|
45
|
+
*
|
|
46
|
+
* The three printers closed this one at a time — `formatDiagnostics` in 0.6.160,
|
|
47
|
+
* `summarizeDiagnostics` in 0.6.168, `formatAnnotations` in 0.6.185 — and these four QUERIES share
|
|
48
|
+
* a guard that still stopped at `Array.isArray`. Three of the four then answered:
|
|
49
|
+
* `filterAnnotationsByText` and `annotationsAt` returned `[]`, which means "no event matches" said
|
|
50
|
+
* of a list holding no events at all, and `countAnnotationsByText` returned one row counting
|
|
51
|
+
* `undefined`. Only `filterAnnotationsByTime` failed, with V8's `Cannot mix BigInt and other
|
|
52
|
+
* types` out of the tick comparison.
|
|
53
|
+
*
|
|
54
|
+
* `header.diagnostics` and `timeline.diagnostics` are the lists that get passed: they are the
|
|
55
|
+
* other arrays a reader holds after opening a file, and the printers for both sit beside these
|
|
56
|
+
* four in the barrel.
|
|
57
|
+
*
|
|
58
|
+
* The onset is the field to test — every one of these four reads it, and it is the one an
|
|
59
|
+
* annotation cannot be without.
|
|
60
|
+
*/
|
|
61
|
+
const first = annotations[0];
|
|
62
|
+
if (annotations.length === 0 || typeof first?.onsetTicksFromFirstRecord === 'bigint')
|
|
39
63
|
return;
|
|
40
|
-
throw new RangeError(`${call}(): the
|
|
41
|
-
'
|
|
42
|
-
'
|
|
64
|
+
throw new RangeError(`${call}(): the value at 0 carries no onset, so this is not a list of annotations — and three ` +
|
|
65
|
+
'of these four calls answer with a list, so a wrong one reads as a recording with nothing in ' +
|
|
66
|
+
'it. Next: pass the `annotations` field of what readAnnotations(recording, records) resolved ' +
|
|
67
|
+
'to, or print a list of diagnostics with formatDiagnostics().');
|
|
43
68
|
}
|
|
44
69
|
/**
|
|
45
70
|
* The annotations that overlap a time window, in the recording's own timebase.
|
|
@@ -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,KAAK,CAAC,OAAO,CAAC,WAAW,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.208";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,YAAY,CAAC;AAElE;;;;;;GAMG;AACH,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CACF,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,CA2F/F;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,YAAY,CAAC;AAElE;;;;;;GAMG;AACH,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CACF,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,CA2F/F;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmF1E"}
|
package/dist/node.js
CHANGED
|
@@ -168,6 +168,28 @@ export async function fileSource(path) {
|
|
|
168
168
|
'string, or byteSource(bytes) for a file you have already read into memory — a Uint8Array ' +
|
|
169
169
|
'here would be opened as the bytes of a filename.', { offset: 0, requestedLength: 0 });
|
|
170
170
|
}
|
|
171
|
+
/*
|
|
172
|
+
* And a URL that names something other than a file on disk.
|
|
173
|
+
*
|
|
174
|
+
* A URL OBJECT is an accepted argument — the check above says so — and `fs.open` takes one only
|
|
175
|
+
* when its scheme is `file:`. Anything else was Node's own `TypeError: The URL must be of scheme
|
|
176
|
+
* file`: no `Next:` clause, not an `EdfSourceError`, so `isEdfError` was false, and nothing about
|
|
177
|
+
* the adapter that does read an address. A string spelled `https://…` fared no better: it became a
|
|
178
|
+
* relative filename and came back as `ENOENT`, naming a path nobody meant.
|
|
179
|
+
*
|
|
180
|
+
* `http://` is the mistake this argument invites, because `httpSource` is the sibling one subpath
|
|
181
|
+
* over and both take "where the file is". 0.6.184 made exactly this courtesy in the other
|
|
182
|
+
* direction — `httpSource` refuses a `file:` address and names `fileSource` — and left this side
|
|
183
|
+
* of the pair saying nothing.
|
|
184
|
+
*/
|
|
185
|
+
const scheme = typeof path === 'string'
|
|
186
|
+
? /^([a-z][a-z0-9+.-]*):\/\//i.exec(path)?.[1]?.toLowerCase()
|
|
187
|
+
: path.protocol?.replace(':', '');
|
|
188
|
+
if (scheme !== undefined && scheme !== 'file') {
|
|
189
|
+
throw new EdfSourceError(`fileSource() reads a file on disk, and ${JSON.stringify(String(path))} is a ${scheme} ` +
|
|
190
|
+
'address. Next: use httpSource(url) from "edfcore" for one served over HTTP, blobSource(file) ' +
|
|
191
|
+
'for one a browser handed you, or pass the filesystem path with no scheme on it.', { offset: 0, requestedLength: 0 });
|
|
192
|
+
}
|
|
171
193
|
const handle = await fs.open(path, 'r');
|
|
172
194
|
try {
|
|
173
195
|
const stats = await handle.stat();
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,32 @@ 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.208
|
|
10
|
+
|
|
11
|
+
- **Fixed** the four annotation queries answering over an array of something else. Their shared guard
|
|
12
|
+
stopped at `Array.isArray`, and being an array says nothing about what is in it.
|
|
13
|
+
- Three of the four then ANSWERED. `filterAnnotationsByText` and `annotationsAt` returned `[]` —
|
|
14
|
+
"no event matches", said of a list holding no events at all — and `countAnnotationsByText` returned
|
|
15
|
+
one row counting `undefined`. Only `filterAnnotationsByTime` failed, with V8's `Cannot mix BigInt
|
|
16
|
+
and other types` out of the tick comparison.
|
|
17
|
+
- `header.diagnostics` and `timeline.diagnostics` are the lists that get passed: the other arrays a
|
|
18
|
+
reader holds after opening a file, whose printers sit beside these four in the barrel.
|
|
19
|
+
- The three printers closed this one at a time — 0.6.160, 0.6.168, 0.6.185 — each checking the field
|
|
20
|
+
its own rows must carry. These four share one guard, and the field is the onset.
|
|
21
|
+
|
|
22
|
+
## 0.6.207
|
|
23
|
+
|
|
24
|
+
- **Fixed** `fileSource` handing a non-file URL to `fs.open`. A URL object is an accepted argument —
|
|
25
|
+
its own guard says so — and `fs.open` takes one only when the scheme is `file:`, so anything else
|
|
26
|
+
came back as Node's `TypeError: The URL must be of scheme file`: no `Next:` clause, not an
|
|
27
|
+
`EdfSourceError`, so `isEdfError` was false. A string spelled `https://…` became a relative
|
|
28
|
+
filename and came back as `ENOENT`, naming a path nobody meant.
|
|
29
|
+
- `http://` is the mistake this argument invites, since `httpSource` is the sibling one subpath over
|
|
30
|
+
and both take "where the file is". 0.6.184 made exactly this courtesy in the other direction —
|
|
31
|
+
`httpSource` refuses a `file:` address and names `fileSource` — and left this side saying nothing.
|
|
32
|
+
- A colon with no `//` after it is a path, not a scheme, so a Windows drive letter still reaches the
|
|
33
|
+
syscall.
|
|
34
|
+
|
|
9
35
|
## 0.6.206
|
|
10
36
|
|
|
11
37
|
- **Fixed** `formatHeader` telling a reader which way an EDF+D file's records fail to run end to
|
package/package.json
CHANGED
package/src/annotations-query.ts
CHANGED
|
@@ -38,11 +38,38 @@ import type { EdfAnnotation, EdfAnnotationWindow } from './types.js';
|
|
|
38
38
|
* 0.6.107).
|
|
39
39
|
*/
|
|
40
40
|
function assertAnnotations(annotations: readonly EdfAnnotation[], call: string): void {
|
|
41
|
-
if (Array.isArray(annotations))
|
|
41
|
+
if (!Array.isArray(annotations)) {
|
|
42
|
+
throw new RangeError(
|
|
43
|
+
`${call}(): the annotations are ${describeValue(annotations)}, not an array. Next: pass the ` +
|
|
44
|
+
'`annotations` field of what readAnnotations(recording, records) resolved to, which is a ' +
|
|
45
|
+
'result object rather than the list itself.',
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
/*
|
|
49
|
+
* And the ELEMENTS, which being an array says nothing about.
|
|
50
|
+
*
|
|
51
|
+
* The three printers closed this one at a time — `formatDiagnostics` in 0.6.160,
|
|
52
|
+
* `summarizeDiagnostics` in 0.6.168, `formatAnnotations` in 0.6.185 — and these four QUERIES share
|
|
53
|
+
* a guard that still stopped at `Array.isArray`. Three of the four then answered:
|
|
54
|
+
* `filterAnnotationsByText` and `annotationsAt` returned `[]`, which means "no event matches" said
|
|
55
|
+
* of a list holding no events at all, and `countAnnotationsByText` returned one row counting
|
|
56
|
+
* `undefined`. Only `filterAnnotationsByTime` failed, with V8's `Cannot mix BigInt and other
|
|
57
|
+
* types` out of the tick comparison.
|
|
58
|
+
*
|
|
59
|
+
* `header.diagnostics` and `timeline.diagnostics` are the lists that get passed: they are the
|
|
60
|
+
* other arrays a reader holds after opening a file, and the printers for both sit beside these
|
|
61
|
+
* four in the barrel.
|
|
62
|
+
*
|
|
63
|
+
* The onset is the field to test — every one of these four reads it, and it is the one an
|
|
64
|
+
* annotation cannot be without.
|
|
65
|
+
*/
|
|
66
|
+
const first = annotations[0] as { onsetTicksFromFirstRecord?: unknown } | undefined;
|
|
67
|
+
if (annotations.length === 0 || typeof first?.onsetTicksFromFirstRecord === 'bigint') return;
|
|
42
68
|
throw new RangeError(
|
|
43
|
-
`${call}(): the
|
|
44
|
-
'
|
|
45
|
-
'
|
|
69
|
+
`${call}(): the value at 0 carries no onset, so this is not a list of annotations — and three ` +
|
|
70
|
+
'of these four calls answer with a list, so a wrong one reads as a recording with nothing in ' +
|
|
71
|
+
'it. Next: pass the `annotations` field of what readAnnotations(recording, records) resolved ' +
|
|
72
|
+
'to, or print a list of diagnostics with formatDiagnostics().',
|
|
46
73
|
);
|
|
47
74
|
}
|
|
48
75
|
|
package/src/constants.ts
CHANGED
package/src/node.ts
CHANGED
|
@@ -217,6 +217,32 @@ export async function fileSource(path: string): Promise<ClosableByteSource> {
|
|
|
217
217
|
{ offset: 0, requestedLength: 0 },
|
|
218
218
|
);
|
|
219
219
|
}
|
|
220
|
+
/*
|
|
221
|
+
* And a URL that names something other than a file on disk.
|
|
222
|
+
*
|
|
223
|
+
* A URL OBJECT is an accepted argument — the check above says so — and `fs.open` takes one only
|
|
224
|
+
* when its scheme is `file:`. Anything else was Node's own `TypeError: The URL must be of scheme
|
|
225
|
+
* file`: no `Next:` clause, not an `EdfSourceError`, so `isEdfError` was false, and nothing about
|
|
226
|
+
* the adapter that does read an address. A string spelled `https://…` fared no better: it became a
|
|
227
|
+
* relative filename and came back as `ENOENT`, naming a path nobody meant.
|
|
228
|
+
*
|
|
229
|
+
* `http://` is the mistake this argument invites, because `httpSource` is the sibling one subpath
|
|
230
|
+
* over and both take "where the file is". 0.6.184 made exactly this courtesy in the other
|
|
231
|
+
* direction — `httpSource` refuses a `file:` address and names `fileSource` — and left this side
|
|
232
|
+
* of the pair saying nothing.
|
|
233
|
+
*/
|
|
234
|
+
const scheme =
|
|
235
|
+
typeof path === 'string'
|
|
236
|
+
? /^([a-z][a-z0-9+.-]*):\/\//i.exec(path)?.[1]?.toLowerCase()
|
|
237
|
+
: ((path as { protocol?: unknown }).protocol as string | undefined)?.replace(':', '');
|
|
238
|
+
if (scheme !== undefined && scheme !== 'file') {
|
|
239
|
+
throw new EdfSourceError(
|
|
240
|
+
`fileSource() reads a file on disk, and ${JSON.stringify(String(path))} is a ${scheme} ` +
|
|
241
|
+
'address. Next: use httpSource(url) from "edfcore" for one served over HTTP, blobSource(file) ' +
|
|
242
|
+
'for one a browser handed you, or pass the filesystem path with no scheme on it.',
|
|
243
|
+
{ offset: 0, requestedLength: 0 },
|
|
244
|
+
);
|
|
245
|
+
}
|
|
220
246
|
const handle = await fs.open(path, 'r');
|
|
221
247
|
try {
|
|
222
248
|
const stats = await handle.stat();
|