edfcore 0.3.17 → 0.3.18

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 CHANGED
@@ -6,6 +6,28 @@ 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.18
10
+
11
+ - **Fixed** `inspectEdf` discarding every diagnostic the parse had already found when a fatal check
12
+ stopped it. A three-signal EDF+ file with a degenerate physical range, a degenerate digital range
13
+ and a duplicated label, and no annotations channel, returned exactly ONE entry:
14
+ `EDFPLUS_WITHOUT_ANNOTATION_SIGNAL`. The three real defects were found, recorded, and thrown away
15
+ with the sink.
16
+ - It matters most in this call, because triaging unknown files is the whole job of it — and the
17
+ fatal is often the least informative of the set. None of those three has anything to do with
18
+ annotations, so the reader adds an annotations channel, re-runs, and only then learns the file
19
+ has three more problems. The documented contract said "everything found, including the fatal one
20
+ when parsing failed"; it was one thing.
21
+ - **Added** `EdfFormatError.collected` — the diagnostics already in hand when the fatal was raised,
22
+ in the order they were found, empty when it was raised before any collection existed. A caller
23
+ who catches rather than inspects sees them too.
24
+ - The mechanism is a `fatal()` on `DiagnosticSink`, so a fatal thrown where a sink EXISTS carries
25
+ what the sink has. `fatalError` stays the sinkless version for the paths that genuinely have
26
+ nothing to attach. `sink.report` does the same when a code is always fatal or `strict` is set,
27
+ so both routes are covered rather than the five call sites that happened to be found.
28
+ - The fatal is reported LAST, after what led up to it: it is the reason parsing stopped, and a
29
+ reader going down the list arrives at it in the order the parse did.
30
+
9
31
  ## 0.3.17
10
32
 
11
33
  **`formatHeader` printed `00:00:00` for a starttime the file never stated.** The module's own
@@ -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.17";
112
+ export declare const VERSION = "0.3.18";
113
113
  //# sourceMappingURL=constants.d.ts.map
package/dist/constants.js CHANGED
@@ -79,5 +79,5 @@ export const SIGNAL_FIELD_BLOCK_OFFSETS = {
79
79
  reserved: 224,
80
80
  };
81
81
  /** Published package version. Kept in sync with package.json by a test. */
82
- export const VERSION = '0.3.17';
82
+ export const VERSION = '0.3.18';
83
83
  //# sourceMappingURL=constants.js.map
@@ -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,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc,CAMxF;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,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQlC,iGAAiG;IACjG,IAAI,WAAW,IAAI,SAAS,aAAa,EAAE,CAE1C;IAED,oEAAoE;IACpE,KAAK,IAAI,SAAS,aAAa,EAAE;CAKlC"}
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 = cause === undefined
59
- ? { code: diagnostic.code, diagnostic }
60
- : { code: diagnostic.code, diagnostic, cause };
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
- throw toFormatError(diagnostic);
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":"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"}
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;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
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;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -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, fatalError } from '../diagnostics/collector.js';
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 fatalError({
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 fatalError({
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 fatalError({
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 fatalError({
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 fatalError({
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 ` +
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/header/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/header/parse.ts"],"names":[],"mappings":"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"}
@@ -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,CA4DxB"}
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
- diagnostics: Object.freeze(overBudget === undefined ? [failure] : [overBudget, failure]),
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
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,6FAA6F;QAC7F,6FAA6F;QAC7F,0FAA0F;QAC1F,4FAA4F;QAC5F,0FAA0F;QAC1F,wEAAwE;QACxE,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;YACjC,MAAM,EAAE,SAAS;YACjB,UAAU;YACV,SAAS;YACT,WAAW;YACX,yFAAyF;YACzF,6EAA6E;YAC7E,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;gBACzB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACjD,GAAG,SAAS;gBACZ,OAAO;aACR,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.3.17",
3
+ "version": "0.3.18",
4
4
  "description": "Modern, typed, zero-dependency reader for EDF, EDF+, BDF and BDF+ biosignal files. Works in browsers and Node with true random access.",
5
5
  "keywords": [
6
6
  "edf",
package/src/constants.ts CHANGED
@@ -93,4 +93,4 @@ export const SIGNAL_FIELD_BLOCK_OFFSETS = {
93
93
  } as const;
94
94
 
95
95
  /** Published package version. Kept in sync with package.json by a test. */
96
- export const VERSION = '0.3.17';
96
+ export const VERSION = '0.3.18';
@@ -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(diagnostic: EdfDiagnostic, cause?: unknown): EdfFormatError {
84
- const init: EdfFormatErrorInit =
85
- cause === undefined
86
- ? { code: diagnostic.code, diagnostic }
87
- : { code: diagnostic.code, diagnostic, cause };
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
- throw toFormatError(diagnostic);
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;
@@ -29,7 +29,7 @@ import {
29
29
  HEADER_FIELDS,
30
30
  SIGNAL_FIELD_WIDTHS,
31
31
  } from '../constants.js';
32
- import { DiagnosticSink, fatalError } from '../diagnostics/collector.js';
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 fatalError({
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 fatalError({
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 fatalError({
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 fatalError({
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 fatalError({
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
- diagnostics: Object.freeze(overBudget === undefined ? [failure] : [overBudget, failure]),
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
  }