@bowmark/web 1.1.0 → 1.2.0
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 +20 -7
- package/package.json +1 -1
- package/src/generated/library.d.ts +51874 -1
package/README.md
CHANGED
|
@@ -187,13 +187,20 @@ message.
|
|
|
187
187
|
|
|
188
188
|
**What it fails CLOSED on, and the two things it must not.** A known unit with an
|
|
189
189
|
unknown FUNCTION is refused — the table is authoritative about a unit it carries. An
|
|
190
|
-
unknown UNIT passes straight through, because a
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
190
|
+
unknown UNIT passes straight through, because a family MEMBER (`providers.gymshark`) is
|
|
191
|
+
absent from the RUNTIME validator table **by design** — `listProviders()` excludes
|
|
192
|
+
members and always will — so refusing an unknown unit would refuse the largest part of
|
|
193
|
+
the library. A function with no readable argument shape is an EXPLICIT `null` in the
|
|
194
|
+
table rather than an absence, and passes through; that distinction is what makes the
|
|
195
195
|
first rule safe at all.
|
|
196
196
|
|
|
197
|
+
Note the deliberate asymmetry with the TYPES: since 2026-08-06 a member IS declared in
|
|
198
|
+
`library.d.ts`, so `providers.gymshark.search(…)` completes and type-checks. The two
|
|
199
|
+
answer different questions. Types are a build-time artifact and can afford one line per
|
|
200
|
+
member; the validator table is loaded into every client process at runtime, where 51,711
|
|
201
|
+
entries would be a cost paid on every call to buy nothing — the family's arguments are
|
|
202
|
+
already checked by the shared interface the compiler saw.
|
|
203
|
+
|
|
197
204
|
**A parameter may not offer a type the wire cannot carry.** Every argument crosses as
|
|
198
205
|
JSON on every surface, so `requestedTime?: string | Date` has an arm refused 100% of the
|
|
199
206
|
time while the library says otherwise. `gate:public-types`' `wire-impossible-param`
|
|
@@ -204,10 +211,16 @@ for all 253 typed parameters.
|
|
|
204
211
|
## Regenerating
|
|
205
212
|
|
|
206
213
|
```bash
|
|
207
|
-
pnpm run gen:public-types
|
|
208
|
-
pnpm run gate:public-types
|
|
214
|
+
pnpm run gen:public-types # writes src/generated/{library.d.ts,validators.ts}
|
|
215
|
+
pnpm run gate:public-types # fails on a leak, a new refusal, a wire-impossible type
|
|
216
|
+
pnpm run gate:public-types:drift # …and on the committed copy being stale
|
|
209
217
|
```
|
|
210
218
|
|
|
219
|
+
**Only the middle one runs on your PR, and staleness is deliberately not fatal there.**
|
|
220
|
+
The committed copy goes stale every time any unit anywhere lands a function, which is not
|
|
221
|
+
something your branch can keep true — `regen-public-types.yml` repairs it on `main`. See
|
|
222
|
+
`.claude/rules/public-types.md` § The gate is SPLIT.
|
|
223
|
+
|
|
211
224
|
**`skipLibCheck: false` in this package's `tsconfig.json` is load-bearing**, and the base
|
|
212
225
|
config sets the opposite. That flag skips type checking of every `.d.ts`, and this
|
|
213
226
|
package's whole deliverable IS a `.d.ts` — with the inherited default, `pnpm typecheck`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bowmark/web",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The public client for the Bowmark capability library — real TypeScript for the whole bowmark.* surface, with no Bowmark source on the caller's disk. ZERO runtime dependencies, deliberately and permanently.",
|
|
6
6
|
"license": "MIT",
|