Bootstrap stores + event bridge, add island hydration to boot.sx

- signals.sx: fix has? → has-key?, add def-store/use-store/clear-stores
  (L3 named stores), emit-event/on-event/bridge-event (event bridge)
- boot.sx: add sx-hydrate-islands, hydrate-island, dispose-island
  for client-side island hydration from SSR output
- bootstrap_js.py: add RENAMES, platform fns (domListen, eventDetail,
  domGetData, jsonParse), public API exports for all new functions
- bootstrap_py.py: add RENAMES, server-side no-op stubs for DOM events
- Regenerate sx-ref.js (with boot adapter) and sx_ref.py
- Update reactive-islands status: hydration, stores, bridge all spec'd

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 11:13:18 +00:00
parent 5b70cd5cfc
commit c55f0956bc
7 changed files with 633 additions and 33 deletions

View File

@@ -307,13 +307,13 @@
(fn (name init-fn)
(let ((registry *store-registry*))
;; Only create the store once — subsequent calls return existing
(when (not (has? registry name))
(when (not (has-key? registry name))
(set! *store-registry* (assoc registry name (init-fn))))
(get *store-registry* name))))
(define use-store
(fn (name)
(if (has? *store-registry* name)
(if (has-key? *store-registry* name)
(get *store-registry* name)
(error (str "Store not found: " name
". Call (def-store ...) before (use-store ...).")))))