edfcore 0.4.444 → 0.4.446

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.444";
112
+ export declare const VERSION = "0.4.446";
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.444';
82
+ export const VERSION = '0.4.446';
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.446
10
+
11
+ - **Added** a property test that flooring a sample's published start names the same sample again,
12
+ including before t = 0. `gridSampleStartTicks` rounds a start up to a whole tick on purpose — 256
13
+ samples in a one-second record puts sample 1 at 39,062.5 ticks, published as 39,063 — and the
14
+ rounding exists so that flooring it back names the sample it came from. `time/window.ts` records
15
+ what happens when a bound uses the other rounding: half of all indices excluded from a window
16
+ beginning at their own published start, and a one-sample window coming back empty (0.3.56).
17
+ - Examples are where this arithmetic hides. A geometry whose boundaries land on whole ticks — 100
18
+ or 256 samples a second — cannot tell the two roundings apart at all, and those are the
19
+ geometries anyone writing a test reaches for first. The fractional ones are generated
20
+ deliberately.
21
+ - Negative indices are the half with a branch of their own. A time before the recording gives a
22
+ negative index rather than truncating toward zero and colliding with sample 0 — a pre-stimulus
23
+ window in an ERP analysis is exactly that — and for a negative numerator bigint division already
24
+ truncates toward positive infinity, so the ceiling is the quotient itself and stepping would be
25
+ wrong. One `?:` separates the two, and nothing had ever asked it for a negative index.
26
+
27
+ ## 0.4.445
28
+
29
+ - **Added** tests for what a cached read passes down to the source and what it keeps. A block read
30
+ serves every concurrent reader of that block, which makes the caller's read options a question
31
+ rather than a detail: an option belonging to one reader must not travel, and one belonging to the
32
+ read must.
33
+ - `signal` does not travel, and `cache.test.ts` covers why at length — a viewer aborting the window
34
+ the user scrolled away from killed the fresh window whenever both landed in the same block
35
+ (0.3.43). `maxMaterializeBytes` does travel, and nothing checked it. It is not one reader's
36
+ preference but a ceiling on what may be allocated, and the block read is the allocation.
37
+ - `cachedSource` over `httpSource` is the composition `api-sources.md` recommends, and there the
38
+ block read is the request that goes out. A caller who lowered the budget for a read on a phone,
39
+ and had it dropped on the way to the transport, gets exactly the allocation they were refusing.
40
+ - The pair is the point: two options, two answers, one call site, and the reason each is what it is
41
+ has nothing to do with the other. An unset budget is checked to be absent rather than present and
42
+ `undefined`, because `exactOptionalPropertyTypes` is on and a source reading it with `??` would
43
+ see a different thing.
44
+
9
45
  ## 0.4.444
10
46
 
11
47
  - **Fixed** the likeliest mistake anyone makes with this library saying nothing about itself.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.444",
3
+ "version": "0.4.446",
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.444';
96
+ export const VERSION = '0.4.446';