edfcore 0.3.17 → 0.3.19
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 +51 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/diagnostics/collector.d.ts +9 -1
- package/dist/diagnostics/collector.d.ts.map +1 -1
- package/dist/diagnostics/collector.js +21 -5
- package/dist/diagnostics/collector.js.map +1 -1
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +12 -0
- package/dist/errors.js.map +1 -1
- package/dist/header/parse.js +6 -6
- package/dist/header/parse.js.map +1 -1
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +14 -1
- package/dist/inspect.js.map +1 -1
- package/dist/tal/annotations.d.ts.map +1 -1
- package/dist/tal/annotations.js +18 -8
- package/dist/tal/annotations.js.map +1 -1
- package/dist/tal/grammar.d.ts.map +1 -1
- package/dist/tal/grammar.js +16 -15
- package/dist/tal/grammar.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/diagnostics/collector.ts +26 -6
- package/src/errors.ts +15 -0
- package/src/header/parse.ts +6 -6
- package/src/inspect.ts +14 -1
- package/src/tal/annotations.ts +20 -9
- package/src/tal/grammar.ts +49 -3
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,57 @@ 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.3.19
|
|
10
|
+
|
|
11
|
+
**Two places where content was dropped under a diagnostic saying it was not.** Both are annotation
|
|
12
|
+
data going missing quietly, which is the failure this package exists to refuse.
|
|
13
|
+
|
|
14
|
+
- **Fixed** a timekeeping TAL carrying a duration AND text being classified as harmless. A writer
|
|
15
|
+
that merges a scored epoch into the timekeeping TAL writes
|
|
16
|
+
`+onset 0x15 30 0x14 Sleep stage W 0x14 0x14 0x00`, and every one of those epochs is dropped.
|
|
17
|
+
edfcore reported **one** diagnostic, naming record 0, blaming the duration field, and ending
|
|
18
|
+
"nothing was lost". Remove the duration from the same file and it correctly emitted six, each
|
|
19
|
+
naming the event it lost — so adding a duration turned six loud reports into one misleading one.
|
|
20
|
+
`timekeepingDefect` returns at the first matching branch and asked about the benign duration
|
|
21
|
+
before the destructive text; the text check now comes first, and a stray duration is mentioned
|
|
22
|
+
inside that same message.
|
|
23
|
+
- 0.2.33 fixed the same swallowing by splitting the once-per-call flag between the two kinds and
|
|
24
|
+
left the check ORDER alone. Its test builds a merged TAL with text and no duration, so the
|
|
25
|
+
combination was never exercised. Both fixtures now live in that file.
|
|
26
|
+
- **Fixed** `TAL_MALFORMED` collapsing nine structurally different defects onto one report.
|
|
27
|
+
Their dispositions are opposites: a 0x15 inside a text run and a missing onset sign KEEP the TAL,
|
|
28
|
+
while a bad onset, an over-long field, an out-of-range onset, a bad duration and an unterminated
|
|
29
|
+
timestamp DISCARD it. Whichever came first in a region won the `detail`, the offset and the raw
|
|
30
|
+
bytes, so a region holding one of each reported *"the text was kept verbatim"* with occurrences 2
|
|
31
|
+
while an annotation had in fact been thrown away — and reversing the two TALs produced the
|
|
32
|
+
mirror-image lie. `TalIssue.detail` promises to state "what was wrong AND what was done about it".
|
|
33
|
+
- The issue log is keyed on the defect KIND rather than the code, from a closed set of twelve. Not
|
|
34
|
+
on the `detail` string: several details interpolate the bytes they found, so keying on those
|
|
35
|
+
would be unbounded — and bounding the per-region issue count is the whole reason the collapsing
|
|
36
|
+
exists. Many occurrences of the same defect still collapse to one entry with a count.
|
|
37
|
+
|
|
38
|
+
## 0.3.18
|
|
39
|
+
|
|
40
|
+
- **Fixed** `inspectEdf` discarding every diagnostic the parse had already found when a fatal check
|
|
41
|
+
stopped it. A three-signal EDF+ file with a degenerate physical range, a degenerate digital range
|
|
42
|
+
and a duplicated label, and no annotations channel, returned exactly ONE entry:
|
|
43
|
+
`EDFPLUS_WITHOUT_ANNOTATION_SIGNAL`. The three real defects were found, recorded, and thrown away
|
|
44
|
+
with the sink.
|
|
45
|
+
- It matters most in this call, because triaging unknown files is the whole job of it — and the
|
|
46
|
+
fatal is often the least informative of the set. None of those three has anything to do with
|
|
47
|
+
annotations, so the reader adds an annotations channel, re-runs, and only then learns the file
|
|
48
|
+
has three more problems. The documented contract said "everything found, including the fatal one
|
|
49
|
+
when parsing failed"; it was one thing.
|
|
50
|
+
- **Added** `EdfFormatError.collected` — the diagnostics already in hand when the fatal was raised,
|
|
51
|
+
in the order they were found, empty when it was raised before any collection existed. A caller
|
|
52
|
+
who catches rather than inspects sees them too.
|
|
53
|
+
- The mechanism is a `fatal()` on `DiagnosticSink`, so a fatal thrown where a sink EXISTS carries
|
|
54
|
+
what the sink has. `fatalError` stays the sinkless version for the paths that genuinely have
|
|
55
|
+
nothing to attach. `sink.report` does the same when a code is always fatal or `strict` is set,
|
|
56
|
+
so both routes are covered rather than the five call sites that happened to be found.
|
|
57
|
+
- The fatal is reported LAST, after what led up to it: it is the reason parsing stopped, and a
|
|
58
|
+
reader going down the list arrives at it in the order the parse did.
|
|
59
|
+
|
|
9
60
|
## 0.3.17
|
|
10
61
|
|
|
11
62
|
**`formatHeader` printed `00:00:00` for a starttime the file never stated.** The module's own
|
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.3.
|
|
112
|
+
export declare const VERSION = "0.3.19";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
|
@@ -55,7 +55,7 @@ export declare function createDiagnostic(init: DiagnosticInit): EdfDiagnostic;
|
|
|
55
55
|
* The one way to turn a diagnostic into the error that carries it. `EdfFormatError` re-derives
|
|
56
56
|
* `field`/`byteOffset`/`signalIndex`/`recordIndex` from the diagnostic, so they are not repeated.
|
|
57
57
|
*/
|
|
58
|
-
export declare function toFormatError(diagnostic: EdfDiagnostic, cause?: unknown): EdfFormatError;
|
|
58
|
+
export declare function toFormatError(diagnostic: EdfDiagnostic, cause?: unknown, collected?: readonly EdfDiagnostic[]): EdfFormatError;
|
|
59
59
|
/**
|
|
60
60
|
* `toFormatError(createDiagnostic(init))`, for the paths that throw without a sink — an always
|
|
61
61
|
* fatal code detected before one exists, or where the type system needs the `throw` to be
|
|
@@ -81,6 +81,14 @@ export declare class DiagnosticSink {
|
|
|
81
81
|
* year rule — so throwing on one would contradict what the severity means, and would make
|
|
82
82
|
* `strict` reject conforming files. Every `info` note is still collected and readable.
|
|
83
83
|
*/
|
|
84
|
+
/**
|
|
85
|
+
* The fatal a caller raises directly, carrying what this sink has already found.
|
|
86
|
+
*
|
|
87
|
+
* `fatalError` is the sinkless version and stays that way. Where a sink DOES exist, throwing
|
|
88
|
+
* through it is what lets `inspectEdf` report the defects the parse had already accumulated
|
|
89
|
+
* rather than only the one that stopped it (added in 0.3.18).
|
|
90
|
+
*/
|
|
91
|
+
fatal(init: DiagnosticInit, cause?: unknown): EdfFormatError;
|
|
84
92
|
report(init: DiagnosticInit): void;
|
|
85
93
|
/** A frozen copy: an array already attached to a result must not grow if reporting continues. */
|
|
86
94
|
get diagnostics(): readonly EdfDiagnostic[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAEjG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAkBpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAEjG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAkBpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,aAAa,EACzB,KAAK,CAAC,EAAE,OAAO,EACf,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,GACnC,cAAc,CAUhB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc,CAEhF;AAED,qBAAa,cAAc;;IACzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAIb,OAAO,CAAC,EAAE,YAAY;IAIlC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;OASG;IACH;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc;IAI5D,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IASlC,iGAAiG;IACjG,IAAI,WAAW,IAAI,SAAS,aAAa,EAAE,CAE1C;IAED,oEAAoE;IACpE,KAAK,IAAI,SAAS,aAAa,EAAE;CAKlC"}
|
|
@@ -54,10 +54,15 @@ export function createDiagnostic(init) {
|
|
|
54
54
|
* The one way to turn a diagnostic into the error that carries it. `EdfFormatError` re-derives
|
|
55
55
|
* `field`/`byteOffset`/`signalIndex`/`recordIndex` from the diagnostic, so they are not repeated.
|
|
56
56
|
*/
|
|
57
|
-
export function toFormatError(diagnostic, cause) {
|
|
58
|
-
const init =
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
export function toFormatError(diagnostic, cause, collected) {
|
|
58
|
+
const init = {
|
|
59
|
+
code: diagnostic.code,
|
|
60
|
+
diagnostic,
|
|
61
|
+
...(cause === undefined ? {} : { cause }),
|
|
62
|
+
// A copy: the sink keeps collecting into its own array, and an error is evidence of the
|
|
63
|
+
// moment it was thrown.
|
|
64
|
+
...(collected === undefined || collected.length === 0 ? {} : { collected: [...collected] }),
|
|
65
|
+
};
|
|
61
66
|
return new EdfFormatError(`[${diagnostic.code}] ${diagnostic.message}`, init);
|
|
62
67
|
}
|
|
63
68
|
/**
|
|
@@ -91,10 +96,21 @@ export class DiagnosticSink {
|
|
|
91
96
|
* year rule — so throwing on one would contradict what the severity means, and would make
|
|
92
97
|
* `strict` reject conforming files. Every `info` note is still collected and readable.
|
|
93
98
|
*/
|
|
99
|
+
/**
|
|
100
|
+
* The fatal a caller raises directly, carrying what this sink has already found.
|
|
101
|
+
*
|
|
102
|
+
* `fatalError` is the sinkless version and stays that way. Where a sink DOES exist, throwing
|
|
103
|
+
* through it is what lets `inspectEdf` report the defects the parse had already accumulated
|
|
104
|
+
* rather than only the one that stopped it (added in 0.3.18).
|
|
105
|
+
*/
|
|
106
|
+
fatal(init, cause) {
|
|
107
|
+
return toFormatError(createDiagnostic(init), cause, this.#collected);
|
|
108
|
+
}
|
|
94
109
|
report(init) {
|
|
95
110
|
const diagnostic = createDiagnostic(init);
|
|
96
111
|
if (isAlwaysFatal(diagnostic.code) || (this.strict && diagnostic.severity !== 'info')) {
|
|
97
|
-
|
|
112
|
+
// Everything found before this one travels with it, for the same reason.
|
|
113
|
+
throw toFormatError(diagnostic, undefined, this.#collected);
|
|
98
114
|
}
|
|
99
115
|
this.#collected.push(diagnostic);
|
|
100
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AAEvE,OAAO,EAA0B,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwB/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB,EAAE,MAAgC;IACzF,KAAK,MAAM,UAAU,IAAI,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,yFAAyF;QACzF,4EAA4E;QAC5E,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACzE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -41,6 +41,8 @@ export declare function isEdfError(value: unknown): value is AnyEdfError;
|
|
|
41
41
|
export interface EdfFormatErrorInit {
|
|
42
42
|
readonly code: EdfDiagnosticCode;
|
|
43
43
|
readonly diagnostic?: EdfDiagnostic;
|
|
44
|
+
/** Everything already found when this became fatal. See `EdfFormatError.collected`. */
|
|
45
|
+
readonly collected?: readonly EdfDiagnostic[];
|
|
44
46
|
readonly field?: string;
|
|
45
47
|
readonly byteOffset?: number;
|
|
46
48
|
readonly signalIndex?: number;
|
|
@@ -55,6 +57,16 @@ export declare class EdfFormatError extends EdfError {
|
|
|
55
57
|
readonly edfErrorKind: "format";
|
|
56
58
|
readonly code: EdfDiagnosticCode;
|
|
57
59
|
readonly diagnostic: EdfDiagnostic | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* The diagnostics already collected when this one turned out to be fatal, in the order they
|
|
62
|
+
* were found. Empty when the fatal was raised before any collection existed.
|
|
63
|
+
*
|
|
64
|
+
* A header parse accumulates as it goes and reaches its fatal checks last, so by the time one
|
|
65
|
+
* throws it may have found several defects that have nothing to do with the fatal — and the
|
|
66
|
+
* fatal is often the least informative of the set. `inspectEdf` reports these alongside it;
|
|
67
|
+
* before 0.3.18 they were discarded with the sink and only the fatal survived.
|
|
68
|
+
*/
|
|
69
|
+
readonly collected: readonly EdfDiagnostic[];
|
|
58
70
|
readonly field: string | undefined;
|
|
59
71
|
readonly byteOffset: number | undefined;
|
|
60
72
|
readonly signalIndex: number | undefined;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* `edfErrorKind` exists so consumers can discriminate without `instanceof`, which fails across
|
|
9
9
|
* realms — an iframe, a worker, or two copies of the package in one dependency tree.
|
|
10
10
|
*/
|
|
11
|
+
const EMPTY_DIAGNOSTICS = Object.freeze([]);
|
|
11
12
|
export class EdfError extends Error {
|
|
12
13
|
constructor(message, options) {
|
|
13
14
|
super(message, options);
|
|
@@ -44,6 +45,16 @@ export class EdfFormatError extends EdfError {
|
|
|
44
45
|
edfErrorKind = 'format';
|
|
45
46
|
code;
|
|
46
47
|
diagnostic;
|
|
48
|
+
/**
|
|
49
|
+
* The diagnostics already collected when this one turned out to be fatal, in the order they
|
|
50
|
+
* were found. Empty when the fatal was raised before any collection existed.
|
|
51
|
+
*
|
|
52
|
+
* A header parse accumulates as it goes and reaches its fatal checks last, so by the time one
|
|
53
|
+
* throws it may have found several defects that have nothing to do with the fatal — and the
|
|
54
|
+
* fatal is often the least informative of the set. `inspectEdf` reports these alongside it;
|
|
55
|
+
* before 0.3.18 they were discarded with the sink and only the fatal survived.
|
|
56
|
+
*/
|
|
57
|
+
collected;
|
|
47
58
|
field;
|
|
48
59
|
byteOffset;
|
|
49
60
|
signalIndex;
|
|
@@ -53,6 +64,7 @@ export class EdfFormatError extends EdfError {
|
|
|
53
64
|
this.name = 'EdfFormatError';
|
|
54
65
|
this.code = init.code;
|
|
55
66
|
this.diagnostic = init.diagnostic;
|
|
67
|
+
this.collected = init.collected ?? EMPTY_DIAGNOSTICS;
|
|
56
68
|
this.field = init.field ?? init.diagnostic?.field;
|
|
57
69
|
this.byteOffset = init.byteOffset ?? init.diagnostic?.byteOffset;
|
|
58
70
|
this.signalIndex = init.signalIndex ?? init.diagnostic?.signalIndex;
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,OAAgB,QAAS,SAAQ,KAAK;IAG1C,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAmC,CAAC,CAAC;QACpD,0FAA0F;QAC1F,wFAAwF;QACxF,yFAAyF;QACzF,0FAA0F;QAC1F,qFAAqF;QACrF,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAmBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAoC,CAAC,YAAY,KAAK,QAAQ,CACvE,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/header/parse.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
import { trimEdfField } from '../bytes/latin1.js';
|
|
24
24
|
import { copyBytes } from '../bytes/view.js';
|
|
25
25
|
import { EDF_HEADER_BLOCK_BYTES, EDF_RECOMMENDED_MAX_RECORD_BYTES, HEADER_FIELDS, SIGNAL_FIELD_WIDTHS, } from '../constants.js';
|
|
26
|
-
import { DiagnosticSink
|
|
26
|
+
import { DiagnosticSink } from '../diagnostics/collector.js';
|
|
27
27
|
import { parseUnsignedTicks, secondsToTicks } from '../tal/ticks.js';
|
|
28
28
|
import { resolveStartTime } from './dates.js';
|
|
29
29
|
import { checkDeclaredHeaderByteLength, describeFixedField, fixedFieldSpecReference, parseDeclaredRecordCount, parseRecordDuration, parseSignalCount, readRawHeaderFields, reportNonAsciiHeaderFields, } from './fields.js';
|
|
@@ -173,7 +173,7 @@ export function parseHeader(headerBytes, sourceByteLength, options) {
|
|
|
173
173
|
const sink = new DiagnosticSink(options);
|
|
174
174
|
// ---- 1. The fixed header must be present at all. --------------------------------------
|
|
175
175
|
if (headerBytes.length < EDF_HEADER_BLOCK_BYTES) {
|
|
176
|
-
throw
|
|
176
|
+
throw sink.fatal({
|
|
177
177
|
code: 'SOURCE_TOO_SMALL',
|
|
178
178
|
message: `the header is ${headerBytes.length} bytes, but every EDF and BDF file begins with a ` +
|
|
179
179
|
`${EDF_HEADER_BLOCK_BYTES}-byte fixed header. EDF specification, header record bytes ` +
|
|
@@ -195,7 +195,7 @@ export function parseHeader(headerBytes, sourceByteLength, options) {
|
|
|
195
195
|
// ---- 4. The whole header must be present, now that its size is known. -------------------
|
|
196
196
|
const headerByteLength = EDF_HEADER_BLOCK_BYTES * (signalCount + 1);
|
|
197
197
|
if (headerBytes.length < headerByteLength) {
|
|
198
|
-
throw
|
|
198
|
+
throw sink.fatal({
|
|
199
199
|
code: 'SOURCE_TOO_SMALL',
|
|
200
200
|
message: `the header of a file declaring ${signalCount} signals is ${EDF_HEADER_BLOCK_BYTES} * ` +
|
|
201
201
|
`(${signalCount} + 1) = ${headerByteLength} bytes, but only ${headerBytes.length} ` +
|
|
@@ -221,7 +221,7 @@ export function parseHeader(headerBytes, sourceByteLength, options) {
|
|
|
221
221
|
// ---- 8. The record size, which every data offset in the file steps by. ------------------
|
|
222
222
|
if (recordByteLength === 0) {
|
|
223
223
|
const samplesBlockOffset = signalFieldOffset('samplesPerRecord', signalCount, 0);
|
|
224
|
-
throw
|
|
224
|
+
throw sink.fatal({
|
|
225
225
|
code: 'RECORD_SIZE_ZERO',
|
|
226
226
|
message: `every one of the ${signalCount} signals declares 0 samples per data record, so a data ` +
|
|
227
227
|
'record is 0 bytes long and the file has no record size to step by — record N and ' +
|
|
@@ -274,7 +274,7 @@ export function parseHeader(headerBytes, sourceByteLength, options) {
|
|
|
274
274
|
// is enough to ask for it.
|
|
275
275
|
const declaredSpanTicks = recordDurationTicks * BigInt(recordCount);
|
|
276
276
|
if (declaredSpanTicks > MAX_REPRESENTABLE_TICKS) {
|
|
277
|
-
throw
|
|
277
|
+
throw sink.fatal({
|
|
278
278
|
code: 'RECORDING_SPAN_UNREPRESENTABLE',
|
|
279
279
|
message: `the header declares ${recordCount} records of ${recordDurationSeconds} s, a total span ` +
|
|
280
280
|
`of ${declaredSpanTicks} ticks of 100 ns. edfcore stores every record onset as a signed ` +
|
|
@@ -294,7 +294,7 @@ export function parseHeader(headerBytes, sourceByteLength, options) {
|
|
|
294
294
|
}
|
|
295
295
|
// ---- 10. EDF+ without an annotations signal has no per-record timing to report. ---------
|
|
296
296
|
if (variant.isPlus && parsed.annotationSignalIndices.length === 0) {
|
|
297
|
-
throw
|
|
297
|
+
throw sink.fatal({
|
|
298
298
|
code: 'EDFPLUS_WITHOUT_ANNOTATION_SIGNAL',
|
|
299
299
|
message: `the reserved field at offset ${HEADER_FIELDS.reserved.offset} declares ` +
|
|
300
300
|
`${JSON.stringify(variant.reservedMarker ?? '')} but no signal is labelled ` +
|
package/dist/header/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/header/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,aAAa,EACb,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/header/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/inspect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,OAAO,KAAK,EAAE,UAAU,EAAiB,aAAa,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAgFpG;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,OAAO,KAAK,EAAE,UAAU,EAAiB,aAAa,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAgFpG;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,aAAa,CAAC,CAyExB"}
|
package/dist/inspect.js
CHANGED
|
@@ -151,6 +151,13 @@ export async function inspectEdf(source, options) {
|
|
|
151
151
|
if (!isEdfError(error))
|
|
152
152
|
throw error;
|
|
153
153
|
const failure = diagnosticOf(error);
|
|
154
|
+
// Everything the parse had ALREADY found, before the fatal. A header parse accumulates as it
|
|
155
|
+
// goes and reaches its fatal checks last, so a file can carry a degenerate physical range, a
|
|
156
|
+
// degenerate digital range and a duplicated label and still be stopped by "no annotations
|
|
157
|
+
// signal" — which names none of them. Returning only the fatal made `diagnostics` one entry
|
|
158
|
+
// where four were in hand, in the one call whose whole job is triaging unknown files, and
|
|
159
|
+
// contradicted its own documented "everything found" (fixed in 0.3.18).
|
|
160
|
+
const collected = error.edfErrorKind === 'format' ? error.collected : [];
|
|
154
161
|
return {
|
|
155
162
|
ok: false,
|
|
156
163
|
variant: variantHint(headerBytes),
|
|
@@ -158,7 +165,13 @@ export async function inspectEdf(source, options) {
|
|
|
158
165
|
byteLength,
|
|
159
166
|
bytesRead,
|
|
160
167
|
headerBytes,
|
|
161
|
-
|
|
168
|
+
// The fatal comes LAST, after what led up to it: it is the reason parsing stopped, and a
|
|
169
|
+
// reader following the list downwards reaches it in the order the parse did.
|
|
170
|
+
diagnostics: Object.freeze([
|
|
171
|
+
...(overBudget === undefined ? [] : [overBudget]),
|
|
172
|
+
...collected,
|
|
173
|
+
failure,
|
|
174
|
+
]),
|
|
162
175
|
};
|
|
163
176
|
}
|
|
164
177
|
}
|
package/dist/inspect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAsC,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAC;AAErC;;;;;GAKG;AACH,SAAS,eAAe,CAAC,WAAuB;IAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,sBAAsB;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC;IACrD,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,oBAAoB;QAAE,OAAO,SAAS,CAAC;IACzF,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,WAAuB;IAC1C,IAAI,WAAW,CAAC,MAAM,GAAG,sBAAsB;QAAE,OAAO,SAAS,CAAC;IAClE,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,WAAW,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAe;IACnC,6FAA6F;IAC7F,qEAAqE;IACrE,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,KAAuB,CAAC;QAC5C,OAAO,CACL,WAAW,CAAC,UAAU;YACtB,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CAAC;QACtB,0FAA0F;QAC1F,yFAAyF;QACzF,IAAI,EAAE,mBAAmB;QACzB,OAAO,EACL,sCAAsC,KAAK,CAAC,OAAO,uCAAuC;YAC1F,0EAA0E;KAC7E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB,EAAE,gBAAwB;IACrE,OAAO,gBAAgB,CAAC;QACtB,IAAI,EAAE,kCAAkC;QACxC,OAAO,EACL,kCAAkC,WAAW,eAAe,gBAAgB,SAAS;YACrF,WAAW,WAAW,qBAAqB,iBAAiB,6BAA6B;YACzF,sFAAsF;YACtF,wFAAwF;YACxF,cAAc;QAChB,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM;QAC5C,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM;QAC5C,QAAQ,EAAE,WAAW,iBAAiB,eAAe;QACrD,MAAM,EAAE,GAAG,gBAAgB,eAAe;QAC1C,aAAa,EAAE,oEAAoE;KACpF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAkB,EAClB,OAAqB;IAErB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAEvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IAChG,IAAI,SAAS,GAAG,WAAW,CAAC;IAC5B,IAAI,WAAW,GAAG,WAAW,CAAC;IAC9B,IAAI,UAAqC,CAAC;IAE1C,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;YACzC,UAAU,GAAG,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;QACvC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,eAAe,CAC1B,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAClD,WAAW,EACX,SAAS,CACV,CAAC;YACF,SAAS,IAAI,SAAS,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChC,WAAW,GAAG,QAAQ,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,0FAA0F;QAC1F,2CAA2C;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,WAAW,GACf,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACtF,OAAO;YACL,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC;YACtE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM;YACN,UAAU;YACV,SAAS;YACT,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;SACxC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;YACjC,MAAM,EAAE,SAAS;YACjB,UAAU;YACV,SAAS;YACT,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/tal/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,KAAK,EACV,wBAAwB,EAExB,oBAAoB,EACpB,SAAS,EAET,WAAW,EACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/tal/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,KAAK,EACV,wBAAwB,EAExB,oBAAoB,EACpB,SAAS,EAET,WAAW,EACZ,MAAM,aAAa,CAAC;AAoVrB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,wBAAwB,GACjC,oBAAoB,CAmKtB"}
|
package/dist/tal/annotations.js
CHANGED
|
@@ -157,6 +157,24 @@ function reportTimekeepingMissing(sink, context) {
|
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
159
|
function timekeepingDefect(tal) {
|
|
160
|
+
// TEXT IS TESTED FIRST, and the order is the whole point. A TAL can be wrong in more than one
|
|
161
|
+
// way at once, and this returns at the first match — so asking about the benign duration before
|
|
162
|
+
// the destructive text classified a TAL that loses an annotation as one that loses nothing. It
|
|
163
|
+
// was then capped at one report per call, under a message ending "nothing was lost".
|
|
164
|
+
//
|
|
165
|
+
// 0.2.33 fixed the same swallowing by splitting the once-per-call flag between the two kinds,
|
|
166
|
+
// and left this order alone; the test written for it builds a timekeeping TAL with text and NO
|
|
167
|
+
// duration, so the combination stayed uncovered. A writer that merges a scored epoch into the
|
|
168
|
+
// timekeeping TAL writes both (fixed in 0.3.19).
|
|
169
|
+
const texts = tal.texts.map((run) => run.text).filter((text) => text.length > 0);
|
|
170
|
+
if (texts.length > 0) {
|
|
171
|
+
const strayDuration = tal.durationRaw === undefined ? '' : ` (and the duration "${tal.durationRaw}")`;
|
|
172
|
+
return {
|
|
173
|
+
reason: `carries the text ${texts.map((text) => `"${text}"`).join(', ')}${strayDuration}, which ` +
|
|
174
|
+
'is dropped: the timekeeping TAL is not an annotation',
|
|
175
|
+
destructive: true,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
160
178
|
if (tal.durationRaw !== undefined) {
|
|
161
179
|
return {
|
|
162
180
|
reason: `carries the duration "${tal.durationRaw}", which a timekeeping TAL never has`,
|
|
@@ -170,14 +188,6 @@ function timekeepingDefect(tal) {
|
|
|
170
188
|
destructive: false,
|
|
171
189
|
};
|
|
172
190
|
}
|
|
173
|
-
const texts = tal.texts.map((run) => run.text).filter((text) => text.length > 0);
|
|
174
|
-
if (texts.length > 0) {
|
|
175
|
-
return {
|
|
176
|
-
reason: `carries the text ${texts.map((text) => `"${text}"`).join(', ')}, which is dropped: the ` +
|
|
177
|
-
'timekeeping TAL is not an annotation',
|
|
178
|
-
destructive: true,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
191
|
if (tal.texts.length > 1) {
|
|
182
192
|
return {
|
|
183
193
|
reason: `carries ${tal.texts.length} empty texts, where the grammar allows exactly one`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/tal/annotations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/tal/annotations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../src/tal/grammar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAWH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,kBAAkB,CAAC;AAE3D,6EAA6E;AAC7E,MAAM,WAAW,OAAO;IACtB,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,uEAAuE;AACvE,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,6BAA6B,GAC7B,+BAA+B,GAC/B,0BAA0B,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,gGAAgG;AAChG,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,iGAAiG;AACjG,eAAO,MAAM,qBAAqB,EAAE,MAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../src/tal/grammar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAWH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,kBAAkB,CAAC;AAE3D,6EAA6E;AAC7E,MAAM,WAAW,OAAO;IACtB,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,uEAAuE;AACvE,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,6BAA6B,GAC7B,+BAA+B,GAC/B,0BAA0B,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,gGAAgG;AAChG,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,iGAAiG;AACjG,eAAO,MAAM,qBAAqB,EAAE,MAAW,CAAC;AAkGhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAItF;AAqTD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,cAAc,CAmChB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAM3D"}
|
package/dist/tal/grammar.js
CHANGED
|
@@ -102,13 +102,14 @@ export function previewBytes(bytes, offset, length) {
|
|
|
102
102
|
const text = escapeControls(decodeHeaderLatin1(sliceBytes(bytes, offset, shown)));
|
|
103
103
|
return length > shown ? `${text}...` : text;
|
|
104
104
|
}
|
|
105
|
-
function logIssue(log, code, region, offset, length, detail) {
|
|
106
|
-
const
|
|
105
|
+
function logIssue(log, code, kind, region, offset, length, detail) {
|
|
106
|
+
const key = `${code}|${kind}`;
|
|
107
|
+
const existing = log.get(key);
|
|
107
108
|
if (existing !== undefined) {
|
|
108
109
|
existing.occurrences += 1;
|
|
109
110
|
return;
|
|
110
111
|
}
|
|
111
|
-
log.set(
|
|
112
|
+
log.set(key, {
|
|
112
113
|
code,
|
|
113
114
|
byteOffsetInRegion: offset,
|
|
114
115
|
byteLength: length,
|
|
@@ -150,7 +151,7 @@ function decodeTextRun(region, start, length, log) {
|
|
|
150
151
|
// A fatal decoder rejects invalid UTF-8 with a TypeError. Fall through to Latin-1.
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
|
-
logIssue(log, 'ANNOTATION_TEXT_NOT_UTF8', region, start, length, decoder === null
|
|
154
|
+
logIssue(log, 'ANNOTATION_TEXT_NOT_UTF8', 'text-not-utf8', region, start, length, decoder === null
|
|
154
155
|
? 'this runtime has no TextDecoder, so the text run could not be verified as UTF-8 and ' +
|
|
155
156
|
'was decoded as ISO-8859-1'
|
|
156
157
|
: 'the text run is not valid UTF-8 and was decoded as ISO-8859-1 instead');
|
|
@@ -175,20 +176,20 @@ function scanTal(region, start, ordinal, log) {
|
|
|
175
176
|
const regionLength = region.length;
|
|
176
177
|
const bodyEnd = indexOfByte(region, start, regionLength, TAL_TERMINATOR);
|
|
177
178
|
if (bodyEnd < 0) {
|
|
178
|
-
logIssue(log, 'TAL_TRUNCATED_AT_REGION_END', region, start, regionLength - start, 'a TAL begins here and has no terminating 0x00 inside the region, so it was discarded ' +
|
|
179
|
+
logIssue(log, 'TAL_TRUNCATED_AT_REGION_END', 'tal-unterminated', region, start, regionLength - start, 'a TAL begins here and has no terminating 0x00 inside the region, so it was discarded ' +
|
|
179
180
|
"rather than continued into the following signal's samples");
|
|
180
181
|
return { tal: undefined, next: regionLength };
|
|
181
182
|
}
|
|
182
183
|
const next = bodyEnd + 1;
|
|
183
184
|
const timestampEnd = indexOfByte(region, start, bodyEnd, TAL_FIELD_TERMINATOR);
|
|
184
185
|
if (timestampEnd < 0) {
|
|
185
|
-
logIssue(log, 'TAL_MALFORMED', region, start, bodyEnd - start, 'the timestamp is not terminated by 0x14, so the TAL was skipped');
|
|
186
|
+
logIssue(log, 'TAL_MALFORMED', 'timestamp-unterminated', region, start, bodyEnd - start, 'the timestamp is not terminated by 0x14, so the TAL was skipped');
|
|
186
187
|
return { tal: undefined, next };
|
|
187
188
|
}
|
|
188
189
|
const separator = indexOfByte(region, start, timestampEnd, TAL_ONSET_DURATION_SEPARATOR);
|
|
189
190
|
const onsetEnd = separator < 0 ? timestampEnd : separator;
|
|
190
191
|
if (onsetEnd - start > MAX_TIMESTAMP_FIELD_CHARS) {
|
|
191
|
-
logIssue(log, 'TAL_MALFORMED', region, start, onsetEnd - start, `the onset field is ${onsetEnd - start} bytes long, which no time in 100 ns ticks needs; ` +
|
|
192
|
+
logIssue(log, 'TAL_MALFORMED', 'onset-field-too-long', region, start, onsetEnd - start, `the onset field is ${onsetEnd - start} bytes long, which no time in 100 ns ticks needs; ` +
|
|
192
193
|
'the TAL was skipped');
|
|
193
194
|
return { tal: undefined, next };
|
|
194
195
|
}
|
|
@@ -200,16 +201,16 @@ function scanTal(region, start, ordinal, log) {
|
|
|
200
201
|
// is recoverable, and re-parsing without the sign is how they are told apart.
|
|
201
202
|
const unsignedOnset = parseUnsignedTicks(onsetRaw);
|
|
202
203
|
if (!unsignedOnset.ok) {
|
|
203
|
-
logIssue(log, 'TAL_MALFORMED', region, start, Math.max(onsetEnd - start, 1), `the onset "${onsetRaw}" is not ("+" / "-") 1*DIGIT [ "." 1*DIGIT ], so the TAL was ` +
|
|
204
|
+
logIssue(log, 'TAL_MALFORMED', 'onset-grammar', region, start, Math.max(onsetEnd - start, 1), `the onset "${onsetRaw}" is not ("+" / "-") 1*DIGIT [ "." 1*DIGIT ], so the TAL was ` +
|
|
204
205
|
'skipped');
|
|
205
206
|
return { tal: undefined, next };
|
|
206
207
|
}
|
|
207
208
|
onsetTicks = unsignedOnset.ticks;
|
|
208
|
-
logIssue(log, 'TAL_MALFORMED', region, start, onsetEnd - start, `the onset "${onsetRaw}" has no mandatory sign; the value is unambiguous, so the TAL was ` +
|
|
209
|
+
logIssue(log, 'TAL_MALFORMED', 'onset-unsigned', region, start, onsetEnd - start, `the onset "${onsetRaw}" has no mandatory sign; the value is unambiguous, so the TAL was ` +
|
|
209
210
|
'kept and the onset read as positive');
|
|
210
211
|
}
|
|
211
212
|
if (outsideInt64(onsetTicks)) {
|
|
212
|
-
logIssue(log, 'TAL_MALFORMED', region, start, onsetEnd - start, `the onset "${onsetRaw}" is outside the +/-2^63 tick range edfcore can represent, so the ` +
|
|
213
|
+
logIssue(log, 'TAL_MALFORMED', 'onset-out-of-range', region, start, onsetEnd - start, `the onset "${onsetRaw}" is outside the +/-2^63 tick range edfcore can represent, so the ` +
|
|
213
214
|
'TAL was skipped');
|
|
214
215
|
return { tal: undefined, next };
|
|
215
216
|
}
|
|
@@ -219,14 +220,14 @@ function scanTal(region, start, ordinal, log) {
|
|
|
219
220
|
const durationStart = separator + 1;
|
|
220
221
|
const durationLength = timestampEnd - durationStart;
|
|
221
222
|
if (durationLength > MAX_TIMESTAMP_FIELD_CHARS) {
|
|
222
|
-
logIssue(log, 'TAL_MALFORMED', region, durationStart, durationLength, `the duration field is ${durationLength} bytes long, which no time in 100 ns ticks ` +
|
|
223
|
+
logIssue(log, 'TAL_MALFORMED', 'duration-field-too-long', region, durationStart, durationLength, `the duration field is ${durationLength} bytes long, which no time in 100 ns ticks ` +
|
|
223
224
|
'needs; the TAL was skipped');
|
|
224
225
|
return { tal: undefined, next };
|
|
225
226
|
}
|
|
226
227
|
durationRaw = decodeHeaderLatin1(sliceBytes(region, durationStart, durationLength));
|
|
227
228
|
const duration = parseUnsignedTicks(durationRaw);
|
|
228
229
|
if (!duration.ok || outsideInt64(duration.ticks)) {
|
|
229
|
-
logIssue(log, 'TAL_MALFORMED', region, durationStart, Math.max(durationLength, 1), `0x15 is present but the duration "${durationRaw}" is not 1*DIGIT [ "." 1*DIGIT ] — a ` +
|
|
230
|
+
logIssue(log, 'TAL_MALFORMED', 'duration-grammar', region, durationStart, Math.max(durationLength, 1), `0x15 is present but the duration "${durationRaw}" is not 1*DIGIT [ "." 1*DIGIT ] — a ` +
|
|
230
231
|
'duration is never signed — so the TAL was skipped');
|
|
231
232
|
return { tal: undefined, next };
|
|
232
233
|
}
|
|
@@ -243,7 +244,7 @@ function scanTal(region, start, ordinal, log) {
|
|
|
243
244
|
if (runStart < bodyEnd) {
|
|
244
245
|
// The grammar terminates every text with 0x14, so a run left over here means the last text
|
|
245
246
|
// ran straight into the TAL terminator. The bytes are unambiguous, so the text is kept.
|
|
246
|
-
logIssue(log, 'TAL_MALFORMED', region, runStart, bodyEnd - runStart, 'the last text of the TAL is not terminated by 0x14; the text was kept verbatim');
|
|
247
|
+
logIssue(log, 'TAL_MALFORMED', 'last-text-unterminated', region, runStart, bodyEnd - runStart, 'the last text of the TAL is not terminated by 0x14; the text was kept verbatim');
|
|
247
248
|
texts.push(readTextRun(region, runStart, bodyEnd, log));
|
|
248
249
|
}
|
|
249
250
|
return {
|
|
@@ -262,7 +263,7 @@ function scanTal(region, start, ordinal, log) {
|
|
|
262
263
|
}
|
|
263
264
|
function readTextRun(region, start, end, log) {
|
|
264
265
|
if (indexOfByte(region, start, end, TAL_ONSET_DURATION_SEPARATOR) >= 0) {
|
|
265
|
-
logIssue(log, 'TAL_MALFORMED', region, start, end - start, 'a text run contains 0x15, which the grammar reserves for the onset/duration separator; ' +
|
|
266
|
+
logIssue(log, 'TAL_MALFORMED', 'text-contains-separator', region, start, end - start, 'a text run contains 0x15, which the grammar reserves for the onset/duration separator; ' +
|
|
266
267
|
'the text was kept verbatim');
|
|
267
268
|
}
|
|
268
269
|
return decodeTextRun(region, start, end - start, log);
|
|
@@ -290,7 +291,7 @@ export function parseTalRegion(bytes, regionStart, regionBytes) {
|
|
|
290
291
|
scan += 1;
|
|
291
292
|
if (scan === regionBytes)
|
|
292
293
|
break;
|
|
293
|
-
logIssue(log, 'TAL_REGION_NOT_NUL_TERMINATED', region, scan, regionBytes - scan, 'the region tail after the last TAL is not all 0x00; parsing resumed at this byte');
|
|
294
|
+
logIssue(log, 'TAL_REGION_NOT_NUL_TERMINATED', 'region-tail-not-nul', region, scan, regionBytes - scan, 'the region tail after the last TAL is not all 0x00; parsing resumed at this byte');
|
|
294
295
|
// A TAL found after padding did not begin the region, so it must never be promoted into
|
|
295
296
|
// the timekeeping role: slot 0 is a position, not "the first TAL we managed to parse".
|
|
296
297
|
if (ordinal === 0)
|
package/dist/tal/grammar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../src/tal/grammar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAoElE,iGAAiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAW,EAAE,CAAC;AAEhD;;;;GAIG;AACH,MAAM,SAAS,GAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;AACvC,MAAM,SAAS,GAAW,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AAEzC;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,qBAAqB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../src/tal/grammar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -80,11 +80,19 @@ export function createDiagnostic(init: DiagnosticInit): EdfDiagnostic {
|
|
|
80
80
|
* The one way to turn a diagnostic into the error that carries it. `EdfFormatError` re-derives
|
|
81
81
|
* `field`/`byteOffset`/`signalIndex`/`recordIndex` from the diagnostic, so they are not repeated.
|
|
82
82
|
*/
|
|
83
|
-
export function toFormatError(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
export function toFormatError(
|
|
84
|
+
diagnostic: EdfDiagnostic,
|
|
85
|
+
cause?: unknown,
|
|
86
|
+
collected?: readonly EdfDiagnostic[],
|
|
87
|
+
): EdfFormatError {
|
|
88
|
+
const init: EdfFormatErrorInit = {
|
|
89
|
+
code: diagnostic.code,
|
|
90
|
+
diagnostic,
|
|
91
|
+
...(cause === undefined ? {} : { cause }),
|
|
92
|
+
// A copy: the sink keeps collecting into its own array, and an error is evidence of the
|
|
93
|
+
// moment it was thrown.
|
|
94
|
+
...(collected === undefined || collected.length === 0 ? {} : { collected: [...collected] }),
|
|
95
|
+
};
|
|
88
96
|
return new EdfFormatError(`[${diagnostic.code}] ${diagnostic.message}`, init);
|
|
89
97
|
}
|
|
90
98
|
|
|
@@ -124,10 +132,22 @@ export class DiagnosticSink {
|
|
|
124
132
|
* year rule — so throwing on one would contradict what the severity means, and would make
|
|
125
133
|
* `strict` reject conforming files. Every `info` note is still collected and readable.
|
|
126
134
|
*/
|
|
135
|
+
/**
|
|
136
|
+
* The fatal a caller raises directly, carrying what this sink has already found.
|
|
137
|
+
*
|
|
138
|
+
* `fatalError` is the sinkless version and stays that way. Where a sink DOES exist, throwing
|
|
139
|
+
* through it is what lets `inspectEdf` report the defects the parse had already accumulated
|
|
140
|
+
* rather than only the one that stopped it (added in 0.3.18).
|
|
141
|
+
*/
|
|
142
|
+
fatal(init: DiagnosticInit, cause?: unknown): EdfFormatError {
|
|
143
|
+
return toFormatError(createDiagnostic(init), cause, this.#collected);
|
|
144
|
+
}
|
|
145
|
+
|
|
127
146
|
report(init: DiagnosticInit): void {
|
|
128
147
|
const diagnostic = createDiagnostic(init);
|
|
129
148
|
if (isAlwaysFatal(diagnostic.code) || (this.strict && diagnostic.severity !== 'info')) {
|
|
130
|
-
|
|
149
|
+
// Everything found before this one travels with it, for the same reason.
|
|
150
|
+
throw toFormatError(diagnostic, undefined, this.#collected);
|
|
131
151
|
}
|
|
132
152
|
this.#collected.push(diagnostic);
|
|
133
153
|
}
|
package/src/errors.ts
CHANGED
|
@@ -13,6 +13,8 @@ import type { EdfDiagnostic, EdfDiagnosticCode, RecordRange } from './types.js';
|
|
|
13
13
|
|
|
14
14
|
export type EdfErrorKind = 'format' | 'scaling' | 'range' | 'source' | 'budget' | 'channel';
|
|
15
15
|
|
|
16
|
+
const EMPTY_DIAGNOSTICS: readonly EdfDiagnostic[] = Object.freeze([]);
|
|
17
|
+
|
|
16
18
|
export abstract class EdfError extends Error {
|
|
17
19
|
abstract readonly edfErrorKind: EdfErrorKind;
|
|
18
20
|
|
|
@@ -67,6 +69,8 @@ export function isEdfError(value: unknown): value is AnyEdfError {
|
|
|
67
69
|
export interface EdfFormatErrorInit {
|
|
68
70
|
readonly code: EdfDiagnosticCode;
|
|
69
71
|
readonly diagnostic?: EdfDiagnostic;
|
|
72
|
+
/** Everything already found when this became fatal. See `EdfFormatError.collected`. */
|
|
73
|
+
readonly collected?: readonly EdfDiagnostic[];
|
|
70
74
|
readonly field?: string;
|
|
71
75
|
readonly byteOffset?: number;
|
|
72
76
|
readonly signalIndex?: number;
|
|
@@ -82,6 +86,16 @@ export class EdfFormatError extends EdfError {
|
|
|
82
86
|
readonly edfErrorKind = 'format' as const;
|
|
83
87
|
readonly code: EdfDiagnosticCode;
|
|
84
88
|
readonly diagnostic: EdfDiagnostic | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* The diagnostics already collected when this one turned out to be fatal, in the order they
|
|
91
|
+
* were found. Empty when the fatal was raised before any collection existed.
|
|
92
|
+
*
|
|
93
|
+
* A header parse accumulates as it goes and reaches its fatal checks last, so by the time one
|
|
94
|
+
* throws it may have found several defects that have nothing to do with the fatal — and the
|
|
95
|
+
* fatal is often the least informative of the set. `inspectEdf` reports these alongside it;
|
|
96
|
+
* before 0.3.18 they were discarded with the sink and only the fatal survived.
|
|
97
|
+
*/
|
|
98
|
+
readonly collected: readonly EdfDiagnostic[];
|
|
85
99
|
readonly field: string | undefined;
|
|
86
100
|
readonly byteOffset: number | undefined;
|
|
87
101
|
readonly signalIndex: number | undefined;
|
|
@@ -92,6 +106,7 @@ export class EdfFormatError extends EdfError {
|
|
|
92
106
|
this.name = 'EdfFormatError';
|
|
93
107
|
this.code = init.code;
|
|
94
108
|
this.diagnostic = init.diagnostic;
|
|
109
|
+
this.collected = init.collected ?? EMPTY_DIAGNOSTICS;
|
|
95
110
|
this.field = init.field ?? init.diagnostic?.field;
|
|
96
111
|
this.byteOffset = init.byteOffset ?? init.diagnostic?.byteOffset;
|
|
97
112
|
this.signalIndex = init.signalIndex ?? init.diagnostic?.signalIndex;
|
package/src/header/parse.ts
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
HEADER_FIELDS,
|
|
30
30
|
SIGNAL_FIELD_WIDTHS,
|
|
31
31
|
} from '../constants.js';
|
|
32
|
-
import { DiagnosticSink
|
|
32
|
+
import { DiagnosticSink } from '../diagnostics/collector.js';
|
|
33
33
|
import { parseUnsignedTicks, secondsToTicks } from '../tal/ticks.js';
|
|
34
34
|
import type { EdfHeader, ParseOptions } from '../types.js';
|
|
35
35
|
import { resolveStartTime } from './dates.js';
|
|
@@ -224,7 +224,7 @@ export function parseHeader(
|
|
|
224
224
|
|
|
225
225
|
// ---- 1. The fixed header must be present at all. --------------------------------------
|
|
226
226
|
if (headerBytes.length < EDF_HEADER_BLOCK_BYTES) {
|
|
227
|
-
throw
|
|
227
|
+
throw sink.fatal({
|
|
228
228
|
code: 'SOURCE_TOO_SMALL',
|
|
229
229
|
message:
|
|
230
230
|
`the header is ${headerBytes.length} bytes, but every EDF and BDF file begins with a ` +
|
|
@@ -251,7 +251,7 @@ export function parseHeader(
|
|
|
251
251
|
// ---- 4. The whole header must be present, now that its size is known. -------------------
|
|
252
252
|
const headerByteLength = EDF_HEADER_BLOCK_BYTES * (signalCount + 1);
|
|
253
253
|
if (headerBytes.length < headerByteLength) {
|
|
254
|
-
throw
|
|
254
|
+
throw sink.fatal({
|
|
255
255
|
code: 'SOURCE_TOO_SMALL',
|
|
256
256
|
message:
|
|
257
257
|
`the header of a file declaring ${signalCount} signals is ${EDF_HEADER_BLOCK_BYTES} * ` +
|
|
@@ -289,7 +289,7 @@ export function parseHeader(
|
|
|
289
289
|
// ---- 8. The record size, which every data offset in the file steps by. ------------------
|
|
290
290
|
if (recordByteLength === 0) {
|
|
291
291
|
const samplesBlockOffset = signalFieldOffset('samplesPerRecord', signalCount, 0);
|
|
292
|
-
throw
|
|
292
|
+
throw sink.fatal({
|
|
293
293
|
code: 'RECORD_SIZE_ZERO',
|
|
294
294
|
message:
|
|
295
295
|
`every one of the ${signalCount} signals declares 0 samples per data record, so a data ` +
|
|
@@ -349,7 +349,7 @@ export function parseHeader(
|
|
|
349
349
|
// is enough to ask for it.
|
|
350
350
|
const declaredSpanTicks = recordDurationTicks * BigInt(recordCount);
|
|
351
351
|
if (declaredSpanTicks > MAX_REPRESENTABLE_TICKS) {
|
|
352
|
-
throw
|
|
352
|
+
throw sink.fatal({
|
|
353
353
|
code: 'RECORDING_SPAN_UNREPRESENTABLE',
|
|
354
354
|
message:
|
|
355
355
|
`the header declares ${recordCount} records of ${recordDurationSeconds} s, a total span ` +
|
|
@@ -371,7 +371,7 @@ export function parseHeader(
|
|
|
371
371
|
|
|
372
372
|
// ---- 10. EDF+ without an annotations signal has no per-record timing to report. ---------
|
|
373
373
|
if (variant.isPlus && parsed.annotationSignalIndices.length === 0) {
|
|
374
|
-
throw
|
|
374
|
+
throw sink.fatal({
|
|
375
375
|
code: 'EDFPLUS_WITHOUT_ANNOTATION_SIGNAL',
|
|
376
376
|
message:
|
|
377
377
|
`the reserved field at offset ${HEADER_FIELDS.reserved.offset} declares ` +
|
package/src/inspect.ts
CHANGED
|
@@ -168,6 +168,13 @@ export async function inspectEdf(
|
|
|
168
168
|
} catch (error) {
|
|
169
169
|
if (!isEdfError(error)) throw error;
|
|
170
170
|
const failure = diagnosticOf(error);
|
|
171
|
+
// Everything the parse had ALREADY found, before the fatal. A header parse accumulates as it
|
|
172
|
+
// goes and reaches its fatal checks last, so a file can carry a degenerate physical range, a
|
|
173
|
+
// degenerate digital range and a duplicated label and still be stopped by "no annotations
|
|
174
|
+
// signal" — which names none of them. Returning only the fatal made `diagnostics` one entry
|
|
175
|
+
// where four were in hand, in the one call whose whole job is triaging unknown files, and
|
|
176
|
+
// contradicted its own documented "everything found" (fixed in 0.3.18).
|
|
177
|
+
const collected = error.edfErrorKind === 'format' ? (error as EdfFormatError).collected : [];
|
|
171
178
|
return {
|
|
172
179
|
ok: false,
|
|
173
180
|
variant: variantHint(headerBytes),
|
|
@@ -175,7 +182,13 @@ export async function inspectEdf(
|
|
|
175
182
|
byteLength,
|
|
176
183
|
bytesRead,
|
|
177
184
|
headerBytes,
|
|
178
|
-
|
|
185
|
+
// The fatal comes LAST, after what led up to it: it is the reason parsing stopped, and a
|
|
186
|
+
// reader following the list downwards reaches it in the order the parse did.
|
|
187
|
+
diagnostics: Object.freeze([
|
|
188
|
+
...(overBudget === undefined ? [] : [overBudget]),
|
|
189
|
+
...collected,
|
|
190
|
+
failure,
|
|
191
|
+
]),
|
|
179
192
|
};
|
|
180
193
|
}
|
|
181
194
|
}
|
package/src/tal/annotations.ts
CHANGED
|
@@ -273,6 +273,26 @@ interface TimekeepingDefect {
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
function timekeepingDefect(tal: ParsedTal): TimekeepingDefect | undefined {
|
|
276
|
+
// TEXT IS TESTED FIRST, and the order is the whole point. A TAL can be wrong in more than one
|
|
277
|
+
// way at once, and this returns at the first match — so asking about the benign duration before
|
|
278
|
+
// the destructive text classified a TAL that loses an annotation as one that loses nothing. It
|
|
279
|
+
// was then capped at one report per call, under a message ending "nothing was lost".
|
|
280
|
+
//
|
|
281
|
+
// 0.2.33 fixed the same swallowing by splitting the once-per-call flag between the two kinds,
|
|
282
|
+
// and left this order alone; the test written for it builds a timekeeping TAL with text and NO
|
|
283
|
+
// duration, so the combination stayed uncovered. A writer that merges a scored epoch into the
|
|
284
|
+
// timekeeping TAL writes both (fixed in 0.3.19).
|
|
285
|
+
const texts = tal.texts.map((run) => run.text).filter((text) => text.length > 0);
|
|
286
|
+
if (texts.length > 0) {
|
|
287
|
+
const strayDuration =
|
|
288
|
+
tal.durationRaw === undefined ? '' : ` (and the duration "${tal.durationRaw}")`;
|
|
289
|
+
return {
|
|
290
|
+
reason:
|
|
291
|
+
`carries the text ${texts.map((text) => `"${text}"`).join(', ')}${strayDuration}, which ` +
|
|
292
|
+
'is dropped: the timekeeping TAL is not an annotation',
|
|
293
|
+
destructive: true,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
276
296
|
if (tal.durationRaw !== undefined) {
|
|
277
297
|
return {
|
|
278
298
|
reason: `carries the duration "${tal.durationRaw}", which a timekeeping TAL never has`,
|
|
@@ -287,15 +307,6 @@ function timekeepingDefect(tal: ParsedTal): TimekeepingDefect | undefined {
|
|
|
287
307
|
destructive: false,
|
|
288
308
|
};
|
|
289
309
|
}
|
|
290
|
-
const texts = tal.texts.map((run) => run.text).filter((text) => text.length > 0);
|
|
291
|
-
if (texts.length > 0) {
|
|
292
|
-
return {
|
|
293
|
-
reason:
|
|
294
|
-
`carries the text ${texts.map((text) => `"${text}"`).join(', ')}, which is dropped: the ` +
|
|
295
|
-
'timekeeping TAL is not an annotation',
|
|
296
|
-
destructive: true,
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
310
|
if (tal.texts.length > 1) {
|
|
300
311
|
return {
|
|
301
312
|
reason: `carries ${tal.texts.length} empty texts, where the grammar allows exactly one`,
|
package/src/tal/grammar.ts
CHANGED
|
@@ -133,7 +133,8 @@ interface MutableTalIssue {
|
|
|
133
133
|
raw: string;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
/** Keyed by `${code}|${kind}`, not by code alone. See `TalIssueKind`. */
|
|
137
|
+
type IssueLog = Map<string, MutableTalIssue>;
|
|
137
138
|
|
|
138
139
|
interface TalScan {
|
|
139
140
|
readonly tal: ParsedTal | undefined;
|
|
@@ -210,20 +211,53 @@ export function previewBytes(bytes: Uint8Array, offset: number, length: number):
|
|
|
210
211
|
return length > shown ? `${text}...` : text;
|
|
211
212
|
}
|
|
212
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Which defect this is, within its code. A FIXED, closed set.
|
|
216
|
+
*
|
|
217
|
+
* `TAL_MALFORMED` covers nine structurally different defects, and their dispositions are
|
|
218
|
+
* opposites: a 0x15 inside a text run and a missing onset sign KEEP the TAL, while a bad onset, an
|
|
219
|
+
* over-long field, an out-of-range onset, a bad duration and an unterminated timestamp DISCARD it.
|
|
220
|
+
* Collapsing on the code alone let the first one in a region win the `detail`, the offset and the
|
|
221
|
+
* `raw`, so a region holding one of each reported "the text was kept verbatim" with occurrences 2
|
|
222
|
+
* while an annotation had in fact been thrown away — and reversing the two TALs produced the
|
|
223
|
+
* mirror-image lie. `TalIssue.detail` promises to state "what was wrong AND what was done about
|
|
224
|
+
* it", which is exactly what that broke (fixed in 0.3.19).
|
|
225
|
+
*
|
|
226
|
+
* The key is this tag rather than the `detail` string, because several details interpolate the
|
|
227
|
+
* bytes they found — `the onset "??" is not …` — and keying on those would be unbounded. The
|
|
228
|
+
* per-region issue count stays bounded by the number of KINDS, which is what the collapsing
|
|
229
|
+
* exists to protect.
|
|
230
|
+
*/
|
|
231
|
+
type TalIssueKind =
|
|
232
|
+
| 'text-not-utf8'
|
|
233
|
+
| 'tal-unterminated'
|
|
234
|
+
| 'timestamp-unterminated'
|
|
235
|
+
| 'onset-field-too-long'
|
|
236
|
+
| 'onset-grammar'
|
|
237
|
+
| 'onset-unsigned'
|
|
238
|
+
| 'onset-out-of-range'
|
|
239
|
+
| 'duration-field-too-long'
|
|
240
|
+
| 'duration-grammar'
|
|
241
|
+
| 'last-text-unterminated'
|
|
242
|
+
| 'text-contains-separator'
|
|
243
|
+
| 'region-tail-not-nul';
|
|
244
|
+
|
|
213
245
|
function logIssue(
|
|
214
246
|
log: IssueLog,
|
|
215
247
|
code: TalIssueCode,
|
|
248
|
+
kind: TalIssueKind,
|
|
216
249
|
region: Uint8Array,
|
|
217
250
|
offset: number,
|
|
218
251
|
length: number,
|
|
219
252
|
detail: string,
|
|
220
253
|
): void {
|
|
221
|
-
const
|
|
254
|
+
const key = `${code}|${kind}`;
|
|
255
|
+
const existing = log.get(key);
|
|
222
256
|
if (existing !== undefined) {
|
|
223
257
|
existing.occurrences += 1;
|
|
224
258
|
return;
|
|
225
259
|
}
|
|
226
|
-
log.set(
|
|
260
|
+
log.set(key, {
|
|
227
261
|
code,
|
|
228
262
|
byteOffsetInRegion: offset,
|
|
229
263
|
byteLength: length,
|
|
@@ -271,6 +305,7 @@ function decodeTextRun(region: Uint8Array, start: number, length: number, log: I
|
|
|
271
305
|
logIssue(
|
|
272
306
|
log,
|
|
273
307
|
'ANNOTATION_TEXT_NOT_UTF8',
|
|
308
|
+
'text-not-utf8',
|
|
274
309
|
region,
|
|
275
310
|
start,
|
|
276
311
|
length,
|
|
@@ -306,6 +341,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
306
341
|
logIssue(
|
|
307
342
|
log,
|
|
308
343
|
'TAL_TRUNCATED_AT_REGION_END',
|
|
344
|
+
'tal-unterminated',
|
|
309
345
|
region,
|
|
310
346
|
start,
|
|
311
347
|
regionLength - start,
|
|
@@ -321,6 +357,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
321
357
|
logIssue(
|
|
322
358
|
log,
|
|
323
359
|
'TAL_MALFORMED',
|
|
360
|
+
'timestamp-unterminated',
|
|
324
361
|
region,
|
|
325
362
|
start,
|
|
326
363
|
bodyEnd - start,
|
|
@@ -336,6 +373,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
336
373
|
logIssue(
|
|
337
374
|
log,
|
|
338
375
|
'TAL_MALFORMED',
|
|
376
|
+
'onset-field-too-long',
|
|
339
377
|
region,
|
|
340
378
|
start,
|
|
341
379
|
onsetEnd - start,
|
|
@@ -356,6 +394,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
356
394
|
logIssue(
|
|
357
395
|
log,
|
|
358
396
|
'TAL_MALFORMED',
|
|
397
|
+
'onset-grammar',
|
|
359
398
|
region,
|
|
360
399
|
start,
|
|
361
400
|
Math.max(onsetEnd - start, 1),
|
|
@@ -368,6 +407,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
368
407
|
logIssue(
|
|
369
408
|
log,
|
|
370
409
|
'TAL_MALFORMED',
|
|
410
|
+
'onset-unsigned',
|
|
371
411
|
region,
|
|
372
412
|
start,
|
|
373
413
|
onsetEnd - start,
|
|
@@ -379,6 +419,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
379
419
|
logIssue(
|
|
380
420
|
log,
|
|
381
421
|
'TAL_MALFORMED',
|
|
422
|
+
'onset-out-of-range',
|
|
382
423
|
region,
|
|
383
424
|
start,
|
|
384
425
|
onsetEnd - start,
|
|
@@ -397,6 +438,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
397
438
|
logIssue(
|
|
398
439
|
log,
|
|
399
440
|
'TAL_MALFORMED',
|
|
441
|
+
'duration-field-too-long',
|
|
400
442
|
region,
|
|
401
443
|
durationStart,
|
|
402
444
|
durationLength,
|
|
@@ -411,6 +453,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
411
453
|
logIssue(
|
|
412
454
|
log,
|
|
413
455
|
'TAL_MALFORMED',
|
|
456
|
+
'duration-grammar',
|
|
414
457
|
region,
|
|
415
458
|
durationStart,
|
|
416
459
|
Math.max(durationLength, 1),
|
|
@@ -435,6 +478,7 @@ function scanTal(region: Uint8Array, start: number, ordinal: number, log: IssueL
|
|
|
435
478
|
logIssue(
|
|
436
479
|
log,
|
|
437
480
|
'TAL_MALFORMED',
|
|
481
|
+
'last-text-unterminated',
|
|
438
482
|
region,
|
|
439
483
|
runStart,
|
|
440
484
|
bodyEnd - runStart,
|
|
@@ -463,6 +507,7 @@ function readTextRun(region: Uint8Array, start: number, end: number, log: IssueL
|
|
|
463
507
|
logIssue(
|
|
464
508
|
log,
|
|
465
509
|
'TAL_MALFORMED',
|
|
510
|
+
'text-contains-separator',
|
|
466
511
|
region,
|
|
467
512
|
start,
|
|
468
513
|
end - start,
|
|
@@ -502,6 +547,7 @@ export function parseTalRegion(
|
|
|
502
547
|
logIssue(
|
|
503
548
|
log,
|
|
504
549
|
'TAL_REGION_NOT_NUL_TERMINATED',
|
|
550
|
+
'region-tail-not-nul',
|
|
505
551
|
region,
|
|
506
552
|
scan,
|
|
507
553
|
regionBytes - scan,
|