Remove debug logging from sx_browser.ml and sx-platform.js

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-16 17:08:01 +00:00
parent 1bce1b701b
commit d981e5f620
19 changed files with 1921 additions and 775 deletions

View File

@@ -57,7 +57,6 @@
var obj = args[0], method = args[1]; var obj = args[0], method = args[1];
var callArgs = []; var callArgs = [];
for (var i = 2; i < args.length; i++) callArgs.push(args[i]); for (var i = 2; i < args.length; i++) callArgs.push(args[i]);
if (method === "addEventListener") console.log("[host-call] addEventListener args:", callArgs.map(a => typeof a === "function" ? "fn:" + (a.__host_callback ? "HOST_CB" : "other") : typeof a));
if (obj == null) { if (obj == null) {
// Global function call // Global function call
var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method]; var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method];
@@ -160,9 +159,7 @@
if (fn && fn.__sx_handle !== undefined) { if (fn && fn.__sx_handle !== undefined) {
var wrappedFn = function() { var wrappedFn = function() {
var a = Array.prototype.slice.call(arguments); var a = Array.prototype.slice.call(arguments);
console.log("[host-callback] FIRED handle=" + fn.__sx_handle);
var r = K.callFn(fn, a); var r = K.callFn(fn, a);
console.log("[host-callback] callFn returned suspended=" + !!(r && r.suspended));
if (window._driveAsync) window._driveAsync(r); if (window._driveAsync) window._driveAsync(r);
return r; return r;
}; };

View File

@@ -91,9 +91,7 @@ let rec value_to_js (v : value) : Js.Unsafe.any =
| Dict d -> | Dict d ->
(* Check for __host_handle — return original JS object *) (* Check for __host_handle — return original JS object *)
(match Hashtbl.find_opt d "__host_handle" with (match Hashtbl.find_opt d "__host_handle" with
| Some (Number n) -> | Some (Number n) -> host_get_js (int_of_float n)
Printf.eprintf "[value_to_js] Dict→host_get_js handle=%d\n%!" (int_of_float n);
host_get_js (int_of_float n)
| _ -> | _ ->
let obj = Js.Unsafe.obj [||] in let obj = Js.Unsafe.obj [||] in
Js.Unsafe.set obj (Js.string "_type") (Js.string "dict"); Js.Unsafe.set obj (Js.string "_type") (Js.string "dict");
@@ -171,8 +169,6 @@ and js_to_value (js : Js.Unsafe.any) : value =
| "function" -> | "function" ->
let h = Js.Unsafe.get js (Js.string "__sx_handle") in let h = Js.Unsafe.get js (Js.string "__sx_handle") in
let has_host_cb = Js.to_bool (Js.Unsafe.coerce (Js.Unsafe.get js (Js.string "__host_callback"))) in let has_host_cb = Js.to_bool (Js.Unsafe.coerce (Js.Unsafe.get js (Js.string "__host_callback"))) in
if has_host_cb then
Printf.eprintf "[js_to_value] fn has __host_callback! Storing as host obj\n%!";
if not (Js.Unsafe.equals h Js.undefined) && not has_host_cb then if not (Js.Unsafe.equals h Js.undefined) && not has_host_cb then
get_handle (Js.float_of_number (Js.Unsafe.coerce h) |> int_of_float) get_handle (Js.float_of_number (Js.Unsafe.coerce h) |> int_of_float)
else else
@@ -181,7 +177,6 @@ and js_to_value (js : Js.Unsafe.any) : value =
This preserves wrappers like _driveAsync that host-callback This preserves wrappers like _driveAsync that host-callback
attaches for IO suspension handling. *) attaches for IO suspension handling. *)
let id = host_put js in let id = host_put js in
Printf.eprintf "[js_to_value] plain JS fn → host_object id=%d\n%!" id;
let d = Hashtbl.create 2 in let d = Hashtbl.create 2 in
Hashtbl.replace d "__host_handle" (Number (float_of_int id)); Hashtbl.replace d "__host_handle" (Number (float_of_int id));
Dict d Dict d

View File

@@ -57,7 +57,6 @@
var obj = args[0], method = args[1]; var obj = args[0], method = args[1];
var callArgs = []; var callArgs = [];
for (var i = 2; i < args.length; i++) callArgs.push(args[i]); for (var i = 2; i < args.length; i++) callArgs.push(args[i]);
if (method === "addEventListener") console.log("[host-call] addEventListener args:", callArgs.map(a => typeof a === "function" ? "fn:" + (a.__host_callback ? "HOST_CB" : "other") : typeof a));
if (obj == null) { if (obj == null) {
// Global function call // Global function call
var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method]; var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method];
@@ -160,9 +159,7 @@
if (fn && fn.__sx_handle !== undefined) { if (fn && fn.__sx_handle !== undefined) {
var wrappedFn = function() { var wrappedFn = function() {
var a = Array.prototype.slice.call(arguments); var a = Array.prototype.slice.call(arguments);
console.log("[host-callback] FIRED handle=" + fn.__sx_handle);
var r = K.callFn(fn, a); var r = K.callFn(fn, a);
console.log("[host-callback] callFn returned suspended=" + !!(r && r.suspended));
if (window._driveAsync) window._driveAsync(r); if (window._driveAsync) window._driveAsync(r);
return r; return r;
}; };

View File

@@ -1,30 +1,61 @@
(define-library (sx browser) (define-library
(export browser-location-href browser-location-pathname browser-location-origin browser-same-origin? url-pathname browser-push-state browser-replace-state browser-reload browser-navigate local-storage-get local-storage-set local-storage-remove set-timeout set-interval clear-timeout clear-interval request-animation-frame fetch-request new-abort-controller controller-signal controller-abort promise-then promise-resolve promise-delayed browser-confirm browser-prompt browser-media-matches? json-parse log-info log-warn console-log now-ms schedule-idle set-cookie get-cookie) (sx browser)
(export
browser-location-href
browser-location-pathname
browser-location-origin
browser-same-origin?
url-pathname
browser-push-state
browser-replace-state
browser-reload
browser-navigate
local-storage-get
local-storage-set
local-storage-remove
set-timeout
set-interval
clear-timeout
clear-interval
request-animation-frame
fetch-request
new-abort-controller
controller-signal
controller-abort
promise-then
promise-resolve
promise-delayed
browser-confirm
browser-prompt
browser-media-matches?
json-parse
json-stringify
log-info
log-warn
console-log
now-ms
schedule-idle
set-cookie
get-cookie)
(begin (begin
(define
(define
browser-location-href browser-location-href
(fn () (host-get (host-get (dom-window) "location") "href"))) (fn () (host-get (host-get (dom-window) "location") "href")))
(define
(define
browser-location-pathname browser-location-pathname
(fn () (host-get (host-get (dom-window) "location") "pathname"))) (fn () (host-get (host-get (dom-window) "location") "pathname")))
(define
(define
browser-location-origin browser-location-origin
(fn () (host-get (host-get (dom-window) "location") "origin"))) (fn () (host-get (host-get (dom-window) "location") "origin")))
(define
(define
browser-same-origin? browser-same-origin?
(fn (url) (starts-with? url (browser-location-origin)))) (fn (url) (starts-with? url (browser-location-origin))))
(define
(define
url-pathname url-pathname
(fn (fn
(url) (url)
(host-get (host-new "URL" url (browser-location-origin)) "pathname"))) (host-get (host-new "URL" url (browser-location-origin)) "pathname")))
(define
(define
browser-push-state browser-push-state
(fn (fn
(url-or-state title url) (url-or-state title url)
@@ -42,8 +73,7 @@
url-or-state url-or-state
title title
url)))) url))))
(define
(define
browser-replace-state browser-replace-state
(fn (fn
(url-or-state title url) (url-or-state title url)
@@ -61,68 +91,62 @@
url-or-state url-or-state
title title
url)))) url))))
(define
(define
browser-reload browser-reload
(fn () (host-call (host-get (dom-window) "location") "reload"))) (fn () (host-call (host-get (dom-window) "location") "reload")))
(define
(define
browser-navigate browser-navigate
(fn (url) (host-set! (host-get (dom-window) "location") "href" url))) (fn (url) (host-set! (host-get (dom-window) "location") "href" url)))
(define
(define
local-storage-get local-storage-get
(fn (fn
(key) (key)
(host-call (host-get (dom-window) "localStorage") "getItem" key))) (host-call (host-get (dom-window) "localStorage") "getItem" key)))
(define
(define
local-storage-set local-storage-set
(fn (fn
(key val) (key val)
(host-call (host-get (dom-window) "localStorage") "setItem" key val))) (host-call (host-get (dom-window) "localStorage") "setItem" key val)))
(define
(define
local-storage-remove local-storage-remove
(fn (fn
(key) (key)
(host-call (host-get (dom-window) "localStorage") "removeItem" key))) (host-call (host-get (dom-window) "localStorage") "removeItem" key)))
(define
(define
set-timeout set-timeout
(fn (fn
(fn-val ms) (fn-val ms)
(host-call (dom-window) "setTimeout" (host-callback fn-val) ms))) (host-call (dom-window) "setTimeout" (host-callback fn-val) ms)))
(define
(define
set-interval set-interval
(fn (fn
(fn-val ms) (fn-val ms)
(host-call (dom-window) "setInterval" (host-callback fn-val) ms))) (host-call (dom-window) "setInterval" (host-callback fn-val) ms)))
(define
(define clear-timeout (fn (id) (host-call (dom-window) "clearTimeout" id))) clear-timeout
(fn (id) (host-call (dom-window) "clearTimeout" id)))
(define (define
clear-interval clear-interval
(fn (id) (host-call (dom-window) "clearInterval" id))) (fn (id) (host-call (dom-window) "clearInterval" id)))
(define
(define
request-animation-frame request-animation-frame
(fn (fn
(fn-val) (fn-val)
(host-call (dom-window) "requestAnimationFrame" (host-callback fn-val)))) (host-call
(dom-window)
(define "requestAnimationFrame"
(host-callback fn-val))))
(define
fetch-request fetch-request
(fn (url opts) (host-call (dom-window) "fetch" url opts))) (fn (url opts) (host-call (dom-window) "fetch" url opts)))
(define new-abort-controller (fn () (host-new "AbortController")))
(define new-abort-controller (fn () (host-new "AbortController"))) (define
controller-signal
(define controller-signal (fn (controller) (host-get controller "signal"))) (fn (controller) (host-get controller "signal")))
(define
(define controller-abort (fn (controller) (host-call controller "abort"))) controller-abort
(fn (controller) (host-call controller "abort")))
(define (define
promise-then promise-then
(fn (fn
(p on-resolve on-reject) (p on-resolve on-reject)
@@ -133,12 +157,10 @@
cb-reject cb-reject
(host-call (host-call p "then" cb-resolve) "catch" cb-reject) (host-call (host-call p "then" cb-resolve) "catch" cb-reject)
(host-call p "then" cb-resolve))))) (host-call p "then" cb-resolve)))))
(define
(define
promise-resolve promise-resolve
(fn (val) (host-call (host-global "Promise") "resolve" val))) (fn (val) (host-call (host-global "Promise") "resolve" val)))
(define
(define
promise-delayed promise-delayed
(fn (fn
(ms val) (ms val)
@@ -148,36 +170,35 @@
(fn (fn
(resolve) (resolve)
(set-timeout (fn () (host-call resolve "call" nil val)) ms)))))) (set-timeout (fn () (host-call resolve "call" nil val)) ms))))))
(define
(define browser-confirm (fn (msg) (host-call (dom-window) "confirm" msg))) browser-confirm
(fn (msg) (host-call (dom-window) "confirm" msg)))
(define (define
browser-prompt browser-prompt
(fn (msg default) (host-call (dom-window) "prompt" msg default))) (fn (msg default) (host-call (dom-window) "prompt" msg default)))
(define
(define
browser-media-matches? browser-media-matches?
(fn (fn
(query) (query)
(host-get (host-call (dom-window) "matchMedia" query) "matches"))) (host-get (host-call (dom-window) "matchMedia" query) "matches")))
(define json-parse (fn (s) (host-call (host-global "JSON") "parse" s)))
(define json-parse (fn (s) (host-call (host-global "JSON") "parse" s))) (define
(define
log-info log-info
(fn (msg) (host-call (host-global "console") "log" (str "[sx] " msg)))) (fn
(msg)
(define (host-call (host-global "console") "log" (str "[sx] " msg))))
(define
log-warn log-warn
(fn (msg) (host-call (host-global "console") "warn" (str "[sx] " msg)))) (fn
(msg)
(define (host-call (host-global "console") "warn" (str "[sx] " msg))))
(define
console-log console-log
(fn (msg) (host-call (host-global "console") "log" (str "[sx] " msg)))) (fn
(msg)
(define now-ms (fn () (host-call (host-global "Date") "now"))) (host-call (host-global "console") "log" (str "[sx] " msg))))
(define now-ms (fn () (host-call (host-global "Date") "now")))
(define (define
schedule-idle schedule-idle
(fn (fn
(f) (f)
@@ -187,8 +208,7 @@
(host-get (dom-window) "requestIdleCallback") (host-get (dom-window) "requestIdleCallback")
(host-call (dom-window) "requestIdleCallback" cb) (host-call (dom-window) "requestIdleCallback" cb)
(set-timeout cb 0))))) (set-timeout cb 0)))))
(define
(define
set-cookie set-cookie
(fn (fn
(name value days) (name value days)
@@ -210,8 +230,7 @@
";expires=" ";expires="
expires expires
";path=/;SameSite=Lax"))))) ";path=/;SameSite=Lax")))))
(define
(define
get-cookie get-cookie
(fn (fn
(name) (name)
@@ -222,10 +241,14 @@
cookies cookies
"match" "match"
(host-new "RegExp" (str "(?:^|;\\s*)" name "=([^;]*)"))))) (host-new "RegExp" (str "(?:^|;\\s*)" name "=([^;]*)")))))
(if match (host-call nil "decodeURIComponent" (host-get match 1)) nil)))) (if
match
(host-call nil "decodeURIComponent" (host-get match 1))
)) nil))))))
;; Re-export to global env ;; Re-export to global env
(define
json-stringify
(fn (v) (host-call (host-global "JSON") "stringify" v)))
(import (sx browser)) (import (sx browser))

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +1,81 @@
(define-library (sx dom) (define-library
(export dom-document dom-window dom-body dom-head dom-create-element create-text-node create-fragment create-comment dom-append dom-prepend dom-insert-before dom-insert-after dom-remove dom-is-active-element? dom-is-input-element? dom-is-child-of? dom-attr-list dom-remove-child dom-replace-child dom-clone dom-query dom-query-all dom-query-by-id dom-closest dom-matches? dom-get-attr dom-set-attr dom-remove-attr dom-has-attr? dom-add-class dom-remove-class dom-has-class? dom-text-content dom-set-text-content dom-inner-html dom-set-inner-html dom-outer-html dom-insert-adjacent-html dom-get-style dom-set-style dom-get-prop dom-set-prop dom-tag-name dom-node-type dom-node-name dom-id dom-parent dom-first-child dom-next-sibling dom-child-list dom-is-fragment? dom-child-nodes dom-remove-children-after dom-focus dom-parse-html dom-listen dom-add-listener dom-dispatch event-detail prevent-default stop-propagation event-modifier-key? element-value error-message dom-get-data dom-set-data dom-append-to-head set-document-title) (sx dom)
(export
dom-document
dom-window
dom-body
dom-head
dom-create-element
create-text-node
create-fragment
create-comment
dom-append
dom-prepend
dom-insert-before
dom-insert-after
dom-remove
dom-is-active-element?
dom-is-input-element?
dom-is-child-of?
dom-attr-list
dom-remove-child
dom-replace-child
dom-clone
dom-query
dom-query-all
dom-query-by-id
dom-closest
dom-matches?
dom-get-attr
dom-set-attr
dom-remove-attr
dom-has-attr?
dom-add-class
dom-remove-class
dom-has-class?
dom-visible?
dom-text-content
dom-set-text-content
dom-inner-html
dom-set-inner-html
dom-outer-html
dom-insert-adjacent-html
dom-get-style
dom-set-style
dom-get-prop
dom-set-prop
dom-tag-name
dom-node-type
dom-node-name
dom-id
dom-parent
dom-first-child
dom-next-sibling
dom-child-list
dom-is-fragment?
dom-child-nodes
dom-remove-children-after
dom-focus
dom-parse-html
dom-listen
dom-add-listener
dom-dispatch
event-detail
prevent-default
stop-propagation
event-modifier-key?
element-value
error-message
dom-get-data
dom-set-data
dom-append-to-head
set-document-title)
(begin (begin
(define dom-document (fn () (host-global "document")))
(define dom-document (fn () (host-global "document"))) (define dom-window (fn () (host-global "window")))
(define dom-body (fn () (host-get (dom-document) "body")))
(define dom-window (fn () (host-global "window"))) (define dom-head (fn () (host-get (dom-document) "head")))
(define
(define dom-body (fn () (host-get (dom-document) "body")))
(define dom-head (fn () (host-get (dom-document) "head")))
(define
dom-create-element dom-create-element
(fn (fn
(tag ns) (tag ns)
@@ -18,38 +83,31 @@
ns ns
(host-call (dom-document) "createElementNS" ns tag) (host-call (dom-document) "createElementNS" ns tag)
(host-call (dom-document) "createElement" tag)))) (host-call (dom-document) "createElement" tag))))
(define
(define
create-text-node create-text-node
(fn (s) (host-call (dom-document) "createTextNode" s))) (fn (s) (host-call (dom-document) "createTextNode" s)))
(define
(define
create-fragment create-fragment
(fn () (host-call (dom-document) "createDocumentFragment"))) (fn () (host-call (dom-document) "createDocumentFragment")))
(define
(define
create-comment create-comment
(fn (text) (host-call (dom-document) "createComment" (or text "")))) (fn (text) (host-call (dom-document) "createComment" (or text ""))))
(define
(define
dom-append dom-append
(fn (fn
(parent child) (parent child)
(when (and parent child) (host-call parent "appendChild" child)))) (when (and parent child) (host-call parent "appendChild" child))))
(define
(define
dom-prepend dom-prepend
(fn (fn
(parent child) (parent child)
(when (and parent child) (host-call parent "prepend" child)))) (when (and parent child) (host-call parent "prepend" child))))
(define
(define
dom-insert-before dom-insert-before
(fn (fn
(parent child ref) (parent child ref)
(when (and parent child) (host-call parent "insertBefore" child ref)))) (when (and parent child) (host-call parent "insertBefore" child ref))))
(define
(define
dom-insert-after dom-insert-after
(fn (fn
(ref node) (ref node)
@@ -63,30 +121,27 @@
next next
(host-call parent "insertBefore" node next) (host-call parent "insertBefore" node next)
(host-call parent "appendChild" node)))))) (host-call parent "appendChild" node))))))
(define dom-remove (fn (el) (when el (host-call el "remove"))))
(define dom-remove (fn (el) (when el (host-call el "remove")))) (define
(define
dom-is-active-element? dom-is-active-element?
(fn (fn
(el) (el)
(let (let
((active (host-get (dom-document) "activeElement"))) ((active (host-get (dom-document) "activeElement")))
(if (and active el) (identical? el active) false)))) (if (and active el) (identical? el active) false))))
(define
(define
dom-is-input-element? dom-is-input-element?
(fn (fn
(el) (el)
(let (let
((tag (upper (or (dom-tag-name el) "")))) ((tag (upper (or (dom-tag-name el) ""))))
(or (= tag "INPUT") (= tag "TEXTAREA") (= tag "SELECT"))))) (or (= tag "INPUT") (= tag "TEXTAREA") (= tag "SELECT")))))
(define
(define
dom-is-child-of? dom-is-child-of?
(fn (child parent) (and child parent (host-call parent "contains" child)))) (fn
(child parent)
(define (and child parent (host-call parent "contains" child))))
(define
dom-attr-list dom-attr-list
(fn (fn
(el) (el)
@@ -108,26 +163,24 @@
(list (host-get attr "name") (host-get attr "value")))) (list (host-get attr "name") (host-get attr "value"))))
(loop (+ i 1)))))) (loop (+ i 1))))))
result))) result)))
(define
(define
dom-remove-child dom-remove-child
(fn (fn
(parent child) (parent child)
(when (and parent child) (host-call parent "removeChild" child)))) (when (and parent child) (host-call parent "removeChild" child))))
(define
(define
dom-replace-child dom-replace-child
(fn (fn
(parent new-child old-child) (parent new-child old-child)
(when (when
(and parent new-child old-child) (and parent new-child old-child)
(host-call parent "replaceChild" new-child old-child)))) (host-call parent "replaceChild" new-child old-child))))
(define
(define
dom-clone dom-clone
(fn (node deep) (host-call node "cloneNode" (if (nil? deep) true deep)))) (fn
(node deep)
(define (host-call node "cloneNode" (if (nil? deep) true deep))))
(define
dom-query dom-query
(fn (fn
(root-or-sel sel) (root-or-sel sel)
@@ -135,8 +188,7 @@
(nil? sel) (nil? sel)
(host-call (dom-document) "querySelector" root-or-sel) (host-call (dom-document) "querySelector" root-or-sel)
(host-call root-or-sel "querySelector" sel)))) (host-call root-or-sel "querySelector" sel))))
(define
(define
dom-query-all dom-query-all
(fn (fn
(root sel) (root sel)
@@ -156,45 +208,45 @@
(append! result (host-call node-list "item" i)) (append! result (host-call node-list "item" i))
(loop (+ i 1)))) (loop (+ i 1))))
result))))) result)))))
(define
(define
dom-query-by-id dom-query-by-id
(fn (id) (host-call (dom-document) "getElementById" id))) (fn (id) (host-call (dom-document) "getElementById" id)))
(define
(define dom-closest (fn (el sel) (when el (host-call el "closest" sel)))) dom-closest
(fn (el sel) (when el (host-call el "closest" sel))))
(define (define
dom-matches? dom-matches?
(fn (fn
(el sel) (el sel)
(if (and el (host-get el "matches")) (host-call el "matches" sel) false))) (if
(and el (host-get el "matches"))
(define (host-call el "matches" sel)
false)))
(define
dom-get-attr dom-get-attr
(fn (fn
(el name) (el name)
(if (if
(and el (host-get el "getAttribute")) (and el (host-get el "getAttribute"))
(let ((v (host-call el "getAttribute" name))) (if (nil? v) nil v)) (let
((v (host-call el "getAttribute" name)))
(if (nil? v) nil v))
nil))) nil)))
(define
(define
dom-set-attr dom-set-attr
(fn (fn
(el name val) (el name val)
(when (when
(and el (host-get el "setAttribute")) (and el (host-get el "setAttribute"))
(host-call el "setAttribute" name val)))) (host-call el "setAttribute" name val))))
(define
(define
dom-remove-attr dom-remove-attr
(fn (fn
(el name) (el name)
(when (when
(and el (host-get el "removeAttribute")) (and el (host-get el "removeAttribute"))
(host-call el "removeAttribute" name)))) (host-call el "removeAttribute" name))))
(define
(define
dom-has-attr? dom-has-attr?
(fn (fn
(el name) (el name)
@@ -202,66 +254,53 @@
(and el (host-get el "hasAttribute")) (and el (host-get el "hasAttribute"))
(host-call el "hasAttribute" name) (host-call el "hasAttribute" name)
false))) false)))
(define
(define
dom-add-class dom-add-class
(fn (el cls) (when el (host-call (host-get el "classList") "add" cls)))) (fn
(el cls)
(define (when el (host-call (host-get el "classList") "add" cls))))
(define
dom-remove-class dom-remove-class
(fn (fn
(el cls) (el cls)
(when el (host-call (host-get el "classList") "remove" cls)))) (when el (host-call (host-get el "classList") "remove" cls))))
(define
(define
dom-has-class? dom-has-class?
(fn (fn
(el cls) (el cls)
(if el (host-call (host-get el "classList") "contains" cls) false))) (if el (host-call (host-get el "classList") "contains" cls) false)))
(define dom-text-content (fn (el) (host-get el "textContent")))
(define dom-text-content (fn (el) (host-get el "textContent"))) (define
dom-set-text-content
(define dom-set-text-content (fn (el val) (host-set! el "textContent" val))) (fn (el val) (host-set! el "textContent" val)))
(define dom-inner-html (fn (el) (host-get el "innerHTML")))
(define dom-inner-html (fn (el) (host-get el "innerHTML"))) (define dom-set-inner-html (fn (el val) (host-set! el "innerHTML" val)))
(define dom-outer-html (fn (el) (host-get el "outerHTML")))
(define dom-set-inner-html (fn (el val) (host-set! el "innerHTML" val))) (define
(define dom-outer-html (fn (el) (host-get el "outerHTML")))
(define
dom-insert-adjacent-html dom-insert-adjacent-html
(fn (el position html) (host-call el "insertAdjacentHTML" position html))) (fn
(el position html)
(define dom-get-style (fn (el prop) (host-get (host-get el "style") prop))) (host-call el "insertAdjacentHTML" position html)))
(define
(define dom-get-style
(fn (el prop) (host-get (host-get el "style") prop)))
(define
dom-set-style dom-set-style
(fn (fn
(el prop val) (el prop val)
(host-call (host-get el "style") "setProperty" prop val))) (host-call (host-get el "style") "setProperty" prop val)))
(define dom-get-prop (fn (el name) (host-get el name)))
(define dom-get-prop (fn (el name) (host-get el name))) (define dom-set-prop (fn (el name val) (host-set! el name val)))
(define
(define dom-set-prop (fn (el name val) (host-set! el name val)))
(define
dom-tag-name dom-tag-name
(fn (el) (if el (lower (or (host-get el "tagName") "")) ""))) (fn (el) (if el (lower (or (host-get el "tagName") "")) "")))
(define dom-node-type (fn (el) (host-get el "nodeType")))
(define dom-node-type (fn (el) (host-get el "nodeType"))) (define dom-node-name (fn (el) (host-get el "nodeName")))
(define dom-id (fn (el) (host-get el "id")))
(define dom-node-name (fn (el) (host-get el "nodeName"))) (define dom-parent (fn (el) (host-get el "parentNode")))
(define dom-first-child (fn (el) (host-get el "firstChild")))
(define dom-id (fn (el) (host-get el "id"))) (define dom-next-sibling (fn (el) (host-get el "nextSibling")))
(define
(define dom-parent (fn (el) (host-get el "parentNode")))
(define dom-first-child (fn (el) (host-get el "firstChild")))
(define dom-next-sibling (fn (el) (host-get el "nextSibling")))
(define
dom-child-list dom-child-list
(fn (fn
(el) (el)
@@ -281,10 +320,8 @@
(loop (+ i 1)))) (loop (+ i 1))))
result) result)
(list)))) (list))))
(define dom-is-fragment? (fn (el) (= (host-get el "nodeType") 11)))
(define dom-is-fragment? (fn (el) (= (host-get el "nodeType") 11))) (define
(define
dom-child-nodes dom-child-nodes
(fn (fn
(el) (el)
@@ -304,8 +341,7 @@
(loop (+ i 1)))) (loop (+ i 1))))
result) result)
(list)))) (list))))
(define
(define
dom-remove-children-after dom-remove-children-after
(fn (fn
(marker) (marker)
@@ -320,10 +356,8 @@
(let (let
((next (dom-next-sibling marker))) ((next (dom-next-sibling marker)))
(when next (host-call parent "removeChild" next) (loop)))))))) (when next (host-call parent "removeChild" next) (loop))))))))
(define dom-focus (fn (el) (when el (host-call el "focus"))))
(define dom-focus (fn (el) (when el (host-call el "focus")))) (define
(define
dom-parse-html dom-parse-html
(fn (fn
(html) (html)
@@ -331,8 +365,7 @@
((parser (host-new "DOMParser")) ((parser (host-new "DOMParser"))
(doc (host-call parser "parseFromString" html "text/html"))) (doc (host-call parser "parseFromString" html "text/html")))
(host-get (host-get doc "body") "childNodes")))) (host-get (host-get doc "body") "childNodes"))))
(define
(define
dom-listen dom-listen
(fn (fn
(el event-name handler) (el event-name handler)
@@ -340,8 +373,7 @@
((cb (host-callback handler))) ((cb (host-callback handler)))
(host-call el "addEventListener" event-name cb) (host-call el "addEventListener" event-name cb)
(fn () (host-call el "removeEventListener" event-name cb))))) (fn () (host-call el "removeEventListener" event-name cb)))))
(define
(define
dom-add-listener dom-add-listener
(fn (fn
(el event-name handler opts) (el event-name handler opts)
@@ -352,22 +384,21 @@
(host-call el "addEventListener" event-name cb opts) (host-call el "addEventListener" event-name cb opts)
(host-call el "addEventListener" event-name cb)) (host-call el "addEventListener" event-name cb))
(fn () (host-call el "removeEventListener" event-name cb))))) (fn () (host-call el "removeEventListener" event-name cb)))))
(define
(define
dom-dispatch dom-dispatch
(fn (fn
(el event-name detail) (el event-name detail)
(let (let
((evt (host-new "CustomEvent" event-name (dict "detail" detail "bubbles" true)))) ((evt (host-new "CustomEvent" event-name (dict "detail" detail "bubbles" true))))
(host-call el "dispatchEvent" evt)))) (host-call el "dispatchEvent" evt))))
(define event-detail (fn (evt) (host-get evt "detail")))
(define event-detail (fn (evt) (host-get evt "detail"))) (define
prevent-default
(define prevent-default (fn (e) (when e (host-call e "preventDefault")))) (fn (e) (when e (host-call e "preventDefault"))))
(define
(define stop-propagation (fn (e) (when e (host-call e "stopPropagation")))) stop-propagation
(fn (e) (when e (host-call e "stopPropagation"))))
(define (define
event-modifier-key? event-modifier-key?
(fn (fn
(e) (e)
@@ -378,8 +409,7 @@
(host-get e "metaKey") (host-get e "metaKey")
(host-get e "shiftKey") (host-get e "shiftKey")
(host-get e "altKey"))))) (host-get e "altKey")))))
(define
(define
element-value element-value
(fn (fn
(el) (el)
@@ -387,22 +417,19 @@
(and el (not (nil? (host-get el "value")))) (and el (not (nil? (host-get el "value"))))
(host-get el "value") (host-get el "value")
nil))) nil)))
(define
(define
error-message error-message
(fn (fn
(e) (e)
(if (and e (host-get e "message")) (host-get e "message") (str e)))) (if (and e (host-get e "message")) (host-get e "message") (str e))))
(define
(define
dom-get-data dom-get-data
(fn (fn
(el key) (el key)
(let (let
((store (host-get el "__sx_data"))) ((store (host-get el "__sx_data")))
(if store (host-get store key) nil)))) (if store (host-get store key) nil))))
(define
(define
dom-set-data dom-set-data
(fn (fn
(el key val) (el key val)
@@ -410,17 +437,21 @@
(not (host-get el "__sx_data")) (not (host-get el "__sx_data"))
(host-set! el "__sx_data" (dict))) (host-set! el "__sx_data" (dict)))
(host-set! (host-get el "__sx_data") key val))) (host-set! (host-get el "__sx_data") key val)))
(define
(define
dom-append-to-head dom-append-to-head
(fn (el) (when (dom-head) (host-call (dom-head) "appendChild" el)))) (fn (el) (when (dom-head) (host-call (dom-head) "appendChild" el))))
(define
(define
set-document-title set-document-title
(fn (title) (host-set! (dom-document) "title" title))) (fn (title) (host-set! (dom-document) "title" title)))))
))
;; Re-export to global env ;; Re-export to global env
(define
dom-visible?
(fn
(el)
(if
el
(not (= (host-get (host-get el "style") "display") "none"))
false)))
(import (sx dom)) (import (sx dom))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -119,6 +119,8 @@
"empty" "empty"
"clear" "clear"
"swap" "swap"
"open"
"close"
"exists" "exists"
"matches" "matches"
"contains" "contains"

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
;; Module manifest — auto-generated by compile-modules.js
{
"sx render" {:file "render.sxbc" :deps () :exports ("HTML_TAGS" "VOID_ELEMENTS" "BOOLEAN_ATTRS" "*definition-form-extensions*" "definition-form?" "parse-element-args" "render-attrs" "eval-cond" "eval-cond-scheme" "eval-cond-clojure" "process-bindings" "is-render-expr?" "merge-spread-attrs" "escape-html" "escape-attr")}
"sx signals" {:file "core-signals.sxbc" :deps () :exports ("make-signal" "signal?" "signal-value" "signal-set-value!" "signal-subscribers" "signal-add-sub!" "signal-remove-sub!" "signal-deps" "signal-set-deps!" "signal" "deref" "reset!" "swap!" "computed" "effect" "*batch-depth*" "*batch-queue*" "batch" "notify-subscribers" "flush-subscribers" "dispose-computed" "with-island-scope" "register-in-scope")}
"sx signals-web" {:file "signals.sxbc" :deps ("sx dom" "sx browser") :exports ("with-marsh-scope" "dispose-marsh-scope" "emit-event" "on-event" "bridge-event" "resource")}
"web deps" {:file "deps.sxbc" :deps () :exports ("scan-refs" "scan-refs-walk" "transitive-deps-walk" "transitive-deps" "compute-all-deps" "scan-components-from-source" "components-needed" "page-component-bundle" "page-css-classes" "scan-io-refs-walk" "scan-io-refs" "transitive-io-refs-walk" "transitive-io-refs" "compute-all-io-refs" "component-io-refs-cached" "component-pure?" "render-target" "page-render-plan" "env-components")}
"web router" {:file "router.sxbc" :deps () :exports ("split-path-segments" "make-route-segment" "parse-route-pattern" "match-route-segments" "match-route" "find-matching-route" "_fn-to-segment" "sx-url-to-path" "_count-leading-dots" "_strip-trailing-close" "_index-of-safe" "_last-index-of" "_pop-sx-url-level" "_pop-sx-url-levels" "_split-pos-kw" "_parse-relative-body" "_extract-innermost" "_find-kw-in-tokens" "_find-keyword-value" "_replace-kw-in-tokens" "_set-keyword-in-content" "_is-delta-value?" "_apply-delta" "_apply-kw-pairs" "_apply-keywords-to-url" "_normalize-relative" "resolve-relative-url" "relative-sx-url?" "_url-special-forms" "url-special-form?" "parse-sx-url" "url-special-form-name" "url-special-form-inner" "url-to-expr" "auto-quote-unknowns" "prepare-url-expr")}
"web page-helpers" {:file "page-helpers.sxbc" :deps () :exports ("special-form-category-map" "extract-define-kwargs" "categorize-special-forms" "build-ref-items-with-href" "build-reference-data" "build-attr-detail" "build-header-detail" "build-event-detail" "build-component-source" "build-bundle-analysis" "build-routing-analysis" "build-affinity-analysis")}
"sx freeze" {:file "freeze.sxbc" :deps () :exports ("freeze-registry" "freeze-signal" "freeze-scope" "cek-freeze-scope" "cek-freeze-all" "cek-thaw-scope" "cek-thaw-all" "freeze-to-sx" "thaw-from-sx")}
"sx bytecode" {:file "bytecode.sxbc" :deps () :exports ("OP_CONST" "OP_NIL" "OP_TRUE" "OP_FALSE" "OP_POP" "OP_DUP" "OP_LOCAL_GET" "OP_LOCAL_SET" "OP_UPVALUE_GET" "OP_UPVALUE_SET" "OP_GLOBAL_GET" "OP_GLOBAL_SET" "OP_JUMP" "OP_JUMP_IF_FALSE" "OP_JUMP_IF_TRUE" "OP_CALL" "OP_TAIL_CALL" "OP_RETURN" "OP_CLOSURE" "OP_CALL_PRIM" "OP_APPLY" "OP_LIST" "OP_DICT" "OP_APPEND_BANG" "OP_ITER_INIT" "OP_ITER_NEXT" "OP_MAP_OPEN" "OP_MAP_APPEND" "OP_MAP_CLOSE" "OP_FILTER_TEST" "OP_HO_MAP" "OP_HO_FILTER" "OP_HO_REDUCE" "OP_HO_FOR_EACH" "OP_HO_SOME" "OP_HO_EVERY" "OP_SCOPE_PUSH" "OP_SCOPE_POP" "OP_PROVIDE_PUSH" "OP_PROVIDE_POP" "OP_CONTEXT" "OP_EMIT" "OP_EMITTED" "OP_RESET" "OP_SHIFT" "OP_DEFINE" "OP_DEFCOMP" "OP_DEFISLAND" "OP_DEFMACRO" "OP_EXPAND_MACRO" "OP_STR_CONCAT" "OP_STR_JOIN" "OP_SERIALIZE" "OP_ADD" "OP_SUB" "OP_MUL" "OP_DIV" "OP_EQ" "OP_LT" "OP_GT" "OP_NOT" "OP_LEN" "OP_FIRST" "OP_REST" "OP_NTH" "OP_CONS" "OP_NEG" "OP_INC" "OP_DEC" "OP_ASER_TAG" "OP_ASER_FRAG" "BYTECODE_MAGIC" "BYTECODE_VERSION" "CONST_NUMBER" "CONST_STRING" "CONST_BOOL" "CONST_NIL" "CONST_SYMBOL" "CONST_KEYWORD" "CONST_LIST" "CONST_DICT" "CONST_CODE" "opcode-name")}
"sx compiler" {:file "compiler.sxbc" :deps () :exports ("make-pool" "pool-add" "make-scope" "scope-define-local" "scope-resolve" "make-emitter" "emit-byte" "emit-u16" "emit-i16" "emit-op" "emit-const" "current-offset" "patch-i16" "compile-expr" "compile-symbol" "compile-dict" "compile-list" "compile-if" "compile-when" "compile-and" "compile-or" "compile-begin" "compile-let" "desugar-let-match" "compile-letrec" "compile-lambda" "compile-define" "compile-set" "compile-quote" "compile-cond" "compile-case" "compile-case-clauses" "compile-match" "compile-thread" "compile-thread-step" "compile-defcomp" "compile-defmacro" "compile-quasiquote" "compile-qq-expr" "compile-qq-list" "compile-call" "compile" "compile-module")}
"sx vm" {:file "vm.sxbc" :deps () :exports ("make-upvalue-cell" "uv-get" "uv-set!" "make-vm-code" "make-vm-closure" "make-vm-frame" "make-vm" "vm-push" "vm-pop" "vm-peek" "frame-read-u8" "frame-read-u16" "frame-read-i16" "vm-push-frame" "code-from-value" "vm-closure?" "*active-vm*" "*jit-compile-fn*" "lambda?" "lambda-compiled" "lambda-set-compiled!" "lambda-name" "cek-call-or-suspend" "try-jit-call" "vm-call" "frame-local-get" "frame-local-set" "frame-upvalue-get" "frame-upvalue-set" "frame-ip" "frame-set-ip!" "frame-base" "frame-closure" "closure-code" "closure-upvalues" "closure-env" "code-bytecode" "code-constants" "code-locals" "vm-sp" "vm-set-sp!" "vm-stack" "vm-set-stack!" "vm-frames" "vm-set-frames!" "vm-globals-ref" "collect-n-from-stack" "collect-n-pairs" "pad-n-nils" "vm-global-get" "vm-resolve-ho-form" "vm-call-external" "vm-global-set" "env-walk" "env-walk-set!" "vm-create-closure" "vm-run" "vm-step" "vm-call-closure" "vm-execute-module" "vm-resume-module")}
"sx dom" {:file "dom.sxbc" :deps () :exports ("dom-document" "dom-window" "dom-body" "dom-head" "dom-create-element" "create-text-node" "create-fragment" "create-comment" "dom-append" "dom-prepend" "dom-insert-before" "dom-insert-after" "dom-remove" "dom-is-active-element?" "dom-is-input-element?" "dom-is-child-of?" "dom-attr-list" "dom-remove-child" "dom-replace-child" "dom-clone" "dom-query" "dom-query-all" "dom-query-by-id" "dom-closest" "dom-matches?" "dom-get-attr" "dom-set-attr" "dom-remove-attr" "dom-has-attr?" "dom-add-class" "dom-remove-class" "dom-has-class?" "dom-visible?" "dom-text-content" "dom-set-text-content" "dom-inner-html" "dom-set-inner-html" "dom-outer-html" "dom-insert-adjacent-html" "dom-get-style" "dom-set-style" "dom-get-prop" "dom-set-prop" "dom-tag-name" "dom-node-type" "dom-node-name" "dom-id" "dom-parent" "dom-first-child" "dom-next-sibling" "dom-child-list" "dom-is-fragment?" "dom-child-nodes" "dom-remove-children-after" "dom-focus" "dom-parse-html" "dom-listen" "dom-add-listener" "dom-dispatch" "event-detail" "prevent-default" "stop-propagation" "event-modifier-key?" "element-value" "error-message" "dom-get-data" "dom-set-data" "dom-append-to-head" "set-document-title")}
"sx browser" {:file "browser.sxbc" :deps () :exports ("browser-location-href" "browser-location-pathname" "browser-location-origin" "browser-same-origin?" "url-pathname" "browser-push-state" "browser-replace-state" "browser-reload" "browser-navigate" "local-storage-get" "local-storage-set" "local-storage-remove" "set-timeout" "set-interval" "clear-timeout" "clear-interval" "request-animation-frame" "fetch-request" "new-abort-controller" "controller-signal" "controller-abort" "promise-then" "promise-resolve" "promise-delayed" "browser-confirm" "browser-prompt" "browser-media-matches?" "json-parse" "json-stringify" "log-info" "log-warn" "console-log" "now-ms" "schedule-idle" "set-cookie" "get-cookie")}
"web adapter-html" {:file "adapter-html.sxbc" :deps ("sx render") :exports ("render-to-html" "render-value-to-html" "RENDER_HTML_FORMS" "render-html-form?" "render-list-to-html" "dispatch-html-form" "render-lambda-html" "render-html-component" "render-html-element" "render-html-lake" "render-html-marsh" "render-html-island" "serialize-island-state")}
"web adapter-sx" {:file "adapter-sx.sxbc" :deps ("web boot-helpers") :exports ("render-to-sx" "aser" "aser-list" "aser-reserialize" "aser-fragment" "aser-call" "aser-expand-component" "SPECIAL_FORM_NAMES" "HO_FORM_NAMES" "special-form?" "ho-form?" "aser-special" "eval-case-aser")}
"web adapter-dom" {:file "adapter-dom.sxbc" :deps ("sx dom" "sx render") :exports ("SVG_NS" "MATH_NS" "island-scope?" "hydrating?" "contains-deref?" "dom-on" "render-to-dom" "render-dom-list" "render-dom-element" "render-dom-component" "render-dom-fragment" "render-dom-raw" "render-dom-unknown-component" "RENDER_DOM_FORMS" "render-dom-form?" "dispatch-render-form" "render-lambda-dom" "render-dom-island" "render-dom-lake" "render-dom-marsh" "reactive-text" "reactive-attr" "reactive-spread" "reactive-fragment" "render-list-item" "extract-key" "reactive-list" "bind-input" "*use-cek-reactive*" "enable-cek-reactive!" "cek-reactive-text" "cek-reactive-attr" "render-dom-portal" "render-dom-error-boundary")}
"tw-layout" {:file "tw-layout.sxbc" :deps () :exports ("tw-spacing-props" "tw-displays" "tw-max-widths" "tw-min-widths" "tw-resolve-layout")}
"tw-type" {:file "tw-type.sxbc" :deps () :exports ("tw-sizes" "tw-weights" "tw-families" "tw-alignments" "tw-leading" "tw-tracking" "tw-resolve-type")}
"tw" {:file "tw.sxbc" :deps () :exports ("colour-bases" "colour-with-alpha" "lerp" "shade-to-lightness" "colour" "tw-colour-props" "tw-breakpoints" "tw-states" "tw-selector-states" "tw-container-sizes" "tw-spacing-value" "tw-template" "tw-shadow-sizes" "tw-rounded-sizes" "tw-border-widths" "tw-arbitrary-props" "tw-resolve-arbitrary" "tw-resolve-style" "tw-process-token")}
"sx text-layout" {:file "text-layout.sxbc" :deps () :exports ("measure-text" "line-badness" "compute-demerits" "sum-widths" "find-breaks" "break-lines" "break-lines-greedy" "position-line" "position-lines" "pretext-position-line" "pretext-layout-lines" "layout-paragraph" "make-hyphenation-trie" "find-hyphenation-points" "hyphenate-word" "typeset" "typeset-plain")}
"web boot-helpers" {:file "boot-helpers.sxbc" :deps ("sx dom" "sx browser" "web adapter-dom") :exports ("_sx-bound-prefix" "mark-processed!" "is-processed?" "clear-processed!" "callable?" "to-kebab" "sx-load-components" "call-expr" "base-env" "get-render-env" "merge-envs" "sx-render-with-env" "parse-env-attr" "store-env-attr" "resolve-mount-target" "remove-head-element" "set-sx-comp-cookie" "clear-sx-comp-cookie" "log-parse-error" "loaded-component-names" "csrf-token" "validate-for-request" "build-request-body" "abort-previous-target" "abort-previous" "track-controller" "track-controller-target" "new-abort-controller" "abort-signal" "apply-optimistic" "revert-optimistic" "dom-has-attr?" "show-indicator" "disable-elements" "clear-loading-state" "abort-error?" "promise-catch" "fetch-request" "fetch-location" "fetch-and-restore" "fetch-preload" "fetch-streaming" "dom-parse-html-document" "dom-body-inner-html" "create-script-clone" "cross-origin?" "browser-scroll-to" "with-transition" "event-source-connect" "event-source-listen" "bind-boost-link" "bind-boost-form" "bind-client-route-click" "sw-post-message" "try-parse-json" "strip-component-scripts" "extract-response-css" "sx-render" "sx-hydrate" "sx-process-scripts" "select-from-container" "children-to-fragment" "select-html-from-doc" "register-io-deps" "resolve-page-data" "parse-sx-data" "try-eval-content" "try-async-eval-content" "try-rerender-page" "execute-action" "bind-preload" "persist-offline-data" "retrieve-offline-data")}
"sx hypersx" {:file "hypersx.sxbc" :deps () :exports ("hsx-indent" "hsx-sym-name" "hsx-kw-name" "hsx-is-element?" "hsx-is-component?" "hsx-extract-css" "hsx-tag-str" "hsx-atom" "hsx-inline" "hsx-attrs-str" "hsx-children" "sx->hypersx-node" "sx->hypersx")}
"sx harness" {:file "harness.sxbc" :deps () :exports ("assert" "assert=" "default-platform" "make-harness" "harness-reset!" "harness-log" "harness-get" "harness-set!" "make-interceptor" "install-interceptors" "io-calls" "io-call-count" "io-call-nth" "io-call-args" "io-call-result" "assert-io-called" "assert-no-io" "assert-io-count" "assert-io-args" "assert-io-result" "assert-state")}
"sx harness-reactive" {:file "harness-reactive.sxbc" :deps () :exports ("assert-signal-value" "assert-signal-has-subscribers" "assert-signal-no-subscribers" "assert-signal-subscriber-count" "simulate-signal-set!" "simulate-signal-swap!" "assert-computed-dep-count" "assert-computed-depends-on" "count-effect-runs" "make-test-signal" "assert-batch-coalesces")}
"sx harness-web" {:file "harness-web.sxbc" :deps () :exports ("mock-element" "mock-set-text!" "mock-append-child!" "mock-set-attr!" "mock-get-attr" "mock-add-listener!" "simulate-click" "simulate-input" "simulate-event" "assert-text" "assert-attr" "assert-class" "assert-no-class" "assert-child-count" "assert-event-fired" "assert-no-event" "event-fire-count" "make-web-harness" "is-renderable?" "is-render-leak?" "assert-renderable" "render-body-audit" "assert-render-body-clean" "mock-render" "mock-render-fragment" "assert-single-render-root" "assert-tag")}
"web engine" {:file "engine.sxbc" :deps ("web boot-helpers" "sx dom" "sx browser") :exports ("ENGINE_VERBS" "DEFAULT_SWAP" "parse-time" "parse-trigger-spec" "default-trigger" "get-verb-info" "build-request-headers" "process-response-headers" "parse-swap-spec" "parse-retry-spec" "next-retry-ms" "filter-params" "resolve-target" "apply-optimistic" "revert-optimistic" "find-oob-swaps" "morph-node" "sync-attrs" "morph-children" "morph-island-children" "morph-marsh" "process-signal-updates" "swap-dom-nodes" "insert-remaining-siblings" "swap-html-string" "handle-history" "PRELOAD_TTL" "preload-cache-get" "preload-cache-set" "classify-trigger" "should-boost-link?" "should-boost-form?" "parse-sse-swap")}
"web orchestration" {:file "orchestration.sxbc" :deps ("web boot-helpers" "sx dom" "sx browser" "web adapter-dom" "web engine") :exports ("_preload-cache" "dispatch-trigger-events" "execute-request" "do-fetch" "handle-fetch-success" "flush-collected-styles" "handle-sx-response" "handle-html-response" "handle-retry" "bind-triggers" "bind-event" "post-swap" "process-settle-hooks" "activate-scripts" "process-oob-swaps" "hoist-head-elements" "process-boosted" "boost-descendants" "_page-data-cache" "_page-data-cache-ttl" "page-data-cache-key" "page-data-cache-get" "page-data-cache-set" "invalidate-page-cache" "invalidate-all-page-cache" "update-page-cache" "process-cache-directives" "_optimistic-snapshots" "optimistic-cache-update" "optimistic-cache-revert" "optimistic-cache-confirm" "submit-mutation" "_is-online" "_offline-queue" "offline-is-online?" "offline-set-online!" "offline-queue-mutation" "offline-sync" "offline-pending-count" "offline-aware-mutation" "current-page-layout" "swap-rendered-content" "resolve-route-target" "deps-satisfied?" "try-client-route" "bind-client-route-link" "process-sse" "bind-sse" "bind-sse-swap" "bind-inline-handlers" "bind-preload-for" "do-preload" "VERB_SELECTOR" "process-elements" "process-one" "process-emit-elements" "save-scroll-position" "handle-popstate" "engine-init")}
"hs-tokenizer" {:file "hs-tokenizer.sxbc" :deps () :exports ("hs-make-token" "hs-digit?" "hs-letter?" "hs-ident-start?" "hs-ident-char?" "hs-ws?" "hs-keywords" "hs-keyword?" "hs-tokenize")}
"hs-parser" {:file "hs-parser.sxbc" :deps ("hs-tokenizer") :exports ("hs-parse" "hs-compile")}
"hs-compiler" {:file "hs-compiler.sxbc" :deps ("hs-tokenizer" "hs-parser") :exports ("hs-to-sx" "hs-to-sx-from-source")}
"hs-runtime" {:file "hs-runtime.sxbc" :deps ("hs-tokenizer" "hs-parser" "hs-compiler") :exports ("hs-each" "hs-on" "hs-on-every" "hs-init" "hs-wait" "hs-wait-for" "hs-settle" "hs-toggle-class!" "hs-toggle-between!" "hs-toggle-style!" "hs-take!" "hs-put!" "hs-navigate!" "hs-scroll!" "hs-halt!" "hs-select!" "hs-reset!" "hs-next" "hs-previous" "hs-query-all" "hs-query-first" "hs-query-last" "hs-first" "hs-last" "hs-repeat-times" "hs-repeat-forever" "hs-fetch" "hs-fetch-gql" "hs-coerce" "hs-add" "hs-make" "hs-install" "hs-measure" "hs-transition" "hs-transition-from" "hs-type-check" "hs-type-check-strict" "hs-strict-eq" "hs-eq-ignore-case" "hs-contains-ignore-case?" "hs-falsy?" "hs-matches?" "hs-matches-ignore-case?" "hs-contains?" "precedes?" "follows?" "hs-empty?" "hs-empty-target!" "hs-open!" "hs-close!" "hs-hide!" "hs-show!" "hs-first" "hs-last" "hs-template" "hs-make-object" "hs-method-call" "hs-beep" "hs-prop-is" "hs-slice" "hs-sorted-by" "hs-sorted-by-desc" "hs-split-by" "hs-joined-by" "hs-sorted-by" "hs-sorted-by-desc")}
"hs-integration" {:file "hs-integration.sxbc" :deps ("hs-tokenizer" "hs-parser" "hs-compiler" "hs-runtime") :exports ("hs-handler" "hs-activate!" "hs-boot!" "hs-boot-subtree!")}
"hs-htmx" {:file "hs-htmx.sxbc" :deps ("hs-tokenizer" "hs-parser" "hs-compiler" "hs-runtime" "hs-integration") :exports ("HX-CONFIG-DEFAULTS" "HX-REQUEST-CLASS" "url-encode-params" "sx-url-with-params" "hx-element-config" "hx-walk-inherited" "hx-resolve-attr" "hx-verb-info" "hx-default-trigger" "hx-parse-time" "hx-parse-trigger" "hx-resolve-target" "hx-normalize-swap-mode" "hx-parse-swap-spec" "hx-swap!" "hx-select-fragment" "hx-element-source-id" "hx-form-values" "hx-collect-params" "hx-build-headers" "hx-request" "hx-process-oob!" "hx-process-partials!" "hx-parse-status-modifiers" "hx-status-matches?" "hx-parse-status-rules" "hx-match-status" "hx-handle-history!" "hx-indicator-on!" "hx-indicator-off!" "hx-disable-inputs!" "hx-enable-inputs!" "hx-confirm?" "hx-validate-form?" "hx-parse-sync-spec" "hx-sync-resolve-target" "hx-sync-check!" "hx-sync-complete!" "hx-dispatch!" "hx-strip-outer" "hx-do-swap" "hx-make-handler" "hx-wrap-debounce" "hx-wrap-throttle" "hx-wrap-changed" "hx-register-trigger!" "htmx-activate!" "HX-VERB-SELECTORS" "htmx-boot!" "hx-preload-cache" "hx-preload-register!" "hx-parse-sse-swap" "hx-sse-connect!" "htmx-boot-subtree!" "hx-boost-link!" "hx-boost-form!" "hx-boost-subtree!")}
"_entry" {:file "boot.sxbc" :deps ("sx dom" "sx browser" "web boot-helpers" "web adapter-dom" "sx signals" "sx signals-web" "web router" "web page-helpers" "web orchestration" "sx render" "sx text-layout") :lazy-deps ("sx bytecode" "hs-tokenizer" "hs-parser" "hs-compiler" "hs-runtime" "hs-integration" "hs-htmx")}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1792,7 +1792,7 @@
blake2_js_for_wasm_create: blake2_js_for_wasm_create}; blake2_js_for_wasm_create: blake2_js_for_wasm_create};
} }
(globalThis)) (globalThis))
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["re-9a0de245",[2]],["sx-5ce001fe",[2,3]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,5]],["dune__exe__Sx_browser-8c3734f6",[2,4,6]],["std_exit-10fb8830",[2]],["start-f808dbe1",0]],"generated":(b=>{var ({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["re-9a0de245",[2]],["sx-5ce001fe",[2,3]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,5]],["dune__exe__Sx_browser-8afc1869",[2,4,6]],["std_exit-10fb8830",[2]],["start-f808dbe1",0]],"generated":(b=>{var
c=b,a=b?.module?.export||b;return{"env":{"caml_ba_kind_of_typed_array":()=>{throw new c=b,a=b?.module?.export||b;return{"env":{"caml_ba_kind_of_typed_array":()=>{throw new
Error("caml_ba_kind_of_typed_array not implemented")},"caml_exn_with_js_backtrace":()=>{throw new Error("caml_ba_kind_of_typed_array not implemented")},"caml_exn_with_js_backtrace":()=>{throw new
Error("caml_exn_with_js_backtrace not implemented")},"caml_int64_create_lo_mi_hi":()=>{throw new Error("caml_exn_with_js_backtrace not implemented")},"caml_int64_create_lo_mi_hi":()=>{throw new