edfcore 0.4.463 → 0.4.465

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.463";
112
+ export declare const VERSION = "0.4.465";
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.463';
82
+ export const VERSION = '0.4.465';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,38 @@ 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.465
10
+
11
+ - **Added** the close half of `cachedSource`'s pass-through, which had never run. At `maxBytes: 0`
12
+ the function returns a different object entirely — built and returned before any cache state
13
+ exists — with its own `read` and its own `close`. The read half was covered twice over; the
14
+ close half is the one whose failure a test cannot see indirectly.
15
+ - `cachedSource(await fileSource(path), { maxBytes: 0 })` is a reasonable thing to write. The page
16
+ documents the budget as floored at 0, and wrapping unconditionally while tuning the number per
17
+ environment is how a caller arrives there. A pass-through that dropped the delegation would hold
18
+ the descriptor open for the life of the process, with nothing about the reads looking wrong.
19
+ - The optional-`close` case is pinned alongside it: `ByteSource.close` is optional and
20
+ `byteSource(bytes)` is the adapter that omits it, so `source.close?.()` is what makes closing a
21
+ zero-budget wrapper over an in-memory file resolve rather than throw a `TypeError` — the shape a
22
+ caller hits while swapping adapters.
23
+
24
+ ## 0.4.464
25
+
26
+ - **Added** tests for the `maxMaterializeBytes` boundary in all three modules that check it —
27
+ `io/read.ts` before a record range, `decode/digital.ts` before the `Int32Array`, and
28
+ `envelope.ts` before the bucket accumulators. All three admit a requirement equal to the budget,
29
+ and every existing test set a budget far below what it asked for or far above it, so relaxing
30
+ any of the three to a strict comparison left the suite green.
31
+ - Equality is the case the option is used in. The documented way to stay inside a budget is to
32
+ size the request to it — take `maxMaterializeBytes`, divide by `header.recordByteLength`, read
33
+ that many records — and done exactly that lands ON the number every time. A strict comparison
34
+ refuses the arithmetic the error message itself recommends, so "read fewer records per call"
35
+ would be advice a caller had already followed perfectly.
36
+ - Both sides of each boundary, and the refusal is checked to carry the same two numbers on
37
+ `requiredBytes` and `budgetBytes`. Those are the fields `api-errors.md` documents so a caller can
38
+ compute the next request instead of guessing at it, and a boundary error that reported them
39
+ inconsistently would be worse than one that did not report them at all.
40
+
9
41
  ## 0.4.463
10
42
 
11
43
  - **Added** the half-open edge cases for the branch `trimToWindow` takes when nothing in the chunk
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.463",
3
+ "version": "0.4.465",
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.463';
96
+ export const VERSION = '0.4.465';