Browser kernel: - Add `parse` native fn (matches server: unwrap single, list for multiple) - Restore env==global_env guard on _env_bind_hook (let bindings must not leak to _vm_globals — caused JIT CSSX "Not callable: nil" errors) - Add _env_bind_hook call in env_set_id so set! mutations sync to VM globals - Fire _vm_global_set_hook from OP_DEFINE so VM defines sync back to CEK env CEK evaluator: - Replace recursive cek_run with iterative while loop using sx_truthy (previous attempt used strict Bool true matching, broke in wasm_of_ocaml) - Remove dead cek_run_iterative function Web modules: - Remove find-matching-route and parse-route-pattern stubs from boot-helpers.sx that shadowed real implementations from router.sx - Sync boot-helpers.sx to dist/static dirs for bytecode compilation Platform (sx-platform.js): - Set data-sx-ready attribute after boot completes (was only in boot-init which sx-platform.js doesn't call — it steps through boot manually) - Add document-level click delegation for a[sx-get] links as workaround for bytecoded bind-event not attaching per-element listeners (VM closure issue under investigation — bind-event runs but dom-add-listener calls don't result in addEventListener) Tests: - New test_kernel.js: 24 tests covering env sync, parse, route matching, host FFI/preventDefault, deep recursion - New navigation test: "sx-get link fetches SX not HTML and preserves layout" (currently catches layout breakage after SPA swap — known issue) Known remaining issues: - JIT CSSX failures: closure-captured variables resolve to nil in VM bytecode - SPA content swap via execute-request breaks page layout - Bytecoded bind-event doesn't attach per-element addEventListener (root cause unknown — when listen-target guard appears to block despite element being valid) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4 lines
23 KiB
Plaintext
4 lines
23 KiB
Plaintext
(sxbc 1 "8a9c612ae986efc4"
|
|
(code
|
|
:constants ("_sx-bound-prefix" "_sxBound" "mark-processed!" {:upvalue-count 0 :arity 2 :constants ("host-set!" "str" "_sx-bound-prefix") :bytecode (20 0 0 16 0 20 2 0 16 1 52 1 0 2 3 49 3 50)} "is-processed?" {:upvalue-count 0 :arity 2 :constants ("host-get" "str" "_sx-bound-prefix") :bytecode (20 0 0 16 0 20 2 0 16 1 52 1 0 2 48 2 17 2 16 2 33 4 0 3 32 1 0 4 50)} "clear-processed!" {:upvalue-count 0 :arity 2 :constants ("host-set!" "str" "_sx-bound-prefix") :bytecode (20 0 0 16 0 20 2 0 16 1 52 1 0 2 2 49 3 50)} "callable?" {:upvalue-count 0 :arity 1 :constants ("type-of" "=" "lambda" "native-fn" "continuation") :bytecode (16 0 52 0 0 1 17 1 16 1 1 2 0 52 1 0 2 6 34 24 0 5 16 1 1 3 0 52 1 0 2 6 34 10 0 5 16 1 1 4 0 52 1 0 2 50)} "to-kebab" {:upvalue-count 0 :arity 1 :constants ("Convert camelCase to kebab-case." "list" 0 {:upvalue-count 3 :arity 1 :constants ("<" "len" "nth" ">=" "A" "<=" "Z" ">" 0 "append!" "-" "lower" "+" 1) :bytecode (16 0 18 0 52 1 0 1 52 0 0 2 33 105 0 18 0 16 0 52 2 0 2 17 1 16 1 1 4 0 52 3 0 2 6 33 10 0 5 16 1 1 6 0 52 5 0 2 33 43 0 16 0 1 8 0 52 7 0 2 33 13 0 20 9 0 18 1 1 10 0 48 2 32 1 0 2 5 20 9 0 18 1 16 1 52 11 0 1 48 2 32 9 0 20 9 0 18 1 16 1 48 2 5 18 2 16 0 1 13 0 52 12 0 2 49 1 32 1 0 2 50)} "join" "") :bytecode (1 0 0 5 52 1 0 0 17 1 1 2 0 17 2 2 17 3 51 3 0 1 0 1 1 1 3 17 3 16 3 1 2 0 48 1 5 1 5 0 16 1 52 4 0 2 50)} "sx-load-components" {:upvalue-count 0 :arity 1 :constants ("Parse and evaluate component definitions from text." ">" "len" 0 "sx-parse" "for-each" {:upvalue-count 0 :arity 1 :constants ("cek-eval") :bytecode (20 0 0 16 0 49 1 50)}) :bytecode (1 0 0 5 16 0 6 33 14 0 5 16 0 52 2 0 1 1 3 0 52 1 0 2 33 21 0 20 4 0 16 0 48 1 17 1 51 6 0 16 1 52 5 0 2 32 1 0 2 50)} "call-expr" {:upvalue-count 0 :arity 2 :constants ("Parse and evaluate an SX expression string." "sx-parse" "not" "empty?" "cek-eval" "first") :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 2 16 2 52 3 0 1 52 2 0 1 33 14 0 20 4 0 16 2 52 5 0 1 49 1 32 1 0 2 50)} "base-env" {:upvalue-count 0 :arity 0 :constants ("Return the current global environment." "global-env") :bytecode (1 0 0 5 20 1 0 49 0 50)} "get-render-env" {:upvalue-count 0 :arity 1 :constants ("Get the rendering environment (global env, optionally merged with extra)." "base-env" "not" "nil?" "env-merge") :bytecode (1 0 0 5 20 1 0 48 0 17 1 16 0 6 33 11 0 5 16 0 52 3 0 1 52 2 0 1 33 12 0 20 4 0 16 1 16 0 49 2 32 2 0 16 1 50)} "merge-envs" {:upvalue-count 0 :arity 2 :constants ("Merge two environments." "env-merge" "global-env") :bytecode (1 0 0 5 16 0 6 33 3 0 5 16 1 33 12 0 20 1 0 16 0 16 1 49 2 32 19 0 16 0 6 34 13 0 5 16 1 6 34 6 0 5 20 2 0 49 0 50)} "sx-render-with-env" {:upvalue-count 0 :arity 2 :constants ("Parse SX source and render to DOM fragment." "host-global" "document" "host-call" "createDocumentFragment" "sx-parse" "for-each" {:upvalue-count 2 :arity 1 :constants ("render-to-html" ">" "len" 0 "host-call" "createElement" "template" "host-set!" "innerHTML" "appendChild" "host-get" "content") :bytecode (20 0 0 16 0 48 1 17 1 16 1 6 33 14 0 5 16 1 52 2 0 1 1 3 0 52 1 0 2 33 51 0 20 4 0 18 0 1 5 0 1 6 0 48 3 17 2 20 7 0 16 2 1 8 0 16 1 48 3 5 20 4 0 18 1 1 9 0 20 10 0 16 2 1 11 0 48 2 49 3 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 1 2 0 48 1 17 2 20 3 0 16 2 1 4 0 48 2 17 3 20 5 0 16 0 48 1 17 4 51 7 0 1 2 1 3 16 4 52 6 0 2 5 16 3 50)} "parse-env-attr" {:upvalue-count 0 :arity 1 :constants ("Parse data-sx-env attribute (JSON key-value pairs).") :bytecode (1 0 0 5 2 50)} "store-env-attr" {:upvalue-count 0 :arity 3 :constants () :bytecode (2 50)} "resolve-mount-target" {:upvalue-count 0 :arity 1 :constants ("Resolve a CSS selector string to a DOM element." "string?" "dom-query") :bytecode (1 0 0 5 16 0 52 1 0 1 33 10 0 20 2 0 16 0 49 1 32 2 0 16 0 50)} "remove-head-element" {:upvalue-count 0 :arity 1 :constants ("Remove a <head> element matching selector." "dom-query" "dom-remove") :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 16 1 33 10 0 20 2 0 16 1 49 1 32 1 0 2 50)} "set-sx-comp-cookie" {:upvalue-count 0 :arity 1 :constants ("set-cookie" "sx-components") :bytecode (1 1 0 16 0 52 0 0 2 50)} "clear-sx-comp-cookie" {:upvalue-count 0 :arity 0 :constants ("set-cookie" "sx-components" "") :bytecode (1 1 0 1 2 0 52 0 0 2 50)} "log-parse-error" {:upvalue-count 0 :arity 3 :constants ("log-error" "str" "Parse error in " ": ") :bytecode (20 0 0 1 2 0 16 0 1 3 0 16 2 52 1 0 4 49 1 50)} "loaded-component-names" {:upvalue-count 0 :arity 0 :constants ("dom-query-all" "dom-body" "script[data-components]" "list" "for-each" {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-components" "" ">" "len" 0 "for-each" {:upvalue-count 1 :arity 1 :constants (">" "len" "trim" 0 "append!") :bytecode (16 0 52 2 0 1 52 1 0 1 1 3 0 52 0 0 2 33 16 0 20 4 0 18 0 16 0 52 2 0 1 49 2 32 1 0 2 50)} "split" ",") :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 1 16 1 52 4 0 1 1 5 0 52 3 0 2 33 21 0 51 7 0 0 0 16 1 1 9 0 52 8 0 2 52 6 0 2 32 1 0 2 50)}) :bytecode (20 0 0 20 1 0 48 0 1 2 0 48 2 17 0 52 3 0 0 17 1 51 5 0 1 1 16 0 52 4 0 2 5 16 1 50)} "csrf-token" {:upvalue-count 0 :arity 0 :constants ("dom-query" "meta[name=\"csrf-token\"]" "dom-get-attr" "content") :bytecode (20 0 0 1 1 0 48 1 17 0 16 0 33 13 0 20 2 0 16 0 1 3 0 49 2 32 1 0 2 50)} "validate-for-request" {:upvalue-count 0 :arity 1 :constants () :bytecode (3 50)} "build-request-body" {:upvalue-count 0 :arity 3 :constants ("upper" "=" "GET" "HEAD" "dom-tag-name" "" "FORM" "host-new" "FormData" "URLSearchParams" "host-call" "toString" "dict" "url" ">" "len" 0 "str" "contains?" "?" "&" "body" "content-type" "dom-get-attr" "enctype" "application/x-www-form-urlencoded" "multipart/form-data") :bytecode (16 1 52 0 0 1 17 3 16 3 1 2 0 52 1 0 2 6 34 10 0 5 16 3 1 3 0 52 1 0 2 33 167 0 16 0 6 33 27 0 5 20 4 0 16 0 48 1 6 34 4 0 5 1 5 0 52 0 0 1 1 6 0 52 1 0 2 33 111 0 20 7 0 1 8 0 16 0 48 2 17 4 20 7 0 1 9 0 16 4 48 2 17 5 20 10 0 16 5 1 11 0 48 2 17 6 1 13 0 16 6 6 33 14 0 5 16 6 52 15 0 1 1 16 0 52 14 0 2 33 32 0 16 2 16 2 1 19 0 52 18 0 2 33 6 0 1 20 0 32 3 0 1 19 0 16 6 52 17 0 3 32 2 0 16 2 1 21 0 2 1 22 0 2 52 12 0 6 32 17 0 1 13 0 16 2 1 21 0 2 1 22 0 2 52 12 0 6 32 173 0 16 0 6 33 27 0 5 20 4 0 16 0 48 1 6 34 4 0 5 1 5 0 52 0 0 1 1 6 0 52 1 0 2 33 120 0 20 23 0 16 0 1 24 0 48 2 6 34 4 0 5 1 25 0 17 4 16 4 1 26 0 52 1 0 2 33 33 0 20 7 0 1 8 0 16 0 48 2 17 5 1 13 0 16 2 1 21 0 16 5 1 22 0 2 52 12 0 6 32 52 0 20 7 0 1 8 0 16 0 48 2 17 5 20 7 0 1 9 0 16 5 48 2 17 6 1 13 0 16 2 1 21 0 20 10 0 16 6 1 11 0 48 2 1 22 0 1 25 0 52 12 0 6 32 17 0 1 13 0 16 2 1 21 0 2 1 22 0 2 52 12 0 6 50)} "abort-previous-target" {:upvalue-count 0 :arity 1 :constants () :bytecode (2 50)} "abort-previous" "track-controller" {:upvalue-count 0 :arity 2 :constants () :bytecode (2 50)} "track-controller-target" "new-abort-controller" {:upvalue-count 0 :arity 0 :constants ("host-new" "AbortController") :bytecode (20 0 0 1 1 0 49 1 50)} "abort-signal" {:upvalue-count 0 :arity 1 :constants ("host-get" "signal") :bytecode (20 0 0 16 0 1 1 0 49 2 50)} "apply-optimistic" "revert-optimistic" "dom-has-attr?" {:upvalue-count 0 :arity 2 :constants ("host-call" "hasAttribute") :bytecode (20 0 0 16 0 1 1 0 16 1 49 3 50)} "show-indicator" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-indicator" "dom-query" "dom-remove-class" "hidden" "dom-add-class" "sx-indicator-visible") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 42 0 20 2 0 16 1 48 1 17 2 16 2 33 24 0 20 3 0 16 2 1 4 0 48 2 5 20 5 0 16 2 1 6 0 48 2 32 1 0 2 32 1 0 2 5 16 1 50)} "disable-elements" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-disabled-elt" "dom-query-all" "dom-body" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-set-attr" "disabled" "") :bytecode (20 0 0 16 0 1 1 0 1 2 0 49 3 50)} "list") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 29 0 20 2 0 20 3 0 48 0 16 1 48 2 17 2 51 5 0 16 2 52 4 0 2 5 16 2 32 4 0 52 6 0 0 50)} "clear-loading-state" {:upvalue-count 0 :arity 3 :constants ("dom-remove-class" "sx-request" "dom-remove-attr" "aria-busy" "dom-query" "dom-add-class" "hidden" "sx-indicator-visible" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-remove-attr" "disabled") :bytecode (20 0 0 16 0 1 1 0 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 5 20 2 0 16 0 1 3 0 48 2 5 16 1 33 42 0 20 4 0 16 1 48 1 17 3 16 3 33 24 0 20 5 0 16 3 1 6 0 48 2 5 20 0 0 16 3 1 7 0 48 2 32 1 0 2 32 1 0 2 5 16 2 33 12 0 51 9 0 16 2 52 8 0 2 32 1 0 2 50)} "abort-error?" {:upvalue-count 0 :arity 1 :constants ("=" "host-get" "name" "AbortError") :bytecode (20 1 0 16 0 1 2 0 48 2 1 3 0 52 0 0 2 50)} "promise-catch" {:upvalue-count 0 :arity 2 :constants ("host-callback" "host-call" "catch") :bytecode (20 0 0 16 1 48 1 17 2 20 1 0 16 0 1 2 0 16 2 49 3 50)} "fetch-request" {:upvalue-count 0 :arity 3 :constants ("get" "url" "method" "GET" "headers" "dict" "body" "signal" "preloaded" 200 {:upvalue-count 0 :arity 1 :constants () :bytecode (2 50)} "host-new" "Headers" "Object" "for-each" {:upvalue-count 2 :arity 1 :constants ("host-call" "set" "get") :bytecode (20 0 0 18 0 1 1 0 16 0 18 1 16 0 52 2 0 2 49 4 50)} "keys" "host-set!" "promise-then" "host-call" "dom-window" "fetch" {:upvalue-count 2 :arity 1 :constants ("host-get" "ok" "status" {:upvalue-count 1 :arity 1 :constants ("host-call" "host-get" "headers" "get") :bytecode (20 0 0 20 1 0 18 0 1 2 0 48 2 1 3 0 16 0 49 3 50)} "promise-then" "host-call" "text" {:upvalue-count 4 :arity 1 :constants () :bytecode (18 0 18 1 18 2 18 3 16 0 49 4 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 0 0 16 0 1 2 0 48 2 17 2 51 3 0 1 0 17 3 20 4 0 20 5 0 16 0 1 6 0 48 2 51 7 0 0 0 1 1 1 2 1 3 18 1 49 3 50)}) :bytecode (16 0 1 1 0 52 0 0 2 17 3 16 0 1 2 0 52 0 0 2 6 34 4 0 5 1 3 0 17 4 16 0 1 4 0 52 0 0 2 6 34 5 0 5 52 5 0 0 17 5 16 0 1 6 0 52 0 0 2 17 6 16 0 1 7 0 52 0 0 2 17 7 16 0 1 8 0 52 0 0 2 17 8 16 8 33 16 0 16 1 3 1 9 0 51 10 0 16 8 49 4 32 139 0 20 11 0 1 12 0 48 1 17 9 20 11 0 1 13 0 48 1 17 10 51 15 0 1 9 1 5 16 5 52 16 0 1 52 14 0 2 5 20 17 0 16 10 1 2 0 16 4 48 3 5 20 17 0 16 10 1 4 0 16 9 48 3 5 16 6 33 15 0 20 17 0 16 10 1 6 0 16 6 48 3 32 1 0 2 5 16 7 33 15 0 20 17 0 16 10 1 7 0 16 7 48 3 32 1 0 2 5 20 18 0 20 19 0 20 20 0 48 0 1 21 0 16 3 16 10 48 4 51 22 0 1 1 1 2 16 2 49 3 50)} "fetch-location" {:upvalue-count 0 :arity 1 :constants ("dom-query" "[sx-boost]" "#main-panel" "browser-navigate") :bytecode (20 0 0 1 1 0 48 1 6 34 9 0 5 20 0 0 1 2 0 48 1 17 1 16 1 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)} "fetch-and-restore" {:upvalue-count 0 :arity 4 :constants ("fetch-request" "dict" "url" "method" "GET" "headers" "body" "signal" {:upvalue-count 2 :arity 4 :constants ("dom-set-inner-html" "post-swap" "host-call" "dom-window" "scrollTo" 0) :bytecode (16 0 33 39 0 20 0 0 18 0 16 3 48 2 5 20 1 0 18 0 48 1 5 20 2 0 20 3 0 48 0 1 4 0 1 5 0 18 1 49 4 32 1 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("log-warn" "str" "fetch-and-restore error: ") :bytecode (20 0 0 1 2 0 16 0 52 1 0 2 49 1 50)}) :bytecode (20 0 0 1 2 0 16 1 1 3 0 1 4 0 1 5 0 16 2 1 6 0 2 1 7 0 2 52 1 0 10 51 8 0 1 0 1 3 51 9 0 49 3 50)} "fetch-preload" {:upvalue-count 0 :arity 3 :constants ("fetch-request" "dict" "url" "method" "GET" "headers" "body" "signal" {:upvalue-count 2 :arity 4 :constants ("preload-cache-set") :bytecode (16 0 33 14 0 20 0 0 18 0 18 1 16 3 49 3 32 1 0 2 50)} {:upvalue-count 0 :arity 1 :constants () :bytecode (2 50)}) :bytecode (20 0 0 1 2 0 16 0 1 3 0 1 4 0 1 5 0 16 1 1 6 0 2 1 7 0 2 52 1 0 10 51 8 0 1 2 1 0 51 9 0 49 3 50)} "fetch-streaming" {:upvalue-count 0 :arity 4 :constants ("fetch-and-restore" 0) :bytecode (20 0 0 16 0 16 1 16 2 1 1 0 49 4 50)} "dom-parse-html-document" {:upvalue-count 0 :arity 1 :constants ("host-new" "DOMParser" "host-call" "parseFromString" "text/html") :bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 16 0 1 4 0 49 4 50)} "dom-body-inner-html" {:upvalue-count 0 :arity 1 :constants ("host-get" "body" "innerHTML") :bytecode (20 0 0 20 0 0 16 0 1 1 0 48 2 1 2 0 49 2 50)} "create-script-clone" {:upvalue-count 0 :arity 1 :constants ("host-global" "document" "host-call" "createElement" "script" "host-get" "attributes" {:upvalue-count 3 :arity 1 :constants ("<" "host-get" "length" "host-call" "item" "setAttribute" "name" "value" "+" 1) :bytecode (16 0 20 1 0 18 0 1 2 0 48 2 52 0 0 2 33 61 0 20 3 0 18 0 1 4 0 16 0 48 3 17 1 20 3 0 18 1 1 5 0 20 1 0 16 1 1 6 0 48 2 20 1 0 16 1 1 7 0 48 2 48 4 5 18 2 16 0 1 9 0 52 8 0 2 49 1 32 1 0 2 50)} 0 "host-set!" "textContent") :bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 1 4 0 48 3 17 2 20 5 0 16 0 1 6 0 48 2 17 3 2 17 4 51 7 0 1 3 1 2 1 4 17 4 16 4 1 8 0 48 1 5 20 9 0 16 2 1 10 0 20 5 0 16 0 1 10 0 48 2 48 3 5 16 2 50)} "cross-origin?" {:upvalue-count 0 :arity 1 :constants ("starts-with?" "http://" "https://" "not" "browser-location-origin") :bytecode (16 0 1 1 0 52 0 0 2 6 34 10 0 5 16 0 1 2 0 52 0 0 2 33 18 0 16 0 20 4 0 48 0 52 0 0 2 52 3 0 1 32 1 0 4 50)} "browser-scroll-to" {:upvalue-count 0 :arity 2 :constants ("host-call" "dom-window" "scrollTo") :bytecode (20 0 0 20 1 0 48 0 1 2 0 16 0 16 1 49 4 50)} "with-transition" {:upvalue-count 0 :arity 2 :constants ("host-get" "host-global" "document" "startViewTransition" "host-call" "host-callback") :bytecode (16 0 6 33 17 0 5 20 0 0 20 1 0 1 2 0 48 1 1 3 0 48 2 33 26 0 20 4 0 20 1 0 1 2 0 48 1 1 3 0 20 5 0 16 1 48 1 49 3 32 4 0 16 1 49 0 50)} "observe-intersection" {:upvalue-count 0 :arity 4 :constants ("host-callback" {:upvalue-count 4 :arity 1 :constants ("for-each" {:upvalue-count 4 :arity 1 :constants ("host-get" "isIntersecting" "set-timeout" {:upvalue-count 2 :arity 0 :constants () :bytecode (18 0 18 1 49 1 50)} "host-call" "observer" "unobserve") :bytecode (20 0 0 16 0 1 1 0 48 2 33 54 0 18 0 33 17 0 20 2 0 51 3 0 0 1 1 0 18 0 48 2 32 6 0 18 1 16 0 48 1 5 18 2 33 16 0 20 4 0 20 5 0 1 6 0 18 3 49 3 32 1 0 2 32 1 0 2 50)} "host-call" "forEach" "host-callback" {:upvalue-count 0 :arity 1 :constants () :bytecode (16 0 50)}) :bytecode (51 1 0 0 0 0 1 0 2 0 3 20 2 0 16 0 1 3 0 20 4 0 51 5 0 48 1 48 3 52 0 0 2 50)} "host-new" "IntersectionObserver" {:upvalue-count 5 :arity 1 :constants ("host-get" "length" {:upvalue-count 8 :arity 1 :constants ("<" "host-call" "item" "host-get" "isIntersecting" "set-timeout" {:upvalue-count 2 :arity 0 :constants () :bytecode (18 0 18 1 49 1 50)} "unobserve" "+" 1) :bytecode (16 0 18 0 52 0 0 2 33 105 0 20 1 0 18 1 1 2 0 16 0 48 3 17 1 16 1 6 33 11 0 5 20 3 0 16 1 1 4 0 48 2 33 53 0 18 2 33 17 0 20 5 0 51 6 0 0 3 1 1 18 2 48 2 32 6 0 18 3 16 1 48 1 5 18 4 33 15 0 20 1 0 18 5 1 7 0 18 6 48 3 32 1 0 2 32 1 0 2 5 18 7 16 0 1 9 0 52 8 0 2 49 1 32 1 0 2 50)} 0) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 2 17 2 51 2 0 1 1 1 0 0 0 0 1 0 2 0 3 0 4 1 2 17 2 16 2 1 3 0 49 1 50)} "host-call" "observe") :bytecode (20 0 0 51 1 0 1 3 1 1 1 2 1 0 48 1 17 4 20 2 0 1 3 0 20 0 0 51 4 0 1 3 1 1 1 2 1 5 1 0 48 1 48 2 17 5 20 5 0 16 5 1 6 0 16 0 48 3 5 16 5 50)} "event-source-connect" {:upvalue-count 0 :arity 2 :constants ("host-new" "EventSource" "host-set!" "_sxElement") :bytecode (20 0 0 1 1 0 16 0 48 2 17 2 20 2 0 16 2 1 3 0 16 1 48 3 5 16 2 50)} "event-source-listen" {:upvalue-count 0 :arity 3 :constants ("host-call" "addEventListener" "host-callback" {:upvalue-count 1 :arity 1 :constants () :bytecode (18 0 16 0 49 1 50)}) :bytecode (20 0 0 16 0 1 1 0 16 1 20 2 0 51 3 0 1 2 48 1 49 4 50)} "bind-boost-link" {:upvalue-count 0 :arity 2 :constants ("dom-listen" "click" {:upvalue-count 2 :arity 1 :constants ("not" "event-modifier-key?" "prevent-default" "dom-has-attr?" "sx-get" "dom-set-attr" "sx-push-url" "true" "execute-request") :bytecode (20 1 0 16 0 48 1 52 0 0 1 33 89 0 20 2 0 16 0 48 1 5 20 3 0 18 0 1 4 0 48 2 52 0 0 1 33 15 0 20 5 0 18 0 1 4 0 18 1 48 3 32 1 0 2 5 20 3 0 18 0 1 6 0 48 2 52 0 0 1 33 16 0 20 5 0 18 0 1 6 0 1 7 0 48 3 32 1 0 2 5 20 8 0 18 0 2 2 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 51 2 0 1 0 1 1 49 3 50)} "bind-boost-form" {:upvalue-count 0 :arity 3 :constants ("dom-listen" "submit" {:upvalue-count 1 :arity 1 :constants ("prevent-default" "execute-request") :bytecode (20 0 0 16 0 48 1 5 20 1 0 18 0 2 2 49 3 50)}) :bytecode (20 0 0 16 0 1 1 0 51 2 0 1 0 49 3 50)} "bind-client-route-click" {:upvalue-count 0 :arity 3 :constants ("dom-listen" "click" {:upvalue-count 2 :arity 1 :constants ("not" "event-modifier-key?" "prevent-default" "dom-query" "[sx-boost]" "dom-get-attr" "sx-boost" "=" "true" "#main-panel" "try-client-route" "url-pathname" "browser-push-state" "" "browser-scroll-to" 0 "dom-has-attr?" "sx-get" "dom-set-attr" "sx-push-url" "execute-request") :bytecode (20 1 0 16 0 48 1 52 0 0 1 33 198 0 20 2 0 16 0 48 1 5 20 3 0 1 4 0 48 1 17 1 16 1 33 46 0 20 5 0 16 1 1 6 0 48 2 17 3 16 3 6 33 14 0 5 16 3 1 8 0 52 7 0 2 52 0 0 1 33 5 0 16 3 32 3 0 1 9 0 32 3 0 1 9 0 17 2 20 10 0 20 11 0 18 0 48 1 16 2 48 2 33 26 0 20 12 0 2 1 13 0 18 0 48 3 5 20 14 0 1 15 0 1 15 0 49 2 32 78 0 20 16 0 18 1 1 17 0 48 2 52 0 0 1 33 15 0 20 18 0 18 1 1 17 0 18 0 48 3 32 1 0 2 5 20 16 0 18 1 1 19 0 48 2 52 0 0 1 33 16 0 20 18 0 18 1 1 19 0 1 8 0 48 3 32 1 0 2 5 20 20 0 18 1 2 2 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 51 2 0 1 1 1 0 49 3 50)} "sw-post-message" "try-parse-json" {:upvalue-count 0 :arity 1 :constants ("json-parse") :bytecode (20 0 0 16 0 49 1 50)} "strip-component-scripts" {:upvalue-count 0 :arity 1 :constants ("<script type=\"text/sx\" data-components>" "<\\//script>" {:upvalue-count 4 :arity 1 :constants ("index-of" "=" -1 "+" "len" "slice" 0 "sx-load-components" "str") :bytecode (16 0 18 0 52 0 0 2 17 1 16 1 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 129 0 16 1 18 0 52 4 0 1 52 3 0 2 17 2 16 0 16 1 18 0 52 4 0 1 52 3 0 2 52 5 0 2 17 3 16 3 18 2 52 0 0 2 17 4 16 4 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 66 0 16 3 1 6 0 16 4 52 5 0 3 17 5 16 0 1 6 0 16 1 52 5 0 3 17 6 16 3 16 4 18 2 52 4 0 1 52 3 0 2 52 5 0 2 17 7 20 7 0 16 5 48 1 5 18 3 16 6 16 7 52 8 0 2 49 1 50)}) :bytecode (16 0 17 1 1 0 0 17 2 1 1 0 17 3 2 17 4 51 2 0 1 2 1 1 1 3 1 4 17 4 16 4 16 1 48 1 5 16 1 50)} "extract-response-css" {:upvalue-count 0 :arity 1 :constants ("<style data-sx-css>" "</style>" {:upvalue-count 4 :arity 1 :constants ("index-of" "=" -1 "slice" "+" "len" 0 "host-global" "document" "host-call" "createElement" "style" "host-set!" "textContent" "dom-append-to-head" "str") :bytecode (16 0 18 0 52 0 0 2 17 1 16 1 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 153 0 16 0 16 1 18 0 52 5 0 1 52 4 0 2 52 3 0 2 17 2 16 2 18 2 52 0 0 2 17 3 16 3 1 2 0 52 1 0 2 33 7 0 16 0 19 1 32 104 0 16 2 1 6 0 16 3 52 3 0 3 17 4 16 0 1 6 0 16 1 52 3 0 3 17 5 16 2 16 3 18 2 52 5 0 1 52 4 0 2 52 3 0 2 17 6 20 7 0 1 8 0 48 1 17 7 20 9 0 16 7 1 10 0 1 11 0 48 3 17 8 20 12 0 16 8 1 13 0 16 4 48 3 5 20 14 0 16 8 48 1 5 18 3 16 5 16 6 52 15 0 2 49 1 50)}) :bytecode (16 0 17 1 1 0 0 17 2 1 1 0 17 3 2 17 4 51 2 0 1 2 1 1 1 3 1 4 17 4 16 4 16 1 48 1 5 16 1 50)} "sx-render" {:upvalue-count 0 :arity 1 :constants ("host-global" "document" "host-call" "createDocumentFragment" "sx-parse" "scope-push!" "sx-render-markers" "for-each" {:upvalue-count 1 :arity 1 :constants ("render-to-dom" "get-render-env" "dom-append") :bytecode (20 0 0 16 0 20 1 0 2 48 1 2 48 3 17 1 16 1 33 12 0 20 2 0 18 0 16 1 49 2 32 1 0 2 50)} "scope-pop!") :bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 48 2 17 2 20 4 0 16 0 48 1 17 3 1 6 0 3 52 5 0 2 5 51 8 0 1 2 16 3 52 7 0 2 5 1 6 0 52 9 0 1 5 16 2 50)} "sx-hydrate" {:upvalue-count 0 :arity 1 :constants ("sx-hydrate-elements" "dom-body") :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 49 1 50)} "sx-process-scripts" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "script[type=\"text/sx\"]" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "sx-script" "mark-processed!" "host-get" "textContent" ">" "len" 0 "sx-parse" "for-each" {:upvalue-count 0 :arity 1 :constants ("cek-eval") :bytecode (20 0 0 16 0 49 1 50)}) :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 71 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 1 5 0 48 2 17 1 16 1 6 33 14 0 5 16 1 52 7 0 1 1 8 0 52 6 0 2 33 21 0 20 9 0 16 1 48 1 17 2 51 11 0 16 2 52 10 0 2 32 1 0 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 50)} "select-from-container" {:upvalue-count 0 :arity 2 :constants ("dom-query" "children-to-fragment") :bytecode (16 1 33 31 0 20 0 0 16 0 16 1 48 2 17 2 16 2 33 5 0 16 2 32 7 0 20 1 0 16 0 49 1 32 7 0 20 1 0 16 0 49 1 50)} "children-to-fragment" {:upvalue-count 0 :arity 1 :constants ("host-global" "document" "host-call" "createDocumentFragment" {:upvalue-count 3 :arity 0 :constants ("dom-first-child" "dom-append") :bytecode (20 0 0 18 0 48 1 17 0 16 0 33 17 0 20 1 0 18 1 16 0 48 2 5 18 2 49 0 32 1 0 2 50)}) :bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 16 1 1 3 0 48 2 17 2 2 17 3 51 4 0 1 0 1 2 1 3 17 3 16 3 48 0 5 16 2 50)} "select-html-from-doc" {:upvalue-count 0 :arity 2 :constants ("dom-query" "dom-inner-html" "dom-body-inner-html") :bytecode (16 1 33 36 0 20 0 0 16 0 16 1 48 2 17 2 16 2 33 10 0 20 1 0 16 2 49 1 32 7 0 20 2 0 16 0 49 1 32 7 0 20 2 0 16 0 49 1 50)} "register-io-deps" "resolve-page-data" "parse-sx-data" {:upvalue-count 0 :arity 1 :constants (">" "len" 0 "sx-parse" "not" "empty?" "first") :bytecode (16 0 6 33 14 0 5 16 0 52 1 0 1 1 2 0 52 0 0 2 33 35 0 20 3 0 16 0 48 1 17 1 16 1 52 5 0 1 52 4 0 1 33 9 0 16 1 52 6 0 1 32 1 0 2 32 1 0 2 50)} "try-eval-content" {:upvalue-count 0 :arity 2 :constants ("sx-parse" "empty?" "create-fragment" "for-each" {:upvalue-count 2 :arity 1 :constants ("render-to-dom" "dom-append") :bytecode (20 0 0 16 0 18 0 2 48 3 17 1 16 1 33 12 0 20 1 0 18 1 16 1 49 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 48 1 17 2 16 2 52 1 0 1 33 4 0 2 32 23 0 20 2 0 48 0 17 3 51 4 0 1 1 1 3 16 2 52 3 0 2 5 16 3 50)} "try-async-eval-content" {:upvalue-count 0 :arity 3 :constants ("try-eval-content") :bytecode (20 0 0 16 0 16 1 49 2 50)} "try-rerender-page" {:upvalue-count 0 :arity 0 :constants () :bytecode (2 50)} "execute-action" "bind-preload" "persist-offline-data" "retrieve-offline-data") :bytecode (1 1 0 128 0 0 5 51 3 0 128 2 0 5 51 5 0 128 4 0 5 51 7 0 128 6 0 5 51 9 0 128 8 0 5 51 11 0 128 10 0 5 51 13 0 128 12 0 5 51 15 0 128 14 0 5 51 17 0 128 16 0 5 51 19 0 128 18 0 5 51 21 0 128 20 0 5 51 23 0 128 22 0 5 51 25 0 128 24 0 5 51 27 0 128 26 0 5 51 29 0 128 28 0 5 51 31 0 128 30 0 5 51 33 0 128 32 0 5 51 35 0 128 34 0 5 51 37 0 128 36 0 5 51 39 0 128 38 0 5 51 41 0 128 40 0 5 51 43 0 128 42 0 5 51 45 0 128 44 0 5 51 47 0 128 46 0 5 51 47 0 128 48 0 5 51 50 0 128 49 0 5 51 50 0 128 51 0 5 51 53 0 128 52 0 5 51 55 0 128 54 0 5 51 47 0 128 56 0 5 51 47 0 128 57 0 5 51 59 0 128 58 0 5 51 61 0 128 60 0 5 51 63 0 128 62 0 5 51 65 0 128 64 0 5 51 67 0 128 66 0 5 51 69 0 128 68 0 5 51 71 0 128 70 0 5 51 73 0 128 72 0 5 51 75 0 128 74 0 5 51 77 0 128 76 0 5 51 79 0 128 78 0 5 51 81 0 128 80 0 5 51 83 0 128 82 0 5 51 85 0 128 84 0 5 51 87 0 128 86 0 5 51 89 0 128 88 0 5 51 91 0 128 90 0 5 51 93 0 128 92 0 5 51 95 0 128 94 0 5 51 97 0 128 96 0 5 51 99 0 128 98 0 5 51 101 0 128 100 0 5 51 103 0 128 102 0 5 51 47 0 128 104 0 5 51 106 0 128 105 0 5 51 108 0 128 107 0 5 51 110 0 128 109 0 5 51 112 0 128 111 0 5 51 114 0 128 113 0 5 51 116 0 128 115 0 5 51 118 0 128 117 0 5 51 120 0 128 119 0 5 51 122 0 128 121 0 5 51 47 0 128 123 0 5 51 27 0 128 124 0 5 51 126 0 128 125 0 5 51 128 0 128 127 0 5 51 130 0 128 129 0 5 51 132 0 128 131 0 5 51 132 0 128 133 0 5 51 132 0 128 134 0 5 51 132 0 128 135 0 5 51 132 0 128 136 0 50)))
|