edfcore 0.4.445 → 0.4.447

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.445";
112
+ export declare const VERSION = "0.4.447";
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.445';
82
+ export const VERSION = '0.4.447';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,43 @@ 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.447
10
+
11
+ - **Added** a check that a machine which has not downloaded the corpus still gets a green suite.
12
+ `tests/README.md` opens with "`git clone && npm test` is green and offline"; the offline half is
13
+ a property — a trap replaces `fetch` and `offline.test.ts` proves it is armed — and the other
14
+ half, that a fresh clone passes without the ~59 MB the fetch script pulls, was enforced by
15
+ convention.
16
+ - It is the half a contributor meets first, and it fails unwelcomingly: they clone, run the suite,
17
+ and watch it fail on files they were never told to download, in tests named after recordings they
18
+ have never heard of, with the fix in a README they have not reached yet.
19
+ - CI is what makes the convention load-bearing rather than theoretical. It runs `npm ci` and
20
+ `npm run check` and never fetches the corpus, so every job is a run in the skipping state — an
21
+ unguarded corpus test fails every job on every push, blocking every release, and looks like a
22
+ problem with the corpus rather than with the guard.
23
+ - The rule is mechanical: a test file that builds a path into the downloaded directory has to ask
24
+ whether the file is there. Both halves are needed — `fixture-policy.test.ts` sits in the same
25
+ folder, names the directory in a git check, reads nothing from it, and must not be required to
26
+ guard.
27
+
28
+ ## 0.4.446
29
+
30
+ - **Added** a property test that flooring a sample's published start names the same sample again,
31
+ including before t = 0. `gridSampleStartTicks` rounds a start up to a whole tick on purpose — 256
32
+ samples in a one-second record puts sample 1 at 39,062.5 ticks, published as 39,063 — and the
33
+ rounding exists so that flooring it back names the sample it came from. `time/window.ts` records
34
+ what happens when a bound uses the other rounding: half of all indices excluded from a window
35
+ beginning at their own published start, and a one-sample window coming back empty (0.3.56).
36
+ - Examples are where this arithmetic hides. A geometry whose boundaries land on whole ticks — 100
37
+ or 256 samples a second — cannot tell the two roundings apart at all, and those are the
38
+ geometries anyone writing a test reaches for first. The fractional ones are generated
39
+ deliberately.
40
+ - Negative indices are the half with a branch of their own. A time before the recording gives a
41
+ negative index rather than truncating toward zero and colliding with sample 0 — a pre-stimulus
42
+ window in an ERP analysis is exactly that — and for a negative numerator bigint division already
43
+ truncates toward positive infinity, so the ceiling is the quotient itself and stepping would be
44
+ wrong. One `?:` separates the two, and nothing had ever asked it for a negative index.
45
+
9
46
  ## 0.4.445
10
47
 
11
48
  - **Added** tests for what a cached read passes down to the source and what it keeps. A block read
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.445",
3
+ "version": "0.4.447",
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.445';
96
+ export const VERSION = '0.4.447';