edfcore 0.5.31 → 0.5.33

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.5.31";
112
+ export declare const VERSION = "0.5.33";
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.5.31';
82
+ export const VERSION = '0.5.33';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,57 @@ 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.5.33
10
+
11
+ - **Added** an overlap driven through every surface that could call it a gap. This is the defect the
12
+ changelog has fixed four times. An overlap travels in `index.gaps` with a NEGATIVE duration —
13
+ 0.2.69 decided that and `api-reading.md` documents it — so every consumer of that array has to
14
+ branch on the sign, and each one that did not printed "a gap of -0.2 s": a gap of negative
15
+ duration, with an explanation that inverts what an overlap does. Across a gap two samples are
16
+ seconds apart; across an overlap they cover the same time, so concatenating duplicates it rather
17
+ than skipping it.
18
+ - 0.3.3 partitioned `edfcore gaps`. 0.3.33 applied the rule to "the two places that still said it
19
+ was". 0.3.41 found a third in `src/chunks.ts`, which mentioned an overlap nowhere. 0.3.59 found a
20
+ fourth forty lines below the third, on the branch a probed index actually reaches. Every fix was
21
+ local, and no test treated it as one rule over one file.
22
+ - One overlapping recording now goes through all of them — both `mergeChunks` branches, the
23
+ validation report on an EDF+D and on an EDF+C that claims to be continuous, the CLI's summary line
24
+ and its tab-separated row, and the record probes at open — and each is asserted to use the word
25
+ `overlap` and to present no negative magnitude as a duration. The second is what would have failed
26
+ all four times: `gap of -0.2 s` is what the defect looked like on screen, at every one of them.
27
+ - A blanket ban on the word "gap" would be wrong, and the test says so: the diagnostics correctly use
28
+ it in the rule they cite — "a discontinuous file may leave gaps between records but never overlaps
29
+ them" — which is the sentence that makes them understandable. The check is about how the observed
30
+ boundary is described, not about a vocabulary.
31
+ - The three modules that partition a gap's own duration by its sign are read out of `src/`, so a
32
+ fourth consumer fails here until it is driven. That is the part that stops this being a fifth
33
+ local fix.
34
+
35
+ ## 0.5.32
36
+
37
+ - **Added** a lattice check over the ten microvolt values `quick-start.md` prints. That page prints
38
+ two `Float64Array` blocks — five values from a window at `t = 0` in the browser example, five more
39
+ from `t = 60` in the Node one. They are the first numbers anyone sees from this library, and
40
+ `quick-start-page.test.ts` runs everything around them: the header listing, the sample count, the
41
+ byte count, the annotation lines, the three refusals. The values themselves it did not touch.
42
+ - They cannot be reproduced from the page, which names its file's geometry and not its waveform.
43
+ What they can be checked against is the scale that geometry implies, and that turns out to be the
44
+ check worth having: a physical value is `bitValue * (offset + digital)` for an integer `digital`,
45
+ so on a given declaration the reachable values are a lattice, and a float that is not on it was
46
+ produced by a different expression or a different range.
47
+ - That is not hypothetical. 0.5.6 found exactly that on `api-types.md` — two printed values belonged
48
+ to a file with a different digital range from the one the rest of the page's example used, and the
49
+ existing test checked five of seven lines and stopped before them. A lattice check catches it
50
+ without needing the waveform, and would have caught it there. The last test makes the point
51
+ concretely by converting the same digital sample on a 12-bit declaration and showing it lands
52
+ somewhere else.
53
+ - Each of the ten is inverted through the declared scale, asserted to be a whole number inside the
54
+ declared range, and put back through `toPhysical` on a real signal, compared with `Object.is` —
55
+ `toBeCloseTo` would pass on a value from the wrong scale. The page's own argument for the array
56
+ type goes with them: every one of the ten changes under `Math.fround`, so "a sample scaled into
57
+ float32 loses about a quarter of a quantisation step" is true of the very values printed beneath
58
+ it. And the first value is asserted to be what digital zero converts to, which is not zero.
59
+
9
60
  ## 0.5.31
10
61
 
11
62
  - **Added** the record-range contract at the five calls that take one. `RecordRange` is the other
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.5.31",
3
+ "version": "0.5.33",
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.5.31';
96
+ export const VERSION = '0.5.33';