standalone: ship the headless engine as one bundleable ESM file

A no-build static site couldn't vendor BitGate the way it vendors a single
dependency: bare @bitgate/* specifiers don't resolve in a browser, and the
headless path spans two packages (the evaluator in core, the kind-1985 label
codec in nostr). The widget bundle solved this for the DOM path only.

Add @bitgate/standalone (packages/standalone): an entry re-exporting core +
nostr, esbuilt into a single self-contained dist/bitgate.js (~44 KB). It's
the same canonical code the npm packages ship, with specifiers inlined, and
dependency-free -- @bitgate/verify's @noble deps are intentionally not pulled
in, so the bundle carries no third-party code. Wired into `npm run build` via
build:standalone.

Verified: no bare imports in the output (self-contained), and a smoke test
composes a full label -> decision flow from the single entry. README Packages
table and headless section document it.

Addresses the "standalone ESM single-file" item of the Tessera integration
feedback (docs/TODO.md).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BXQCvJPA6sVSQ5j8uBd9bB
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-08-11 20:40:04 -04:00
1 parent 7eb4064556
commit 088e3cdabe
7 files changed
+169 -4

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
// @bitgate/standalone — the headless engine and the Nostr codecs it consumes,
// as one bundleable entry.
//
// Bare specifiers (`@bitgate/core`) don't resolve in a browser, and the headless
// path needs two packages (the evaluator in core, the kind-1985 label codec in
// nostr). build.mjs esbuilds this entry into a single self-contained ESM file a
// no-build static site can vendor the way it would vendor any one dependency —
// the requirement the widget bundle already meets for the DOM path, met here for
// the headless path.
//
// Both re-exported packages are dependency-free (@bitgate/verify, the only
// package with third-party deps, is intentionally not pulled in), so the bundle
// carries no external code.
export * from "@bitgate/core";
export * from "@bitgate/nostr";