edfcore 0.4.429 → 0.4.431

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.429";
112
+ export declare const VERSION = "0.4.431";
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.429';
82
+ export const VERSION = '0.4.431';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,42 @@ 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.431
10
+
11
+ - **Added** tests that a 16-bit channel labelled `Status` is not a BioSemi Status channel.
12
+ `api-helpers.md` explains why `readTriggers` locates the channel itself rather than taking a
13
+ `signalIndices` — "a 24-bit EEG sample decoded as a trigger word yields plausible-looking events
14
+ out of ordinary data" — and that reasoning is about the wrong channel of the right file. The
15
+ other way in is the right channel name in the wrong kind of file.
16
+ - `Status` is not a BioSemi word. Plenty of systems label a channel that way, and a plain EDF file
17
+ carrying one is an ordinary thing to be handed. Its samples are 16 bits of a measurement; a
18
+ BioSemi Status word is 24 bits of a latched bit field with the trigger input in the low 16 and
19
+ flags at bits 16, 20 and 22. Read one as the other and the low bits become codes, bit 16 becomes
20
+ an epoch marker that flips constantly, and what comes back is a dense list of events with real
21
+ timestamps from a channel that recorded a voltage. Nothing about that output says it is wrong.
22
+ - The guard is one line, and it is what makes the documented
23
+ `getStatusSignal(header) !== undefined` check mean "this is an ActiveTwo recording" rather than
24
+ "something here is called Status". It had never been given a 16-bit file to refuse. The label
25
+ matching is deliberately forgiving about case and padding; the width is not.
26
+
27
+ ## 0.4.430
28
+
29
+ - **Added** tests for a patient's date of birth being redacted out of a message that never quotes
30
+ the field. `redactDiagnostic` withholds identification by substituting the field's value out of
31
+ the message by text, and `DATE_IMPLAUSIBLE` defeats every spelling of it: the field says
32
+ `02-MAY-2050`, the message says `2050-05-02`, because it is comparing two dates and prints both
33
+ in one form. No substring of the raw field appears in that sentence. It is redacted anyway, from
34
+ `actual` — which carries whatever the message chose to print.
35
+ - It is also the case with the widest reach. The other identification diagnostics fire on a
36
+ malformed field, so a conformant file never produces them; this one fires on a perfectly
37
+ conformant patient field whose only fault is a year the two-digit header rule resolved into the
38
+ future, which is what a recording made before 1985 or after 2084 looks like. A clinical file with
39
+ nothing wrong with it, printed by a command asked to withhold the patient, and a date of birth in
40
+ the output.
41
+ - The other half is what must survive. Substitution is on the value, never on the code or the rule,
42
+ so the code, the byte offset, the field name, the spec clause and the recording's own start date
43
+ are all still there — and a field nobody asked to withhold is still quoted verbatim.
44
+
9
45
  ## 0.4.429
10
46
 
11
47
  - **Added** tests for `edfcore validate` exiting 1 because validation failed. The exit-code table on
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.429",
3
+ "version": "0.4.431",
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.429';
96
+ export const VERSION = '0.4.431';