edfcore 0.4.229 → 0.4.237

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.229";
112
+ export declare const VERSION = "0.4.237";
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.229';
82
+ export const VERSION = '0.4.237';
83
83
  //# sourceMappingURL=constants.js.map
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,115 @@ 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.237
10
+
11
+ - **Fixed** `npm run check` failing on any machine without the website's dependencies installed,
12
+ which is every CI runner. 0.4.231 added a check comparing the docs reader's glob pattern against
13
+ the collection loader's, and read `website/src/content.config.ts` through `import.meta.glob`
14
+ with `?raw`. A raw glob still hands the path to vite's transform, which resolves that file's
15
+ nearest tsconfig — `website/tsconfig.json`, which extends `astro/tsconfigs/strict` out of
16
+ `website/node_modules`. The CI `check` job installs the root workspace only, so the run died
17
+ with `[TSCONFIG_ERROR] Failed to load tsconfig 'astro/tsconfigs/strict'` while the same command
18
+ passed locally, where the site's dependencies happen to be present. Both files are read with
19
+ `readFileSync` now: bytes, no transform, no tsconfig.
20
+
21
+ **0.4.231 through 0.4.236 were never released.** Each was tagged and each publish run failed at
22
+ 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.
23
+ Nothing is lost: every change they carried is in this release. The 0.4.200 revert cannot reach
24
+ this case — the checks passed on the machine cutting the tag, and it was the *runner's*
25
+ environment that differed, which is the gap 0.4.233 had just moved `publint` into CI to narrow
26
+ from the other side.
27
+
28
+ ## 0.4.236
29
+
30
+ - **Added** a check that every internal link on the site points at something that exists. The
31
+ documentation pages carry over a hundred `/docs/...` and `#anchor` links between them and
32
+ nothing checked one: `astro check` validates types and content collections, not hrefs, and a
33
+ static build turns a link to a renamed page into a 404 for the reader rather than an error for
34
+ the author. The 404 page exists because that happens — "the address may have moved when the docs
35
+ were reorganised" — which is a good page to have and a poor substitute for not shipping the
36
+ link. Anchors are the half that rots quietly, since one breaks when someone rewords a heading
37
+ three sections away and the link still looks right; 0.4.234 nearly shipped exactly that, a table
38
+ cell pointing at `#patient-identification` on a page whose redaction note has no heading. The
39
+ nine links hard-coded in `.astro` routes are swept too — the 404's three ways out and the
40
+ landing page's four are the ones a reader hits first. Nothing was broken today.
41
+
42
+ ## 0.4.235
43
+
44
+ - **Added** documentation for the three selection types, taking the recorded undocumented list
45
+ from eleven to eight. `StreamSelection`, `EnvelopeSelection` and `TriggerSelection` are what
46
+ `streamRecords`, `readEnvelope` and `readTriggers` take, and every page showed an object literal
47
+ without ever naming the type — so a wrapper that accepts one had nothing to import.
48
+ `api-types.md` lists all three in the selections table and `api-helpers.md` names each in the
49
+ section that teaches its call, including the fact that the first two are a `WindowSelection`
50
+ plus one field.
51
+ - **Fixed** the sentence under that table, which said `signalIndices` is required "on both
52
+ selections". There are five now, and `TriggerSelection` is the one with no channel field at all
53
+ — `readTriggers` finds the BioSemi Status signal itself, because a 24-bit EEG sample decoded as
54
+ a trigger word yields plausible events out of ordinary data.
55
+
56
+ ## 0.4.234
57
+
58
+ - **Added** documentation for the three formatter options types, and took them off the recorded
59
+ list of undocumented ones. `FormatHeaderOptions`, `FormatAnnotationsOptions` and
60
+ `FormatReportOptions` are exported and every field of each was described somewhere in prose, but
61
+ none of the three was named on a page — so writing a wrapper that accepts one, or building an
62
+ options object ahead of the call, meant reading the `.d.ts`. `api-helpers.md` now gives each a
63
+ field table with its default, and says why `includePatientId` defaults off while
64
+ `diagnosticsHint` defaults on: the cost of forgetting the first is a person's name in an issue
65
+ tracker, and the cost of forgetting the second is one redundant line. `UNDOCUMENTED_TYPES` is
66
+ down from fourteen to eleven, which is the direction 0.4.220 built it to move in.
67
+
68
+ ## 0.4.233
69
+
70
+ - **Changed** the packaging checks to run on every push instead of only at publish time.
71
+ `publint --strict` and `@arethetypeswrong/cli` are the two things `npm run check` cannot do —
72
+ they read the manifest against the files npm would actually pack, and resolve each subpath the
73
+ way a consumer's TypeScript would — and they lived in `publish.yml`, which runs after the tag is
74
+ pushed. That is the one window `scripts/release.mjs` cannot undo, so a packaging mistake found
75
+ there could only be fixed by cutting another version. CI now has a `package` job, and both
76
+ workflows call the same `npm run verify:package` so the two cannot drift. It stays out of
77
+ `npm run check`: that one downloads nothing, and `git clone && npm test` being green offline is
78
+ a property worth keeping.
79
+
80
+ ## 0.4.232
81
+
82
+ - **Fixed** the site's version sweep reading only `.astro` files. `website/src/pages/` also holds
83
+ seven `.ts` routes, and they emit prose exactly the way a component does: `llms.txt` is the map
84
+ an agent is handed, `[...slug].md.ts` is the markdown twin of every documentation page, and
85
+ `robots.txt` and `api.json` are served verbatim. A stale version in one of those reaches a
86
+ reader the same way the footer's "MIT licensed. Version 0.1.0." did for three minor series.
87
+ Widening it needed one more thing first: comments are now stripped before the scan, because
88
+ `api.json.ts` quotes that footer defect as the reason it counts the surface rather than stating
89
+ it, and a whole-file match finds the quotation rather than a claim. What a file emits is the
90
+ claim; what it says about the past is history. HTML comments are left in — those ship.
91
+
92
+ ## 0.4.231
93
+
94
+ - **Fixed** four documentation sweeps reading a narrower set of pages than the site publishes.
95
+ `docs-coverage.test.ts`, `diagnostic-docs.test.ts` and `readme-status.test.ts` — the last of
96
+ them twice — each wrote its own reader, three globbing `content/docs/*.md` and one calling
97
+ `readdirSync(...).filter(name => name.endsWith('.md'))`. The collection loads
98
+ `**/*.{md,mdx}` and `astro.config.mjs` registers the MDX integration, so a page in a
99
+ subdirectory or written as `.mdx` was published and unswept. It fails in the unhelpful
100
+ direction too: a name documented only on an unseen page reports as undocumented, and a type on
101
+ the recorded `UNDOCUMENTED_TYPES` list stays there after the page documenting it is written.
102
+ All four now read `tests/support/docs-pages.ts`, and a new check compares that reader's glob
103
+ call against the loader's pattern, so narrowing either side fails rather than going quiet.
104
+
105
+ ## 0.4.230
106
+
107
+ - **Added** a check on the three packaging promises in the README's compatibility list — zero
108
+ runtime dependencies, three entry points with no environment conditions in the exports map, and
109
+ ESM only. What the package *contains* is well covered: `api-surface.test.ts` counts the exports
110
+ and `public-api.test.ts` walks the module graph. Nothing read the manifest that says how it is
111
+ shipped. Adding a dependency is one `npm install --save` away and the tree stays green — nothing
112
+ imports it, so no test fails, and "zero-dependency" stops being true in the one place a reader
113
+ looks before installing. An environment condition next to `default` is the same shape of edit.
114
+ Every export and `bin` target is also checked to exist in the build; `publint` and
115
+ `@arethetypeswrong/cli` cover a stronger version of that, but they run in `publish.yml` only —
116
+ after the tag is pushed, in the window 0.4.226 is about.
117
+
9
118
  ## 0.4.229
10
119
 
11
120
  - **Added** a check that the Node floor is one number. It is written down eleven times — the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edfcore",
3
- "version": "0.4.229",
3
+ "version": "0.4.237",
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.229';
96
+ export const VERSION = '0.4.237';