edfcore 0.4.367 → 0.4.369

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.
@@ -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.4.367";
112
+ export declare const VERSION = "0.4.369";
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.4.367';
82
+ export const VERSION = '0.4.369';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,39 @@ 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.4.369
10
+
11
+ - **Added** a check over what a `ValidationReport` promises on `validation.md`. `ok` is the field a
12
+ caller branches on and means less than it looks like — exactly "no diagnostic has severity
13
+ `error`", not a claim that the file is conformant, and a false `ok` not a claim it is unreadable.
14
+ The four codes the page says survive to a report at that severity are checked to be the only ones
15
+ that do, on a file where one signal has no scale and the other is fine.
16
+ - The sentence pinned hardest is the one about what cannot appear: no always-fatal code reaches a
17
+ report, because a file carrying one cannot be opened, and a report about such a file would be
18
+ incoherent rather than merely wrong. The single exception is asserted from the other side —
19
+ `TIMELINE_NOT_MONOTONIC` makes the sweep reject.
20
+ - `signalStats` has a shape a caller indexes by: one entry per data signal in `dataSignalIndices`
21
+ order, with annotation channels excluded because their bytes are text, so an off-by-one gives
22
+ every channel its neighbour's statistics. And a signal with no samples reports zeroes rather than
23
+ infinities — `-Infinity` is what an unseeded reduce produces, and it is a number a caller would
24
+ plot.
25
+
26
+ ## 0.4.368
27
+
28
+ - **Added** `tests/property/inspect-safety.test.ts`. `inspectEdf` is the triage call and makes the
29
+ strongest promise in the package: `openEdf` and `parseHeader` promise to throw an `EdfError`
30
+ rather than escape the error model, and `fuzz.test.ts` holds them to that over flipped, random
31
+ and truncated bytes — `inspectEdf` promises not to throw about content at all. That promise had
32
+ only ever been tested against fixtures somebody wrote.
33
+ - A promise of the form "never, for any input" is exactly the kind a fixture cannot establish: the
34
+ inputs a person thinks of are the ones already handled, and the four defects fuzzing found during
35
+ development were all of that shape. Random bytes, random bytes behind a valid version block, a
36
+ bit flipped anywhere, and every truncation length exhaustively now go through it.
37
+ - The report is checked as well as the call, because "never returns believable garbage" is the
38
+ fourth clause of the safety invariant and a triage report full of `NaN` would satisfy "did not
39
+ throw" while telling a reader nothing true. Every source is in memory, so nothing can fail except
40
+ on what the bytes say — which makes any rejection a broken promise rather than an ambiguous one.
41
+
9
42
  ## 0.4.367
10
43
 
11
44
  - **Extended** 0.4.338's interface check to the three structural shims `api-sources.md` prints and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.367",
3
+ "version": "0.4.369",
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.4.367';
96
+ export const VERSION = '0.4.369';