edfcore 0.6.36 → 0.6.38

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.36";
112
+ export declare const VERSION = "0.6.38";
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.36';
82
+ export const VERSION = '0.6.38';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,47 @@ 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.38
10
+
11
+ - **Documented** the third regime the sample helpers have. `api-helpers.md` described two: on a
12
+ contiguous file the recording-aware forms agree with the grid functions exactly, and on a
13
+ discontinuous one they differ by the gaps, with `sampleAt` able to answer `undefined` for an
14
+ instant in a hole.
15
+ - A file whose records OVERLAP is neither. Two samples start at the same instant there, so
16
+ `sampleAt(sampleStartSecondsOf(recording, signal, i))` can answer with a sample that is not `i`
17
+ — on the shape added in 0.6.36 it does for twenty of the first forty-eight indices. No error, no
18
+ `undefined`: the sample it names does start at the instant asked for, and nothing can choose
19
+ between two that do. A caller round-tripping an index through an instant gets a different index
20
+ back, which is the answer the page did not prepare them for.
21
+ - The page now names the regime, says how to detect it (`contiguityOf`, or the timeline's
22
+ `RECORD_ONSET_SPACING_VIOLATION`), and says to compare instants rather than indices.
23
+ - `an-instant-two-samples-share.test.ts` executes the property in both forms over all seventeen
24
+ shapes: the weak one that holds everywhere — the sample found starts at the instant asked for —
25
+ and the strong one that holds on the sixteen whose records do not overlap. The overlapping shape
26
+ is asserted to be the only place they differ, and to differ on twenty indices rather than on one
27
+ edge case.
28
+ - No library change: there is no better answer for it to give.
29
+
30
+ ## 0.6.37
31
+
32
+ - **Fixed** an incomplete sentence on `api-reading.md`. It said the index traversal "is chunked so
33
+ memory stays bounded whatever the file size: each chunk holds
34
+ `min(4 MiB, maxMaterializeBytes) / recordByteLength` records, and never fewer than one" — which
35
+ is true and reads as though a small budget only makes the scan slower. Below one record's worth
36
+ it does not: one record cannot be read within the budget and there is no smaller count to ask
37
+ for, so the scan is refused. The page says that now, and says the refusal names the record's size.
38
+ - **Added** `the-page-says-always.test.ts`, which executes the five claims on that page that say
39
+ "always", "never" or "every" against all seventeen shapes. Each was written when the matrix held
40
+ eight, and a universal claim is only as checked as the widest file anyone pointed it at — 0.6.36
41
+ is what happens when one meets a shape it had not: four sweeps turned out to be asserting
42
+ something narrower than they said. The claims are read off the page, so a rewording fails here.
43
+ - Two are worth naming. `readAnnotations` answers on a file with NO annotations channel, returning
44
+ one onset per record from the nominal grid — "always" includes the file with nowhere to store an
45
+ annotation. And on that same file a budget of one byte does not refuse, because the page's next
46
+ sentence says such a file "is not scanned at all, because its record onsets are arithmetic": the
47
+ two claims agree, and the test checks that they do rather than exempting one.
48
+ - No library change.
49
+
9
50
  ## 0.6.36
10
51
 
11
52
  - **Added** a seventeenth shape to the `AWKWARD` matrix: records that overlap in time, where a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.6.36",
3
+ "version": "0.6.38",
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.36';
96
+ export const VERSION = '0.6.38';