edfcore 0.4.522 → 0.4.524

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.
package/README.md CHANGED
@@ -77,7 +77,7 @@ for (const event of annotations) {
77
77
  }
78
78
  ```
79
79
 
80
- > **Status: 0.4.x, early.** edfcore runs 2,500+ tests on generated fixtures, and it's checked
80
+ > **Status: 0.4.x, early.** edfcore runs 2,700+ tests on generated fixtures, and it's checked
81
81
  > against public corpora it didn't author: the EDF, EDF+ and 24-bit BDF+ test files from
82
82
  > teuniz.net, and PhysioNet's sleep-edfx (a real 22-hour polysomnography recording and its
83
83
  > sleep-staging file). Those checks are numeric. Channels labelled `sine 8.5 Hz` decode to
@@ -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.522";
112
+ export declare const VERSION = "0.4.524";
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.522';
82
+ export const VERSION = '0.4.524';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,58 @@ 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.524
10
+
11
+ - **Added** the six CLI commands over the eight awkward shapes, without the corpus. The CLI is
12
+ where an unfamiliar file arrives — that is the argument `cli.md` makes for it, "so you can look
13
+ at a file before writing any code" — and the test that runs it over unfamiliar REAL files,
14
+ `tests/corpus/cli-corpus.test.ts`, skips on a fresh clone. Offline the commands had been run over
15
+ `minimalEdf` and `minimalEdfPlus`: two tidy files.
16
+ - Forty-eight invocations, and each must not throw, must not write to stderr on a file that parsed,
17
+ must print something, must end its last line, and must print no control byte. The shapes are the
18
+ ones a command can be surprised by: no data signal at all makes `signals` an empty listing and
19
+ `gaps` a question about a recording that has none, a zero record duration takes the time axis
20
+ from `gaps` and the rate from `signals`, a duplicate label breaks the one lookup `header` does by
21
+ name.
22
+ - The exit code is checked against its meaning rather than against a constant. `validate` returns 1
23
+ for a file carrying an error-severity diagnostic and 0 otherwise — the CI gate the page documents
24
+ — and a final case asserts the eight shapes produce both codes, or the rule is a constant in
25
+ disguise.
26
+ - No rendered value may be the word `undefined`, and that needs a precise form: the word appears
27
+ legitimately in prose, since `ZERO_RECORD_DURATION` says "it makes every sample rate undefined",
28
+ which is the sentence a reader needs. What is refused is a value SLOT — a field of the
29
+ tab-separated listing, a leaf of the JSON, the right-hand side of a `label: value` line. Those
30
+ mean `String(undefined)` reached the output, and a zero record duration is exactly the file that
31
+ would produce one.
32
+
33
+ ## 0.4.523
34
+
35
+ - **Fixed** a vacuous assertion in `inspect-safety.test.ts`, the property test for the strongest
36
+ promise in the package. It read `header.signals.length` against
37
+ `header.signals.filter((signal) => signal !== undefined).length` — a `readonly EdfSignal[]` has
38
+ no holes, so the filter drops nothing and the line compared a number with itself.
39
+ - It is the same line, in the same words, that `whole-api.test.ts` carried until 0.3.101, where its
40
+ own docblock records finding it. The copy here outlived the fix by four hundred releases, and it
41
+ was the one line in the file claiming to check that a report is internally coherent rather than
42
+ merely present.
43
+ - In its place are the four consistency claims the corpus test now makes, and here they run over
44
+ damaged bytes rather than six real files: the two index arrays partition the signals (each is
45
+ data or annotations, none is both, none is missing from both), each signal's `index` is its
46
+ position, the reported `headerByteLength` is the one its own signal count implies, `ok` is
47
+ exactly "no error-severity diagnostic", and `bytesRead` exceeds neither the file nor the 128 KiB
48
+ ceiling. All of them hold today under bit flips, truncation at every length, and uniformly
49
+ random bytes.
50
+ - Everything from `header !== undefined` onwards is skipped when triage could not parse one, and
51
+ random bytes almost never produce one — so the run now counts how many reports came back with a
52
+ header and asserts the count. A run that got past that line zero times would report green having
53
+ checked only that nothing threw, which is how the assertion it replaces survived.
54
+ - The suite-size figure moves from 2,500 to 2,700, in the three places that state it — the README's
55
+ status line, the foot of `installation.md`, and the docblock of `browser-safety.test.ts`. The
56
+ tests added over 0.4.520-0.4.522 pushed the written-out count past it, which is the direction
57
+ `test-count-claims.test.ts` exists to catch: "N or more" stays true forever once it is true, so
58
+ the property that makes it safe is the property that makes it worthless. It refused the release
59
+ rather than letting the number quietly describe a smaller repository.
60
+
9
61
  ## 0.4.522
10
62
 
11
63
  - **Added** the reading/scaling/decimating agreement checks to the offline suite — the third group
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.522",
3
+ "version": "0.4.524",
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.522';
96
+ export const VERSION = '0.4.524';