edfcore 0.4.459 → 0.4.461

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.459";
112
+ export declare const VERSION = "0.4.461";
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.459';
82
+ export const VERSION = '0.4.461';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,40 @@ 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.461
10
+
11
+ - **Added** the exact-edge cases for `resolveTimeWindow` on a segmented index. The window is
12
+ half-open — `[start, start + duration)` — and the segmented path decides that on one line:
13
+ `segmentEndTicks <= windowStartTicks || segmentStartTicks >= windowEndTicks`. Relaxing either
14
+ comparison to a strict one left the whole suite green, because no window in it had ever landed
15
+ on a segment edge exactly: they overlapped by a record or missed by ninety seconds.
16
+ - The cost is a duplicated record at every gap. Walking a discontinuous file segment by segment —
17
+ `[0, 4)` then `[4, 100)` on the fixture here — a relaxed left comparison returns record 3 in
18
+ both, so a consumer concatenating the two gets one second of signal twice, at the seam where a
19
+ sleep study is most likely to be scored.
20
+ - Four cases: a segment ending exactly where the window starts is out, a segment starting exactly
21
+ where the window ends is out, a segment starting exactly where the window starts is IN, and a
22
+ three-window walk that visits records 0..7 once each. The third is what stops the first two
23
+ passing on an implementation that excluded every boundary rather than the right one.
24
+ - Found by mutating the comparisons rather than by reading the coverage report, which called the
25
+ line covered.
26
+
27
+ ## 0.4.460
28
+
29
+ - **Added** the fourth rung of `timekeepingDefect`'s ladder, which had never run: a timekeeping
30
+ TAL written `+t 0x14 0x14 0x14 0x00` — two empty texts where the grammar allows exactly one.
31
+ - The other three rungs were covered. Text merged into the timekeeping TAL is the destructive one
32
+ and has its own file; a stray duration and the widespread `+t 0x14 0x00` shorthand are both
33
+ benign and both tested. This is the shorthand's opposite — a writer looping over an events list
34
+ that happens to be empty and terminating each iteration anyway — and deleting the check for it
35
+ failed nothing.
36
+ - Pinned as BENIGN, which is the part that matters. The two kinds carry separate once-per-call
37
+ flags, and a rung landing on the destructive side would report every record of a file whose
38
+ writer does this throughout. The fixture makes all three records malformed and asserts one
39
+ report, with the "nothing was lost" advice rather than the "EVERY affected record" advice.
40
+ - And the onset still governs the timeline: the span is asserted, so a rung that reported the
41
+ defect while losing the timing would fail here rather than pass quietly.
42
+
9
43
  ## 0.4.459
10
44
 
11
45
  - **Added** the two `COMMA_DECIMAL_SEPARATOR` cases that were missing: a comma in the declared
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.459",
3
+ "version": "0.4.461",
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.459';
96
+ export const VERSION = '0.4.461';