edfcore 0.4.273 → 0.4.275

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.273";
112
+ export declare const VERSION = "0.4.275";
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.273';
82
+ export const VERSION = '0.4.275';
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.275
10
+
11
+ - **Added** the check for a ban `AGENTS.md` lists under things that look like bugs and are not:
12
+ `TextDecoder` belongs in `src/tal/` and nowhere else. Verified on Node v24.4.0, every `latin1`
13
+ label it accepts reports `windows-1252` and decodes byte `0x80` as `U+0080`, while the WHATWG
14
+ standard mandates `U+20AC` — so a `TextDecoder` on the header path would make the same file
15
+ produce different strings in Node and in a browser, from a library whose claim is that it reads
16
+ the same bytes the same way everywhere. `src/tal/` is exempt because annotation text really is
17
+ UTF-8, the one encoding every runtime agrees on.
18
+ - The stripper removes string literals as well as comments, and that is not tidiness:
19
+ `header/fields.ts` contains the word `TextDecoder` inside a diagnostic message explaining this
20
+ rule to a user, so a comments-only sweep reads the file that documents the ban as the file that
21
+ breaks it. It looked like a live violation until the line was read.
22
+ - A second test asserts the consequence rather than the rule — `0x80` in a real signal label,
23
+ read back through `openEdf`, comes out `U+0080` and not a euro sign. `latin1.test.ts` pins the
24
+ decoder in isolation; this is the path a header actually takes.
25
+
26
+ ## 0.4.274
27
+
28
+ - **Added** the check that edfcore never writes to the console. The README says it twice, and the
29
+ survey table explaining why this library exists lists what the alternatives do instead —
30
+ "`console.warn` and `null`, or bare thrown strings". Diagnostics are values on the result
31
+ precisely so that reporting them is the caller's decision; a library that logs takes that
32
+ decision away, breaks anything parsing the consumer's stdout, and on a header diagnostic puts a
33
+ patient's name into whatever collects the logs. One `console.warn` left in during debugging
34
+ would have shipped, and the only way to find it was to be the person whose output it landed in.
35
+ - Both halves, because neither is enough on its own. A static sweep of `src/` with comments
36
+ stripped catches a call on a path no test happens to take — the survey table is quoted in
37
+ comments, so stripping is load-bearing. Running the library with every console method trapped
38
+ catches one the sweep cannot see, and that was verified rather than assumed: a call written as
39
+ `globalThis['con' + 'sole'].warn` leaves no literal `console` in the file, passes the sweep, and
40
+ is caught by the trap.
41
+
9
42
  ## 0.4.273
10
43
 
11
44
  - **Made** the fuzz suite assert the clause it was missing. `tests/README.md` states the safety
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.273",
3
+ "version": "0.4.275",
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.273';
96
+ export const VERSION = '0.4.275';