edfcore 0.6.30 → 0.6.32

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.6.30";
112
+ export declare const VERSION = "0.6.32";
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.6.30';
82
+ export const VERSION = '0.6.32';
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.6.32
10
+
11
+ - **Added** a fifteenth shape to the `AWKWARD` matrix: a file with two annotation channels of
12
+ different widths. EDF+ permits more than one and is specific about the asymmetry — the FIRST
13
+ carries the timekeeping TAL that states each record's onset, and any of them may carry events.
14
+ Two scorers writing into one file, or a device separating its own markers from a technician's
15
+ notes, produce exactly this.
16
+ - `secondary-annotation-signal.test.ts` covers the decoding. What the matrix had never held is a
17
+ file where the answer to "the annotations channel" is two channels of different widths, so a
18
+ helper that finds one and stops loses half the events silently and a fixed stride through the
19
+ record is wrong for one of them. That is the failure a sweep over a whole file can see and a
20
+ targeted test cannot. Every sweep passes over it.
21
+ - `two-scorers-two-channels.test.ts` also pins the property the sweeps do not state: one
22
+ `readAnnotations` call with no `signalIndices` returns both scorers, sorted together rather than
23
+ one channel after the other, each carrying the `signalIndex` that says which scorer wrote it.
24
+
25
+ ## 0.6.31
26
+
27
+ - **Added** a fourteenth shape to the `AWKWARD` matrix: a file whose last record is half there.
28
+ It is the commonest damage a recording takes — a transfer drops, a disk fills, a copy is
29
+ interrupted, a recorder loses power mid-record — and what lands is a valid header promising more
30
+ records than the bytes hold, ending part way through one.
31
+ - The diagnostics were covered since 0.1: `TRUNCATED_FILE` for the shortfall, `PARTIAL_FINAL_RECORD`
32
+ for the tail, and the rule that only whole records are exposed "because the padding would decode
33
+ as real samples". The shape had never been put in front of the sweeps that run over the matrix —
34
+ every index resolves, ticks and seconds agree, nothing points at the caller's buffer, the five
35
+ source spellings, the second call agrees, every column lines up. Each asks a question of a whole
36
+ file, and none had seen one whose bytes end before its header says they do. They all pass.
37
+ - It makes a pair with 'a record count the header never gave'. Both resolve their count from the
38
+ source length, for different reasons: that one declares `-1`, a writer that never closed the file,
39
+ and this one declares a real count the bytes do not reach. `header.raw.recordCount` is what tells
40
+ them apart, which is why that field is kept beside the resolved one — and
41
+ `a-count-the-header-never-gave.test.ts` now says that rather than claiming to be the only shape
42
+ that recovers.
43
+
9
44
  ## 0.6.30
10
45
 
11
46
  - **Changed** the non-finite-seconds refusal to name the argument the caller passed. It ended
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.6.30",
3
+ "version": "0.6.32",
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.6.30';
96
+ export const VERSION = '0.6.32';