edfcore 0.4.509 → 0.4.511

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.509";
112
+ export declare const VERSION = "0.4.511";
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.509';
82
+ export const VERSION = '0.4.511';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,45 @@ 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.511
10
+
11
+ - **Fixed** `physical-values.md` documenting the limitation 0.4.509 removed. Its note said a fifth
12
+ refusal condition exists, that the header calls it `DEGENERATE_PHYSICAL_RANGE`, and that
13
+ `toPhysical` "can't re-derive this one" so it throws `SCALE_UNAVAILABLE`. The last clause stopped
14
+ being true one release ago.
15
+ - The page's table now lists five conditions rather than four, so the fifth is documented where a
16
+ reader looks for it rather than in an aside below. Five rows, four distinct codes: two conditions
17
+ reach `DEGENERATE_PHYSICAL_RANGE`, which is why the table is of conditions.
18
+ - The table is not prose. `scaling-page-arithmetic.test.ts` parses these rows out of the page and,
19
+ for each, builds the signal and asserts `toPhysical` refuses it with the code in that row — so
20
+ the new row is checked by the same mechanism as the other four, and the page cannot describe a
21
+ refusal the library does not make. The order it claims is checked too: a channel that is both
22
+ log-transformed and unusably scaled is refused as the log-transformed one, which is the answer
23
+ that says something about the data rather than about the map.
24
+ - The note is kept, rewritten as history: what the two sides used to report, and why looking up
25
+ `SCALE_UNAVAILABLE` in `header.diagnostics` used to find nothing.
26
+
27
+ ## 0.4.510
28
+
29
+ - **Added** the one claim every diagnostic makes at once, as a property test: `raw` quotes the
30
+ bytes `byteOffset` names. `EdfDiagnostic.raw` is documented as "those bytes as text, exactly as
31
+ written including padding" — the bytes AT the offset the same diagnostic reports — and it is the
32
+ only evidence a reader has that a diagnosis is about the field in front of them.
33
+ - It had gone wrong three times, three different ways, each found by eye rather than by a test:
34
+ 0.3.26, where `NON_ASCII_HEADER_FIELD` quoted bytes contradicting its own claim; 0.3.68, where a
35
+ TAL diagnostic put the escaped message preview in `raw` and returned a 13-character string for
36
+ four bytes; and 0.3.73, where `PARTIAL_FINAL_RECORD` pointed into the data section while carrying
37
+ the record-count field's eight bytes. Nothing checked the pair, which is how one defect appeared
38
+ in three places.
39
+ - Both sides are damaged at random and checked, because they derive the offset differently: a
40
+ header field's comes from a fixed table, a TAL's is recomputed as
41
+ `headerByteLength + recordIndex * recordByteLength + signal.recordByteOffset` while the bytes are
42
+ sliced from a record buffer that starts at neither. Dropping the last term of that sum, or adding
43
+ one to a header field's offset, each fail the run.
44
+ - Roughly 15,000 diagnostics across 24 codes satisfy it today, and the run asserts the counts as
45
+ well as the property: a change that stopped producing diagnostics under damage would otherwise
46
+ pass by having nothing to check.
47
+
9
48
  ## 0.4.509
10
49
 
11
50
  - **Fixed** `toPhysical` naming a different cause than the header for one class of unscalable
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.509",
3
+ "version": "0.4.511",
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.509';
96
+ export const VERSION = '0.4.511';