edfcore 0.4.412 → 0.4.414

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.412";
112
+ export declare const VERSION = "0.4.414";
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.412';
82
+ export const VERSION = '0.4.414';
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.414
10
+
11
+ - **Added** a check that binds every entry of AGENTS.md's "Things that look like bugs and are not"
12
+ to the test that pins it. The section exists because each entry is something a reader improves on
13
+ sight — the scaling expression has an obviously better rearrangement, `readWindow` returning an
14
+ array for a continuous file is an obviously unnecessary wrapper, an optional `signal.scale` is an
15
+ obviously missing default — and every one of them has been proposed.
16
+ - It closes with a promise about itself: "Each of the code rules has a test pinning it and a comment
17
+ explaining why." Nothing checked that sentence, and both ways it stops being true are ordinary. A
18
+ rule gets added because someone was bitten by it and no test comes with it, so the list reads as
19
+ enforced while it is not. Or a test is renamed in a tidy-up, and nothing fails — the rule is still
20
+ checked, or it is not, and nobody can tell which from the list.
21
+ - The binding is checked in both directions: a new bullet with no entry fails, and an entry naming
22
+ a file that no longer exists or no longer mentions the rule fails too. Each binding carries a
23
+ phrase the file must contain, so a filename alone cannot stand in for a check.
24
+ - The last entry is exempt by the sentence's own words — it is a fact about a branch on a remote,
25
+ which an offline suite cannot see — and it is required to still BE the last, because a rule
26
+ appended after it would inherit an excuse written for something else.
27
+
28
+ ## 0.4.413
29
+
30
+ - **Added** tests for the calendar edfcore validates against. `isValidCalendarDate` exists because
31
+ a `Date` is the wrong tool: real files carry 31 April and 29 February in common years, and
32
+ `new Date(1997, 3, 31)` rolls both forward into a neighbouring month rather than rejecting them.
33
+ A recording silently dated a day later than it was made is the kind of error nobody finds,
34
+ because the wrong answer is a perfectly ordinary date.
35
+ - `date-ban.test.ts` proves no `Date` is constructed anywhere. That left the arithmetic which
36
+ replaced it, exercised only through the parser, where a rejected date is indistinguishable from a
37
+ rejected field.
38
+ - The month lengths are not restated — restating a table checks a transcription, and the
39
+ transcription is what would already be wrong. The properties it must satisfy are checked instead,
40
+ from the Gregorian calendar rather than from this file: the twelve months sum to 365 or 366 for
41
+ every year from 1 to 9999; four hundred consecutive years hold exactly 97 leap years and 146,097
42
+ days, which is a whole number of weeks; and a century not divisible by 400 holds 24, not 25.
43
+ - A table with a month a day short fails the first for every year, and a leap rule missing its
44
+ century exception fails the second by three days a cycle.
45
+
9
46
  ## 0.4.412
10
47
 
11
48
  - **Added** tests for four header fields that are all finite and imply a gain that is not. An EDF
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.412",
3
+ "version": "0.4.414",
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.412';
96
+ export const VERSION = '0.4.414';