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 callArgs = [];
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) {
// Global function call
var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method];
@@ -160,9 +159,7 @@
if (fn && fn.__sx_handle !== undefined) {
var wrappedFn = function() {
var a = Array.prototype.slice.call(arguments);
console.log("[host-callback] FIRED handle=" + fn.__sx_handle);
var r = K.callFn(fn, a);
console.log("[host-callback] callFn returned suspended=" + !!(r && r.suspended));
if (window._driveAsync) window._driveAsync(r);
return r;
};

View File

@@ -91,9 +91,7 @@ let rec value_to_js (v : value) : Js.Unsafe.any =
| Dict d ->
(* Check for __host_handle — return original JS object *)
(match Hashtbl.find_opt d "__host_handle" with
| Some (Number n) ->
Printf.eprintf "[value_to_js] Dict→host_get_js handle=%d\n%!" (int_of_float n);
host_get_js (int_of_float n)
| Some (Number n) -> host_get_js (int_of_float n)
| _ ->
let obj = Js.Unsafe.obj [||] in
Js.Unsafe.set obj (Js.string "_type") (Js.string "dict");
@@ -171,8 +169,6 @@ and js_to_value (js : Js.Unsafe.any) : value =
| "function" ->
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
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
get_handle (Js.float_of_number (Js.Unsafe.coerce h) |> int_of_float)
else
@@ -181,7 +177,6 @@ and js_to_value (js : Js.Unsafe.any) : value =
This preserves wrappers like _driveAsync that host-callback
attaches for IO suspension handling. *)
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
Hashtbl.replace d "__host_handle" (Number (float_of_int id));
Dict d

View File

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

View File

@@ -1,231 +1,254 @@
(define-library (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 log-info log-warn console-log now-ms schedule-idle set-cookie get-cookie)
(define-library
(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
(define
browser-location-href
(fn () (host-get (host-get (dom-window) "location") "href")))
(define
browser-location-pathname
(fn () (host-get (host-get (dom-window) "location") "pathname")))
(define
browser-location-origin
(fn () (host-get (host-get (dom-window) "location") "origin")))
(define
browser-same-origin?
(fn (url) (starts-with? url (browser-location-origin))))
(define
url-pathname
(fn
(url)
(host-get (host-new "URL" url (browser-location-origin)) "pathname")))
(define
browser-push-state
(fn
(url-or-state title url)
(if
(nil? title)
(host-call
(host-get (dom-window) "history")
"pushState"
nil
""
url-or-state)
(host-call
(host-get (dom-window) "history")
"pushState"
url-or-state
title
url))))
(define
browser-replace-state
(fn
(url-or-state title url)
(if
(nil? title)
(host-call
(host-get (dom-window) "history")
"replaceState"
nil
""
url-or-state)
(host-call
(host-get (dom-window) "history")
"replaceState"
url-or-state
title
url))))
(define
browser-reload
(fn () (host-call (host-get (dom-window) "location") "reload")))
(define
browser-navigate
(fn (url) (host-set! (host-get (dom-window) "location") "href" url)))
(define
local-storage-get
(fn
(key)
(host-call (host-get (dom-window) "localStorage") "getItem" key)))
(define
local-storage-set
(fn
(key val)
(host-call (host-get (dom-window) "localStorage") "setItem" key val)))
(define
local-storage-remove
(fn
(key)
(host-call (host-get (dom-window) "localStorage") "removeItem" key)))
(define
set-timeout
(fn
(fn-val ms)
(host-call (dom-window) "setTimeout" (host-callback fn-val) ms)))
(define
set-interval
(fn
(fn-val ms)
(host-call (dom-window) "setInterval" (host-callback fn-val) ms)))
(define clear-timeout (fn (id) (host-call (dom-window) "clearTimeout" id)))
(define
clear-interval
(fn (id) (host-call (dom-window) "clearInterval" id)))
(define
request-animation-frame
(fn
(fn-val)
(host-call (dom-window) "requestAnimationFrame" (host-callback fn-val))))
(define
fetch-request
(fn (url opts) (host-call (dom-window) "fetch" url opts)))
(define new-abort-controller (fn () (host-new "AbortController")))
(define controller-signal (fn (controller) (host-get controller "signal")))
(define controller-abort (fn (controller) (host-call controller "abort")))
(define
promise-then
(fn
(p on-resolve on-reject)
(let
((cb-resolve (host-callback on-resolve))
(cb-reject (if on-reject (host-callback on-reject) nil)))
(if
cb-reject
(host-call (host-call p "then" cb-resolve) "catch" cb-reject)
(host-call p "then" cb-resolve)))))
(define
promise-resolve
(fn (val) (host-call (host-global "Promise") "resolve" val)))
(define
promise-delayed
(fn
(ms val)
(host-new
"Promise"
(host-callback
(fn
(resolve)
(set-timeout (fn () (host-call resolve "call" nil val)) ms))))))
(define browser-confirm (fn (msg) (host-call (dom-window) "confirm" msg)))
(define
browser-prompt
(fn (msg default) (host-call (dom-window) "prompt" msg default)))
(define
browser-media-matches?
(fn
(query)
(host-get (host-call (dom-window) "matchMedia" query) "matches")))
(define json-parse (fn (s) (host-call (host-global "JSON") "parse" s)))
(define
log-info
(fn (msg) (host-call (host-global "console") "log" (str "[sx] " msg))))
(define
log-warn
(fn (msg) (host-call (host-global "console") "warn" (str "[sx] " msg))))
(define
console-log
(fn (msg) (host-call (host-global "console") "log" (str "[sx] " msg))))
(define now-ms (fn () (host-call (host-global "Date") "now")))
(define
schedule-idle
(fn
(f)
(let
((cb (host-callback (fn (_deadline) (f)))))
(if
(host-get (dom-window) "requestIdleCallback")
(host-call (dom-window) "requestIdleCallback" cb)
(set-timeout cb 0)))))
(define
set-cookie
(fn
(name value days)
(let
((d (or days 365))
(expires
(define
browser-location-href
(fn () (host-get (host-get (dom-window) "location") "href")))
(define
browser-location-pathname
(fn () (host-get (host-get (dom-window) "location") "pathname")))
(define
browser-location-origin
(fn () (host-get (host-get (dom-window) "location") "origin")))
(define
browser-same-origin?
(fn (url) (starts-with? url (browser-location-origin))))
(define
url-pathname
(fn
(url)
(host-get (host-new "URL" url (browser-location-origin)) "pathname")))
(define
browser-push-state
(fn
(url-or-state title url)
(if
(nil? title)
(host-call
(host-new
"Date"
(+ (host-call (host-global "Date") "now") (* d 86400000)))
"toUTCString")))
(host-set!
(dom-document)
"cookie"
(str
name
"="
(host-call nil "encodeURIComponent" value)
";expires="
expires
";path=/;SameSite=Lax")))))
(define
get-cookie
(fn
(name)
(let
((cookies (host-get (dom-document) "cookie"))
(match
(host-get (dom-window) "history")
"pushState"
nil
""
url-or-state)
(host-call
cookies
"match"
(host-new "RegExp" (str "(?:^|;\\s*)" name "=([^;]*)")))))
(if match (host-call nil "decodeURIComponent" (host-get match 1)) nil))))
))
(host-get (dom-window) "history")
"pushState"
url-or-state
title
url))))
(define
browser-replace-state
(fn
(url-or-state title url)
(if
(nil? title)
(host-call
(host-get (dom-window) "history")
"replaceState"
nil
""
url-or-state)
(host-call
(host-get (dom-window) "history")
"replaceState"
url-or-state
title
url))))
(define
browser-reload
(fn () (host-call (host-get (dom-window) "location") "reload")))
(define
browser-navigate
(fn (url) (host-set! (host-get (dom-window) "location") "href" url)))
(define
local-storage-get
(fn
(key)
(host-call (host-get (dom-window) "localStorage") "getItem" key)))
(define
local-storage-set
(fn
(key val)
(host-call (host-get (dom-window) "localStorage") "setItem" key val)))
(define
local-storage-remove
(fn
(key)
(host-call (host-get (dom-window) "localStorage") "removeItem" key)))
(define
set-timeout
(fn
(fn-val ms)
(host-call (dom-window) "setTimeout" (host-callback fn-val) ms)))
(define
set-interval
(fn
(fn-val ms)
(host-call (dom-window) "setInterval" (host-callback fn-val) ms)))
(define
clear-timeout
(fn (id) (host-call (dom-window) "clearTimeout" id)))
(define
clear-interval
(fn (id) (host-call (dom-window) "clearInterval" id)))
(define
request-animation-frame
(fn
(fn-val)
(host-call
(dom-window)
"requestAnimationFrame"
(host-callback fn-val))))
(define
fetch-request
(fn (url opts) (host-call (dom-window) "fetch" url opts)))
(define new-abort-controller (fn () (host-new "AbortController")))
(define
controller-signal
(fn (controller) (host-get controller "signal")))
(define
controller-abort
(fn (controller) (host-call controller "abort")))
(define
promise-then
(fn
(p on-resolve on-reject)
(let
((cb-resolve (host-callback on-resolve))
(cb-reject (if on-reject (host-callback on-reject) nil)))
(if
cb-reject
(host-call (host-call p "then" cb-resolve) "catch" cb-reject)
(host-call p "then" cb-resolve)))))
(define
promise-resolve
(fn (val) (host-call (host-global "Promise") "resolve" val)))
(define
promise-delayed
(fn
(ms val)
(host-new
"Promise"
(host-callback
(fn
(resolve)
(set-timeout (fn () (host-call resolve "call" nil val)) ms))))))
(define
browser-confirm
(fn (msg) (host-call (dom-window) "confirm" msg)))
(define
browser-prompt
(fn (msg default) (host-call (dom-window) "prompt" msg default)))
(define
browser-media-matches?
(fn
(query)
(host-get (host-call (dom-window) "matchMedia" query) "matches")))
(define json-parse (fn (s) (host-call (host-global "JSON") "parse" s)))
(define
log-info
(fn
(msg)
(host-call (host-global "console") "log" (str "[sx] " msg))))
(define
log-warn
(fn
(msg)
(host-call (host-global "console") "warn" (str "[sx] " msg))))
(define
console-log
(fn
(msg)
(host-call (host-global "console") "log" (str "[sx] " msg))))
(define now-ms (fn () (host-call (host-global "Date") "now")))
(define
schedule-idle
(fn
(f)
(let
((cb (host-callback (fn (_deadline) (f)))))
(if
(host-get (dom-window) "requestIdleCallback")
(host-call (dom-window) "requestIdleCallback" cb)
(set-timeout cb 0)))))
(define
set-cookie
(fn
(name value days)
(let
((d (or days 365))
(expires
(host-call
(host-new
"Date"
(+ (host-call (host-global "Date") "now") (* d 86400000)))
"toUTCString")))
(host-set!
(dom-document)
"cookie"
(str
name
"="
(host-call nil "encodeURIComponent" value)
";expires="
expires
";path=/;SameSite=Lax")))))
(define
get-cookie
(fn
(name)
(let
((cookies (host-get (dom-document) "cookie"))
(match
(host-call
cookies
"match"
(host-new "RegExp" (str "(?:^|;\\s*)" name "=([^;]*)")))))
(if
match
(host-call nil "decodeURIComponent" (host-get match 1))
nil))))))
;; Re-export to global env
(define
json-stringify
(fn (v) (host-call (host-global "JSON") "stringify" v)))
(import (sx browser))

File diff suppressed because one or more lines are too long

View File

@@ -1,426 +1,457 @@
(define-library (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-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)
(define-library
(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
(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-head (fn () (host-get (dom-document) "head")))
(define
dom-create-element
(fn
(tag ns)
(if
ns
(host-call (dom-document) "createElementNS" ns tag)
(host-call (dom-document) "createElement" tag))))
(define
create-text-node
(fn (s) (host-call (dom-document) "createTextNode" s)))
(define
create-fragment
(fn () (host-call (dom-document) "createDocumentFragment")))
(define
create-comment
(fn (text) (host-call (dom-document) "createComment" (or text ""))))
(define
dom-append
(fn
(parent child)
(when (and parent child) (host-call parent "appendChild" child))))
(define
dom-prepend
(fn
(parent child)
(when (and parent child) (host-call parent "prepend" child))))
(define
dom-insert-before
(fn
(parent child ref)
(when (and parent child) (host-call parent "insertBefore" child ref))))
(define
dom-insert-after
(fn
(ref node)
"Insert node after ref in the same parent."
(let
((parent (host-get ref "parentNode"))
(next (host-get ref "nextSibling")))
(when
parent
(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-head (fn () (host-get (dom-document) "head")))
(define
dom-create-element
(fn
(tag ns)
(if
next
(host-call parent "insertBefore" node next)
(host-call parent "appendChild" node))))))
(define dom-remove (fn (el) (when el (host-call el "remove"))))
(define
dom-is-active-element?
(fn
(el)
(let
((active (host-get (dom-document) "activeElement")))
(if (and active el) (identical? el active) false))))
(define
dom-is-input-element?
(fn
(el)
(let
((tag (upper (or (dom-tag-name el) ""))))
(or (= tag "INPUT") (= tag "TEXTAREA") (= tag "SELECT")))))
(define
dom-is-child-of?
(fn (child parent) (and child parent (host-call parent "contains" child))))
(define
dom-attr-list
(fn
(el)
(let
((attrs (host-get el "attributes")) (result (list)))
(when
attrs
ns
(host-call (dom-document) "createElementNS" ns tag)
(host-call (dom-document) "createElement" tag))))
(define
create-text-node
(fn (s) (host-call (dom-document) "createTextNode" s)))
(define
create-fragment
(fn () (host-call (dom-document) "createDocumentFragment")))
(define
create-comment
(fn (text) (host-call (dom-document) "createComment" (or text ""))))
(define
dom-append
(fn
(parent child)
(when (and parent child) (host-call parent "appendChild" child))))
(define
dom-prepend
(fn
(parent child)
(when (and parent child) (host-call parent "prepend" child))))
(define
dom-insert-before
(fn
(parent child ref)
(when (and parent child) (host-call parent "insertBefore" child ref))))
(define
dom-insert-after
(fn
(ref node)
"Insert node after ref in the same parent."
(let
((n (host-get attrs "length")))
(let
loop
((i 0))
(when
(< i n)
((parent (host-get ref "parentNode"))
(next (host-get ref "nextSibling")))
(when
parent
(if
next
(host-call parent "insertBefore" node next)
(host-call parent "appendChild" node))))))
(define dom-remove (fn (el) (when el (host-call el "remove"))))
(define
dom-is-active-element?
(fn
(el)
(let
((active (host-get (dom-document) "activeElement")))
(if (and active el) (identical? el active) false))))
(define
dom-is-input-element?
(fn
(el)
(let
((tag (upper (or (dom-tag-name el) ""))))
(or (= tag "INPUT") (= tag "TEXTAREA") (= tag "SELECT")))))
(define
dom-is-child-of?
(fn
(child parent)
(and child parent (host-call parent "contains" child))))
(define
dom-attr-list
(fn
(el)
(let
((attrs (host-get el "attributes")) (result (list)))
(when
attrs
(let
((n (host-get attrs "length")))
(let
((attr (host-call attrs "item" i)))
(append!
result
(list (host-get attr "name") (host-get attr "value"))))
(loop (+ i 1))))))
result)))
(define
dom-remove-child
(fn
(parent child)
(when (and parent child) (host-call parent "removeChild" child))))
(define
dom-replace-child
(fn
(parent new-child old-child)
(when
(and parent new-child old-child)
(host-call parent "replaceChild" new-child old-child))))
(define
dom-clone
(fn (node deep) (host-call node "cloneNode" (if (nil? deep) true deep))))
(define
dom-query
(fn
(root-or-sel sel)
(if
(nil? sel)
(host-call (dom-document) "querySelector" root-or-sel)
(host-call root-or-sel "querySelector" sel))))
(define
dom-query-all
(fn
(root sel)
"Query DOM and return an SX list (not a host NodeList)."
(let
((node-list (if (nil? sel) (host-call (dom-document) "querySelectorAll" root) (host-call root "querySelectorAll" sel))))
(if
(nil? node-list)
(list)
loop
((i 0))
(when
(< i n)
(let
((attr (host-call attrs "item" i)))
(append!
result
(list (host-get attr "name") (host-get attr "value"))))
(loop (+ i 1))))))
result)))
(define
dom-remove-child
(fn
(parent child)
(when (and parent child) (host-call parent "removeChild" child))))
(define
dom-replace-child
(fn
(parent new-child old-child)
(when
(and parent new-child old-child)
(host-call parent "replaceChild" new-child old-child))))
(define
dom-clone
(fn
(node deep)
(host-call node "cloneNode" (if (nil? deep) true deep))))
(define
dom-query
(fn
(root-or-sel sel)
(if
(nil? sel)
(host-call (dom-document) "querySelector" root-or-sel)
(host-call root-or-sel "querySelector" sel))))
(define
dom-query-all
(fn
(root sel)
"Query DOM and return an SX list (not a host NodeList)."
(let
((n (host-get node-list "length")) (result (list)))
((node-list (if (nil? sel) (host-call (dom-document) "querySelectorAll" root) (host-call root "querySelectorAll" sel))))
(if
(nil? node-list)
(list)
(let
((n (host-get node-list "length")) (result (list)))
(let
loop
((i 0))
(when
(< i n)
(append! result (host-call node-list "item" i))
(loop (+ i 1))))
result)))))
(define
dom-query-by-id
(fn (id) (host-call (dom-document) "getElementById" id)))
(define
dom-closest
(fn (el sel) (when el (host-call el "closest" sel))))
(define
dom-matches?
(fn
(el sel)
(if
(and el (host-get el "matches"))
(host-call el "matches" sel)
false)))
(define
dom-get-attr
(fn
(el name)
(if
(and el (host-get el "getAttribute"))
(let
loop
((i 0))
(when
(< i n)
(append! result (host-call node-list "item" i))
(loop (+ i 1))))
result)))))
(define
dom-query-by-id
(fn (id) (host-call (dom-document) "getElementById" id)))
(define dom-closest (fn (el sel) (when el (host-call el "closest" sel))))
(define
dom-matches?
(fn
(el sel)
(if (and el (host-get el "matches")) (host-call el "matches" sel) false)))
(define
dom-get-attr
(fn
(el name)
(if
(and el (host-get el "getAttribute"))
(let ((v (host-call el "getAttribute" name))) (if (nil? v) nil v))
nil)))
(define
dom-set-attr
(fn
(el name val)
(when
(and el (host-get el "setAttribute"))
(host-call el "setAttribute" name val))))
(define
dom-remove-attr
(fn
(el name)
(when
(and el (host-get el "removeAttribute"))
(host-call el "removeAttribute" name))))
(define
dom-has-attr?
(fn
(el name)
(if
(and el (host-get el "hasAttribute"))
(host-call el "hasAttribute" name)
false)))
(define
dom-add-class
(fn (el cls) (when el (host-call (host-get el "classList") "add" cls))))
(define
dom-remove-class
(fn
(el cls)
(when el (host-call (host-get el "classList") "remove" cls))))
(define
dom-has-class?
(fn
(el cls)
(if el (host-call (host-get el "classList") "contains" cls) false)))
(define dom-text-content (fn (el) (host-get el "textContent")))
(define dom-set-text-content (fn (el val) (host-set! el "textContent" val)))
(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-insert-adjacent-html
(fn (el position html) (host-call el "insertAdjacentHTML" position html)))
(define dom-get-style (fn (el prop) (host-get (host-get el "style") prop)))
(define
dom-set-style
(fn
(el prop val)
(host-call (host-get el "style") "setProperty" prop val)))
(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
dom-tag-name
(fn (el) (if el (lower (or (host-get el "tagName") "")) "")))
(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-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
(fn
(el)
"Return child nodes as an SX list."
(if
el
(let
((nl (host-get el "childNodes"))
(n (host-get nl "length"))
(result (list)))
(let
loop
((i 0))
(when
(< i n)
(append! result (host-call nl "item" i))
(loop (+ i 1))))
result)
(list))))
(define dom-is-fragment? (fn (el) (= (host-get el "nodeType") 11)))
(define
dom-child-nodes
(fn
(el)
"Return child nodes as an SX list."
(if
el
(let
((nl (host-get el "childNodes"))
(n (host-get nl "length"))
(result (list)))
(let
loop
((i 0))
(when
(< i n)
(append! result (host-call nl "item" i))
(loop (+ i 1))))
result)
(list))))
(define
dom-remove-children-after
(fn
(marker)
"Remove all siblings after marker node."
(let
((parent (dom-parent marker)))
(when
parent
(let
loop
()
((v (host-call el "getAttribute" name)))
(if (nil? v) nil v))
nil)))
(define
dom-set-attr
(fn
(el name val)
(when
(and el (host-get el "setAttribute"))
(host-call el "setAttribute" name val))))
(define
dom-remove-attr
(fn
(el name)
(when
(and el (host-get el "removeAttribute"))
(host-call el "removeAttribute" name))))
(define
dom-has-attr?
(fn
(el name)
(if
(and el (host-get el "hasAttribute"))
(host-call el "hasAttribute" name)
false)))
(define
dom-add-class
(fn
(el cls)
(when el (host-call (host-get el "classList") "add" cls))))
(define
dom-remove-class
(fn
(el cls)
(when el (host-call (host-get el "classList") "remove" cls))))
(define
dom-has-class?
(fn
(el cls)
(if el (host-call (host-get el "classList") "contains" cls) false)))
(define dom-text-content (fn (el) (host-get el "textContent")))
(define
dom-set-text-content
(fn (el val) (host-set! el "textContent" val)))
(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-insert-adjacent-html
(fn
(el position html)
(host-call el "insertAdjacentHTML" position html)))
(define
dom-get-style
(fn (el prop) (host-get (host-get el "style") prop)))
(define
dom-set-style
(fn
(el prop val)
(host-call (host-get el "style") "setProperty" prop val)))
(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
dom-tag-name
(fn (el) (if el (lower (or (host-get el "tagName") "")) "")))
(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-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
(fn
(el)
"Return child nodes as an SX list."
(if
el
(let
((next (dom-next-sibling marker)))
(when next (host-call parent "removeChild" next) (loop))))))))
(define dom-focus (fn (el) (when el (host-call el "focus"))))
(define
dom-parse-html
(fn
(html)
(let
((parser (host-new "DOMParser"))
(doc (host-call parser "parseFromString" html "text/html")))
(host-get (host-get doc "body") "childNodes"))))
(define
dom-listen
(fn
(el event-name handler)
(let
((cb (host-callback handler)))
(host-call el "addEventListener" event-name cb)
(fn () (host-call el "removeEventListener" event-name cb)))))
(define
dom-add-listener
(fn
(el event-name handler opts)
(let
((cb (host-callback handler)))
(if
opts
(host-call el "addEventListener" event-name cb opts)
(host-call el "addEventListener" event-name cb))
(fn () (host-call el "removeEventListener" event-name cb)))))
(define
dom-dispatch
(fn
(el event-name detail)
(let
((evt (host-new "CustomEvent" event-name (dict "detail" detail "bubbles" true))))
(host-call el "dispatchEvent" evt))))
(define event-detail (fn (evt) (host-get evt "detail")))
(define prevent-default (fn (e) (when e (host-call e "preventDefault"))))
(define stop-propagation (fn (e) (when e (host-call e "stopPropagation"))))
(define
event-modifier-key?
(fn
(e)
(and
e
(or
(host-get e "ctrlKey")
(host-get e "metaKey")
(host-get e "shiftKey")
(host-get e "altKey")))))
(define
element-value
(fn
(el)
(if
(and el (not (nil? (host-get el "value"))))
(host-get el "value")
nil)))
(define
error-message
(fn
(e)
(if (and e (host-get e "message")) (host-get e "message") (str e))))
(define
dom-get-data
(fn
(el key)
(let
((store (host-get el "__sx_data")))
(if store (host-get store key) nil))))
(define
dom-set-data
(fn
(el key val)
(when
(not (host-get el "__sx_data"))
(host-set! el "__sx_data" (dict)))
(host-set! (host-get el "__sx_data") key val)))
(define
dom-append-to-head
(fn (el) (when (dom-head) (host-call (dom-head) "appendChild" el))))
(define
set-document-title
(fn (title) (host-set! (dom-document) "title" title)))
))
((nl (host-get el "childNodes"))
(n (host-get nl "length"))
(result (list)))
(let
loop
((i 0))
(when
(< i n)
(append! result (host-call nl "item" i))
(loop (+ i 1))))
result)
(list))))
(define dom-is-fragment? (fn (el) (= (host-get el "nodeType") 11)))
(define
dom-child-nodes
(fn
(el)
"Return child nodes as an SX list."
(if
el
(let
((nl (host-get el "childNodes"))
(n (host-get nl "length"))
(result (list)))
(let
loop
((i 0))
(when
(< i n)
(append! result (host-call nl "item" i))
(loop (+ i 1))))
result)
(list))))
(define
dom-remove-children-after
(fn
(marker)
"Remove all siblings after marker node."
(let
((parent (dom-parent marker)))
(when
parent
(let
loop
()
(let
((next (dom-next-sibling marker)))
(when next (host-call parent "removeChild" next) (loop))))))))
(define dom-focus (fn (el) (when el (host-call el "focus"))))
(define
dom-parse-html
(fn
(html)
(let
((parser (host-new "DOMParser"))
(doc (host-call parser "parseFromString" html "text/html")))
(host-get (host-get doc "body") "childNodes"))))
(define
dom-listen
(fn
(el event-name handler)
(let
((cb (host-callback handler)))
(host-call el "addEventListener" event-name cb)
(fn () (host-call el "removeEventListener" event-name cb)))))
(define
dom-add-listener
(fn
(el event-name handler opts)
(let
((cb (host-callback handler)))
(if
opts
(host-call el "addEventListener" event-name cb opts)
(host-call el "addEventListener" event-name cb))
(fn () (host-call el "removeEventListener" event-name cb)))))
(define
dom-dispatch
(fn
(el event-name detail)
(let
((evt (host-new "CustomEvent" event-name (dict "detail" detail "bubbles" true))))
(host-call el "dispatchEvent" evt))))
(define event-detail (fn (evt) (host-get evt "detail")))
(define
prevent-default
(fn (e) (when e (host-call e "preventDefault"))))
(define
stop-propagation
(fn (e) (when e (host-call e "stopPropagation"))))
(define
event-modifier-key?
(fn
(e)
(and
e
(or
(host-get e "ctrlKey")
(host-get e "metaKey")
(host-get e "shiftKey")
(host-get e "altKey")))))
(define
element-value
(fn
(el)
(if
(and el (not (nil? (host-get el "value"))))
(host-get el "value")
nil)))
(define
error-message
(fn
(e)
(if (and e (host-get e "message")) (host-get e "message") (str e))))
(define
dom-get-data
(fn
(el key)
(let
((store (host-get el "__sx_data")))
(if store (host-get store key) nil))))
(define
dom-set-data
(fn
(el key val)
(when
(not (host-get el "__sx_data"))
(host-set! el "__sx_data" (dict)))
(host-set! (host-get el "__sx_data") key val)))
(define
dom-append-to-head
(fn (el) (when (dom-head) (host-call (dom-head) "appendChild" el))))
(define
set-document-title
(fn (title) (host-set! (dom-document) "title" title)))))
;; 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))

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"
"clear"
"swap"
"open"
"close"
"exists"
"matches"
"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};
}
(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
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