edfcore 0.4.366 → 0.4.368

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.366";
112
+ export declare const VERSION = "0.4.368";
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.366';
82
+ export const VERSION = '0.4.368';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,41 @@ 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.368
10
+
11
+ - **Added** `tests/property/inspect-safety.test.ts`. `inspectEdf` is the triage call and makes the
12
+ strongest promise in the package: `openEdf` and `parseHeader` promise to throw an `EdfError`
13
+ rather than escape the error model, and `fuzz.test.ts` holds them to that over flipped, random
14
+ and truncated bytes — `inspectEdf` promises not to throw about content at all. That promise had
15
+ only ever been tested against fixtures somebody wrote.
16
+ - A promise of the form "never, for any input" is exactly the kind a fixture cannot establish: the
17
+ inputs a person thinks of are the ones already handled, and the four defects fuzzing found during
18
+ development were all of that shape. Random bytes, random bytes behind a valid version block, a
19
+ bit flipped anywhere, and every truncation length exhaustively now go through it.
20
+ - The report is checked as well as the call, because "never returns believable garbage" is the
21
+ fourth clause of the safety invariant and a triage report full of `NaN` would satisfy "did not
22
+ throw" while telling a reader nothing true. Every source is in memory, so nothing can fail except
23
+ on what the bytes say — which makes any rejection a broken promise rather than an ambiguous one.
24
+
25
+ ## 0.4.367
26
+
27
+ - **Extended** 0.4.338's interface check to the three structural shims `api-sources.md` prints and
28
+ to the adapter table under them. The shims exist so neither the DOM nor `@types/node` leaks into
29
+ the published `.d.ts` — naming `Blob` forces `lib.dom` on every consumer — and each is the
30
+ minimum shape edfcore uses.
31
+ - `shim-assignability.test-d.ts` already proves a `Blob`, a `File`, an `AbortSignal` and a
32
+ `Response` all fit. What it cannot see is whether the page prints the same shape it proves things
33
+ about, and a shim is exactly the declaration someone copies off a page to build a test double
34
+ from: a member the page shows and the type does not is a double that compiles against the page
35
+ and is refused by the library.
36
+ - `FetchLike` is checked for an absence instead. `signal` is deliberately not in its printed `init`
37
+ and is still passed at runtime, because naming it would break the assignability of
38
+ `globalThis.fetch` — so the check is that it stays absent from both, and that the page still
39
+ explains why, since without the explanation the omission reads as an oversight.
40
+ - The adapter table's rows now have to name real exports from the entry point each row names, with
41
+ the two filesystem adapters behind `edfcore/node` and everything else reachable from the
42
+ universal entry — the split the shims exist to protect.
43
+
9
44
  ## 0.4.366
10
45
 
11
46
  - **Added** a check that every version number this repository cites is one it released. The
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.366",
3
+ "version": "0.4.368",
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.366';
96
+ export const VERSION = '0.4.368';