@bowmark/web 1.1.0 → 1.3.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 +25 -8
- package/package.json +1 -1
- package/src/generated/library.d.ts +52040 -2
- package/src/generated/validators.ts +136 -3
- package/src/index.ts +4 -4
package/README.md
CHANGED
|
@@ -29,7 +29,11 @@ autocomplete is the entire promise. What exists to call is listed, one row per
|
|
|
29
29
|
function, in
|
|
30
30
|
[`CAPABILITIES.md`](https://github.com/bowmark-ai/web/blob/main/CAPABILITIES.md) and
|
|
31
31
|
[`PROVIDERS.md`](https://github.com/bowmark-ai/web/blob/main/PROVIDERS.md) — absolute
|
|
32
|
-
URLs, because this README is read on npm where a relative link resolves to nothing.
|
|
32
|
+
URLs, because this README is read on npm where a relative link resolves to nothing. What
|
|
33
|
+
changed between versions is
|
|
34
|
+
[`CHANGELOG.md`](https://github.com/bowmark-ai/web/blob/main/CHANGELOG.md), which is
|
|
35
|
+
generated by diffing those same two tables, so it describes the callable surface and
|
|
36
|
+
nothing else.
|
|
33
37
|
|
|
34
38
|
**Zero runtime dependencies, permanently.** Not an aspiration — the argument guard is
|
|
35
39
|
plain JS rather than a validator library, and the envelope shapes are hand-restated
|
|
@@ -187,13 +191,20 @@ message.
|
|
|
187
191
|
|
|
188
192
|
**What it fails CLOSED on, and the two things it must not.** A known unit with an
|
|
189
193
|
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
|
-
|
|
194
|
+
unknown UNIT passes straight through, because a family MEMBER (`providers.gymshark`) is
|
|
195
|
+
absent from the RUNTIME validator table **by design** — `listProviders()` excludes
|
|
196
|
+
members and always will — so refusing an unknown unit would refuse the largest part of
|
|
197
|
+
the library. A function with no readable argument shape is an EXPLICIT `null` in the
|
|
198
|
+
table rather than an absence, and passes through; that distinction is what makes the
|
|
195
199
|
first rule safe at all.
|
|
196
200
|
|
|
201
|
+
Note the deliberate asymmetry with the TYPES: since 2026-08-06 a member IS declared in
|
|
202
|
+
`library.d.ts`, so `providers.gymshark.search(…)` completes and type-checks. The two
|
|
203
|
+
answer different questions. Types are a build-time artifact and can afford one line per
|
|
204
|
+
member; the validator table is loaded into every client process at runtime, where 51,711
|
|
205
|
+
entries would be a cost paid on every call to buy nothing — the family's arguments are
|
|
206
|
+
already checked by the shared interface the compiler saw.
|
|
207
|
+
|
|
197
208
|
**A parameter may not offer a type the wire cannot carry.** Every argument crosses as
|
|
198
209
|
JSON on every surface, so `requestedTime?: string | Date` has an arm refused 100% of the
|
|
199
210
|
time while the library says otherwise. `gate:public-types`' `wire-impossible-param`
|
|
@@ -204,10 +215,16 @@ for all 253 typed parameters.
|
|
|
204
215
|
## Regenerating
|
|
205
216
|
|
|
206
217
|
```bash
|
|
207
|
-
pnpm run gen:public-types
|
|
208
|
-
pnpm run gate:public-types
|
|
218
|
+
pnpm run gen:public-types # writes src/generated/{library.d.ts,validators.ts}
|
|
219
|
+
pnpm run gate:public-types # fails on a leak, a new refusal, a wire-impossible type
|
|
220
|
+
pnpm run gate:public-types:drift # …and on the committed copy being stale
|
|
209
221
|
```
|
|
210
222
|
|
|
223
|
+
**Only the middle one runs on your PR, and staleness is deliberately not fatal there.**
|
|
224
|
+
The committed copy goes stale every time any unit anywhere lands a function, which is not
|
|
225
|
+
something your branch can keep true — `regen-public-types.yml` repairs it on `main`. See
|
|
226
|
+
`.claude/rules/public-types.md` § The gate is SPLIT.
|
|
227
|
+
|
|
211
228
|
**`skipLibCheck: false` in this package's `tsconfig.json` is load-bearing**, and the base
|
|
212
229
|
config sets the opposite. That flag skips type checking of every `.d.ts`, and this
|
|
213
230
|
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.3.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",
|