edfcore 0.4.230 → 0.4.238

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
@@ -397,7 +397,7 @@ exactly the invention this library refuses. JSR publication.
397
397
 
398
398
  The full documentation site lives in
399
399
  [`website/`](https://github.com/tayal-sarthak/edfcore/tree/main/website), an Astro build with
400
- twenty pages.
400
+ 22 pages.
401
401
  It includes a **local inspector** that opens an EDF file and shows its header, channels, events
402
402
  and waveforms in your browser, with nothing uploaded.
403
403
 
@@ -406,9 +406,10 @@ npm install --prefix website
406
406
  npm run dev --prefix website
407
407
  ```
408
408
 
409
- Start with **Concepts**, which is the mental model the rest of the API follows from. Then the guides (reading signals, physical values, annotations, discontinuous recordings,
410
- diagnostics, data sources, large files, validation), the API reference, and the background
411
- pages. Those include a standalone primer on the EDF format itself.
409
+ Start with **Concepts**, which is the mental model the rest of the API follows from. Then the
410
+ guides one per task, from reading signals to validation the API reference, and the background
411
+ pages. Those include a standalone primer on the EDF format itself. There is no inventory of them
412
+ here on purpose — the sidebar is generated from the pages themselves, so it is the list.
412
413
 
413
414
  ### Deploying the site
414
415
 
@@ -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.230";
112
+ export declare const VERSION = "0.4.238";
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.230';
82
+ export const VERSION = '0.4.238';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,114 @@ 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.238
10
+
11
+ - **Fixed** the README undercounting the documentation site. It said "an Astro build with twenty
12
+ pages" and the collection holds twenty-two — the same shape of defect as the API surface table
13
+ two sections above it, which has been checked since 0.1.x. The number is now written as digits
14
+ and read against the collection, because a number a test has to read should be written the way
15
+ a test can read it.
16
+ - **Removed** the hand-written list of guides in the sentence after it, which named eight of the
17
+ nine. The sidebar is generated from the pages, so it is the list; a paragraph that restates it
18
+ is one more inventory to keep in step, and the site has now lost three of those in nine
19
+ releases.
20
+
21
+ ## 0.4.237
22
+
23
+ - **Fixed** `npm run check` failing on any machine without the website's dependencies installed,
24
+ which is every CI runner. 0.4.231 added a check comparing the docs reader's glob pattern against
25
+ the collection loader's, and read `website/src/content.config.ts` through `import.meta.glob`
26
+ with `?raw`. A raw glob still hands the path to vite's transform, which resolves that file's
27
+ nearest tsconfig — `website/tsconfig.json`, which extends `astro/tsconfigs/strict` out of
28
+ `website/node_modules`. The CI `check` job installs the root workspace only, so the run died
29
+ with `[TSCONFIG_ERROR] Failed to load tsconfig 'astro/tsconfigs/strict'` while the same command
30
+ passed locally, where the site's dependencies happen to be present. Both files are read with
31
+ `readFileSync` now: bytes, no transform, no tsconfig.
32
+
33
+ **0.4.231 through 0.4.236 were never released.** Each was tagged and each publish run failed at
34
+ the check above, so six numbers are holes on npm the way 0.2.29, 0.2.36, 0.2.59 and 0.4.176 are.
35
+ Nothing is lost: every change they carried is in this release. The 0.4.200 revert cannot reach
36
+ this case — the checks passed on the machine cutting the tag, and it was the *runner's*
37
+ environment that differed, which is the gap 0.4.233 had just moved `publint` into CI to narrow
38
+ from the other side.
39
+
40
+ ## 0.4.236
41
+
42
+ - **Added** a check that every internal link on the site points at something that exists. The
43
+ documentation pages carry over a hundred `/docs/...` and `#anchor` links between them and
44
+ nothing checked one: `astro check` validates types and content collections, not hrefs, and a
45
+ static build turns a link to a renamed page into a 404 for the reader rather than an error for
46
+ the author. The 404 page exists because that happens — "the address may have moved when the docs
47
+ were reorganised" — which is a good page to have and a poor substitute for not shipping the
48
+ link. Anchors are the half that rots quietly, since one breaks when someone rewords a heading
49
+ three sections away and the link still looks right; 0.4.234 nearly shipped exactly that, a table
50
+ cell pointing at `#patient-identification` on a page whose redaction note has no heading. The
51
+ nine links hard-coded in `.astro` routes are swept too — the 404's three ways out and the
52
+ landing page's four are the ones a reader hits first. Nothing was broken today.
53
+
54
+ ## 0.4.235
55
+
56
+ - **Added** documentation for the three selection types, taking the recorded undocumented list
57
+ from eleven to eight. `StreamSelection`, `EnvelopeSelection` and `TriggerSelection` are what
58
+ `streamRecords`, `readEnvelope` and `readTriggers` take, and every page showed an object literal
59
+ without ever naming the type — so a wrapper that accepts one had nothing to import.
60
+ `api-types.md` lists all three in the selections table and `api-helpers.md` names each in the
61
+ section that teaches its call, including the fact that the first two are a `WindowSelection`
62
+ plus one field.
63
+ - **Fixed** the sentence under that table, which said `signalIndices` is required "on both
64
+ selections". There are five now, and `TriggerSelection` is the one with no channel field at all
65
+ — `readTriggers` finds the BioSemi Status signal itself, because a 24-bit EEG sample decoded as
66
+ a trigger word yields plausible events out of ordinary data.
67
+
68
+ ## 0.4.234
69
+
70
+ - **Added** documentation for the three formatter options types, and took them off the recorded
71
+ list of undocumented ones. `FormatHeaderOptions`, `FormatAnnotationsOptions` and
72
+ `FormatReportOptions` are exported and every field of each was described somewhere in prose, but
73
+ none of the three was named on a page — so writing a wrapper that accepts one, or building an
74
+ options object ahead of the call, meant reading the `.d.ts`. `api-helpers.md` now gives each a
75
+ field table with its default, and says why `includePatientId` defaults off while
76
+ `diagnosticsHint` defaults on: the cost of forgetting the first is a person's name in an issue
77
+ tracker, and the cost of forgetting the second is one redundant line. `UNDOCUMENTED_TYPES` is
78
+ down from fourteen to eleven, which is the direction 0.4.220 built it to move in.
79
+
80
+ ## 0.4.233
81
+
82
+ - **Changed** the packaging checks to run on every push instead of only at publish time.
83
+ `publint --strict` and `@arethetypeswrong/cli` are the two things `npm run check` cannot do —
84
+ they read the manifest against the files npm would actually pack, and resolve each subpath the
85
+ way a consumer's TypeScript would — and they lived in `publish.yml`, which runs after the tag is
86
+ pushed. That is the one window `scripts/release.mjs` cannot undo, so a packaging mistake found
87
+ there could only be fixed by cutting another version. CI now has a `package` job, and both
88
+ workflows call the same `npm run verify:package` so the two cannot drift. It stays out of
89
+ `npm run check`: that one downloads nothing, and `git clone && npm test` being green offline is
90
+ a property worth keeping.
91
+
92
+ ## 0.4.232
93
+
94
+ - **Fixed** the site's version sweep reading only `.astro` files. `website/src/pages/` also holds
95
+ seven `.ts` routes, and they emit prose exactly the way a component does: `llms.txt` is the map
96
+ an agent is handed, `[...slug].md.ts` is the markdown twin of every documentation page, and
97
+ `robots.txt` and `api.json` are served verbatim. A stale version in one of those reaches a
98
+ reader the same way the footer's "MIT licensed. Version 0.1.0." did for three minor series.
99
+ Widening it needed one more thing first: comments are now stripped before the scan, because
100
+ `api.json.ts` quotes that footer defect as the reason it counts the surface rather than stating
101
+ it, and a whole-file match finds the quotation rather than a claim. What a file emits is the
102
+ claim; what it says about the past is history. HTML comments are left in — those ship.
103
+
104
+ ## 0.4.231
105
+
106
+ - **Fixed** four documentation sweeps reading a narrower set of pages than the site publishes.
107
+ `docs-coverage.test.ts`, `diagnostic-docs.test.ts` and `readme-status.test.ts` — the last of
108
+ them twice — each wrote its own reader, three globbing `content/docs/*.md` and one calling
109
+ `readdirSync(...).filter(name => name.endsWith('.md'))`. The collection loads
110
+ `**/*.{md,mdx}` and `astro.config.mjs` registers the MDX integration, so a page in a
111
+ subdirectory or written as `.mdx` was published and unswept. It fails in the unhelpful
112
+ direction too: a name documented only on an unseen page reports as undocumented, and a type on
113
+ the recorded `UNDOCUMENTED_TYPES` list stays there after the page documenting it is written.
114
+ All four now read `tests/support/docs-pages.ts`, and a new check compares that reader's glob
115
+ call against the loader's pattern, so narrowing either side fails rather than going quiet.
116
+
9
117
  ## 0.4.230
10
118
 
11
119
  - **Added** a check on the three packaging promises in the README's compatibility list — zero
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.230",
3
+ "version": "0.4.238",
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",
@@ -70,6 +70,7 @@
70
70
  "lint": "biome check --error-on-warnings .",
71
71
  "format": "biome check --write --linter-enabled=false .",
72
72
  "check": "npm run lint && npm run typecheck && npm run build && npm run test",
73
+ "verify:package": "npx --yes publint@latest --strict && npx --yes @arethetypeswrong/cli@latest --pack . --profile esm-only",
73
74
  "corpus:fetch": "node scripts/fetch-corpus.mjs",
74
75
  "release": "node scripts/release.mjs",
75
76
  "prepublishOnly": "npm run check && npm run build"
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.230';
96
+ export const VERSION = '0.4.238';