diff --git a/hosts/ocaml/bin/sx_server.ml b/hosts/ocaml/bin/sx_server.ml index 87ed9425..1edc9d9b 100644 --- a/hosts/ocaml/bin/sx_server.ml +++ b/hosts/ocaml/bin/sx_server.ml @@ -829,6 +829,29 @@ let rec dispatch env cmd = let src = read_blob () in dispatch env (List [Symbol "eval"; String src]) + | List [Symbol "compile-blob"] -> + (* Read source as blob, parse natively in OCaml, compile via SX compile-module. + Returns the bytecode dict as SX text. Much faster than JS kernel. *) + let src = read_blob () in + (try + let exprs = Sx_parser.parse_all src in + let compile_module = env_get env "compile-module" in + let result = Sx_ref.cek_call compile_module (List [List exprs]) in + let rec raw_serialize = function + | Nil -> "nil" + | Bool true -> "true" | Bool false -> "false" + | Number n -> if Float.is_integer n then string_of_int (int_of_float n) else Printf.sprintf "%g" n + | String s -> "\"" ^ escape_sx_string s ^ "\"" + | Symbol s -> s | Keyword k -> ":" ^ k + | List items | ListRef { contents = items } -> "(" ^ String.concat " " (List.map raw_serialize items) ^ ")" + | Dict d -> let pairs = Hashtbl.fold (fun k v acc -> (Printf.sprintf ":%s %s" k (raw_serialize v)) :: acc) d [] in "{" ^ String.concat " " pairs ^ "}" + | SxExpr s -> s | _ -> "nil" + in + send_ok_raw (raw_serialize result) + with + | Eval_error msg -> send_error msg + | exn -> send_error (Printexc.to_string exn)) + | List [Symbol "eval"; String src] -> (try let exprs = Sx_parser.parse_all src in diff --git a/hosts/ocaml/browser/compile-modules.js b/hosts/ocaml/browser/compile-modules.js index 7f065ed7..a889f692 100644 --- a/hosts/ocaml/browser/compile-modules.js +++ b/hosts/ocaml/browser/compile-modules.js @@ -2,8 +2,9 @@ /** * compile-modules.js — Pre-compile .sx files to bytecode s-expressions. * - * Uses the js_of_ocaml kernel in Node.js to compile each .sx module, - * then serializes the bytecode as .sxbc (s-expression format) for browser loading. + * Uses the native OCaml sx_server binary for compilation (~5x faster than + * the js_of_ocaml kernel). Sends source via the blob protocol, receives + * compiled bytecode as SX text. * * Usage: node compile-modules.js [dist-dir] */ @@ -11,6 +12,7 @@ const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); +const { execSync, spawnSync } = require('child_process'); const distDir = process.argv[2] || path.join(__dirname, 'dist'); const sxDir = path.join(distDir, 'sx'); @@ -20,15 +22,16 @@ if (!fs.existsSync(sxDir)) { process.exit(1); } -// Load the js_of_ocaml kernel -const kernelPath = path.join(__dirname, '..', '_build', 'default', 'browser', 'sx_browser.bc.js'); -if (!fs.existsSync(kernelPath)) { - console.error('Kernel not found:', kernelPath); +// Find the native OCaml binary +const binPaths = [ + path.join(__dirname, '..', '_build', 'default', 'bin', 'sx_server.exe'), + '/app/bin/sx_server', +]; +const binPath = binPaths.find(p => fs.existsSync(p)); +if (!binPath) { + console.error('sx_server binary not found at:', binPaths.join(', ')); process.exit(1); } -require(kernelPath); -const K = globalThis.SxKernel; -if (!K) { console.error('SxKernel not initialized'); process.exit(1); } const FILES = [ 'render.sx', 'core-signals.sx', 'signals.sx', 'deps.sx', 'router.sx', @@ -38,155 +41,162 @@ const FILES = [ 'harness-web.sx', 'engine.sx', 'orchestration.sx', 'boot.sx', ]; -// Load all files to build up the env (need compiler loaded) -console.log('Loading SX environment...'); -for (const file of FILES) { - const r = K.load(fs.readFileSync(path.join(sxDir, file), 'utf8')); - if (typeof r === 'string' && r.startsWith('Error')) { - console.error(' FAIL', file, r); - process.exit(1); - } -} -console.log(' ' + FILES.length + ' files loaded'); +// --------------------------------------------------------------------------- +// Build the full input script — all commands in one batch +// --------------------------------------------------------------------------- -// Compile each file to bytecode -console.log('Compiling bytecode modules...'); +const t0 = Date.now(); +console.log('Building compilation script...'); + +let epoch = 1; +let script = ''; + +// Load compiler +script += `(epoch ${epoch++})\n(load "lib/compiler.sx")\n`; + +// JIT pre-compile the compiler +script += `(epoch ${epoch++})\n(vm-compile-adapter)\n`; + +// Load all modules into env +for (const file of FILES) { + const src = fs.readFileSync(path.join(sxDir, file), 'utf8'); + const buf = Buffer.from(src, 'utf8'); + script += `(epoch ${epoch++})\n(eval-blob)\n(blob ${buf.length})\n`; + script += src + '\n'; +} + +// Compile each module +const compileEpochs = {}; +for (const file of FILES) { + const src = fs.readFileSync(path.join(sxDir, file), 'utf8'); + const buf = Buffer.from(src, 'utf8'); + const ep = epoch++; + compileEpochs[ep] = file; + script += `(epoch ${ep})\n(compile-blob)\n(blob ${buf.length})\n`; + script += src + '\n'; +} + +// Write script to temp file and pipe to server +const tmpFile = '/tmp/sx-compile-script.txt'; +fs.writeFileSync(tmpFile, script); + +console.log('Running native OCaml compiler (' + FILES.length + ' files)...'); +const t1 = Date.now(); + +const result = spawnSync(binPath, [], { + input: fs.readFileSync(tmpFile), + maxBuffer: 100 * 1024 * 1024, // 100MB + timeout: 300000, // 5 min + stdio: ['pipe', 'pipe', 'pipe'], +}); + +if (result.error) { + console.error('Server error:', result.error); + process.exit(1); +} + +const stderr = result.stderr.toString(); +process.stderr.write(stderr); + +// Use latin1 to preserve byte positions (UTF-8 multi-byte chars stay as-is in length) +const stdoutBuf = result.stdout; +const stdout = stdoutBuf.toString('latin1'); +const dt = Date.now() - t1; +console.log('Server finished in ' + Math.round(dt / 1000) + 's'); + +// --------------------------------------------------------------------------- +// Parse responses — extract compiled bytecode for each file +// --------------------------------------------------------------------------- + +// Parse responses — stdout is latin1 so byte positions match string positions let compiled = 0, skipped = 0; +let pos = 0; -for (const file of FILES) { - const srcPath = path.join(sxDir, file); - const src = fs.readFileSync(srcPath, 'utf8'); - const hash = crypto.createHash('sha256').update(src).digest('hex').slice(0, 16); +function nextLine() { + const nl = stdout.indexOf('\n', pos); + if (nl === -1) return null; + const line = stdout.slice(pos, nl); + pos = nl + 1; + return line; +} - try { - const code = K.eval('(compile-module (sx-parse ' + JSON.stringify(src) + '))'); +while (pos < stdout.length) { + const line = nextLine(); + if (line === null) break; + const trimmed = line.trim(); - if (typeof code === 'string' && code.startsWith('Error')) { - console.error(' SKIP', file, '—', code); - skipped++; - continue; + // ok-len EPOCH LEN — read LEN bytes as value + const lenMatch = trimmed.match(/^\(ok-len (\d+) (\d+)\)$/); + if (lenMatch) { + const ep = parseInt(lenMatch[1]); + const len = parseInt(lenMatch[2]); + // Read exactly len bytes — latin1 encoding preserves byte positions + const rawValue = stdout.slice(pos, pos + len); + // Re-encode to proper UTF-8 + const value = Buffer.from(rawValue, 'latin1').toString('utf8'); + pos += len; + // skip trailing newline + if (pos < stdout.length && stdout.charCodeAt(pos) === 10) pos++; + + const file = compileEpochs[ep]; + if (file) { + if (value === 'nil' || value.startsWith('(error')) { + console.error(' SKIP', file, '—', value.slice(0, 60)); + skipped++; + } else { + const hash = crypto.createHash('sha256') + .update(fs.readFileSync(path.join(sxDir, file), 'utf8')) + .digest('hex').slice(0, 16); + + const sxbc = '(sxbc 1 "' + hash + '"\n (code\n ' + + value.replace(/^\{/, '').replace(/\}$/, '').trim() + '))\n'; + + const outPath = path.join(sxDir, file.replace(/\.sx$/, '.sxbc')); + fs.writeFileSync(outPath, sxbc); + + const size = fs.statSync(outPath).size; + console.log(' ok', file, '→', Math.round(size / 1024) + 'K'); + compiled++; + } } + continue; + } - const sx = serializeModuleToSx(code, hash); - - // Write .sxbc (s-expression format) - const outPath = srcPath.replace(/\.sx$/, '.sxbc'); - fs.writeFileSync(outPath, sx); - - // Also write .sxbc.json for backwards compatibility during transition - const json = { - magic: 'SXBC', - version: 1, - hash: hash, - module: serializeModuleToJson(code), - }; - const jsonPath = srcPath.replace(/\.sx$/, '.sxbc.json'); - fs.writeFileSync(jsonPath, JSON.stringify(json)); - - const size = fs.statSync(outPath).size; - console.log(' ok', file, '→', Math.round(size / 1024) + 'K'); - compiled++; - } catch (e) { - console.error(' SKIP', file, '—', e.message || e); - skipped++; + // Simple ok or error — skip + if (trimmed.match(/^\(ok \d+/) || trimmed.match(/^\(error \d+/)) { + if (trimmed.match(/^\(error/)) { + const epMatch = trimmed.match(/^\(error (\d+)/); + if (epMatch) { + const ep = parseInt(epMatch[1]); + const file = compileEpochs[ep]; + if (file) { + console.error(' SKIP', file, '—', trimmed.slice(0, 80)); + skipped++; + } + } + } + continue; } } -console.log('Done:', compiled, 'compiled,', skipped, 'skipped'); - -// --- S-expression serialization --- - -function serializeModuleToSx(code, hash) { - return '(sxbc 1 "' + hash + '"\n ' + serializeCodeToSx(code, 2) + ')\n'; -} - -function serializeCodeToSx(code, indent) { - const pad = ' '.repeat(indent); - const bc = extractList(code.bytecode); - const consts = extractList(code.constants); - const arity = code.arity || code['arity'] || 0; - const uvc = code['upvalue-count'] || 0; - - let parts = ['(code']; - if (arity) parts.push(' :arity ' + arity); - if (uvc) parts.push(' :upvalue-count ' + uvc); - parts.push('\n' + pad + ' :bytecode (' + bc.join(' ') + ')'); - parts.push('\n' + pad + ' :constants ('); - - const constStrs = consts.map(c => serializeConstToSx(c, indent + 4)); - if (constStrs.length > 0) { - parts.push('\n' + constStrs.map(s => pad + ' ' + s).join('\n')); - parts.push(')'); - } else { - parts[parts.length - 1] += ')'; +// Copy compiled files to shared/static/wasm/sx/ for web serving +const staticSxDir = path.resolve(__dirname, '..', '..', '..', 'shared', 'static', 'wasm', 'sx'); +if (fs.existsSync(staticSxDir)) { + let copied = 0; + for (const file of FILES) { + for (const ext of ['.sxbc', '.sxbc.json']) { + const src = path.join(sxDir, file.replace(/\.sx$/, ext)); + const dst = path.join(staticSxDir, file.replace(/\.sx$/, ext)); + if (fs.existsSync(src)) { + fs.copyFileSync(src, dst); + copied++; + } + } } - parts.push(')'); - return parts.join(''); + console.log('Copied', copied, 'files to', staticSxDir); } -function serializeConstToSx(c, indent) { - if (c === null || c === undefined) return 'nil'; - if (typeof c === 'number') return String(c); - if (typeof c === 'string') return '"' + c.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"'; - if (typeof c === 'boolean') return c ? 'true' : 'false'; - if (c._type === 'symbol') return "'" + c.name; - if (c._type === 'keyword') return ':' + c.name; - if (c._type === 'list') { - const items = extractList(c).map(x => serializeConstToSx(x, indent)); - return '(list ' + items.join(' ') + ')'; - } - // Code object (nested lambda bytecode) - if (c.bytecode) return serializeCodeToSx(c, indent); - if (c._type === 'dict') { - const bc = c.get ? c.get('bytecode') : c.bytecode; - if (bc) return serializeCodeToSx(c, indent); - // Regular dict — serialize as {:key val ...} - const entries = []; - if (c.forEach) c.forEach((v, k) => { entries.push(':' + k + ' ' + serializeConstToSx(v, indent)); }); - return '{' + entries.join(' ') + '}'; - } - return 'nil'; -} +const total = Date.now() - t0; +console.log('Done:', compiled, 'compiled,', skipped, 'skipped in', Math.round(total / 1000) + 's'); -// --- JSON serialization (backwards compat) --- - -function serializeModuleToJson(code) { - const result = { - bytecode: extractList(code.bytecode), - constants: extractList(code.constants).map(serializeConstantJson), - }; - const arity = code.arity || code['arity']; - const uvc = code['upvalue-count']; - const locals = code.locals || code['locals']; - if (arity) result.arity = typeof arity === 'number' ? arity : 0; - if (uvc) result['upvalue-count'] = typeof uvc === 'number' ? uvc : 0; - if (locals) result.locals = typeof locals === 'number' ? locals : 0; - return result; -} - -function serializeConstantJson(c) { - if (c === null || c === undefined) return { t: 'nil' }; - if (typeof c === 'number') return { t: 'n', v: c }; - if (typeof c === 'string') return { t: 's', v: c }; - if (typeof c === 'boolean') return { t: 'b', v: c }; - if (c._type === 'symbol') return { t: 'sym', v: c.name }; - if (c._type === 'keyword') return { t: 'kw', v: c.name }; - if (c._type === 'list') return { t: 'list', v: extractList(c).map(serializeConstantJson) }; - if (c.bytecode) return { t: 'code', v: serializeModuleToJson(c) }; - if (c._type === 'dict') { - const bc = c.get ? c.get('bytecode') : c.bytecode; - if (bc) return { t: 'code', v: serializeModuleToJson(c) }; - const entries = {}; - if (c.forEach) c.forEach((v, k) => { entries[k] = serializeConstantJson(v); }); - return { t: 'dict', v: entries }; - } - return { t: 'nil' }; -} - -function extractList(v) { - if (!v) return []; - if (Array.isArray(v)) return v; - if (v._type === 'list' && v.items) return v.items; - if (v.items) return v.items; - return []; -} +fs.unlinkSync(tmpFile); diff --git a/shared/static/wasm/sx/boot.sxbc b/shared/static/wasm/sx/boot.sxbc new file mode 100644 index 00000000..539fc868 --- /dev/null +++ b/shared/static/wasm/sx/boot.sxbc @@ -0,0 +1,3 @@ +(sxbc 1 "8dd29bf7bc354b48" + (code + :constants ("HEAD_HOIST_SELECTOR" "meta, title, link[rel='canonical'], script[type='application/ld+json']" "hoist-head-elements-full" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "HEAD_HOIST_SELECTOR" "for-each" {:upvalue-count 0 :arity 1 :constants ("lower" "dom-tag-name" "=" "title" "set-document-title" "dom-text-content" "dom-remove-child" "dom-parent" "meta" "dom-get-attr" "name" "property" "remove-head-element" "str" "meta[name=\"" "\"]" "meta[property=\"" "dom-append-to-head" "link" "rel" "canonical" "link[rel=\"canonical\"]") :bytecode (20 1 0 16 0 48 1 52 0 0 1 17 1 16 1 1 3 0 52 2 0 2 33 30 0 20 4 0 20 5 0 16 0 48 1 48 1 5 20 6 0 20 7 0 16 0 48 1 16 0 49 2 32 205 0 16 1 1 8 0 52 2 0 2 33 103 0 20 9 0 16 0 1 10 0 48 2 17 2 20 9 0 16 0 1 11 0 48 2 17 3 16 2 33 20 0 20 12 0 1 14 0 16 2 1 15 0 52 13 0 3 48 1 32 1 0 2 5 16 3 33 20 0 20 12 0 1 16 0 16 3 1 15 0 52 13 0 3 48 1 32 1 0 2 5 20 6 0 20 7 0 16 0 48 1 16 0 48 2 5 20 17 0 16 0 49 1 32 90 0 16 1 1 18 0 52 2 0 2 6 33 18 0 5 20 9 0 16 0 1 19 0 48 2 1 20 0 52 2 0 2 33 34 0 20 12 0 1 21 0 48 1 5 20 6 0 20 7 0 16 0 48 1 16 0 48 2 5 20 17 0 16 0 49 1 32 22 0 20 6 0 20 7 0 16 0 48 1 16 0 48 2 5 20 17 0 16 0 49 1 50)}) :bytecode (20 0 0 16 0 20 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 50)} "sx-mount" {:upvalue-count 0 :arity 3 :constants ("resolve-mount-target" "empty?" "dom-child-list" "sx-render-with-env" "dom-set-text-content" "" "dom-append" "hoist-head-elements-full" "process-elements" "sx-hydrate-elements" "sx-hydrate-islands" "run-post-render-hooks") :bytecode (20 0 0 16 0 48 1 17 3 16 3 33 90 0 20 2 0 16 3 48 1 52 1 0 1 33 42 0 20 3 0 16 1 16 2 48 2 17 4 20 4 0 16 3 1 5 0 48 2 5 20 6 0 16 3 16 4 48 2 5 20 7 0 16 3 48 1 32 1 0 2 5 20 8 0 16 3 48 1 5 20 9 0 16 3 48 1 5 20 10 0 16 3 48 1 5 20 11 0 49 0 32 1 0 2 50)} "resolve-suspense" {:upvalue-count 0 :arity 2 :constants ("process-sx-scripts" "dom-query" "str" "[data-suspense=\"" "\"]" "parse" "get-render-env" "dom-set-text-content" "" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-append" "render-to-dom") :bytecode (20 0 0 18 0 20 1 0 16 0 18 1 2 48 3 49 2 50)} "process-elements" "sx-hydrate-elements" "sx-hydrate-islands" "run-post-render-hooks" "dom-dispatch" "sx:resolved" "id" "log-warn" "resolveSuspense: no element for id=") :bytecode (20 0 0 2 48 1 5 20 1 0 1 3 0 16 0 1 4 0 52 2 0 3 48 1 17 2 16 2 33 93 0 20 5 0 16 1 48 1 17 3 20 6 0 2 48 1 17 4 20 7 0 16 2 1 8 0 48 2 5 51 10 0 1 2 1 4 16 3 52 9 0 2 5 20 11 0 16 2 48 1 5 20 12 0 16 2 48 1 5 20 13 0 16 2 48 1 5 20 14 0 48 0 5 20 15 0 16 2 1 16 0 1 17 0 16 0 65 1 0 49 3 32 14 0 20 18 0 1 19 0 16 0 52 2 0 2 49 1 50)} "sx-hydrate-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "[data-sx]" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "hydrated" "mark-processed!" "sx-update-element") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 22 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 2 49 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)} "sx-update-element" {:upvalue-count 0 :arity 2 :constants ("resolve-mount-target" "dom-get-attr" "data-sx" "parse-env-attr" "merge-envs" "sx-render-with-env" "dom-set-text-content" "" "dom-append" "store-env-attr") :bytecode (20 0 0 16 0 48 1 17 2 16 2 33 96 0 20 1 0 16 2 1 2 0 48 2 17 3 16 3 33 75 0 20 3 0 16 2 48 1 17 4 20 4 0 16 4 16 1 48 2 17 5 20 5 0 16 3 16 5 48 2 17 6 20 6 0 16 2 1 7 0 48 2 5 20 8 0 16 2 16 6 48 2 5 16 1 33 14 0 20 9 0 16 2 16 4 16 1 49 3 32 1 0 2 32 1 0 2 32 1 0 2 50)} "sx-render-component" {:upvalue-count 0 :arity 3 :constants ("starts-with?" "~" "str" "get-render-env" "env-get" "not" "component?" "error" "Unknown component: " "list" "make-symbol" "for-each" {:upvalue-count 2 :arity 1 :constants ("append!" "make-keyword" "to-kebab" "dict-get") :bytecode (20 0 0 18 0 20 1 0 20 2 0 16 0 48 1 48 1 48 2 5 20 0 0 18 0 18 1 16 0 52 3 0 2 49 2 50)} "keys" "render-to-dom") :bytecode (16 0 1 1 0 52 0 0 2 33 5 0 16 0 32 9 0 1 1 0 16 0 52 2 0 2 17 3 20 3 0 16 2 48 1 17 4 20 4 0 16 4 16 3 48 2 17 5 16 5 52 6 0 1 52 5 0 1 33 16 0 1 8 0 16 3 52 2 0 2 52 7 0 1 32 40 0 16 3 52 10 0 1 52 9 0 1 17 6 51 12 0 1 6 1 1 16 1 52 13 0 1 52 11 0 2 5 20 14 0 16 6 16 4 2 49 3 50)} "process-sx-scripts" {:upvalue-count 0 :arity 1 :constants ("query-sx-scripts" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "script" "mark-processed!" "dom-text-content" "dom-has-attr?" "data-components" "process-component-script" "nil?" "empty?" "trim" "data-init" "sx-parse" "for-each" {:upvalue-count 0 :arity 1 :constants ("cek-eval") :bytecode (20 0 0 16 0 49 1 50)} "data-mount" "dom-get-attr" "dom-query" "sx-mount" "sx-load-components") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 173 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 48 1 17 1 20 5 0 16 0 1 6 0 48 2 33 12 0 20 7 0 16 0 16 1 49 2 32 125 0 16 1 52 8 0 1 6 34 11 0 5 16 1 52 10 0 1 52 9 0 1 33 4 0 2 32 97 0 20 5 0 16 0 1 11 0 48 2 33 21 0 20 12 0 16 1 48 1 17 2 51 14 0 16 2 52 13 0 2 32 63 0 20 5 0 16 0 1 15 0 48 2 33 43 0 20 16 0 16 0 1 15 0 48 2 17 2 20 17 0 16 2 48 1 17 3 16 3 33 13 0 20 18 0 16 3 16 1 2 49 3 32 1 0 2 32 7 0 20 19 0 16 1 49 1 32 1 0 2 50)}) :bytecode (20 0 0 16 0 48 1 17 1 51 2 0 16 1 52 1 0 2 50)} "process-component-script" {:upvalue-count 0 :arity 2 :constants ("dom-get-attr" "data-hash" "nil?" "not" "empty?" "trim" "sx-load-components" "local-storage-get" "sx-components-hash" "=" "local-storage-set" "sx-components-src" "log-info" "components: downloaded (cookie stale)" "str" "components: cached (" ")" "clear-sx-comp-cookie" "browser-reload" "components: downloaded (" "local-storage-remove" "set-sx-comp-cookie") :bytecode (20 0 0 16 0 1 1 0 48 2 17 2 16 2 52 2 0 1 33 38 0 16 1 6 33 15 0 5 16 1 52 5 0 1 52 4 0 1 52 3 0 1 33 10 0 20 6 0 16 1 49 1 32 1 0 2 32 239 0 16 1 6 33 15 0 5 16 1 52 5 0 1 52 4 0 1 52 3 0 1 17 3 20 7 0 1 8 0 48 1 17 4 16 4 16 2 52 9 0 2 33 103 0 16 3 33 41 0 20 10 0 1 8 0 16 2 48 2 5 20 10 0 1 11 0 16 1 48 2 5 20 6 0 16 1 48 1 5 20 12 0 1 13 0 48 1 32 54 0 20 7 0 1 11 0 48 1 17 5 16 5 33 28 0 20 6 0 16 5 48 1 5 20 12 0 1 15 0 16 2 1 16 0 52 14 0 3 48 1 32 11 0 20 17 0 48 0 5 20 18 0 48 0 32 84 0 16 3 33 50 0 20 10 0 1 8 0 16 2 48 2 5 20 10 0 1 11 0 16 1 48 2 5 20 6 0 16 1 48 1 5 20 12 0 1 19 0 16 2 1 16 0 52 14 0 3 48 1 32 29 0 20 20 0 1 8 0 48 1 5 20 20 0 1 11 0 48 1 5 20 17 0 48 0 5 20 18 0 48 0 5 20 21 0 16 2 49 1 50)} "_page-routes" "list" "process-page-scripts" {:upvalue-count 0 :arity 0 :constants ("query-page-scripts" "log-info" "str" "pages: found " "len" " script tags" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "pages" "mark-processed!" "dom-text-content" "log-info" "str" "pages: script text length=" "len" 0 "empty?" "trim" "parse" "pages: parsed " " entries" "for-each" {:upvalue-count 0 :arity 1 :constants ("append!" "_page-routes" "merge" "parsed" "parse-route-pattern" "get" "path") :bytecode (20 0 0 20 1 0 16 0 1 3 0 20 4 0 16 0 1 6 0 52 5 0 2 48 1 65 1 0 52 2 0 2 49 2 50)} "log-warn" "pages: script tag is empty") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 128 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 48 1 17 1 20 5 0 1 7 0 16 1 33 9 0 16 1 52 8 0 1 32 3 0 1 9 0 52 6 0 2 48 1 5 16 1 6 33 15 0 5 16 1 52 11 0 1 52 10 0 1 52 0 0 1 33 43 0 20 12 0 16 1 48 1 17 2 20 5 0 1 13 0 16 2 52 8 0 1 1 14 0 52 6 0 3 48 1 5 51 16 0 16 2 52 15 0 2 32 8 0 20 17 0 1 18 0 49 1 32 1 0 2 50)} "pages: " "_page-routes" " routes loaded") :bytecode (20 0 0 48 0 17 0 20 1 0 1 3 0 16 0 52 4 0 1 1 5 0 52 2 0 3 48 1 5 51 7 0 16 0 52 6 0 2 5 20 1 0 1 8 0 20 9 0 52 4 0 1 1 10 0 52 2 0 3 49 1 50)} "sx-hydrate-islands" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "[data-sx-island]" "log-info" "str" "sx-hydrate-islands: " "len" " island(s) in " "subtree" "document" "for-each" {:upvalue-count 0 :arity 1 :constants ("is-processed?" "island-hydrated" "log-info" "str" " skip (already hydrated): " "dom-get-attr" "data-sx-island" " hydrating: " "mark-processed!" "hydrate-island") :bytecode (20 0 0 16 0 1 1 0 48 2 33 25 0 20 2 0 1 4 0 20 5 0 16 0 1 6 0 48 2 52 3 0 2 49 1 32 41 0 20 2 0 1 7 0 20 5 0 16 0 1 6 0 48 2 52 3 0 2 48 1 5 20 8 0 16 0 1 1 0 48 2 5 20 9 0 16 0 49 1 50)}) :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 20 3 0 1 5 0 16 1 52 6 0 1 1 7 0 16 0 33 6 0 1 8 0 32 3 0 1 9 0 52 4 0 4 48 1 5 51 11 0 16 1 52 10 0 2 50)} "hydrate-island" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "data-sx-island" "data-sx-state" "{}" "str" "~" "get-render-env" "env-get" "not" "component?" "island?" "log-warn" "hydrate-island: unknown island " "first" "sx-parse" "list" "env-merge" "component-closure" "for-each" {:upvalue-count 2 :arity 1 :constants ("env-bind!" "dict-has?" "dict-get") :bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 33 11 0 18 1 16 0 52 2 0 2 32 1 0 2 49 3 50)} "component-params" "cek-try" {:upvalue-count 3 :arity 0 :constants ("with-island-scope" {:upvalue-count 1 :arity 1 :constants ("append!") :bytecode (20 0 0 18 0 16 0 49 2 50)} {:upvalue-count 2 :arity 0 :constants ("render-to-dom" "component-body") :bytecode (20 0 0 18 0 52 1 0 1 18 1 2 49 3 50)}) :bytecode (20 0 0 51 1 0 0 0 51 2 0 0 1 0 2 49 2 50)} {:upvalue-count 1 :arity 1 :constants ("log-warn" "str" "hydrate-island FAILED: " " — " "dom-create-element" "div" "dom-set-attr" "class" "sx-island-error" "style" "padding:8px;margin:4px 0;border:1px solid #ef4444;border-radius:4px;background:#fef2f2;color:#b91c1c;font-family:monospace;font-size:12px;white-space:pre-wrap" "dom-set-text-content" "Island error: " "\n") :bytecode (20 0 0 1 2 0 18 0 1 3 0 16 0 52 1 0 4 48 1 5 20 4 0 1 5 0 2 48 2 17 1 20 6 0 16 1 1 7 0 1 8 0 48 3 5 20 6 0 16 1 1 9 0 1 10 0 48 3 5 20 11 0 16 1 1 12 0 18 0 1 13 0 16 0 52 1 0 4 48 2 5 16 1 50)} "dom-set-text-content" "" "dom-append" "dom-set-data" "sx-disposers" "process-elements" "log-info" "hydrated island: " " (" "len" " disposers)") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 0 0 16 0 1 2 0 48 2 6 34 4 0 5 1 3 0 17 2 1 5 0 16 1 52 4 0 2 17 3 20 6 0 2 48 1 17 4 20 7 0 16 4 16 3 48 2 17 5 16 5 52 9 0 1 6 34 7 0 5 16 5 52 10 0 1 52 8 0 1 33 17 0 20 11 0 1 12 0 16 3 52 4 0 2 49 1 32 149 0 20 14 0 16 2 48 1 52 13 0 1 6 34 4 0 5 65 0 0 17 6 52 15 0 0 17 7 20 16 0 16 5 52 17 0 1 16 4 48 2 17 8 51 19 0 1 8 1 6 16 5 52 20 0 1 52 18 0 2 5 20 21 0 51 22 0 1 7 1 5 1 8 51 23 0 1 3 48 2 17 9 20 24 0 16 0 1 25 0 48 2 5 20 26 0 16 0 16 9 48 2 5 20 27 0 16 0 1 28 0 16 7 48 3 5 20 29 0 16 0 48 1 5 20 30 0 1 31 0 16 3 1 32 0 16 7 52 33 0 1 1 34 0 52 4 0 5 49 1 50)} "dispose-island" {:upvalue-count 0 :arity 1 :constants ("dom-get-data" "sx-disposers" "for-each" {:upvalue-count 0 :arity 1 :constants ("callable?") :bytecode (20 0 0 16 0 48 1 33 7 0 16 0 49 0 32 1 0 2 50)} "dom-set-data" "clear-processed!" "island-hydrated") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 24 0 51 3 0 16 1 52 2 0 2 5 20 4 0 16 0 1 1 0 2 48 3 32 1 0 2 5 20 5 0 16 0 1 6 0 49 2 50)} "dispose-islands-in" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "[data-sx-island]" "not" "empty?" "filter" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "island-hydrated") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 50)} "log-info" "str" "disposing " "len" " island(s)" "for-each" "dispose-island") :bytecode (16 0 33 98 0 20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 62 0 51 5 0 16 1 52 4 0 2 17 2 16 2 52 3 0 1 52 2 0 1 33 34 0 20 6 0 1 8 0 16 2 52 9 0 1 1 10 0 52 7 0 3 48 1 5 20 12 0 16 2 52 11 0 2 32 1 0 2 32 1 0 2 32 1 0 2 50)} "force-dispose-islands-in" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "[data-sx-island]" "not" "empty?" "log-info" "str" "force-disposing " "len" " island(s)" "for-each" "dispose-island") :bytecode (16 0 33 70 0 20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 34 0 20 4 0 1 6 0 16 1 52 7 0 1 1 8 0 52 5 0 3 48 1 5 20 10 0 16 1 52 9 0 2 32 1 0 2 32 1 0 2 50)} "*pre-render-hooks*" "*post-render-hooks*" "register-pre-render-hook" {:upvalue-count 0 :arity 1 :constants ("append!" "*pre-render-hooks*") :bytecode (20 0 0 20 1 0 16 0 49 2 50)} "register-post-render-hook" {:upvalue-count 0 :arity 1 :constants ("append!" "*post-render-hooks*") :bytecode (20 0 0 20 1 0 16 0 49 2 50)} "run-pre-render-hooks" {:upvalue-count 0 :arity 0 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("cek-call") :bytecode (20 0 0 16 0 2 49 2 50)} "*pre-render-hooks*") :bytecode (51 1 0 20 2 0 52 0 0 2 50)} "run-post-render-hooks" {:upvalue-count 0 :arity 0 :constants ("log-info" "str" "run-post-render-hooks: " "len" "*post-render-hooks*" " hooks" "for-each" {:upvalue-count 0 :arity 1 :constants ("log-info" "str" " hook type: " "type-of" " callable: " "callable?" " lambda: " "lambda?" "cek-call") :bytecode (20 0 0 1 2 0 16 0 52 3 0 1 1 4 0 20 5 0 16 0 48 1 1 6 0 16 0 52 7 0 1 52 1 0 6 48 1 5 20 8 0 16 0 2 49 2 50)}) :bytecode (20 0 0 1 2 0 20 4 0 52 3 0 1 1 5 0 52 1 0 3 48 1 5 51 7 0 20 4 0 52 6 0 2 50)} "boot-init" {:upvalue-count 0 :arity 0 :constants ("log-info" "str" "sx-browser " "SX_VERSION" "init-css-tracking" "process-page-scripts" "process-sx-scripts" "sx-hydrate-elements" "sx-hydrate-islands" "run-post-render-hooks" "process-elements" "dom-listen" "dom-window" "popstate" {:upvalue-count 0 :arity 1 :constants ("handle-popstate" 0) :bytecode (20 0 0 1 1 0 49 1 50)}) :bytecode (20 0 0 1 2 0 20 3 0 52 1 0 2 48 1 5 20 4 0 48 0 5 20 5 0 48 0 5 20 6 0 2 48 1 5 20 7 0 2 48 1 5 20 8 0 2 48 1 5 20 9 0 48 0 5 20 10 0 2 48 1 5 20 11 0 20 12 0 48 0 1 13 0 51 14 0 49 3 50)}) :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 52 19 0 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 52 19 0 0 128 32 0 5 52 19 0 0 128 33 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 50))) diff --git a/shared/static/wasm/sx/boot.sxbc.json b/shared/static/wasm/sx/boot.sxbc.json new file mode 100644 index 00000000..83f4805a --- /dev/null +++ b/shared/static/wasm/sx/boot.sxbc.json @@ -0,0 +1 @@ +{"magic":"SXBC","version":1,"hash":"8dd29bf7bc354b48","module":{"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,52,19,0,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,52,19,0,0,128,32,0,5,52,19,0,0,128,33,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,50],"constants":[{"t":"s","v":"HEAD_HOIST_SELECTOR"},{"t":"s","v":"meta, title, link[rel='canonical'], script[type='application/ld+json']"},{"t":"s","v":"hoist-head-elements-full"},{"t":"code","v":{"bytecode":[20,0,0,16,0,20,1,0,48,2,17,1,51,3,0,16,1,52,2,0,2,50],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"HEAD_HOIST_SELECTOR"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,48,1,52,0,0,1,17,1,16,1,1,3,0,52,2,0,2,33,30,0,20,4,0,20,5,0,16,0,48,1,48,1,5,20,6,0,20,7,0,16,0,48,1,16,0,49,2,32,205,0,16,1,1,8,0,52,2,0,2,33,103,0,20,9,0,16,0,1,10,0,48,2,17,2,20,9,0,16,0,1,11,0,48,2,17,3,16,2,33,20,0,20,12,0,1,14,0,16,2,1,15,0,52,13,0,3,48,1,32,1,0,2,5,16,3,33,20,0,20,12,0,1,16,0,16,3,1,15,0,52,13,0,3,48,1,32,1,0,2,5,20,6,0,20,7,0,16,0,48,1,16,0,48,2,5,20,17,0,16,0,49,1,32,90,0,16,1,1,18,0,52,2,0,2,6,33,18,0,5,20,9,0,16,0,1,19,0,48,2,1,20,0,52,2,0,2,33,34,0,20,12,0,1,21,0,48,1,5,20,6,0,20,7,0,16,0,48,1,16,0,48,2,5,20,17,0,16,0,49,1,32,22,0,20,6,0,20,7,0,16,0,48,1,16,0,48,2,5,20,17,0,16,0,49,1,50],"constants":[{"t":"s","v":"lower"},{"t":"s","v":"dom-tag-name"},{"t":"s","v":"="},{"t":"s","v":"title"},{"t":"s","v":"set-document-title"},{"t":"s","v":"dom-text-content"},{"t":"s","v":"dom-remove-child"},{"t":"s","v":"dom-parent"},{"t":"s","v":"meta"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"name"},{"t":"s","v":"property"},{"t":"s","v":"remove-head-element"},{"t":"s","v":"str"},{"t":"s","v":"meta[name=\""},{"t":"s","v":"\"]"},{"t":"s","v":"meta[property=\""},{"t":"s","v":"dom-append-to-head"},{"t":"s","v":"link"},{"t":"s","v":"rel"},{"t":"s","v":"canonical"},{"t":"s","v":"link[rel=\"canonical\"]"}],"arity":1}}],"arity":1}},{"t":"s","v":"sx-mount"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,3,16,3,33,90,0,20,2,0,16,3,48,1,52,1,0,1,33,42,0,20,3,0,16,1,16,2,48,2,17,4,20,4,0,16,3,1,5,0,48,2,5,20,6,0,16,3,16,4,48,2,5,20,7,0,16,3,48,1,32,1,0,2,5,20,8,0,16,3,48,1,5,20,9,0,16,3,48,1,5,20,10,0,16,3,48,1,5,20,11,0,49,0,32,1,0,2,50],"constants":[{"t":"s","v":"resolve-mount-target"},{"t":"s","v":"empty?"},{"t":"s","v":"dom-child-list"},{"t":"s","v":"sx-render-with-env"},{"t":"s","v":"dom-set-text-content"},{"t":"s","v":""},{"t":"s","v":"dom-append"},{"t":"s","v":"hoist-head-elements-full"},{"t":"s","v":"process-elements"},{"t":"s","v":"sx-hydrate-elements"},{"t":"s","v":"sx-hydrate-islands"},{"t":"s","v":"run-post-render-hooks"}],"arity":3}},{"t":"s","v":"resolve-suspense"},{"t":"code","v":{"bytecode":[20,0,0,2,48,1,5,20,1,0,1,3,0,16,0,1,4,0,52,2,0,3,48,1,17,2,16,2,33,93,0,20,5,0,16,1,48,1,17,3,20,6,0,2,48,1,17,4,20,7,0,16,2,1,8,0,48,2,5,51,10,0,1,2,1,4,16,3,52,9,0,2,5,20,11,0,16,2,48,1,5,20,12,0,16,2,48,1,5,20,13,0,16,2,48,1,5,20,14,0,48,0,5,20,15,0,16,2,1,16,0,1,17,0,16,0,65,1,0,49,3,32,14,0,20,18,0,1,19,0,16,0,52,2,0,2,49,1,50],"constants":[{"t":"s","v":"process-sx-scripts"},{"t":"s","v":"dom-query"},{"t":"s","v":"str"},{"t":"s","v":"[data-suspense=\""},{"t":"s","v":"\"]"},{"t":"s","v":"parse"},{"t":"s","v":"get-render-env"},{"t":"s","v":"dom-set-text-content"},{"t":"s","v":""},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,20,1,0,16,0,18,1,2,48,3,49,2,50],"constants":[{"t":"s","v":"dom-append"},{"t":"s","v":"render-to-dom"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"process-elements"},{"t":"s","v":"sx-hydrate-elements"},{"t":"s","v":"sx-hydrate-islands"},{"t":"s","v":"run-post-render-hooks"},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"sx:resolved"},{"t":"s","v":"id"},{"t":"s","v":"log-warn"},{"t":"s","v":"resolveSuspense: no element for id="}],"arity":2}},{"t":"s","v":"sx-hydrate-elements"},{"t":"code","v":{"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],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"[data-sx]"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,33,22,0,20,3,0,16,0,1,2,0,48,2,5,20,4,0,16,0,2,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"hydrated"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"sx-update-element"}],"arity":1}}],"arity":1}},{"t":"s","v":"sx-update-element"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,2,16,2,33,96,0,20,1,0,16,2,1,2,0,48,2,17,3,16,3,33,75,0,20,3,0,16,2,48,1,17,4,20,4,0,16,4,16,1,48,2,17,5,20,5,0,16,3,16,5,48,2,17,6,20,6,0,16,2,1,7,0,48,2,5,20,8,0,16,2,16,6,48,2,5,16,1,33,14,0,20,9,0,16,2,16,4,16,1,49,3,32,1,0,2,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"resolve-mount-target"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"data-sx"},{"t":"s","v":"parse-env-attr"},{"t":"s","v":"merge-envs"},{"t":"s","v":"sx-render-with-env"},{"t":"s","v":"dom-set-text-content"},{"t":"s","v":""},{"t":"s","v":"dom-append"},{"t":"s","v":"store-env-attr"}],"arity":2}},{"t":"s","v":"sx-render-component"},{"t":"code","v":{"bytecode":[16,0,1,1,0,52,0,0,2,33,5,0,16,0,32,9,0,1,1,0,16,0,52,2,0,2,17,3,20,3,0,16,2,48,1,17,4,20,4,0,16,4,16,3,48,2,17,5,16,5,52,6,0,1,52,5,0,1,33,16,0,1,8,0,16,3,52,2,0,2,52,7,0,1,32,40,0,16,3,52,10,0,1,52,9,0,1,17,6,51,12,0,1,6,1,1,16,1,52,13,0,1,52,11,0,2,5,20,14,0,16,6,16,4,2,49,3,50],"constants":[{"t":"s","v":"starts-with?"},{"t":"s","v":"~"},{"t":"s","v":"str"},{"t":"s","v":"get-render-env"},{"t":"s","v":"env-get"},{"t":"s","v":"not"},{"t":"s","v":"component?"},{"t":"s","v":"error"},{"t":"s","v":"Unknown component: "},{"t":"s","v":"list"},{"t":"s","v":"make-symbol"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,20,1,0,20,2,0,16,0,48,1,48,1,48,2,5,20,0,0,18,0,18,1,16,0,52,3,0,2,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"make-keyword"},{"t":"s","v":"to-kebab"},{"t":"s","v":"dict-get"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"keys"},{"t":"s","v":"render-to-dom"}],"arity":3}},{"t":"s","v":"process-sx-scripts"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,1,51,2,0,16,1,52,1,0,2,50],"constants":[{"t":"s","v":"query-sx-scripts"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,33,173,0,20,3,0,16,0,1,2,0,48,2,5,20,4,0,16,0,48,1,17,1,20,5,0,16,0,1,6,0,48,2,33,12,0,20,7,0,16,0,16,1,49,2,32,125,0,16,1,52,8,0,1,6,34,11,0,5,16,1,52,10,0,1,52,9,0,1,33,4,0,2,32,97,0,20,5,0,16,0,1,11,0,48,2,33,21,0,20,12,0,16,1,48,1,17,2,51,14,0,16,2,52,13,0,2,32,63,0,20,5,0,16,0,1,15,0,48,2,33,43,0,20,16,0,16,0,1,15,0,48,2,17,2,20,17,0,16,2,48,1,17,3,16,3,33,13,0,20,18,0,16,3,16,1,2,49,3,32,1,0,2,32,7,0,20,19,0,16,1,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"script"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"dom-text-content"},{"t":"s","v":"dom-has-attr?"},{"t":"s","v":"data-components"},{"t":"s","v":"process-component-script"},{"t":"s","v":"nil?"},{"t":"s","v":"empty?"},{"t":"s","v":"trim"},{"t":"s","v":"data-init"},{"t":"s","v":"sx-parse"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,49,1,50],"constants":[{"t":"s","v":"cek-eval"}],"arity":1}},{"t":"s","v":"data-mount"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"dom-query"},{"t":"s","v":"sx-mount"},{"t":"s","v":"sx-load-components"}],"arity":1}}],"arity":1}},{"t":"s","v":"process-component-script"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,2,16,2,52,2,0,1,33,38,0,16,1,6,33,15,0,5,16,1,52,5,0,1,52,4,0,1,52,3,0,1,33,10,0,20,6,0,16,1,49,1,32,1,0,2,32,239,0,16,1,6,33,15,0,5,16,1,52,5,0,1,52,4,0,1,52,3,0,1,17,3,20,7,0,1,8,0,48,1,17,4,16,4,16,2,52,9,0,2,33,103,0,16,3,33,41,0,20,10,0,1,8,0,16,2,48,2,5,20,10,0,1,11,0,16,1,48,2,5,20,6,0,16,1,48,1,5,20,12,0,1,13,0,48,1,32,54,0,20,7,0,1,11,0,48,1,17,5,16,5,33,28,0,20,6,0,16,5,48,1,5,20,12,0,1,15,0,16,2,1,16,0,52,14,0,3,48,1,32,11,0,20,17,0,48,0,5,20,18,0,48,0,32,84,0,16,3,33,50,0,20,10,0,1,8,0,16,2,48,2,5,20,10,0,1,11,0,16,1,48,2,5,20,6,0,16,1,48,1,5,20,12,0,1,19,0,16,2,1,16,0,52,14,0,3,48,1,32,29,0,20,20,0,1,8,0,48,1,5,20,20,0,1,11,0,48,1,5,20,17,0,48,0,5,20,18,0,48,0,5,20,21,0,16,2,49,1,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"data-hash"},{"t":"s","v":"nil?"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"trim"},{"t":"s","v":"sx-load-components"},{"t":"s","v":"local-storage-get"},{"t":"s","v":"sx-components-hash"},{"t":"s","v":"="},{"t":"s","v":"local-storage-set"},{"t":"s","v":"sx-components-src"},{"t":"s","v":"log-info"},{"t":"s","v":"components: downloaded (cookie stale)"},{"t":"s","v":"str"},{"t":"s","v":"components: cached ("},{"t":"s","v":")"},{"t":"s","v":"clear-sx-comp-cookie"},{"t":"s","v":"browser-reload"},{"t":"s","v":"components: downloaded ("},{"t":"s","v":"local-storage-remove"},{"t":"s","v":"set-sx-comp-cookie"}],"arity":2}},{"t":"s","v":"_page-routes"},{"t":"s","v":"list"},{"t":"s","v":"process-page-scripts"},{"t":"code","v":{"bytecode":[20,0,0,48,0,17,0,20,1,0,1,3,0,16,0,52,4,0,1,1,5,0,52,2,0,3,48,1,5,51,7,0,16,0,52,6,0,2,5,20,1,0,1,8,0,20,9,0,52,4,0,1,1,10,0,52,2,0,3,49,1,50],"constants":[{"t":"s","v":"query-page-scripts"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"pages: found "},{"t":"s","v":"len"},{"t":"s","v":" script tags"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,33,128,0,20,3,0,16,0,1,2,0,48,2,5,20,4,0,16,0,48,1,17,1,20,5,0,1,7,0,16,1,33,9,0,16,1,52,8,0,1,32,3,0,1,9,0,52,6,0,2,48,1,5,16,1,6,33,15,0,5,16,1,52,11,0,1,52,10,0,1,52,0,0,1,33,43,0,20,12,0,16,1,48,1,17,2,20,5,0,1,13,0,16,2,52,8,0,1,1,14,0,52,6,0,3,48,1,5,51,16,0,16,2,52,15,0,2,32,8,0,20,17,0,1,18,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"pages"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"dom-text-content"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"pages: script text length="},{"t":"s","v":"len"},{"t":"n","v":0},{"t":"s","v":"empty?"},{"t":"s","v":"trim"},{"t":"s","v":"parse"},{"t":"s","v":"pages: parsed "},{"t":"s","v":" entries"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,20,1,0,16,0,1,3,0,20,4,0,16,0,1,6,0,52,5,0,2,48,1,65,1,0,52,2,0,2,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"_page-routes"},{"t":"s","v":"merge"},{"t":"s","v":"parsed"},{"t":"s","v":"parse-route-pattern"},{"t":"s","v":"get"},{"t":"s","v":"path"}],"arity":1}},{"t":"s","v":"log-warn"},{"t":"s","v":"pages: script tag is empty"}],"arity":1}},{"t":"s","v":"pages: "},{"t":"s","v":"_page-routes"},{"t":"s","v":" routes loaded"}]}},{"t":"s","v":"sx-hydrate-islands"},{"t":"code","v":{"bytecode":[20,0,0,16,0,6,34,6,0,5,20,1,0,48,0,1,2,0,48,2,17,1,20,3,0,1,5,0,16,1,52,6,0,1,1,7,0,16,0,33,6,0,1,8,0,32,3,0,1,9,0,52,4,0,4,48,1,5,51,11,0,16,1,52,10,0,2,50],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"[data-sx-island]"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx-hydrate-islands: "},{"t":"s","v":"len"},{"t":"s","v":" island(s) in "},{"t":"s","v":"subtree"},{"t":"s","v":"document"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,33,25,0,20,2,0,1,4,0,20,5,0,16,0,1,6,0,48,2,52,3,0,2,49,1,32,41,0,20,2,0,1,7,0,20,5,0,16,0,1,6,0,48,2,52,3,0,2,48,1,5,20,8,0,16,0,1,1,0,48,2,5,20,9,0,16,0,49,1,50],"constants":[{"t":"s","v":"is-processed?"},{"t":"s","v":"island-hydrated"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":" skip (already hydrated): "},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"data-sx-island"},{"t":"s","v":" hydrating: "},{"t":"s","v":"mark-processed!"},{"t":"s","v":"hydrate-island"}],"arity":1}}],"arity":1}},{"t":"s","v":"hydrate-island"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,1,20,0,0,16,0,1,2,0,48,2,6,34,4,0,5,1,3,0,17,2,1,5,0,16,1,52,4,0,2,17,3,20,6,0,2,48,1,17,4,20,7,0,16,4,16,3,48,2,17,5,16,5,52,9,0,1,6,34,7,0,5,16,5,52,10,0,1,52,8,0,1,33,17,0,20,11,0,1,12,0,16,3,52,4,0,2,49,1,32,149,0,20,14,0,16,2,48,1,52,13,0,1,6,34,4,0,5,65,0,0,17,6,52,15,0,0,17,7,20,16,0,16,5,52,17,0,1,16,4,48,2,17,8,51,19,0,1,8,1,6,16,5,52,20,0,1,52,18,0,2,5,20,21,0,51,22,0,1,7,1,5,1,8,51,23,0,1,3,48,2,17,9,20,24,0,16,0,1,25,0,48,2,5,20,26,0,16,0,16,9,48,2,5,20,27,0,16,0,1,28,0,16,7,48,3,5,20,29,0,16,0,48,1,5,20,30,0,1,31,0,16,3,1,32,0,16,7,52,33,0,1,1,34,0,52,4,0,5,49,1,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"data-sx-island"},{"t":"s","v":"data-sx-state"},{"t":"s","v":"{}"},{"t":"s","v":"str"},{"t":"s","v":"~"},{"t":"s","v":"get-render-env"},{"t":"s","v":"env-get"},{"t":"s","v":"not"},{"t":"s","v":"component?"},{"t":"s","v":"island?"},{"t":"s","v":"log-warn"},{"t":"s","v":"hydrate-island: unknown island "},{"t":"s","v":"first"},{"t":"s","v":"sx-parse"},{"t":"s","v":"list"},{"t":"s","v":"env-merge"},{"t":"s","v":"component-closure"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,18,1,16,0,52,1,0,2,33,11,0,18,1,16,0,52,2,0,2,32,1,0,2,49,3,50],"constants":[{"t":"s","v":"env-bind!"},{"t":"s","v":"dict-has?"},{"t":"s","v":"dict-get"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"component-params"},{"t":"s","v":"cek-try"},{"t":"code","v":{"bytecode":[20,0,0,51,1,0,0,0,51,2,0,0,1,0,2,49,2,50],"constants":[{"t":"s","v":"with-island-scope"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,49,2,50],"constants":[{"t":"s","v":"append!"}],"arity":1,"upvalue-count":1}},{"t":"code","v":{"bytecode":[20,0,0,18,0,52,1,0,1,18,1,2,49,3,50],"constants":[{"t":"s","v":"render-to-dom"},{"t":"s","v":"component-body"}],"upvalue-count":2}}],"upvalue-count":3}},{"t":"code","v":{"bytecode":[20,0,0,1,2,0,18,0,1,3,0,16,0,52,1,0,4,48,1,5,20,4,0,1,5,0,2,48,2,17,1,20,6,0,16,1,1,7,0,1,8,0,48,3,5,20,6,0,16,1,1,9,0,1,10,0,48,3,5,20,11,0,16,1,1,12,0,18,0,1,13,0,16,0,52,1,0,4,48,2,5,16,1,50],"constants":[{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"hydrate-island FAILED: "},{"t":"s","v":" — "},{"t":"s","v":"dom-create-element"},{"t":"s","v":"div"},{"t":"s","v":"dom-set-attr"},{"t":"s","v":"class"},{"t":"s","v":"sx-island-error"},{"t":"s","v":"style"},{"t":"s","v":"padding:8px;margin:4px 0;border:1px solid #ef4444;border-radius:4px;background:#fef2f2;color:#b91c1c;font-family:monospace;font-size:12px;white-space:pre-wrap"},{"t":"s","v":"dom-set-text-content"},{"t":"s","v":"Island error: "},{"t":"s","v":"\n"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"dom-set-text-content"},{"t":"s","v":""},{"t":"s","v":"dom-append"},{"t":"s","v":"dom-set-data"},{"t":"s","v":"sx-disposers"},{"t":"s","v":"process-elements"},{"t":"s","v":"log-info"},{"t":"s","v":"hydrated island: "},{"t":"s","v":" ("},{"t":"s","v":"len"},{"t":"s","v":" disposers)"}],"arity":1}},{"t":"s","v":"dispose-island"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,1,16,1,33,24,0,51,3,0,16,1,52,2,0,2,5,20,4,0,16,0,1,1,0,2,48,3,32,1,0,2,5,20,5,0,16,0,1,6,0,49,2,50],"constants":[{"t":"s","v":"dom-get-data"},{"t":"s","v":"sx-disposers"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,33,7,0,16,0,49,0,32,1,0,2,50],"constants":[{"t":"s","v":"callable?"}],"arity":1}},{"t":"s","v":"dom-set-data"},{"t":"s","v":"clear-processed!"},{"t":"s","v":"island-hydrated"}],"arity":1}},{"t":"s","v":"dispose-islands-in"},{"t":"code","v":{"bytecode":[16,0,33,98,0,20,0,0,16,0,1,1,0,48,2,17,1,16,1,6,33,11,0,5,16,1,52,3,0,1,52,2,0,1,33,62,0,51,5,0,16,1,52,4,0,2,17,2,16,2,52,3,0,1,52,2,0,1,33,34,0,20,6,0,1,8,0,16,2,52,9,0,1,1,10,0,52,7,0,3,48,1,5,20,12,0,16,2,52,11,0,2,32,1,0,2,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"[data-sx-island]"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"filter"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"island-hydrated"}],"arity":1}},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"disposing "},{"t":"s","v":"len"},{"t":"s","v":" island(s)"},{"t":"s","v":"for-each"},{"t":"s","v":"dispose-island"}],"arity":1}},{"t":"s","v":"force-dispose-islands-in"},{"t":"code","v":{"bytecode":[16,0,33,70,0,20,0,0,16,0,1,1,0,48,2,17,1,16,1,6,33,11,0,5,16,1,52,3,0,1,52,2,0,1,33,34,0,20,4,0,1,6,0,16,1,52,7,0,1,1,8,0,52,5,0,3,48,1,5,20,10,0,16,1,52,9,0,2,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"[data-sx-island]"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"force-disposing "},{"t":"s","v":"len"},{"t":"s","v":" island(s)"},{"t":"s","v":"for-each"},{"t":"s","v":"dispose-island"}],"arity":1}},{"t":"s","v":"*pre-render-hooks*"},{"t":"s","v":"*post-render-hooks*"},{"t":"s","v":"register-pre-render-hook"},{"t":"code","v":{"bytecode":[20,0,0,20,1,0,16,0,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"*pre-render-hooks*"}],"arity":1}},{"t":"s","v":"register-post-render-hook"},{"t":"code","v":{"bytecode":[20,0,0,20,1,0,16,0,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"*post-render-hooks*"}],"arity":1}},{"t":"s","v":"run-pre-render-hooks"},{"t":"code","v":{"bytecode":[51,1,0,20,2,0,52,0,0,2,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,2,49,2,50],"constants":[{"t":"s","v":"cek-call"}],"arity":1}},{"t":"s","v":"*pre-render-hooks*"}]}},{"t":"s","v":"run-post-render-hooks"},{"t":"code","v":{"bytecode":[20,0,0,1,2,0,20,4,0,52,3,0,1,1,5,0,52,1,0,3,48,1,5,51,7,0,20,4,0,52,6,0,2,50],"constants":[{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"run-post-render-hooks: "},{"t":"s","v":"len"},{"t":"s","v":"*post-render-hooks*"},{"t":"s","v":" hooks"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,1,2,0,16,0,52,3,0,1,1,4,0,20,5,0,16,0,48,1,1,6,0,16,0,52,7,0,1,52,1,0,6,48,1,5,20,8,0,16,0,2,49,2,50],"constants":[{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":" hook type: "},{"t":"s","v":"type-of"},{"t":"s","v":" callable: "},{"t":"s","v":"callable?"},{"t":"s","v":" lambda: "},{"t":"s","v":"lambda?"},{"t":"s","v":"cek-call"}],"arity":1}}]}},{"t":"s","v":"boot-init"},{"t":"code","v":{"bytecode":[20,0,0,1,2,0,20,3,0,52,1,0,2,48,1,5,20,4,0,48,0,5,20,5,0,48,0,5,20,6,0,2,48,1,5,20,7,0,2,48,1,5,20,8,0,2,48,1,5,20,9,0,48,0,5,20,10,0,2,48,1,5,20,11,0,20,12,0,48,0,1,13,0,51,14,0,49,3,50],"constants":[{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx-browser "},{"t":"s","v":"SX_VERSION"},{"t":"s","v":"init-css-tracking"},{"t":"s","v":"process-page-scripts"},{"t":"s","v":"process-sx-scripts"},{"t":"s","v":"sx-hydrate-elements"},{"t":"s","v":"sx-hydrate-islands"},{"t":"s","v":"run-post-render-hooks"},{"t":"s","v":"process-elements"},{"t":"s","v":"dom-listen"},{"t":"s","v":"dom-window"},{"t":"s","v":"popstate"},{"t":"code","v":{"bytecode":[20,0,0,1,1,0,49,1,50],"constants":[{"t":"s","v":"handle-popstate"},{"t":"n","v":0}],"arity":1}}]}}]}} \ No newline at end of file diff --git a/shared/static/wasm/sx/orchestration.sxbc b/shared/static/wasm/sx/orchestration.sxbc new file mode 100644 index 00000000..173578ab --- /dev/null +++ b/shared/static/wasm/sx/orchestration.sxbc @@ -0,0 +1,3 @@ +(sxbc 1 "ed713f35bbdf3500" + (code + :constants ("_preload-cache" "dict" "_css-hash" "" "dispatch-trigger-events" {:upvalue-count 0 :arity 2 :constants ("try-parse-json" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-dispatch" "get") :bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 49 3 50)} "keys" {:upvalue-count 1 :arity 1 :constants ("trim" "not" "empty?" "dom-dispatch" "dict") :bytecode (16 0 52 0 0 1 17 1 16 1 52 2 0 1 52 1 0 1 33 16 0 20 3 0 18 0 16 1 52 4 0 0 49 3 32 1 0 2 50)} "split" ",") :bytecode (16 1 33 55 0 20 0 0 16 1 48 1 17 2 16 2 33 20 0 51 2 0 1 0 1 2 16 2 52 3 0 1 52 1 0 2 32 18 0 51 4 0 1 0 16 1 1 6 0 52 5 0 2 52 1 0 2 32 1 0 2 50)} "init-css-tracking" {:upvalue-count 0 :arity 0 :constants ("dom-query" "meta[name=\"sx-css-classes\"]" "dom-get-attr" "content" "_css-hash") :bytecode (20 0 0 1 1 0 48 1 17 0 16 0 33 29 0 20 2 0 16 0 1 3 0 48 2 17 1 16 1 33 8 0 16 1 21 4 0 32 1 0 2 32 1 0 2 50)} "execute-request" {:upvalue-count 0 :arity 3 :constants ("get-verb-info" "nil?" "promise-resolve" "get" "method" "url" "dom-get-attr" "sx-media" "not" "browser-media-matches?" "sx-confirm" "browser-confirm" "sx-prompt" "browser-prompt" "validate-for-request" "do-fetch" "assoc" "dict" "SX-Prompt") :bytecode (20 0 0 16 0 48 1 6 34 3 0 5 16 1 17 3 16 3 52 1 0 1 33 9 0 20 2 0 2 49 1 32 249 0 16 3 1 4 0 52 3 0 2 17 4 16 3 1 5 0 52 3 0 2 17 5 20 6 0 16 0 1 7 0 48 2 17 6 16 6 6 33 12 0 5 20 9 0 16 6 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 185 0 20 6 0 16 0 1 10 0 48 2 17 6 16 6 6 33 12 0 5 20 11 0 16 6 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 143 0 20 6 0 16 0 1 12 0 48 2 17 6 16 6 33 10 0 20 13 0 16 6 48 1 32 1 0 2 17 7 16 6 6 33 7 0 5 16 7 52 1 0 1 33 9 0 20 2 0 2 49 1 32 88 0 16 4 52 1 0 1 6 34 23 0 5 16 5 52 1 0 1 6 34 12 0 5 20 14 0 16 0 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 43 0 20 15 0 16 0 16 4 16 4 16 5 16 7 33 23 0 16 2 6 34 5 0 5 52 17 0 0 1 18 0 16 7 52 16 0 3 32 2 0 16 2 49 5 50)} "do-fetch" {:upvalue-count 0 :arity 5 :constants ("dom-get-attr" "sx-sync" "=" "replace" "abort-previous" "resolve-target" "not" "identical?" "abort-previous-target" "new-abort-controller" "track-controller" "track-controller-target" "build-request-body" "get" "url" "body" "content-type" "build-request-headers" "loaded-component-names" "_css-hash" "csrf-token" "for-each" {:upvalue-count 2 :arity 1 :constants ("dict-set!" "get") :bytecode (18 0 16 0 18 1 16 0 52 1 0 2 52 0 0 3 50)} "keys" "dict-set!" "Content-Type" "X-CSRFToken" "preload-cache-get" "_preload-cache" "apply-optimistic" "show-indicator" "disable-elements" "dom-add-class" "sx-request" "dom-set-attr" "aria-busy" "true" "dom-dispatch" "sx:beforeRequest" "dict" "method" "fetch-request" "headers" "signal" "controller-signal" "cross-origin" "cross-origin?" "preloaded" {:upvalue-count 8 :arity 4 :constants ("clear-loading-state" "revert-optimistic" "not" "dom-dispatch" "sx:responseError" "dict" "status" "text" ">" "len" 0 "handle-fetch-success" "handle-retry" "sx:afterRequest") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 3 48 1 5 16 0 52 2 0 1 33 86 0 20 3 0 18 0 1 4 0 1 6 0 16 1 1 7 0 16 3 52 5 0 4 48 3 5 16 3 6 33 14 0 5 16 3 52 9 0 1 1 10 0 52 8 0 2 33 20 0 20 11 0 18 0 18 4 18 5 18 6 16 2 16 3 49 6 32 15 0 20 12 0 18 0 18 5 18 7 18 4 18 6 49 5 32 37 0 20 3 0 18 0 1 13 0 1 6 0 16 1 52 5 0 2 48 3 5 20 11 0 18 0 18 4 18 5 18 6 16 2 16 3 49 6 50)} {:upvalue-count 6 :arity 1 :constants ("clear-loading-state" "revert-optimistic" "not" "abort-error?" "log-warn" "str" "sx:fetch error " " " " — " "dom-dispatch" "sx:requestError" "dict" "error") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 3 48 1 5 20 3 0 16 0 48 1 52 2 0 1 33 47 0 20 4 0 1 6 0 18 4 1 7 0 18 5 1 8 0 16 0 52 5 0 6 48 1 5 20 9 0 18 0 1 10 0 1 12 0 16 0 52 11 0 2 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 5 16 5 1 3 0 52 2 0 2 33 10 0 20 4 0 16 0 48 1 32 1 0 2 5 20 5 0 16 0 48 1 17 6 16 6 6 33 13 0 5 16 0 16 6 52 7 0 2 52 6 0 1 33 10 0 20 8 0 16 6 48 1 32 1 0 2 5 20 9 0 48 0 17 6 20 10 0 16 0 16 6 48 2 5 20 5 0 16 0 48 1 17 7 16 7 33 12 0 20 11 0 16 7 16 6 48 2 32 1 0 2 5 20 12 0 16 0 16 2 16 3 48 3 17 7 16 7 1 14 0 52 13 0 2 17 8 16 7 1 15 0 52 13 0 2 17 9 16 7 1 16 0 52 13 0 2 17 10 20 17 0 16 0 20 18 0 48 0 20 19 0 48 3 17 11 20 20 0 48 0 17 12 16 4 33 20 0 51 22 0 1 11 1 4 16 4 52 23 0 1 52 21 0 2 32 1 0 2 5 16 10 33 14 0 16 11 1 25 0 16 10 52 24 0 3 32 1 0 2 5 16 12 33 14 0 16 11 1 26 0 16 12 52 24 0 3 32 1 0 2 5 20 27 0 20 28 0 16 8 48 2 17 13 20 29 0 16 0 48 1 17 14 20 30 0 16 0 48 1 17 15 20 31 0 16 0 48 1 17 16 20 32 0 16 0 1 33 0 48 2 5 20 34 0 16 0 1 35 0 1 36 0 48 3 5 20 37 0 16 0 1 38 0 1 14 0 16 8 1 40 0 16 2 52 39 0 4 48 3 5 20 41 0 1 14 0 16 8 1 40 0 16 2 1 42 0 16 11 1 15 0 16 9 1 43 0 20 44 0 16 6 48 1 1 45 0 20 46 0 16 8 48 1 1 47 0 16 13 52 39 0 14 51 48 0 1 0 1 15 1 16 1 14 1 8 1 1 1 4 1 2 51 49 0 1 0 1 15 1 16 1 14 1 2 1 8 49 3 50)} "handle-fetch-success" {:upvalue-count 0 :arity 6 :constants ("process-response-headers" "get" "css-hash" "_css-hash" "dispatch-trigger-events" "trigger" "process-cache-directives" "redirect" "browser-navigate" "refresh" "browser-reload" "location" "fetch-location" "retarget" "dom-query" "resolve-target" "parse-swap-spec" "reswap" "dom-get-attr" "sx-swap" "dom-has-class?" "dom-body" "sx-transitions" "style" "transition" "content-type" "" "contains?" "text/sx" "handle-sx-response" "handle-html-response" "trigger-swap" "handle-history" "set-timeout" {:upvalue-count 2 :arity 0 :constants ("get" "trigger-settle" "dispatch-trigger-events" "process-settle-hooks") :bytecode (18 0 1 1 0 52 0 0 2 33 19 0 20 2 0 18 1 18 0 1 1 0 52 0 0 2 48 2 32 1 0 2 5 20 3 0 18 1 49 1 50)} 20 "dom-dispatch" "sx:afterSwap" "dict" "target" "swap") :bytecode (20 0 0 16 4 48 1 17 6 16 6 1 2 0 52 1 0 2 17 7 16 7 33 8 0 16 7 21 3 0 32 1 0 2 5 20 4 0 16 0 16 6 1 5 0 52 1 0 2 48 2 5 20 6 0 16 0 16 6 16 5 48 3 5 16 6 1 7 0 52 1 0 2 33 17 0 20 8 0 16 6 1 7 0 52 1 0 2 49 1 32 31 1 16 6 1 9 0 52 1 0 2 33 8 0 20 10 0 49 0 32 11 1 16 6 1 11 0 52 1 0 2 33 17 0 20 12 0 16 6 1 11 0 52 1 0 2 49 1 32 238 0 16 6 1 13 0 52 1 0 2 33 17 0 20 14 0 16 6 1 13 0 52 1 0 2 48 1 32 7 0 20 15 0 16 0 48 1 17 7 20 16 0 16 6 1 17 0 52 1 0 2 6 34 11 0 5 20 18 0 16 0 1 19 0 48 2 20 20 0 20 21 0 48 0 1 22 0 48 2 48 2 17 8 16 8 1 23 0 52 1 0 2 17 9 16 8 1 24 0 52 1 0 2 17 10 16 6 1 25 0 52 1 0 2 6 34 4 0 5 1 26 0 17 11 16 11 1 28 0 52 27 0 2 33 18 0 20 29 0 16 0 16 7 16 5 16 9 16 10 48 5 32 15 0 20 30 0 16 0 16 7 16 5 16 9 16 10 48 5 5 20 4 0 16 0 16 6 1 31 0 52 1 0 2 48 2 5 20 32 0 16 0 16 1 16 6 48 3 5 20 33 0 51 34 0 1 6 1 0 1 35 0 48 2 5 20 36 0 16 0 1 37 0 1 39 0 16 7 1 40 0 16 9 52 38 0 4 49 3 50)} "handle-sx-response" {:upvalue-count 0 :arity 5 :constants ("strip-component-scripts" "extract-response-css" "trim" "not" "empty?" "sx-render" "dom-create-element" "div" "dom-append" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "sx-hydrate" "process-elements") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 1 16 2 48 3 5 20 2 0 16 0 48 1 5 20 3 0 16 0 49 1 50)} "dom-get-attr" "sx-select" "select-from-container" "children-to-fragment" "dispose-islands-in" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 17 0 20 1 0 16 0 6 34 3 0 5 18 0 49 1 50)}) :bytecode (20 0 0 16 2 48 1 17 5 20 1 0 16 5 48 1 17 6 16 6 52 2 0 1 17 7 16 7 52 4 0 1 52 3 0 1 33 106 0 20 5 0 16 7 48 1 17 8 20 6 0 1 7 0 2 48 2 17 9 20 8 0 16 9 16 8 48 2 5 20 9 0 16 9 51 10 0 48 2 5 20 11 0 16 0 1 12 0 48 2 17 10 16 10 33 12 0 20 13 0 16 9 16 10 48 2 32 7 0 20 14 0 16 9 48 1 17 11 20 15 0 16 1 48 1 5 20 16 0 16 4 51 17 0 1 1 1 11 1 3 49 2 32 1 0 2 50)} "handle-html-response" {:upvalue-count 0 :arity 5 :constants ("dom-parse-html-document" "dom-get-attr" "sx-select" "dispose-islands-in" "select-html-from-doc" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-html-string" "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 0 49 1 50)} "dom-create-element" "div" "dom-set-inner-html" "dom-body-inner-html" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 1 16 2 48 3 5 20 2 0 16 0 49 1 50)} "hoist-head-elements" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "children-to-fragment" "post-swap") :bytecode (20 0 0 18 0 20 1 0 18 1 48 1 18 2 48 3 5 20 2 0 18 0 49 1 50)}) :bytecode (20 0 0 16 2 48 1 17 5 16 5 33 119 0 20 1 0 16 0 1 2 0 48 2 17 6 20 3 0 16 1 48 1 5 16 6 33 30 0 20 4 0 16 5 16 6 48 2 17 7 20 5 0 16 4 51 6 0 1 1 1 7 1 3 49 2 32 61 0 20 7 0 1 8 0 2 48 2 17 7 20 9 0 16 7 20 10 0 16 5 48 1 48 2 5 20 11 0 16 7 51 12 0 48 2 5 20 13 0 16 7 48 1 5 20 5 0 16 4 51 14 0 1 1 1 7 1 3 49 2 32 1 0 2 50)} "handle-retry" {:upvalue-count 0 :arity 5 :constants ("dom-get-attr" "sx-retry" "parse-retry-spec" "data-sx-retry-ms" "get" "start-ms" "parse-int" "dom-set-attr" "str" "next-retry-ms" "cap-ms" "set-timeout" {:upvalue-count 5 :arity 0 :constants ("do-fetch") :bytecode (20 0 0 18 0 18 1 18 2 18 3 18 4 49 5 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 5 20 2 0 16 5 48 1 17 6 16 6 33 97 0 20 0 0 16 0 1 3 0 48 2 6 34 10 0 5 16 6 1 5 0 52 4 0 2 17 7 16 7 16 6 1 5 0 52 4 0 2 52 6 0 2 17 8 20 7 0 16 0 1 3 0 20 9 0 16 8 16 6 1 10 0 52 4 0 2 48 2 52 8 0 1 48 3 5 20 11 0 51 12 0 1 0 1 1 1 2 1 3 1 4 16 8 49 2 32 1 0 2 50)} "bind-triggers" {:upvalue-count 0 :arity 2 :constants ("parse-trigger-spec" "dom-get-attr" "sx-trigger" "default-trigger" "dom-tag-name" "for-each" {:upvalue-count 2 :arity 1 :constants ("classify-trigger" "get" "modifiers" "=" "poll" "set-interval" {:upvalue-count 1 :arity 0 :constants ("execute-request") :bytecode (20 0 0 18 0 2 2 49 3 50)} "interval" "intersect" "observe-intersection" "delay" "load" "set-timeout" 0 "revealed" "event" "bind-event") :bytecode (20 0 0 16 0 48 1 17 1 16 0 1 2 0 52 1 0 2 17 2 16 1 1 4 0 52 3 0 2 33 22 0 20 5 0 51 6 0 0 0 16 2 1 7 0 52 1 0 2 49 2 32 152 0 16 1 1 8 0 52 3 0 2 33 25 0 20 9 0 18 0 51 6 0 0 0 4 16 2 1 10 0 52 1 0 2 49 4 32 115 0 16 1 1 11 0 52 3 0 2 33 30 0 20 12 0 51 6 0 0 0 16 2 1 10 0 52 1 0 2 6 34 4 0 5 1 13 0 49 2 32 73 0 16 1 1 14 0 52 3 0 2 33 25 0 20 9 0 18 0 51 6 0 0 0 3 16 2 1 10 0 52 1 0 2 49 4 32 36 0 16 1 1 15 0 52 3 0 2 33 23 0 20 16 0 18 0 16 0 1 15 0 52 1 0 2 16 2 18 1 49 4 32 1 0 2 50)}) :bytecode (20 0 0 20 1 0 16 0 1 2 0 48 2 48 1 6 34 13 0 5 20 3 0 20 4 0 16 0 48 1 48 1 17 2 51 6 0 1 0 1 1 16 2 52 5 0 2 50)} "bind-event" {:upvalue-count 0 :arity 4 :constants ("get" "from" "dom-query" "log-info" "str" "DEBUG bind-event: " " on " "dom-tag-name" " href=" "dom-get-attr" "href" "dom-add-listener" {:upvalue-count 6 :arity 1 :constants ("get" "changed" "element-value" "=" "not" "click" "event-modifier-key?" "submit" "dom-has-attr?" "href" "prevent-default" "get-verb-info" "method" "GET" "delay" "try-client-route" "url-pathname" "url" "dom-get-attr" "sx-target" "browser-push-state" "browser-scroll-to" 0 "log-info" "str" "sx:route server fetch " "clear-timeout" "set-timeout" {:upvalue-count 1 :arity 0 :constants ("execute-request") :bytecode (20 0 0 18 0 2 2 49 3 50)} "execute-request") :bytecode (3 17 1 18 0 1 1 0 52 0 0 2 33 33 0 20 2 0 18 1 48 1 17 2 16 2 18 2 52 3 0 2 33 6 0 4 17 1 32 4 0 16 2 19 2 32 1 0 2 5 16 1 6 33 26 0 5 18 3 1 5 0 52 3 0 2 6 33 8 0 5 20 6 0 16 0 48 1 52 4 0 1 33 43 1 18 3 1 7 0 52 3 0 2 6 34 25 0 5 18 3 1 5 0 52 3 0 2 6 33 11 0 5 20 8 0 18 1 1 9 0 48 2 33 10 0 20 10 0 16 0 48 1 32 1 0 2 5 20 11 0 18 1 48 1 6 34 3 0 5 18 4 17 2 18 3 1 5 0 52 3 0 2 6 33 50 0 5 16 2 1 12 0 52 0 0 2 1 13 0 52 3 0 2 6 33 29 0 5 20 8 0 18 1 1 9 0 48 2 6 33 14 0 5 18 0 1 14 0 52 0 0 2 52 4 0 1 17 3 4 17 4 16 3 33 34 0 20 15 0 20 16 0 16 2 1 17 0 52 0 0 2 48 1 20 18 0 18 1 1 19 0 48 2 48 2 17 4 32 1 0 2 5 16 4 33 29 0 20 20 0 16 2 1 17 0 52 0 0 2 48 1 5 20 21 0 1 22 0 1 22 0 49 2 32 84 0 16 3 33 24 0 20 23 0 1 25 0 16 2 1 17 0 52 0 0 2 52 24 0 2 48 1 32 1 0 2 5 18 0 1 14 0 52 0 0 2 33 32 0 20 26 0 18 5 48 1 5 20 27 0 51 28 0 0 1 18 0 1 14 0 52 0 0 2 48 2 19 5 32 9 0 20 29 0 18 1 2 2 49 3 32 1 0 2 50)} "once" "dict") :bytecode (2 17 4 2 17 5 16 2 1 1 0 52 0 0 2 33 17 0 20 2 0 16 2 1 1 0 52 0 0 2 48 1 32 2 0 16 0 17 6 20 3 0 1 5 0 16 1 1 6 0 20 7 0 16 0 48 1 1 8 0 20 9 0 16 0 1 10 0 48 2 52 4 0 6 48 1 33 54 0 16 6 5 20 11 0 16 6 16 1 51 12 0 1 2 1 0 1 5 1 1 1 3 1 4 16 2 1 13 0 52 0 0 2 33 11 0 1 13 0 3 52 14 0 2 32 1 0 2 49 4 32 1 0 2 50)} "post-swap" {:upvalue-count 0 :arity 1 :constants ("log-info" "str" "post-swap: root=" "dom-tag-name" "nil" "activate-scripts" "sx-process-scripts" "sx-hydrate" "sx-hydrate-islands" "run-post-render-hooks" "process-elements") :bytecode (20 0 0 1 2 0 16 0 33 10 0 20 3 0 16 0 48 1 32 3 0 1 4 0 52 1 0 2 48 1 5 20 5 0 16 0 48 1 5 20 6 0 16 0 48 1 5 20 7 0 16 0 48 1 5 20 8 0 16 0 48 1 5 20 9 0 48 0 5 20 10 0 16 0 49 1 50)} "process-settle-hooks" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-on-settle" "not" "empty?" "sx-parse" "for-each" {:upvalue-count 0 :arity 1 :constants ("eval-expr" "env-extend" "dict") :bytecode (20 0 0 16 0 20 1 0 52 2 0 0 48 1 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 21 0 20 4 0 16 1 48 1 17 2 51 6 0 16 2 52 5 0 2 32 1 0 2 50)} "activate-scripts" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "script" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "dom-has-attr?" "data-components" "data-sx-activated" "create-script-clone" "dom-set-attr" "true" "dom-replace-child" "dom-parent") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 15 0 5 20 1 0 16 0 1 3 0 48 2 52 0 0 1 33 42 0 20 4 0 16 0 48 1 17 1 20 5 0 16 1 1 3 0 1 6 0 48 3 5 20 7 0 20 8 0 16 0 48 1 16 1 16 0 49 3 32 1 0 2 50)}) :bytecode (16 0 33 24 0 20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 32 1 0 2 50)} "process-oob-swaps" {:upvalue-count 0 :arity 2 :constants ("find-oob-swaps" "for-each" {:upvalue-count 1 :arity 1 :constants ("get" "target-id" "dom-query-by-id" "element" "swap-type" "dom-parent" "dom-remove-child") :bytecode (16 0 1 1 0 52 0 0 2 17 1 20 2 0 16 1 48 1 17 2 16 0 1 3 0 52 0 0 2 17 3 16 0 1 4 0 52 0 0 2 17 4 20 5 0 16 3 48 1 33 17 0 20 6 0 20 5 0 16 3 48 1 16 3 48 2 32 1 0 2 5 16 2 33 13 0 18 0 16 2 16 3 16 4 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 48 1 17 2 51 2 0 1 1 16 2 52 1 0 2 50)} "hoist-head-elements" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("dom-parent" "dom-remove-child" "dom-append-to-head") :bytecode (20 0 0 16 0 48 1 33 17 0 20 1 0 20 0 0 16 0 48 1 16 0 48 2 32 1 0 2 5 20 2 0 16 0 49 1 50)} "dom-query-all" "style[data-sx-css]" "link[rel=\"stylesheet\"]") :bytecode (51 1 0 20 2 0 16 0 1 3 0 48 2 52 0 0 2 5 51 1 0 20 2 0 16 0 1 4 0 48 2 52 0 0 2 50)} "process-boosted" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("boost-descendants") :bytecode (20 0 0 16 0 49 1 50)} "dom-query-all" "dom-body" "[sx-boost]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "boost-descendants" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-boost" "for-each" {:upvalue-count 1 :arity 1 :constants ("not" "is-processed?" "boost" "should-boost-link?" "mark-processed!" "dom-has-attr?" "sx-target" "=" "true" "dom-set-attr" "sx-swap" "innerHTML" "sx-push-url" "bind-client-route-link" "dom-get-attr" "href") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 48 1 33 160 0 20 4 0 16 0 1 2 0 48 2 5 20 5 0 16 0 1 6 0 48 2 52 0 0 1 6 33 21 0 5 18 0 6 33 14 0 5 18 0 1 8 0 52 7 0 2 52 0 0 1 33 15 0 20 9 0 16 0 1 6 0 18 0 48 3 32 1 0 2 5 20 5 0 16 0 1 10 0 48 2 52 0 0 1 33 16 0 20 9 0 16 0 1 10 0 1 11 0 48 3 32 1 0 2 5 20 5 0 16 0 1 12 0 48 2 52 0 0 1 33 16 0 20 9 0 16 0 1 12 0 1 8 0 48 3 32 1 0 2 5 20 13 0 16 0 20 14 0 16 0 1 15 0 48 2 49 2 32 1 0 2 50)} "dom-query-all" "a[href]" {:upvalue-count 1 :arity 1 :constants ("not" "is-processed?" "boost" "should-boost-form?" "mark-processed!" "upper" "dom-get-attr" "method" "GET" "action" "browser-location-href" "dom-has-attr?" "sx-target" "=" "true" "dom-set-attr" "sx-swap" "innerHTML" "bind-boost-form") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 48 1 33 165 0 20 4 0 16 0 1 2 0 48 2 5 20 6 0 16 0 1 7 0 48 2 6 34 4 0 5 1 8 0 52 5 0 1 17 1 20 6 0 16 0 1 9 0 48 2 6 34 6 0 5 20 10 0 48 0 17 2 20 11 0 16 0 1 12 0 48 2 52 0 0 1 6 33 21 0 5 18 0 6 33 14 0 5 18 0 1 14 0 52 13 0 2 52 0 0 1 33 15 0 20 15 0 16 0 1 12 0 18 0 48 3 32 1 0 2 5 20 11 0 16 0 1 16 0 48 2 52 0 0 1 33 16 0 20 15 0 16 0 1 16 0 1 17 0 48 3 32 1 0 2 5 20 18 0 16 0 16 1 16 2 49 3 32 1 0 2 50)} "form") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 1 1 20 4 0 16 0 1 5 0 48 2 52 2 0 2 5 51 6 0 1 1 20 4 0 16 0 1 7 0 48 2 52 2 0 2 50)} "_page-data-cache" "_page-data-cache-ttl" 30000 "page-data-cache-key" {:upvalue-count 0 :arity 2 :constants ("nil?" "empty?" "keys" "list" "for-each" {:upvalue-count 2 :arity 1 :constants ("append!" "str" "=" "get") :bytecode (20 0 0 18 0 16 0 1 2 0 18 1 16 0 52 3 0 2 52 1 0 3 49 2 50)} "str" ":" "join" "&") :bytecode (16 0 17 2 16 1 52 0 0 1 6 34 11 0 5 16 1 52 2 0 1 52 1 0 1 33 5 0 16 2 32 42 0 52 3 0 0 17 3 51 5 0 1 3 1 1 16 1 52 2 0 1 52 4 0 2 5 16 2 1 7 0 1 9 0 16 3 52 8 0 2 52 6 0 3 50)} "page-data-cache-get" {:upvalue-count 0 :arity 1 :constants ("get" "_page-data-cache" "nil?" ">" "-" "now-ms" "ts" "_page-data-cache-ttl" "dict-set!" "data") :bytecode (20 1 0 16 0 52 0 0 2 17 1 16 1 52 2 0 1 33 4 0 2 32 52 0 20 5 0 48 0 16 1 1 6 0 52 0 0 2 52 4 0 2 20 7 0 52 3 0 2 33 15 0 20 1 0 16 0 2 52 8 0 3 5 2 32 9 0 16 1 1 9 0 52 0 0 2 50)} "page-data-cache-set" {:upvalue-count 0 :arity 2 :constants ("dict-set!" "_page-data-cache" "data" "ts" "now-ms") :bytecode (20 1 0 16 0 1 2 0 16 1 1 3 0 20 4 0 48 0 65 2 0 52 0 0 3 50)} "invalidate-page-cache" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("=" "starts-with?" "str" ":" "dict-set!" "_page-data-cache") :bytecode (16 0 18 0 52 0 0 2 6 34 16 0 5 16 0 18 0 1 3 0 52 2 0 2 52 1 0 2 33 13 0 20 5 0 16 0 2 52 4 0 3 32 1 0 2 50)} "keys" "_page-data-cache" "sw-post-message" "type" "invalidate" "page" "log-info" "str" "sx:cache invalidate ") :bytecode (51 1 0 1 0 20 3 0 52 2 0 1 52 0 0 2 5 20 4 0 1 5 0 1 6 0 1 7 0 16 0 65 2 0 48 1 5 20 8 0 1 10 0 16 0 52 9 0 2 49 1 50)} "invalidate-all-page-cache" {:upvalue-count 0 :arity 0 :constants ("dict" "_page-data-cache" "sw-post-message" "type" "invalidate" "page" "*" "log-info" "sx:cache invalidate *") :bytecode (52 0 0 0 21 1 0 5 20 2 0 1 3 0 1 4 0 1 5 0 1 6 0 65 2 0 48 1 5 20 7 0 1 8 0 49 1 50)} "update-page-cache" {:upvalue-count 0 :arity 2 :constants ("page-data-cache-key" "dict" "page-data-cache-set" "log-info" "str" "sx:cache update ") :bytecode (20 0 0 16 0 52 1 0 0 48 2 17 2 20 2 0 16 2 16 1 48 2 5 20 3 0 1 5 0 16 0 52 4 0 2 49 1 50)} "process-cache-directives" {:upvalue-count 0 :arity 3 :constants ("dom-get-attr" "sx-cache-invalidate" "=" "*" "invalidate-all-page-cache" "invalidate-page-cache" "get" "cache-invalidate" "cache-update" "parse-sx-data" "update-page-cache") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 16 3 33 30 0 16 3 1 3 0 52 2 0 2 33 8 0 20 4 0 48 0 32 7 0 20 5 0 16 3 48 1 32 1 0 2 5 16 1 1 7 0 52 6 0 2 17 3 16 3 33 30 0 16 3 1 3 0 52 2 0 2 33 8 0 20 4 0 48 0 32 7 0 20 5 0 16 3 48 1 32 1 0 2 5 16 1 1 8 0 52 6 0 2 17 3 16 3 33 30 0 20 9 0 16 2 48 1 17 4 16 4 33 12 0 20 10 0 16 3 16 4 49 2 32 1 0 2 32 1 0 2 50)} "_optimistic-snapshots" "optimistic-cache-update" {:upvalue-count 0 :arity 2 :constants ("page-data-cache-get" "dict-set!" "_optimistic-snapshots" "page-data-cache-set") :bytecode (20 0 0 16 0 48 1 17 2 16 2 33 35 0 16 1 16 2 48 1 17 3 20 2 0 16 0 16 2 52 1 0 3 5 20 3 0 16 0 16 3 48 2 5 16 3 32 1 0 2 50)} "optimistic-cache-revert" {:upvalue-count 0 :arity 1 :constants ("get" "_optimistic-snapshots" "page-data-cache-set" "dict-delete!") :bytecode (20 1 0 16 0 52 0 0 2 17 1 16 1 33 25 0 20 2 0 16 0 16 1 48 2 5 20 1 0 16 0 52 3 0 2 5 16 1 32 1 0 2 50)} "optimistic-cache-confirm" {:upvalue-count 0 :arity 1 :constants ("dict-delete!" "_optimistic-snapshots") :bytecode (20 1 0 16 0 52 0 0 2 50)} "submit-mutation" {:upvalue-count 0 :arity 6 :constants ("page-data-cache-key" "optimistic-cache-update" "try-rerender-page" "execute-action" {:upvalue-count 4 :arity 1 :constants ("page-data-cache-set" "optimistic-cache-confirm" "try-rerender-page" "log-info" "str" "sx:optimistic confirmed " "confirmed") :bytecode (16 0 33 12 0 20 0 0 18 0 16 0 48 2 32 1 0 2 5 20 1 0 18 0 48 1 5 16 0 33 14 0 20 2 0 18 1 18 2 16 0 48 3 32 1 0 2 5 20 3 0 1 5 0 18 1 52 4 0 2 48 1 5 18 3 33 10 0 18 3 1 6 0 49 1 32 1 0 2 50)} {:upvalue-count 4 :arity 1 :constants ("optimistic-cache-revert" "try-rerender-page" "log-warn" "str" "sx:optimistic reverted " ": " "reverted") :bytecode (20 0 0 18 0 48 1 17 1 16 1 33 14 0 20 1 0 18 1 18 2 16 1 48 3 32 1 0 2 5 20 2 0 1 4 0 18 1 1 5 0 16 0 52 3 0 4 48 1 5 18 3 33 10 0 18 3 1 6 0 49 1 32 1 0 2 50)}) :bytecode (20 0 0 16 0 16 1 48 2 17 6 20 1 0 16 6 16 4 48 2 17 7 16 7 33 14 0 20 2 0 16 0 16 1 16 7 48 3 32 1 0 2 5 20 3 0 16 2 16 3 51 4 0 1 6 1 0 1 1 1 5 51 5 0 1 6 1 0 1 1 1 5 49 4 50)} "_is-online" "_offline-queue" "list" "offline-is-online?" {:upvalue-count 0 :arity 0 :constants ("_is-online") :bytecode (20 0 0 50)} "offline-set-online!" {:upvalue-count 0 :arity 1 :constants ("_is-online") :bytecode (16 0 21 0 0 50)} "offline-queue-mutation" {:upvalue-count 0 :arity 5 :constants ("page-data-cache-key" "dict" "action" "payload" "page" "params" "timestamp" "now-ms" "status" "pending" "append!" "_offline-queue" "optimistic-cache-update" "try-rerender-page" "log-info" "str" "sx:offline queued " " (" "len" " pending)") :bytecode (20 0 0 16 2 16 3 48 2 17 5 1 2 0 16 0 1 3 0 16 1 1 4 0 16 2 1 5 0 16 3 1 6 0 20 7 0 48 0 1 8 0 1 9 0 52 1 0 12 17 6 20 10 0 20 11 0 16 6 48 2 5 20 12 0 16 5 16 4 48 2 17 7 16 7 33 14 0 20 13 0 16 2 16 3 16 7 48 3 32 1 0 2 5 20 14 0 1 16 0 16 0 1 17 0 20 11 0 52 18 0 1 1 19 0 52 15 0 5 48 1 5 16 6 50)} "offline-sync" {:upvalue-count 0 :arity 0 :constants ("filter" {:upvalue-count 0 :arity 1 :constants ("=" "get" "status" "pending") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 50)} "_offline-queue" "not" "empty?" "log-info" "str" "sx:offline syncing " "len" " mutations" "for-each" {:upvalue-count 0 :arity 1 :constants ("execute-action" "get" "action" "payload" {:upvalue-count 1 :arity 1 :constants ("dict-set!" "status" "synced" "log-info" "str" "sx:offline synced " "get" "action") :bytecode (18 0 1 1 0 1 2 0 52 0 0 3 5 20 3 0 1 5 0 18 0 1 7 0 52 6 0 2 52 4 0 2 49 1 50)} {:upvalue-count 1 :arity 1 :constants ("dict-set!" "status" "failed" "log-warn" "str" "sx:offline sync failed " "get" "action" ": ") :bytecode (18 0 1 1 0 1 2 0 52 0 0 3 5 20 3 0 1 5 0 18 0 1 7 0 52 6 0 2 1 8 0 16 0 52 4 0 4 49 1 50)}) :bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 0 1 3 0 52 1 0 2 51 4 0 1 0 51 5 0 1 0 49 4 50)}) :bytecode (51 1 0 20 2 0 52 0 0 2 17 0 16 0 52 4 0 1 52 3 0 1 33 34 0 20 5 0 1 7 0 16 0 52 8 0 1 1 9 0 52 6 0 3 48 1 5 51 11 0 16 0 52 10 0 2 32 1 0 2 50)} "offline-pending-count" {:upvalue-count 0 :arity 0 :constants ("len" "filter" {:upvalue-count 0 :arity 1 :constants ("=" "get" "status" "pending") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 50)} "_offline-queue") :bytecode (51 2 0 20 3 0 52 1 0 2 52 0 0 1 50)} "offline-aware-mutation" {:upvalue-count 0 :arity 6 :constants ("_is-online" "submit-mutation" "offline-queue-mutation" "queued") :bytecode (20 0 0 33 20 0 20 1 0 16 0 16 1 16 2 16 3 16 4 16 5 49 6 32 32 0 20 2 0 16 2 16 3 16 0 16 1 16 4 48 5 5 16 5 33 10 0 16 5 1 3 0 49 1 32 1 0 2 50)} "current-page-layout" {:upvalue-count 0 :arity 0 :constants ("url-pathname" "browser-location-href" "find-matching-route" "_page-routes" "nil?" "" "get" "layout") :bytecode (20 0 0 20 1 0 48 0 48 1 17 0 20 2 0 16 0 20 3 0 48 2 17 1 16 1 52 4 0 1 33 6 0 1 5 0 32 17 0 16 1 1 7 0 52 6 0 2 6 34 4 0 5 1 5 0 50)} "swap-rendered-content" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "dom-set-text-content" "" "dom-append" "hoist-head-elements-full" "process-elements" "sx-hydrate-elements" "sx-hydrate-islands" "run-post-render-hooks" "dom-dispatch" "sx:clientRoute" "dict" "pathname" "log-info" "str" "sx:route client ") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 1 2 0 48 2 5 20 3 0 16 0 16 1 48 2 5 20 4 0 16 0 48 1 5 20 5 0 16 0 48 1 5 20 6 0 16 0 48 1 5 20 7 0 16 0 48 1 5 20 8 0 48 0 5 20 9 0 16 0 1 10 0 1 12 0 16 2 52 11 0 2 48 3 5 20 13 0 1 15 0 16 2 52 14 0 2 49 1 50)} "resolve-route-target" {:upvalue-count 0 :arity 1 :constants ("not" "=" "true" "dom-query") :bytecode (16 0 6 33 14 0 5 16 0 1 2 0 52 1 0 2 52 0 0 1 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)} "deps-satisfied?" {:upvalue-count 0 :arity 1 :constants ("get" "deps" "loaded-component-names" "nil?" "empty?" "every?" {:upvalue-count 1 :arity 1 :constants ("contains?") :bytecode (18 0 16 0 52 0 0 2 50)}) :bytecode (16 0 1 1 0 52 0 0 2 17 1 20 2 0 48 0 17 2 16 1 52 3 0 1 6 34 7 0 5 16 1 52 4 0 1 33 4 0 3 32 11 0 51 6 0 1 2 16 1 52 5 0 2 50)} "try-client-route" {:upvalue-count 0 :arity 2 :constants ("find-matching-route" "_page-routes" "nil?" "log-info" "str" "sx:route no match (" "len" " routes) " "get" "layout" "" "current-page-layout" "not" "=" "sx:route server (layout: " " -> " ") " "content" "closure" "params" "name" "empty?" "log-warn" "sx:route no content for " "resolve-route-target" "sx:route target not found: " "deps-satisfied?" "sx:route deps miss for " "io-deps" "render-plan" "server" "list" "client" "sx:route plan " " — " " server, " " client" "register-io-deps" "stream" "sx:route streaming " "fetch-streaming" "build-request-headers" "loaded-component-names" "_css-hash" "has-data" "page-data-cache-key" "page-data-cache-get" "merge" "sx:route client+cache+async " "try-async-eval-content" {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route cache+async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "try-eval-content" "sx:route cached eval failed for " "sx:route client+cache " "swap-rendered-content" "sx:route client+data " "resolve-page-data" {:upvalue-count 7 :arity 1 :constants ("page-data-cache-set" "merge" "try-async-eval-content" {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route data+async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "try-eval-content" "nil?" "log-warn" "str" "sx:route data eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (20 0 0 18 0 16 0 48 2 5 18 1 18 2 16 0 52 1 0 3 17 1 18 3 33 19 0 20 2 0 18 4 16 1 51 3 0 0 5 0 6 49 3 32 79 0 20 4 0 18 4 16 1 48 2 17 2 16 2 52 5 0 1 33 48 0 20 6 0 1 8 0 18 5 1 9 0 52 7 0 3 48 1 5 20 10 0 18 6 18 5 20 11 0 18 6 20 12 0 48 0 20 13 0 48 3 1 14 0 49 4 32 11 0 20 15 0 18 6 16 2 18 5 49 3 50)} "sx:route client+async " {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "sx:route server (eval failed) ") :bytecode (20 0 0 16 0 20 1 0 48 2 17 2 16 2 52 2 0 1 33 29 0 20 3 0 1 5 0 20 1 0 52 6 0 1 1 7 0 16 0 52 4 0 4 48 1 5 4 32 233 2 16 2 1 9 0 52 8 0 2 6 34 4 0 5 1 10 0 17 3 20 11 0 48 0 17 4 16 3 16 4 52 13 0 2 52 12 0 1 33 29 0 20 3 0 1 14 0 16 4 1 15 0 16 3 1 16 0 16 0 52 4 0 6 48 1 5 4 32 163 2 16 2 1 17 0 52 8 0 2 17 5 16 2 1 18 0 52 8 0 2 6 34 4 0 5 65 0 0 17 6 16 2 1 19 0 52 8 0 2 17 7 16 2 1 20 0 52 8 0 2 17 8 16 5 52 2 0 1 6 34 7 0 5 16 5 52 21 0 1 33 19 0 20 22 0 1 23 0 16 0 52 4 0 2 48 1 5 4 32 72 2 20 24 0 16 1 48 1 17 9 16 9 52 2 0 1 33 19 0 20 22 0 1 25 0 16 1 52 4 0 2 48 1 5 4 32 35 2 20 26 0 16 2 48 1 52 12 0 1 33 19 0 20 3 0 1 27 0 16 8 52 4 0 2 48 1 5 4 32 2 2 16 2 1 28 0 52 8 0 2 17 10 16 10 6 33 11 0 5 16 10 52 21 0 1 52 12 0 1 17 11 16 2 1 29 0 52 8 0 2 17 12 16 12 33 78 0 16 12 1 30 0 52 8 0 2 6 34 5 0 5 52 31 0 0 17 13 16 12 1 32 0 52 8 0 2 6 34 5 0 5 52 31 0 0 17 14 20 3 0 1 33 0 16 8 1 34 0 16 13 52 6 0 1 1 35 0 16 14 52 6 0 1 1 36 0 52 4 0 7 48 1 32 1 0 2 5 16 11 33 10 0 20 37 0 16 10 48 1 32 1 0 2 5 16 2 1 38 0 52 8 0 2 33 44 0 20 3 0 1 39 0 16 0 52 4 0 2 48 1 5 20 40 0 16 9 16 0 20 41 0 16 9 20 42 0 48 0 20 43 0 48 3 48 3 5 3 32 59 1 16 2 1 44 0 52 8 0 2 33 194 0 20 45 0 16 8 16 7 48 2 17 13 20 46 0 16 13 48 1 17 14 16 14 33 123 0 16 6 16 7 16 14 52 47 0 3 17 15 16 11 33 36 0 20 3 0 1 48 0 16 0 52 4 0 2 48 1 5 20 49 0 16 5 16 15 51 50 0 1 0 1 9 48 3 5 3 32 67 0 20 51 0 16 5 16 15 48 2 17 16 16 16 52 2 0 1 33 19 0 20 22 0 1 52 0 16 0 52 4 0 2 48 1 5 4 32 28 0 20 3 0 1 53 0 16 0 52 4 0 2 48 1 5 20 54 0 16 9 16 16 16 0 48 3 5 3 32 43 0 20 3 0 1 55 0 16 0 52 4 0 2 48 1 5 20 56 0 16 8 16 7 51 57 0 1 13 1 6 1 7 1 11 1 5 1 0 1 9 48 3 5 3 32 109 0 16 11 33 42 0 20 3 0 1 58 0 16 0 52 4 0 2 48 1 5 20 49 0 16 5 16 6 16 7 52 47 0 2 51 59 0 1 0 1 9 48 3 5 3 32 62 0 16 6 16 7 52 47 0 2 17 13 20 51 0 16 5 16 13 48 2 17 14 16 14 52 2 0 1 33 19 0 20 3 0 1 60 0 16 0 52 4 0 2 48 1 5 4 32 13 0 20 54 0 16 9 16 14 16 0 48 3 5 3 50)} "bind-client-route-link" {:upvalue-count 0 :arity 2 :constants ("bind-client-route-click" {:upvalue-count 2 :arity 0 :constants ("bind-boost-link") :bytecode (20 0 0 18 0 18 1 49 2 50)}) :bytecode (20 0 0 16 0 16 1 51 1 0 1 0 1 1 49 3 50)} "process-sse" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "sse" "mark-processed!" "bind-sse") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 21 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 49 1 32 1 0 2 50)} "dom-query-all" "dom-body" "[sx-sse]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "bind-sse" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-sse" "event-source-connect" "parse-sse-swap" "event-source-listen" {:upvalue-count 1 :arity 1 :constants ("bind-sse-swap") :bytecode (20 0 0 18 0 16 0 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 37 0 20 2 0 16 1 16 0 48 2 17 2 20 3 0 16 0 48 1 17 3 20 4 0 16 2 16 3 51 5 0 1 0 49 3 32 1 0 2 50)} "bind-sse-swap" {:upvalue-count 0 :arity 2 :constants ("resolve-target" "parse-swap-spec" "dom-get-attr" "sx-swap" "dom-has-class?" "dom-body" "sx-transitions" "get" "style" "transition" "trim" "not" "empty?" "dispose-islands-in" "starts-with?" "(" "sx-render" "dom-create-element" "div" "dom-append" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "children-to-fragment" "post-swap") :bytecode (20 0 0 18 0 20 1 0 18 1 48 1 18 2 48 3 5 20 2 0 18 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("swap-html-string" "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 0 49 1 50)}) :bytecode (20 0 0 16 0 48 1 17 2 20 1 0 20 2 0 16 0 1 3 0 48 2 20 4 0 20 5 0 48 0 1 6 0 48 2 48 2 17 3 16 3 1 8 0 52 7 0 2 17 4 16 3 1 9 0 52 7 0 2 17 5 16 1 52 10 0 1 17 6 16 6 52 12 0 1 52 11 0 1 33 88 0 20 13 0 16 2 48 1 5 16 6 1 15 0 52 14 0 2 33 49 0 20 16 0 16 6 48 1 17 7 20 17 0 1 18 0 2 48 2 17 8 20 19 0 16 8 16 7 48 2 5 20 20 0 16 5 51 21 0 1 2 1 8 1 4 49 2 32 16 0 20 20 0 16 5 51 22 0 1 2 1 6 1 4 49 2 32 1 0 2 50)} "bind-inline-handlers" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("first" "nth" 1 "starts-with?" "sx-on:" "slice" 6 "not" "is-processed?" "str" "on:" "mark-processed!" "sx-parse" "dom-on" {:upvalue-count 2 :arity 1 :constants ("env-extend" "dict" "env-bind!" "event" "this" "detail" "event-detail" "for-each" {:upvalue-count 1 :arity 1 :constants ("eval-expr") :bytecode (20 0 0 16 0 18 0 49 2 50)}) :bytecode (20 0 0 52 1 0 0 48 1 17 1 20 2 0 16 1 1 3 0 16 0 48 3 5 20 2 0 16 1 1 4 0 18 0 48 3 5 20 2 0 16 1 1 5 0 20 6 0 16 0 48 1 48 3 5 51 8 0 1 1 18 1 52 7 0 2 50)}) :bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 16 1 1 4 0 52 3 0 2 33 83 0 16 1 1 6 0 52 5 0 2 17 3 20 8 0 18 0 1 10 0 16 3 52 9 0 2 48 2 52 7 0 1 33 45 0 20 11 0 18 0 1 10 0 16 3 52 9 0 2 48 2 5 20 12 0 16 2 48 1 17 4 20 13 0 18 0 16 3 51 14 0 0 0 1 4 49 3 32 1 0 2 32 1 0 2 50)} "dom-attr-list") :bytecode (51 1 0 1 0 20 2 0 16 0 48 1 52 0 0 2 50)} "dom-query-all" "dom-body" "[sx-on\\:]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "bind-preload-for" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-preload" "=" "mousedown" "list" "touchstart" "mouseover" 0 100 "bind-preload" {:upvalue-count 1 :arity 0 :constants ("get-verb-info" "do-preload" "get" "url" "build-request-headers" "loaded-component-names" "_css-hash") :bytecode (20 0 0 18 0 48 1 17 0 16 0 33 32 0 20 1 0 16 0 1 3 0 52 2 0 2 20 4 0 18 0 20 5 0 48 0 20 6 0 48 3 49 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 76 0 16 1 1 3 0 52 2 0 2 33 13 0 1 3 0 1 5 0 52 4 0 2 32 7 0 1 6 0 52 4 0 1 17 2 16 1 1 3 0 52 2 0 2 33 6 0 1 7 0 32 3 0 1 8 0 17 3 20 9 0 16 0 16 2 16 3 51 10 0 1 0 49 4 32 1 0 2 50)} "do-preload" {:upvalue-count 0 :arity 2 :constants ("nil?" "preload-cache-get" "_preload-cache" "fetch-preload") :bytecode (20 1 0 20 2 0 16 0 48 2 52 0 0 1 33 15 0 20 3 0 16 0 16 1 20 2 0 49 3 32 1 0 2 50)} "VERB_SELECTOR" "str" "[sx-get],[sx-post],[sx-put],[sx-delete],[sx-patch]" "process-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "VERB_SELECTOR" "log-info" "str" "DEBUG process-elements: found " "length" " verb elements" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "verb" "mark-processed!" "process-one") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 21 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 49 1 32 1 0 2 50)} "process-boosted" "process-sse" "bind-inline-handlers" "process-emit-elements") :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 20 2 0 48 2 17 1 20 3 0 1 5 0 16 1 52 6 0 1 1 7 0 52 4 0 3 48 1 5 51 9 0 16 1 52 8 0 2 5 20 10 0 16 0 48 1 5 20 11 0 16 0 48 1 5 20 12 0 16 0 48 1 5 20 13 0 16 0 49 1 50)} "process-one" {:upvalue-count 0 :arity 1 :constants ("get-verb-info" "not" "dom-has-attr?" "sx-disable" "log-info" "str" "DEBUG process-one: binding triggers for " "dom-tag-name" " href=" "dom-get-attr" "href" " sx-get=" "sx-get" "bind-triggers" "bind-preload-for") :bytecode (20 0 0 16 0 48 1 17 1 16 1 33 87 0 20 2 0 16 0 1 3 0 48 2 52 1 0 1 33 66 0 20 4 0 1 6 0 20 7 0 16 0 48 1 1 8 0 20 9 0 16 0 1 10 0 48 2 1 11 0 20 9 0 16 0 1 12 0 48 2 52 5 0 6 48 1 5 20 13 0 16 0 16 1 48 2 5 20 14 0 16 0 49 1 32 1 0 2 32 1 0 2 50)} "process-emit-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "[data-sx-emit]" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "emit" "mark-processed!" "dom-get-attr" "data-sx-emit" "dom-on" "click" {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "data-sx-emit-detail" "json-parse" "dict" "dom-dispatch") :bytecode (20 0 0 18 0 1 1 0 48 2 17 1 16 1 33 10 0 20 2 0 16 1 48 1 32 4 0 52 3 0 0 17 2 20 4 0 18 0 18 1 16 2 49 3 50)}) :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 52 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 33 20 0 20 6 0 16 0 1 7 0 51 8 0 1 0 1 1 49 3 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)} "handle-popstate" {:upvalue-count 0 :arity 1 :constants ("browser-location-href" "dom-query" "[sx-boost]" "dom-get-attr" "sx-boost" "not" "=" "true" "#main-panel" "url-pathname" "try-client-route" "browser-scroll-to" 0 "build-request-headers" "loaded-component-names" "_css-hash" "fetch-and-restore") :bytecode (20 0 0 48 0 17 1 20 1 0 1 2 0 48 1 17 2 16 2 33 44 0 20 3 0 16 2 1 4 0 48 2 17 4 16 4 6 33 14 0 5 16 4 1 7 0 52 6 0 2 52 5 0 1 33 5 0 16 4 32 1 0 2 32 1 0 2 17 3 16 3 6 34 4 0 5 1 8 0 17 3 20 1 0 16 3 48 1 17 4 20 9 0 16 1 48 1 17 5 16 4 33 58 0 20 10 0 16 5 16 3 48 2 33 13 0 20 11 0 1 12 0 16 0 49 2 32 30 0 20 13 0 16 4 20 14 0 48 0 20 15 0 48 3 17 6 20 16 0 16 4 16 1 16 6 16 0 49 4 32 1 0 2 50)} "engine-init" {:upvalue-count 0 :arity 0 :constants ("init-css-tracking" "sx-process-scripts" "sx-hydrate" "process-elements") :bytecode (20 0 0 48 0 5 20 1 0 2 48 1 5 20 2 0 2 48 1 5 20 3 0 2 49 1 50)}) :bytecode (52 1 0 0 128 0 0 5 1 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 52 1 0 0 128 38 0 5 1 40 0 128 39 0 5 51 42 0 128 41 0 5 51 44 0 128 43 0 5 51 46 0 128 45 0 5 51 48 0 128 47 0 5 51 50 0 128 49 0 5 51 52 0 128 51 0 5 51 54 0 128 53 0 5 52 1 0 0 128 55 0 5 51 57 0 128 56 0 5 51 59 0 128 58 0 5 51 61 0 128 60 0 5 51 63 0 128 62 0 5 3 128 64 0 5 52 66 0 0 128 65 0 5 51 68 0 128 67 0 5 51 70 0 128 69 0 5 51 72 0 128 71 0 5 51 74 0 128 73 0 5 51 76 0 128 75 0 5 51 78 0 128 77 0 5 51 80 0 128 79 0 5 51 82 0 128 81 0 5 51 84 0 128 83 0 5 51 86 0 128 85 0 5 51 88 0 128 87 0 5 51 90 0 128 89 0 5 51 92 0 128 91 0 5 51 94 0 128 93 0 5 51 96 0 128 95 0 5 51 98 0 128 97 0 5 51 100 0 128 99 0 5 51 102 0 128 101 0 5 1 105 0 52 104 0 1 128 103 0 5 51 107 0 128 106 0 5 51 109 0 128 108 0 5 51 111 0 128 110 0 5 51 113 0 128 112 0 5 51 115 0 128 114 0 50))) diff --git a/shared/static/wasm/sx/orchestration.sxbc.json b/shared/static/wasm/sx/orchestration.sxbc.json new file mode 100644 index 00000000..fcaeb5c1 --- /dev/null +++ b/shared/static/wasm/sx/orchestration.sxbc.json @@ -0,0 +1 @@ +{"magic":"SXBC","version":1,"hash":"ed713f35bbdf3500","module":{"bytecode":[52,1,0,0,128,0,0,5,1,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,52,1,0,0,128,38,0,5,1,40,0,128,39,0,5,51,42,0,128,41,0,5,51,44,0,128,43,0,5,51,46,0,128,45,0,5,51,48,0,128,47,0,5,51,50,0,128,49,0,5,51,52,0,128,51,0,5,51,54,0,128,53,0,5,52,1,0,0,128,55,0,5,51,57,0,128,56,0,5,51,59,0,128,58,0,5,51,61,0,128,60,0,5,51,63,0,128,62,0,5,3,128,64,0,5,52,66,0,0,128,65,0,5,51,68,0,128,67,0,5,51,70,0,128,69,0,5,51,72,0,128,71,0,5,51,74,0,128,73,0,5,51,76,0,128,75,0,5,51,78,0,128,77,0,5,51,80,0,128,79,0,5,51,82,0,128,81,0,5,51,84,0,128,83,0,5,51,86,0,128,85,0,5,51,88,0,128,87,0,5,51,90,0,128,89,0,5,51,92,0,128,91,0,5,51,94,0,128,93,0,5,51,96,0,128,95,0,5,51,98,0,128,97,0,5,51,100,0,128,99,0,5,51,102,0,128,101,0,5,1,105,0,52,104,0,1,128,103,0,5,51,107,0,128,106,0,5,51,109,0,128,108,0,5,51,111,0,128,110,0,5,51,113,0,128,112,0,5,51,115,0,128,114,0,50],"constants":[{"t":"s","v":"_preload-cache"},{"t":"s","v":"dict"},{"t":"s","v":"_css-hash"},{"t":"s","v":""},{"t":"s","v":"dispatch-trigger-events"},{"t":"code","v":{"bytecode":[16,1,33,55,0,20,0,0,16,1,48,1,17,2,16,2,33,20,0,51,2,0,1,0,1,2,16,2,52,3,0,1,52,1,0,2,32,18,0,51,4,0,1,0,16,1,1,6,0,52,5,0,2,52,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"try-parse-json"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,18,1,16,0,52,1,0,2,49,3,50],"constants":[{"t":"s","v":"dom-dispatch"},{"t":"s","v":"get"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"keys"},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,17,1,16,1,52,2,0,1,52,1,0,1,33,16,0,20,3,0,18,0,16,1,52,4,0,0,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"trim"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"dict"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"split"},{"t":"s","v":","}],"arity":2}},{"t":"s","v":"init-css-tracking"},{"t":"code","v":{"bytecode":[20,0,0,1,1,0,48,1,17,0,16,0,33,29,0,20,2,0,16,0,1,3,0,48,2,17,1,16,1,33,8,0,16,1,21,4,0,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-query"},{"t":"s","v":"meta[name=\"sx-css-classes\"]"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"content"},{"t":"s","v":"_css-hash"}]}},{"t":"s","v":"execute-request"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,6,34,3,0,5,16,1,17,3,16,3,52,1,0,1,33,9,0,20,2,0,2,49,1,32,249,0,16,3,1,4,0,52,3,0,2,17,4,16,3,1,5,0,52,3,0,2,17,5,20,6,0,16,0,1,7,0,48,2,17,6,16,6,6,33,12,0,5,20,9,0,16,6,48,1,52,8,0,1,33,9,0,20,2,0,2,49,1,32,185,0,20,6,0,16,0,1,10,0,48,2,17,6,16,6,6,33,12,0,5,20,11,0,16,6,48,1,52,8,0,1,33,9,0,20,2,0,2,49,1,32,143,0,20,6,0,16,0,1,12,0,48,2,17,6,16,6,33,10,0,20,13,0,16,6,48,1,32,1,0,2,17,7,16,6,6,33,7,0,5,16,7,52,1,0,1,33,9,0,20,2,0,2,49,1,32,88,0,16,4,52,1,0,1,6,34,23,0,5,16,5,52,1,0,1,6,34,12,0,5,20,14,0,16,0,48,1,52,8,0,1,33,9,0,20,2,0,2,49,1,32,43,0,20,15,0,16,0,16,4,16,4,16,5,16,7,33,23,0,16,2,6,34,5,0,5,52,17,0,0,1,18,0,16,7,52,16,0,3,32,2,0,16,2,49,5,50],"constants":[{"t":"s","v":"get-verb-info"},{"t":"s","v":"nil?"},{"t":"s","v":"promise-resolve"},{"t":"s","v":"get"},{"t":"s","v":"method"},{"t":"s","v":"url"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-media"},{"t":"s","v":"not"},{"t":"s","v":"browser-media-matches?"},{"t":"s","v":"sx-confirm"},{"t":"s","v":"browser-confirm"},{"t":"s","v":"sx-prompt"},{"t":"s","v":"browser-prompt"},{"t":"s","v":"validate-for-request"},{"t":"s","v":"do-fetch"},{"t":"s","v":"assoc"},{"t":"s","v":"dict"},{"t":"s","v":"SX-Prompt"}],"arity":3}},{"t":"s","v":"do-fetch"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,5,16,5,1,3,0,52,2,0,2,33,10,0,20,4,0,16,0,48,1,32,1,0,2,5,20,5,0,16,0,48,1,17,6,16,6,6,33,13,0,5,16,0,16,6,52,7,0,2,52,6,0,1,33,10,0,20,8,0,16,6,48,1,32,1,0,2,5,20,9,0,48,0,17,6,20,10,0,16,0,16,6,48,2,5,20,5,0,16,0,48,1,17,7,16,7,33,12,0,20,11,0,16,7,16,6,48,2,32,1,0,2,5,20,12,0,16,0,16,2,16,3,48,3,17,7,16,7,1,14,0,52,13,0,2,17,8,16,7,1,15,0,52,13,0,2,17,9,16,7,1,16,0,52,13,0,2,17,10,20,17,0,16,0,20,18,0,48,0,20,19,0,48,3,17,11,20,20,0,48,0,17,12,16,4,33,20,0,51,22,0,1,11,1,4,16,4,52,23,0,1,52,21,0,2,32,1,0,2,5,16,10,33,14,0,16,11,1,25,0,16,10,52,24,0,3,32,1,0,2,5,16,12,33,14,0,16,11,1,26,0,16,12,52,24,0,3,32,1,0,2,5,20,27,0,20,28,0,16,8,48,2,17,13,20,29,0,16,0,48,1,17,14,20,30,0,16,0,48,1,17,15,20,31,0,16,0,48,1,17,16,20,32,0,16,0,1,33,0,48,2,5,20,34,0,16,0,1,35,0,1,36,0,48,3,5,20,37,0,16,0,1,38,0,1,14,0,16,8,1,40,0,16,2,52,39,0,4,48,3,5,20,41,0,1,14,0,16,8,1,40,0,16,2,1,42,0,16,11,1,15,0,16,9,1,43,0,20,44,0,16,6,48,1,1,45,0,20,46,0,16,8,48,1,1,47,0,16,13,52,39,0,14,51,48,0,1,0,1,15,1,16,1,14,1,8,1,1,1,4,1,2,51,49,0,1,0,1,15,1,16,1,14,1,2,1,8,49,3,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-sync"},{"t":"s","v":"="},{"t":"s","v":"replace"},{"t":"s","v":"abort-previous"},{"t":"s","v":"resolve-target"},{"t":"s","v":"not"},{"t":"s","v":"identical?"},{"t":"s","v":"abort-previous-target"},{"t":"s","v":"new-abort-controller"},{"t":"s","v":"track-controller"},{"t":"s","v":"track-controller-target"},{"t":"s","v":"build-request-body"},{"t":"s","v":"get"},{"t":"s","v":"url"},{"t":"s","v":"body"},{"t":"s","v":"content-type"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"s","v":"csrf-token"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[18,0,16,0,18,1,16,0,52,1,0,2,52,0,0,3,50],"constants":[{"t":"s","v":"dict-set!"},{"t":"s","v":"get"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"keys"},{"t":"s","v":"dict-set!"},{"t":"s","v":"Content-Type"},{"t":"s","v":"X-CSRFToken"},{"t":"s","v":"preload-cache-get"},{"t":"s","v":"_preload-cache"},{"t":"s","v":"apply-optimistic"},{"t":"s","v":"show-indicator"},{"t":"s","v":"disable-elements"},{"t":"s","v":"dom-add-class"},{"t":"s","v":"sx-request"},{"t":"s","v":"dom-set-attr"},{"t":"s","v":"aria-busy"},{"t":"s","v":"true"},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"sx:beforeRequest"},{"t":"s","v":"dict"},{"t":"s","v":"method"},{"t":"s","v":"fetch-request"},{"t":"s","v":"headers"},{"t":"s","v":"signal"},{"t":"s","v":"controller-signal"},{"t":"s","v":"cross-origin"},{"t":"s","v":"cross-origin?"},{"t":"s","v":"preloaded"},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,18,2,48,3,5,20,1,0,18,3,48,1,5,16,0,52,2,0,1,33,86,0,20,3,0,18,0,1,4,0,1,6,0,16,1,1,7,0,16,3,52,5,0,4,48,3,5,16,3,6,33,14,0,5,16,3,52,9,0,1,1,10,0,52,8,0,2,33,20,0,20,11,0,18,0,18,4,18,5,18,6,16,2,16,3,49,6,32,15,0,20,12,0,18,0,18,5,18,7,18,4,18,6,49,5,32,37,0,20,3,0,18,0,1,13,0,1,6,0,16,1,52,5,0,2,48,3,5,20,11,0,18,0,18,4,18,5,18,6,16,2,16,3,49,6,50],"constants":[{"t":"s","v":"clear-loading-state"},{"t":"s","v":"revert-optimistic"},{"t":"s","v":"not"},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"sx:responseError"},{"t":"s","v":"dict"},{"t":"s","v":"status"},{"t":"s","v":"text"},{"t":"s","v":">"},{"t":"s","v":"len"},{"t":"n","v":0},{"t":"s","v":"handle-fetch-success"},{"t":"s","v":"handle-retry"},{"t":"s","v":"sx:afterRequest"}],"arity":4,"upvalue-count":8}},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,18,2,48,3,5,20,1,0,18,3,48,1,5,20,3,0,16,0,48,1,52,2,0,1,33,47,0,20,4,0,1,6,0,18,4,1,7,0,18,5,1,8,0,16,0,52,5,0,6,48,1,5,20,9,0,18,0,1,10,0,1,12,0,16,0,52,11,0,2,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"clear-loading-state"},{"t":"s","v":"revert-optimistic"},{"t":"s","v":"not"},{"t":"s","v":"abort-error?"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:fetch error "},{"t":"s","v":" "},{"t":"s","v":" — "},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"sx:requestError"},{"t":"s","v":"dict"},{"t":"s","v":"error"}],"arity":1,"upvalue-count":6}}],"arity":5}},{"t":"s","v":"handle-fetch-success"},{"t":"code","v":{"bytecode":[20,0,0,16,4,48,1,17,6,16,6,1,2,0,52,1,0,2,17,7,16,7,33,8,0,16,7,21,3,0,32,1,0,2,5,20,4,0,16,0,16,6,1,5,0,52,1,0,2,48,2,5,20,6,0,16,0,16,6,16,5,48,3,5,16,6,1,7,0,52,1,0,2,33,17,0,20,8,0,16,6,1,7,0,52,1,0,2,49,1,32,31,1,16,6,1,9,0,52,1,0,2,33,8,0,20,10,0,49,0,32,11,1,16,6,1,11,0,52,1,0,2,33,17,0,20,12,0,16,6,1,11,0,52,1,0,2,49,1,32,238,0,16,6,1,13,0,52,1,0,2,33,17,0,20,14,0,16,6,1,13,0,52,1,0,2,48,1,32,7,0,20,15,0,16,0,48,1,17,7,20,16,0,16,6,1,17,0,52,1,0,2,6,34,11,0,5,20,18,0,16,0,1,19,0,48,2,20,20,0,20,21,0,48,0,1,22,0,48,2,48,2,17,8,16,8,1,23,0,52,1,0,2,17,9,16,8,1,24,0,52,1,0,2,17,10,16,6,1,25,0,52,1,0,2,6,34,4,0,5,1,26,0,17,11,16,11,1,28,0,52,27,0,2,33,18,0,20,29,0,16,0,16,7,16,5,16,9,16,10,48,5,32,15,0,20,30,0,16,0,16,7,16,5,16,9,16,10,48,5,5,20,4,0,16,0,16,6,1,31,0,52,1,0,2,48,2,5,20,32,0,16,0,16,1,16,6,48,3,5,20,33,0,51,34,0,1,6,1,0,1,35,0,48,2,5,20,36,0,16,0,1,37,0,1,39,0,16,7,1,40,0,16,9,52,38,0,4,49,3,50],"constants":[{"t":"s","v":"process-response-headers"},{"t":"s","v":"get"},{"t":"s","v":"css-hash"},{"t":"s","v":"_css-hash"},{"t":"s","v":"dispatch-trigger-events"},{"t":"s","v":"trigger"},{"t":"s","v":"process-cache-directives"},{"t":"s","v":"redirect"},{"t":"s","v":"browser-navigate"},{"t":"s","v":"refresh"},{"t":"s","v":"browser-reload"},{"t":"s","v":"location"},{"t":"s","v":"fetch-location"},{"t":"s","v":"retarget"},{"t":"s","v":"dom-query"},{"t":"s","v":"resolve-target"},{"t":"s","v":"parse-swap-spec"},{"t":"s","v":"reswap"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-swap"},{"t":"s","v":"dom-has-class?"},{"t":"s","v":"dom-body"},{"t":"s","v":"sx-transitions"},{"t":"s","v":"style"},{"t":"s","v":"transition"},{"t":"s","v":"content-type"},{"t":"s","v":""},{"t":"s","v":"contains?"},{"t":"s","v":"text/sx"},{"t":"s","v":"handle-sx-response"},{"t":"s","v":"handle-html-response"},{"t":"s","v":"trigger-swap"},{"t":"s","v":"handle-history"},{"t":"s","v":"set-timeout"},{"t":"code","v":{"bytecode":[18,0,1,1,0,52,0,0,2,33,19,0,20,2,0,18,1,18,0,1,1,0,52,0,0,2,48,2,32,1,0,2,5,20,3,0,18,1,49,1,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"trigger-settle"},{"t":"s","v":"dispatch-trigger-events"},{"t":"s","v":"process-settle-hooks"}],"upvalue-count":2}},{"t":"n","v":20},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"sx:afterSwap"},{"t":"s","v":"dict"},{"t":"s","v":"target"},{"t":"s","v":"swap"}],"arity":6}},{"t":"s","v":"handle-sx-response"},{"t":"code","v":{"bytecode":[20,0,0,16,2,48,1,17,5,20,1,0,16,5,48,1,17,6,16,6,52,2,0,1,17,7,16,7,52,4,0,1,52,3,0,1,33,106,0,20,5,0,16,7,48,1,17,8,20,6,0,1,7,0,2,48,2,17,9,20,8,0,16,9,16,8,48,2,5,20,9,0,16,9,51,10,0,48,2,5,20,11,0,16,0,1,12,0,48,2,17,10,16,10,33,12,0,20,13,0,16,9,16,10,48,2,32,7,0,20,14,0,16,9,48,1,17,11,20,15,0,16,1,48,1,5,20,16,0,16,4,51,17,0,1,1,1,11,1,3,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"strip-component-scripts"},{"t":"s","v":"extract-response-css"},{"t":"s","v":"trim"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"sx-render"},{"t":"s","v":"dom-create-element"},{"t":"s","v":"div"},{"t":"s","v":"dom-append"},{"t":"s","v":"process-oob-swaps"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,5,20,1,0,16,0,16,1,16,2,48,3,5,20,2,0,16,0,48,1,5,20,3,0,16,0,49,1,50],"constants":[{"t":"s","v":"dispose-islands-in"},{"t":"s","v":"swap-dom-nodes"},{"t":"s","v":"sx-hydrate"},{"t":"s","v":"process-elements"}],"arity":3}},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-select"},{"t":"s","v":"select-from-container"},{"t":"s","v":"children-to-fragment"},{"t":"s","v":"dispose-islands-in"},{"t":"s","v":"with-transition"},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,18,2,48,3,17,0,20,1,0,16,0,6,34,3,0,5,18,0,49,1,50],"constants":[{"t":"s","v":"swap-dom-nodes"},{"t":"s","v":"post-swap"}],"upvalue-count":3}}],"arity":5}},{"t":"s","v":"handle-html-response"},{"t":"code","v":{"bytecode":[20,0,0,16,2,48,1,17,5,16,5,33,119,0,20,1,0,16,0,1,2,0,48,2,17,6,20,3,0,16,1,48,1,5,16,6,33,30,0,20,4,0,16,5,16,6,48,2,17,7,20,5,0,16,4,51,6,0,1,1,1,7,1,3,49,2,32,61,0,20,7,0,1,8,0,2,48,2,17,7,20,9,0,16,7,20,10,0,16,5,48,1,48,2,5,20,11,0,16,7,51,12,0,48,2,5,20,13,0,16,7,48,1,5,20,5,0,16,4,51,14,0,1,1,1,7,1,3,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-parse-html-document"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-select"},{"t":"s","v":"dispose-islands-in"},{"t":"s","v":"select-html-from-doc"},{"t":"s","v":"with-transition"},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,18,2,48,3,5,20,1,0,18,0,49,1,50],"constants":[{"t":"s","v":"swap-html-string"},{"t":"s","v":"post-swap"}],"upvalue-count":3}},{"t":"s","v":"dom-create-element"},{"t":"s","v":"div"},{"t":"s","v":"dom-set-inner-html"},{"t":"s","v":"dom-body-inner-html"},{"t":"s","v":"process-oob-swaps"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,5,20,1,0,16,0,16,1,16,2,48,3,5,20,2,0,16,0,49,1,50],"constants":[{"t":"s","v":"dispose-islands-in"},{"t":"s","v":"swap-dom-nodes"},{"t":"s","v":"post-swap"}],"arity":3}},{"t":"s","v":"hoist-head-elements"},{"t":"code","v":{"bytecode":[20,0,0,18,0,20,1,0,18,1,48,1,18,2,48,3,5,20,2,0,18,0,49,1,50],"constants":[{"t":"s","v":"swap-dom-nodes"},{"t":"s","v":"children-to-fragment"},{"t":"s","v":"post-swap"}],"upvalue-count":3}}],"arity":5}},{"t":"s","v":"handle-retry"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,5,20,2,0,16,5,48,1,17,6,16,6,33,97,0,20,0,0,16,0,1,3,0,48,2,6,34,10,0,5,16,6,1,5,0,52,4,0,2,17,7,16,7,16,6,1,5,0,52,4,0,2,52,6,0,2,17,8,20,7,0,16,0,1,3,0,20,9,0,16,8,16,6,1,10,0,52,4,0,2,48,2,52,8,0,1,48,3,5,20,11,0,51,12,0,1,0,1,1,1,2,1,3,1,4,16,8,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-retry"},{"t":"s","v":"parse-retry-spec"},{"t":"s","v":"data-sx-retry-ms"},{"t":"s","v":"get"},{"t":"s","v":"start-ms"},{"t":"s","v":"parse-int"},{"t":"s","v":"dom-set-attr"},{"t":"s","v":"str"},{"t":"s","v":"next-retry-ms"},{"t":"s","v":"cap-ms"},{"t":"s","v":"set-timeout"},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,18,2,18,3,18,4,49,5,50],"constants":[{"t":"s","v":"do-fetch"}],"upvalue-count":5}}],"arity":5}},{"t":"s","v":"bind-triggers"},{"t":"code","v":{"bytecode":[20,0,0,20,1,0,16,0,1,2,0,48,2,48,1,6,34,13,0,5,20,3,0,20,4,0,16,0,48,1,48,1,17,2,51,6,0,1,0,1,1,16,2,52,5,0,2,50],"constants":[{"t":"s","v":"parse-trigger-spec"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-trigger"},{"t":"s","v":"default-trigger"},{"t":"s","v":"dom-tag-name"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,1,16,0,1,2,0,52,1,0,2,17,2,16,1,1,4,0,52,3,0,2,33,22,0,20,5,0,51,6,0,0,0,16,2,1,7,0,52,1,0,2,49,2,32,152,0,16,1,1,8,0,52,3,0,2,33,25,0,20,9,0,18,0,51,6,0,0,0,4,16,2,1,10,0,52,1,0,2,49,4,32,115,0,16,1,1,11,0,52,3,0,2,33,30,0,20,12,0,51,6,0,0,0,16,2,1,10,0,52,1,0,2,6,34,4,0,5,1,13,0,49,2,32,73,0,16,1,1,14,0,52,3,0,2,33,25,0,20,9,0,18,0,51,6,0,0,0,3,16,2,1,10,0,52,1,0,2,49,4,32,36,0,16,1,1,15,0,52,3,0,2,33,23,0,20,16,0,18,0,16,0,1,15,0,52,1,0,2,16,2,18,1,49,4,32,1,0,2,50],"constants":[{"t":"s","v":"classify-trigger"},{"t":"s","v":"get"},{"t":"s","v":"modifiers"},{"t":"s","v":"="},{"t":"s","v":"poll"},{"t":"s","v":"set-interval"},{"t":"code","v":{"bytecode":[20,0,0,18,0,2,2,49,3,50],"constants":[{"t":"s","v":"execute-request"}],"upvalue-count":1}},{"t":"s","v":"interval"},{"t":"s","v":"intersect"},{"t":"s","v":"observe-intersection"},{"t":"s","v":"delay"},{"t":"s","v":"load"},{"t":"s","v":"set-timeout"},{"t":"n","v":0},{"t":"s","v":"revealed"},{"t":"s","v":"event"},{"t":"s","v":"bind-event"}],"arity":1,"upvalue-count":2}}],"arity":2}},{"t":"s","v":"bind-event"},{"t":"code","v":{"bytecode":[2,17,4,2,17,5,16,2,1,1,0,52,0,0,2,33,17,0,20,2,0,16,2,1,1,0,52,0,0,2,48,1,32,2,0,16,0,17,6,20,3,0,1,5,0,16,1,1,6,0,20,7,0,16,0,48,1,1,8,0,20,9,0,16,0,1,10,0,48,2,52,4,0,6,48,1,33,54,0,16,6,5,20,11,0,16,6,16,1,51,12,0,1,2,1,0,1,5,1,1,1,3,1,4,16,2,1,13,0,52,0,0,2,33,11,0,1,13,0,3,52,14,0,2,32,1,0,2,49,4,32,1,0,2,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"from"},{"t":"s","v":"dom-query"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"DEBUG bind-event: "},{"t":"s","v":" on "},{"t":"s","v":"dom-tag-name"},{"t":"s","v":" href="},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"href"},{"t":"s","v":"dom-add-listener"},{"t":"code","v":{"bytecode":[3,17,1,18,0,1,1,0,52,0,0,2,33,33,0,20,2,0,18,1,48,1,17,2,16,2,18,2,52,3,0,2,33,6,0,4,17,1,32,4,0,16,2,19,2,32,1,0,2,5,16,1,6,33,26,0,5,18,3,1,5,0,52,3,0,2,6,33,8,0,5,20,6,0,16,0,48,1,52,4,0,1,33,43,1,18,3,1,7,0,52,3,0,2,6,34,25,0,5,18,3,1,5,0,52,3,0,2,6,33,11,0,5,20,8,0,18,1,1,9,0,48,2,33,10,0,20,10,0,16,0,48,1,32,1,0,2,5,20,11,0,18,1,48,1,6,34,3,0,5,18,4,17,2,18,3,1,5,0,52,3,0,2,6,33,50,0,5,16,2,1,12,0,52,0,0,2,1,13,0,52,3,0,2,6,33,29,0,5,20,8,0,18,1,1,9,0,48,2,6,33,14,0,5,18,0,1,14,0,52,0,0,2,52,4,0,1,17,3,4,17,4,16,3,33,34,0,20,15,0,20,16,0,16,2,1,17,0,52,0,0,2,48,1,20,18,0,18,1,1,19,0,48,2,48,2,17,4,32,1,0,2,5,16,4,33,29,0,20,20,0,16,2,1,17,0,52,0,0,2,48,1,5,20,21,0,1,22,0,1,22,0,49,2,32,84,0,16,3,33,24,0,20,23,0,1,25,0,16,2,1,17,0,52,0,0,2,52,24,0,2,48,1,32,1,0,2,5,18,0,1,14,0,52,0,0,2,33,32,0,20,26,0,18,5,48,1,5,20,27,0,51,28,0,0,1,18,0,1,14,0,52,0,0,2,48,2,19,5,32,9,0,20,29,0,18,1,2,2,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"changed"},{"t":"s","v":"element-value"},{"t":"s","v":"="},{"t":"s","v":"not"},{"t":"s","v":"click"},{"t":"s","v":"event-modifier-key?"},{"t":"s","v":"submit"},{"t":"s","v":"dom-has-attr?"},{"t":"s","v":"href"},{"t":"s","v":"prevent-default"},{"t":"s","v":"get-verb-info"},{"t":"s","v":"method"},{"t":"s","v":"GET"},{"t":"s","v":"delay"},{"t":"s","v":"try-client-route"},{"t":"s","v":"url-pathname"},{"t":"s","v":"url"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-target"},{"t":"s","v":"browser-push-state"},{"t":"s","v":"browser-scroll-to"},{"t":"n","v":0},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:route server fetch "},{"t":"s","v":"clear-timeout"},{"t":"s","v":"set-timeout"},{"t":"code","v":{"bytecode":[20,0,0,18,0,2,2,49,3,50],"constants":[{"t":"s","v":"execute-request"}],"upvalue-count":1}},{"t":"s","v":"execute-request"}],"arity":1,"upvalue-count":6}},{"t":"s","v":"once"},{"t":"s","v":"dict"}],"arity":4}},{"t":"s","v":"post-swap"},{"t":"code","v":{"bytecode":[20,0,0,1,2,0,16,0,33,10,0,20,3,0,16,0,48,1,32,3,0,1,4,0,52,1,0,2,48,1,5,20,5,0,16,0,48,1,5,20,6,0,16,0,48,1,5,20,7,0,16,0,48,1,5,20,8,0,16,0,48,1,5,20,9,0,48,0,5,20,10,0,16,0,49,1,50],"constants":[{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"post-swap: root="},{"t":"s","v":"dom-tag-name"},{"t":"s","v":"nil"},{"t":"s","v":"activate-scripts"},{"t":"s","v":"sx-process-scripts"},{"t":"s","v":"sx-hydrate"},{"t":"s","v":"sx-hydrate-islands"},{"t":"s","v":"run-post-render-hooks"},{"t":"s","v":"process-elements"}],"arity":1}},{"t":"s","v":"process-settle-hooks"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,1,16,1,6,33,11,0,5,16,1,52,3,0,1,52,2,0,1,33,21,0,20,4,0,16,1,48,1,17,2,51,6,0,16,2,52,5,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-on-settle"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"sx-parse"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,20,1,0,52,2,0,0,48,1,49,2,50],"constants":[{"t":"s","v":"eval-expr"},{"t":"s","v":"env-extend"},{"t":"s","v":"dict"}],"arity":1}}],"arity":1}},{"t":"s","v":"activate-scripts"},{"t":"code","v":{"bytecode":[16,0,33,24,0,20,0,0,16,0,1,1,0,48,2,17,1,51,3,0,16,1,52,2,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"script"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,6,33,15,0,5,20,1,0,16,0,1,3,0,48,2,52,0,0,1,33,42,0,20,4,0,16,0,48,1,17,1,20,5,0,16,1,1,3,0,1,6,0,48,3,5,20,7,0,20,8,0,16,0,48,1,16,1,16,0,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"dom-has-attr?"},{"t":"s","v":"data-components"},{"t":"s","v":"data-sx-activated"},{"t":"s","v":"create-script-clone"},{"t":"s","v":"dom-set-attr"},{"t":"s","v":"true"},{"t":"s","v":"dom-replace-child"},{"t":"s","v":"dom-parent"}],"arity":1}}],"arity":1}},{"t":"s","v":"process-oob-swaps"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,2,51,2,0,1,1,16,2,52,1,0,2,50],"constants":[{"t":"s","v":"find-oob-swaps"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[16,0,1,1,0,52,0,0,2,17,1,20,2,0,16,1,48,1,17,2,16,0,1,3,0,52,0,0,2,17,3,16,0,1,4,0,52,0,0,2,17,4,20,5,0,16,3,48,1,33,17,0,20,6,0,20,5,0,16,3,48,1,16,3,48,2,32,1,0,2,5,16,2,33,13,0,18,0,16,2,16,3,16,4,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"target-id"},{"t":"s","v":"dom-query-by-id"},{"t":"s","v":"element"},{"t":"s","v":"swap-type"},{"t":"s","v":"dom-parent"},{"t":"s","v":"dom-remove-child"}],"arity":1,"upvalue-count":1}}],"arity":2}},{"t":"s","v":"hoist-head-elements"},{"t":"code","v":{"bytecode":[51,1,0,20,2,0,16,0,1,3,0,48,2,52,0,0,2,5,51,1,0,20,2,0,16,0,1,4,0,48,2,52,0,0,2,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,33,17,0,20,1,0,20,0,0,16,0,48,1,16,0,48,2,32,1,0,2,5,20,2,0,16,0,49,1,50],"constants":[{"t":"s","v":"dom-parent"},{"t":"s","v":"dom-remove-child"},{"t":"s","v":"dom-append-to-head"}],"arity":1}},{"t":"s","v":"dom-query-all"},{"t":"s","v":"style[data-sx-css]"},{"t":"s","v":"link[rel=\"stylesheet\"]"}],"arity":1}},{"t":"s","v":"process-boosted"},{"t":"code","v":{"bytecode":[51,1,0,20,2,0,16,0,6,34,6,0,5,20,3,0,48,0,1,4,0,48,2,52,0,0,2,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,49,1,50],"constants":[{"t":"s","v":"boost-descendants"}],"arity":1}},{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"[sx-boost]"}],"arity":1}},{"t":"s","v":"boost-descendants"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,1,51,3,0,1,1,20,4,0,16,0,1,5,0,48,2,52,2,0,2,5,51,6,0,1,1,20,4,0,16,0,1,7,0,48,2,52,2,0,2,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-boost"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,6,33,8,0,5,20,3,0,16,0,48,1,33,160,0,20,4,0,16,0,1,2,0,48,2,5,20,5,0,16,0,1,6,0,48,2,52,0,0,1,6,33,21,0,5,18,0,6,33,14,0,5,18,0,1,8,0,52,7,0,2,52,0,0,1,33,15,0,20,9,0,16,0,1,6,0,18,0,48,3,32,1,0,2,5,20,5,0,16,0,1,10,0,48,2,52,0,0,1,33,16,0,20,9,0,16,0,1,10,0,1,11,0,48,3,32,1,0,2,5,20,5,0,16,0,1,12,0,48,2,52,0,0,1,33,16,0,20,9,0,16,0,1,12,0,1,8,0,48,3,32,1,0,2,5,20,13,0,16,0,20,14,0,16,0,1,15,0,48,2,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"boost"},{"t":"s","v":"should-boost-link?"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"dom-has-attr?"},{"t":"s","v":"sx-target"},{"t":"s","v":"="},{"t":"s","v":"true"},{"t":"s","v":"dom-set-attr"},{"t":"s","v":"sx-swap"},{"t":"s","v":"innerHTML"},{"t":"s","v":"sx-push-url"},{"t":"s","v":"bind-client-route-link"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"href"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"dom-query-all"},{"t":"s","v":"a[href]"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,6,33,8,0,5,20,3,0,16,0,48,1,33,165,0,20,4,0,16,0,1,2,0,48,2,5,20,6,0,16,0,1,7,0,48,2,6,34,4,0,5,1,8,0,52,5,0,1,17,1,20,6,0,16,0,1,9,0,48,2,6,34,6,0,5,20,10,0,48,0,17,2,20,11,0,16,0,1,12,0,48,2,52,0,0,1,6,33,21,0,5,18,0,6,33,14,0,5,18,0,1,14,0,52,13,0,2,52,0,0,1,33,15,0,20,15,0,16,0,1,12,0,18,0,48,3,32,1,0,2,5,20,11,0,16,0,1,16,0,48,2,52,0,0,1,33,16,0,20,15,0,16,0,1,16,0,1,17,0,48,3,32,1,0,2,5,20,18,0,16,0,16,1,16,2,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"boost"},{"t":"s","v":"should-boost-form?"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"upper"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"method"},{"t":"s","v":"GET"},{"t":"s","v":"action"},{"t":"s","v":"browser-location-href"},{"t":"s","v":"dom-has-attr?"},{"t":"s","v":"sx-target"},{"t":"s","v":"="},{"t":"s","v":"true"},{"t":"s","v":"dom-set-attr"},{"t":"s","v":"sx-swap"},{"t":"s","v":"innerHTML"},{"t":"s","v":"bind-boost-form"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"form"}],"arity":1}},{"t":"s","v":"_page-data-cache"},{"t":"s","v":"_page-data-cache-ttl"},{"t":"n","v":30000},{"t":"s","v":"page-data-cache-key"},{"t":"code","v":{"bytecode":[16,0,17,2,16,1,52,0,0,1,6,34,11,0,5,16,1,52,2,0,1,52,1,0,1,33,5,0,16,2,32,42,0,52,3,0,0,17,3,51,5,0,1,3,1,1,16,1,52,2,0,1,52,4,0,2,5,16,2,1,7,0,1,9,0,16,3,52,8,0,2,52,6,0,3,50],"constants":[{"t":"s","v":"nil?"},{"t":"s","v":"empty?"},{"t":"s","v":"keys"},{"t":"s","v":"list"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,1,2,0,18,1,16,0,52,3,0,2,52,1,0,3,49,2,50],"constants":[{"t":"s","v":"append!"},{"t":"s","v":"str"},{"t":"s","v":"="},{"t":"s","v":"get"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"str"},{"t":"s","v":":"},{"t":"s","v":"join"},{"t":"s","v":"&"}],"arity":2}},{"t":"s","v":"page-data-cache-get"},{"t":"code","v":{"bytecode":[20,1,0,16,0,52,0,0,2,17,1,16,1,52,2,0,1,33,4,0,2,32,52,0,20,5,0,48,0,16,1,1,6,0,52,0,0,2,52,4,0,2,20,7,0,52,3,0,2,33,15,0,20,1,0,16,0,2,52,8,0,3,5,2,32,9,0,16,1,1,9,0,52,0,0,2,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"_page-data-cache"},{"t":"s","v":"nil?"},{"t":"s","v":">"},{"t":"s","v":"-"},{"t":"s","v":"now-ms"},{"t":"s","v":"ts"},{"t":"s","v":"_page-data-cache-ttl"},{"t":"s","v":"dict-set!"},{"t":"s","v":"data"}],"arity":1}},{"t":"s","v":"page-data-cache-set"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,16,1,1,3,0,20,4,0,48,0,65,2,0,52,0,0,3,50],"constants":[{"t":"s","v":"dict-set!"},{"t":"s","v":"_page-data-cache"},{"t":"s","v":"data"},{"t":"s","v":"ts"},{"t":"s","v":"now-ms"}],"arity":2}},{"t":"s","v":"invalidate-page-cache"},{"t":"code","v":{"bytecode":[51,1,0,1,0,20,3,0,52,2,0,1,52,0,0,2,5,20,4,0,1,5,0,1,6,0,1,7,0,16,0,65,2,0,48,1,5,20,8,0,1,10,0,16,0,52,9,0,2,49,1,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[16,0,18,0,52,0,0,2,6,34,16,0,5,16,0,18,0,1,3,0,52,2,0,2,52,1,0,2,33,13,0,20,5,0,16,0,2,52,4,0,3,32,1,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"starts-with?"},{"t":"s","v":"str"},{"t":"s","v":":"},{"t":"s","v":"dict-set!"},{"t":"s","v":"_page-data-cache"}],"arity":1,"upvalue-count":1}},{"t":"s","v":"keys"},{"t":"s","v":"_page-data-cache"},{"t":"s","v":"sw-post-message"},{"t":"s","v":"type"},{"t":"s","v":"invalidate"},{"t":"s","v":"page"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:cache invalidate "}],"arity":1}},{"t":"s","v":"invalidate-all-page-cache"},{"t":"code","v":{"bytecode":[52,0,0,0,21,1,0,5,20,2,0,1,3,0,1,4,0,1,5,0,1,6,0,65,2,0,48,1,5,20,7,0,1,8,0,49,1,50],"constants":[{"t":"s","v":"dict"},{"t":"s","v":"_page-data-cache"},{"t":"s","v":"sw-post-message"},{"t":"s","v":"type"},{"t":"s","v":"invalidate"},{"t":"s","v":"page"},{"t":"s","v":"*"},{"t":"s","v":"log-info"},{"t":"s","v":"sx:cache invalidate *"}]}},{"t":"s","v":"update-page-cache"},{"t":"code","v":{"bytecode":[20,0,0,16,0,52,1,0,0,48,2,17,2,20,2,0,16,2,16,1,48,2,5,20,3,0,1,5,0,16,0,52,4,0,2,49,1,50],"constants":[{"t":"s","v":"page-data-cache-key"},{"t":"s","v":"dict"},{"t":"s","v":"page-data-cache-set"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:cache update "}],"arity":2}},{"t":"s","v":"process-cache-directives"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,3,16,3,33,30,0,16,3,1,3,0,52,2,0,2,33,8,0,20,4,0,48,0,32,7,0,20,5,0,16,3,48,1,32,1,0,2,5,16,1,1,7,0,52,6,0,2,17,3,16,3,33,30,0,16,3,1,3,0,52,2,0,2,33,8,0,20,4,0,48,0,32,7,0,20,5,0,16,3,48,1,32,1,0,2,5,16,1,1,8,0,52,6,0,2,17,3,16,3,33,30,0,20,9,0,16,2,48,1,17,4,16,4,33,12,0,20,10,0,16,3,16,4,49,2,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-cache-invalidate"},{"t":"s","v":"="},{"t":"s","v":"*"},{"t":"s","v":"invalidate-all-page-cache"},{"t":"s","v":"invalidate-page-cache"},{"t":"s","v":"get"},{"t":"s","v":"cache-invalidate"},{"t":"s","v":"cache-update"},{"t":"s","v":"parse-sx-data"},{"t":"s","v":"update-page-cache"}],"arity":3}},{"t":"s","v":"_optimistic-snapshots"},{"t":"s","v":"optimistic-cache-update"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,2,16,2,33,35,0,16,1,16,2,48,1,17,3,20,2,0,16,0,16,2,52,1,0,3,5,20,3,0,16,0,16,3,48,2,5,16,3,32,1,0,2,50],"constants":[{"t":"s","v":"page-data-cache-get"},{"t":"s","v":"dict-set!"},{"t":"s","v":"_optimistic-snapshots"},{"t":"s","v":"page-data-cache-set"}],"arity":2}},{"t":"s","v":"optimistic-cache-revert"},{"t":"code","v":{"bytecode":[20,1,0,16,0,52,0,0,2,17,1,16,1,33,25,0,20,2,0,16,0,16,1,48,2,5,20,1,0,16,0,52,3,0,2,5,16,1,32,1,0,2,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"_optimistic-snapshots"},{"t":"s","v":"page-data-cache-set"},{"t":"s","v":"dict-delete!"}],"arity":1}},{"t":"s","v":"optimistic-cache-confirm"},{"t":"code","v":{"bytecode":[20,1,0,16,0,52,0,0,2,50],"constants":[{"t":"s","v":"dict-delete!"},{"t":"s","v":"_optimistic-snapshots"}],"arity":1}},{"t":"s","v":"submit-mutation"},{"t":"code","v":{"bytecode":[20,0,0,16,0,16,1,48,2,17,6,20,1,0,16,6,16,4,48,2,17,7,16,7,33,14,0,20,2,0,16,0,16,1,16,7,48,3,32,1,0,2,5,20,3,0,16,2,16,3,51,4,0,1,6,1,0,1,1,1,5,51,5,0,1,6,1,0,1,1,1,5,49,4,50],"constants":[{"t":"s","v":"page-data-cache-key"},{"t":"s","v":"optimistic-cache-update"},{"t":"s","v":"try-rerender-page"},{"t":"s","v":"execute-action"},{"t":"code","v":{"bytecode":[16,0,33,12,0,20,0,0,18,0,16,0,48,2,32,1,0,2,5,20,1,0,18,0,48,1,5,16,0,33,14,0,20,2,0,18,1,18,2,16,0,48,3,32,1,0,2,5,20,3,0,1,5,0,18,1,52,4,0,2,48,1,5,18,3,33,10,0,18,3,1,6,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"page-data-cache-set"},{"t":"s","v":"optimistic-cache-confirm"},{"t":"s","v":"try-rerender-page"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:optimistic confirmed "},{"t":"s","v":"confirmed"}],"arity":1,"upvalue-count":4}},{"t":"code","v":{"bytecode":[20,0,0,18,0,48,1,17,1,16,1,33,14,0,20,1,0,18,1,18,2,16,1,48,3,32,1,0,2,5,20,2,0,1,4,0,18,1,1,5,0,16,0,52,3,0,4,48,1,5,18,3,33,10,0,18,3,1,6,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"optimistic-cache-revert"},{"t":"s","v":"try-rerender-page"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:optimistic reverted "},{"t":"s","v":": "},{"t":"s","v":"reverted"}],"arity":1,"upvalue-count":4}}],"arity":6}},{"t":"s","v":"_is-online"},{"t":"s","v":"_offline-queue"},{"t":"s","v":"list"},{"t":"s","v":"offline-is-online?"},{"t":"code","v":{"bytecode":[20,0,0,50],"constants":[{"t":"s","v":"_is-online"}]}},{"t":"s","v":"offline-set-online!"},{"t":"code","v":{"bytecode":[16,0,21,0,0,50],"constants":[{"t":"s","v":"_is-online"}],"arity":1}},{"t":"s","v":"offline-queue-mutation"},{"t":"code","v":{"bytecode":[20,0,0,16,2,16,3,48,2,17,5,1,2,0,16,0,1,3,0,16,1,1,4,0,16,2,1,5,0,16,3,1,6,0,20,7,0,48,0,1,8,0,1,9,0,52,1,0,12,17,6,20,10,0,20,11,0,16,6,48,2,5,20,12,0,16,5,16,4,48,2,17,7,16,7,33,14,0,20,13,0,16,2,16,3,16,7,48,3,32,1,0,2,5,20,14,0,1,16,0,16,0,1,17,0,20,11,0,52,18,0,1,1,19,0,52,15,0,5,48,1,5,16,6,50],"constants":[{"t":"s","v":"page-data-cache-key"},{"t":"s","v":"dict"},{"t":"s","v":"action"},{"t":"s","v":"payload"},{"t":"s","v":"page"},{"t":"s","v":"params"},{"t":"s","v":"timestamp"},{"t":"s","v":"now-ms"},{"t":"s","v":"status"},{"t":"s","v":"pending"},{"t":"s","v":"append!"},{"t":"s","v":"_offline-queue"},{"t":"s","v":"optimistic-cache-update"},{"t":"s","v":"try-rerender-page"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:offline queued "},{"t":"s","v":" ("},{"t":"s","v":"len"},{"t":"s","v":" pending)"}],"arity":5}},{"t":"s","v":"offline-sync"},{"t":"code","v":{"bytecode":[51,1,0,20,2,0,52,0,0,2,17,0,16,0,52,4,0,1,52,3,0,1,33,34,0,20,5,0,1,7,0,16,0,52,8,0,1,1,9,0,52,6,0,3,48,1,5,51,11,0,16,0,52,10,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"filter"},{"t":"code","v":{"bytecode":[16,0,1,2,0,52,1,0,2,1,3,0,52,0,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"get"},{"t":"s","v":"status"},{"t":"s","v":"pending"}],"arity":1}},{"t":"s","v":"_offline-queue"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:offline syncing "},{"t":"s","v":"len"},{"t":"s","v":" mutations"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,2,0,52,1,0,2,16,0,1,3,0,52,1,0,2,51,4,0,1,0,51,5,0,1,0,49,4,50],"constants":[{"t":"s","v":"execute-action"},{"t":"s","v":"get"},{"t":"s","v":"action"},{"t":"s","v":"payload"},{"t":"code","v":{"bytecode":[18,0,1,1,0,1,2,0,52,0,0,3,5,20,3,0,1,5,0,18,0,1,7,0,52,6,0,2,52,4,0,2,49,1,50],"constants":[{"t":"s","v":"dict-set!"},{"t":"s","v":"status"},{"t":"s","v":"synced"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:offline synced "},{"t":"s","v":"get"},{"t":"s","v":"action"}],"arity":1,"upvalue-count":1}},{"t":"code","v":{"bytecode":[18,0,1,1,0,1,2,0,52,0,0,3,5,20,3,0,1,5,0,18,0,1,7,0,52,6,0,2,1,8,0,16,0,52,4,0,4,49,1,50],"constants":[{"t":"s","v":"dict-set!"},{"t":"s","v":"status"},{"t":"s","v":"failed"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:offline sync failed "},{"t":"s","v":"get"},{"t":"s","v":"action"},{"t":"s","v":": "}],"arity":1,"upvalue-count":1}}],"arity":1}}]}},{"t":"s","v":"offline-pending-count"},{"t":"code","v":{"bytecode":[51,2,0,20,3,0,52,1,0,2,52,0,0,1,50],"constants":[{"t":"s","v":"len"},{"t":"s","v":"filter"},{"t":"code","v":{"bytecode":[16,0,1,2,0,52,1,0,2,1,3,0,52,0,0,2,50],"constants":[{"t":"s","v":"="},{"t":"s","v":"get"},{"t":"s","v":"status"},{"t":"s","v":"pending"}],"arity":1}},{"t":"s","v":"_offline-queue"}]}},{"t":"s","v":"offline-aware-mutation"},{"t":"code","v":{"bytecode":[20,0,0,33,20,0,20,1,0,16,0,16,1,16,2,16,3,16,4,16,5,49,6,32,32,0,20,2,0,16,2,16,3,16,0,16,1,16,4,48,5,5,16,5,33,10,0,16,5,1,3,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"_is-online"},{"t":"s","v":"submit-mutation"},{"t":"s","v":"offline-queue-mutation"},{"t":"s","v":"queued"}],"arity":6}},{"t":"s","v":"current-page-layout"},{"t":"code","v":{"bytecode":[20,0,0,20,1,0,48,0,48,1,17,0,20,2,0,16,0,20,3,0,48,2,17,1,16,1,52,4,0,1,33,6,0,1,5,0,32,17,0,16,1,1,7,0,52,6,0,2,6,34,4,0,5,1,5,0,50],"constants":[{"t":"s","v":"url-pathname"},{"t":"s","v":"browser-location-href"},{"t":"s","v":"find-matching-route"},{"t":"s","v":"_page-routes"},{"t":"s","v":"nil?"},{"t":"s","v":""},{"t":"s","v":"get"},{"t":"s","v":"layout"}]}},{"t":"s","v":"swap-rendered-content"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,5,20,1,0,16,0,1,2,0,48,2,5,20,3,0,16,0,16,1,48,2,5,20,4,0,16,0,48,1,5,20,5,0,16,0,48,1,5,20,6,0,16,0,48,1,5,20,7,0,16,0,48,1,5,20,8,0,48,0,5,20,9,0,16,0,1,10,0,1,12,0,16,2,52,11,0,2,48,3,5,20,13,0,1,15,0,16,2,52,14,0,2,49,1,50],"constants":[{"t":"s","v":"dispose-islands-in"},{"t":"s","v":"dom-set-text-content"},{"t":"s","v":""},{"t":"s","v":"dom-append"},{"t":"s","v":"hoist-head-elements-full"},{"t":"s","v":"process-elements"},{"t":"s","v":"sx-hydrate-elements"},{"t":"s","v":"sx-hydrate-islands"},{"t":"s","v":"run-post-render-hooks"},{"t":"s","v":"dom-dispatch"},{"t":"s","v":"sx:clientRoute"},{"t":"s","v":"dict"},{"t":"s","v":"pathname"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:route client "}],"arity":3}},{"t":"s","v":"resolve-route-target"},{"t":"code","v":{"bytecode":[16,0,6,33,14,0,5,16,0,1,2,0,52,1,0,2,52,0,0,1,33,10,0,20,3,0,16,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"="},{"t":"s","v":"true"},{"t":"s","v":"dom-query"}],"arity":1}},{"t":"s","v":"deps-satisfied?"},{"t":"code","v":{"bytecode":[16,0,1,1,0,52,0,0,2,17,1,20,2,0,48,0,17,2,16,1,52,3,0,1,6,34,7,0,5,16,1,52,4,0,1,33,4,0,3,32,11,0,51,6,0,1,2,16,1,52,5,0,2,50],"constants":[{"t":"s","v":"get"},{"t":"s","v":"deps"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"nil?"},{"t":"s","v":"empty?"},{"t":"s","v":"every?"},{"t":"code","v":{"bytecode":[18,0,16,0,52,0,0,2,50],"constants":[{"t":"s","v":"contains?"}],"arity":1,"upvalue-count":1}}],"arity":1}},{"t":"s","v":"try-client-route"},{"t":"code","v":{"bytecode":[20,0,0,16,0,20,1,0,48,2,17,2,16,2,52,2,0,1,33,29,0,20,3,0,1,5,0,20,1,0,52,6,0,1,1,7,0,16,0,52,4,0,4,48,1,5,4,32,233,2,16,2,1,9,0,52,8,0,2,6,34,4,0,5,1,10,0,17,3,20,11,0,48,0,17,4,16,3,16,4,52,13,0,2,52,12,0,1,33,29,0,20,3,0,1,14,0,16,4,1,15,0,16,3,1,16,0,16,0,52,4,0,6,48,1,5,4,32,163,2,16,2,1,17,0,52,8,0,2,17,5,16,2,1,18,0,52,8,0,2,6,34,4,0,5,65,0,0,17,6,16,2,1,19,0,52,8,0,2,17,7,16,2,1,20,0,52,8,0,2,17,8,16,5,52,2,0,1,6,34,7,0,5,16,5,52,21,0,1,33,19,0,20,22,0,1,23,0,16,0,52,4,0,2,48,1,5,4,32,72,2,20,24,0,16,1,48,1,17,9,16,9,52,2,0,1,33,19,0,20,22,0,1,25,0,16,1,52,4,0,2,48,1,5,4,32,35,2,20,26,0,16,2,48,1,52,12,0,1,33,19,0,20,3,0,1,27,0,16,8,52,4,0,2,48,1,5,4,32,2,2,16,2,1,28,0,52,8,0,2,17,10,16,10,6,33,11,0,5,16,10,52,21,0,1,52,12,0,1,17,11,16,2,1,29,0,52,8,0,2,17,12,16,12,33,78,0,16,12,1,30,0,52,8,0,2,6,34,5,0,5,52,31,0,0,17,13,16,12,1,32,0,52,8,0,2,6,34,5,0,5,52,31,0,0,17,14,20,3,0,1,33,0,16,8,1,34,0,16,13,52,6,0,1,1,35,0,16,14,52,6,0,1,1,36,0,52,4,0,7,48,1,32,1,0,2,5,16,11,33,10,0,20,37,0,16,10,48,1,32,1,0,2,5,16,2,1,38,0,52,8,0,2,33,44,0,20,3,0,1,39,0,16,0,52,4,0,2,48,1,5,20,40,0,16,9,16,0,20,41,0,16,9,20,42,0,48,0,20,43,0,48,3,48,3,5,3,32,59,1,16,2,1,44,0,52,8,0,2,33,194,0,20,45,0,16,8,16,7,48,2,17,13,20,46,0,16,13,48,1,17,14,16,14,33,123,0,16,6,16,7,16,14,52,47,0,3,17,15,16,11,33,36,0,20,3,0,1,48,0,16,0,52,4,0,2,48,1,5,20,49,0,16,5,16,15,51,50,0,1,0,1,9,48,3,5,3,32,67,0,20,51,0,16,5,16,15,48,2,17,16,16,16,52,2,0,1,33,19,0,20,22,0,1,52,0,16,0,52,4,0,2,48,1,5,4,32,28,0,20,3,0,1,53,0,16,0,52,4,0,2,48,1,5,20,54,0,16,9,16,16,16,0,48,3,5,3,32,43,0,20,3,0,1,55,0,16,0,52,4,0,2,48,1,5,20,56,0,16,8,16,7,51,57,0,1,13,1,6,1,7,1,11,1,5,1,0,1,9,48,3,5,3,32,109,0,16,11,33,42,0,20,3,0,1,58,0,16,0,52,4,0,2,48,1,5,20,49,0,16,5,16,6,16,7,52,47,0,2,51,59,0,1,0,1,9,48,3,5,3,32,62,0,16,6,16,7,52,47,0,2,17,13,20,51,0,16,5,16,13,48,2,17,14,16,14,52,2,0,1,33,19,0,20,3,0,1,60,0,16,0,52,4,0,2,48,1,5,4,32,13,0,20,54,0,16,9,16,14,16,0,48,3,5,3,50],"constants":[{"t":"s","v":"find-matching-route"},{"t":"s","v":"_page-routes"},{"t":"s","v":"nil?"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"sx:route no match ("},{"t":"s","v":"len"},{"t":"s","v":" routes) "},{"t":"s","v":"get"},{"t":"s","v":"layout"},{"t":"s","v":""},{"t":"s","v":"current-page-layout"},{"t":"s","v":"not"},{"t":"s","v":"="},{"t":"s","v":"sx:route server (layout: "},{"t":"s","v":" -> "},{"t":"s","v":") "},{"t":"s","v":"content"},{"t":"s","v":"closure"},{"t":"s","v":"params"},{"t":"s","v":"name"},{"t":"s","v":"empty?"},{"t":"s","v":"log-warn"},{"t":"s","v":"sx:route no content for "},{"t":"s","v":"resolve-route-target"},{"t":"s","v":"sx:route target not found: "},{"t":"s","v":"deps-satisfied?"},{"t":"s","v":"sx:route deps miss for "},{"t":"s","v":"io-deps"},{"t":"s","v":"render-plan"},{"t":"s","v":"server"},{"t":"s","v":"list"},{"t":"s","v":"client"},{"t":"s","v":"sx:route plan "},{"t":"s","v":" — "},{"t":"s","v":" server, "},{"t":"s","v":" client"},{"t":"s","v":"register-io-deps"},{"t":"s","v":"stream"},{"t":"s","v":"sx:route streaming "},{"t":"s","v":"fetch-streaming"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"s","v":"has-data"},{"t":"s","v":"page-data-cache-key"},{"t":"s","v":"page-data-cache-get"},{"t":"s","v":"merge"},{"t":"s","v":"sx:route client+cache+async "},{"t":"s","v":"try-async-eval-content"},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,33,48,0,20,1,0,1,3,0,18,0,1,4,0,52,2,0,3,48,1,5,20,5,0,18,1,18,0,20,6,0,18,1,20,7,0,48,0,20,8,0,48,3,1,9,0,49,4,32,11,0,20,10,0,18,1,16,0,18,0,49,3,50],"constants":[{"t":"s","v":"nil?"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:route cache+async eval failed for "},{"t":"s","v":" — server fallback"},{"t":"s","v":"fetch-and-restore"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"n","v":0},{"t":"s","v":"swap-rendered-content"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"try-eval-content"},{"t":"s","v":"sx:route cached eval failed for "},{"t":"s","v":"sx:route client+cache "},{"t":"s","v":"swap-rendered-content"},{"t":"s","v":"sx:route client+data "},{"t":"s","v":"resolve-page-data"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,48,2,5,18,1,18,2,16,0,52,1,0,3,17,1,18,3,33,19,0,20,2,0,18,4,16,1,51,3,0,0,5,0,6,49,3,32,79,0,20,4,0,18,4,16,1,48,2,17,2,16,2,52,5,0,1,33,48,0,20,6,0,1,8,0,18,5,1,9,0,52,7,0,3,48,1,5,20,10,0,18,6,18,5,20,11,0,18,6,20,12,0,48,0,20,13,0,48,3,1,14,0,49,4,32,11,0,20,15,0,18,6,16,2,18,5,49,3,50],"constants":[{"t":"s","v":"page-data-cache-set"},{"t":"s","v":"merge"},{"t":"s","v":"try-async-eval-content"},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,33,48,0,20,1,0,1,3,0,18,0,1,4,0,52,2,0,3,48,1,5,20,5,0,18,1,18,0,20,6,0,18,1,20,7,0,48,0,20,8,0,48,3,1,9,0,49,4,32,11,0,20,10,0,18,1,16,0,18,0,49,3,50],"constants":[{"t":"s","v":"nil?"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:route data+async eval failed for "},{"t":"s","v":" — server fallback"},{"t":"s","v":"fetch-and-restore"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"n","v":0},{"t":"s","v":"swap-rendered-content"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"try-eval-content"},{"t":"s","v":"nil?"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:route data eval failed for "},{"t":"s","v":" — server fallback"},{"t":"s","v":"fetch-and-restore"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"n","v":0},{"t":"s","v":"swap-rendered-content"}],"arity":1,"upvalue-count":7}},{"t":"s","v":"sx:route client+async "},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,33,48,0,20,1,0,1,3,0,18,0,1,4,0,52,2,0,3,48,1,5,20,5,0,18,1,18,0,20,6,0,18,1,20,7,0,48,0,20,8,0,48,3,1,9,0,49,4,32,11,0,20,10,0,18,1,16,0,18,0,49,3,50],"constants":[{"t":"s","v":"nil?"},{"t":"s","v":"log-warn"},{"t":"s","v":"str"},{"t":"s","v":"sx:route async eval failed for "},{"t":"s","v":" — server fallback"},{"t":"s","v":"fetch-and-restore"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"n","v":0},{"t":"s","v":"swap-rendered-content"}],"arity":1,"upvalue-count":2}},{"t":"s","v":"sx:route server (eval failed) "}],"arity":2}},{"t":"s","v":"bind-client-route-link"},{"t":"code","v":{"bytecode":[20,0,0,16,0,16,1,51,1,0,1,0,1,1,49,3,50],"constants":[{"t":"s","v":"bind-client-route-click"},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,49,2,50],"constants":[{"t":"s","v":"bind-boost-link"}],"upvalue-count":2}}],"arity":2}},{"t":"s","v":"process-sse"},{"t":"code","v":{"bytecode":[51,1,0,20,2,0,16,0,6,34,6,0,5,20,3,0,48,0,1,4,0,48,2,52,0,0,2,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,33,21,0,20,3,0,16,0,1,2,0,48,2,5,20,4,0,16,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"sse"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"bind-sse"}],"arity":1}},{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"[sx-sse]"}],"arity":1}},{"t":"s","v":"bind-sse"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,1,16,1,33,37,0,20,2,0,16,1,16,0,48,2,17,2,20,3,0,16,0,48,1,17,3,20,4,0,16,2,16,3,51,5,0,1,0,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-sse"},{"t":"s","v":"event-source-connect"},{"t":"s","v":"parse-sse-swap"},{"t":"s","v":"event-source-listen"},{"t":"code","v":{"bytecode":[20,0,0,18,0,16,0,49,2,50],"constants":[{"t":"s","v":"bind-sse-swap"}],"arity":1,"upvalue-count":1}}],"arity":1}},{"t":"s","v":"bind-sse-swap"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,2,20,1,0,20,2,0,16,0,1,3,0,48,2,20,4,0,20,5,0,48,0,1,6,0,48,2,48,2,17,3,16,3,1,8,0,52,7,0,2,17,4,16,3,1,9,0,52,7,0,2,17,5,16,1,52,10,0,1,17,6,16,6,52,12,0,1,52,11,0,1,33,88,0,20,13,0,16,2,48,1,5,16,6,1,15,0,52,14,0,2,33,49,0,20,16,0,16,6,48,1,17,7,20,17,0,1,18,0,2,48,2,17,8,20,19,0,16,8,16,7,48,2,5,20,20,0,16,5,51,21,0,1,2,1,8,1,4,49,2,32,16,0,20,20,0,16,5,51,22,0,1,2,1,6,1,4,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"resolve-target"},{"t":"s","v":"parse-swap-spec"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-swap"},{"t":"s","v":"dom-has-class?"},{"t":"s","v":"dom-body"},{"t":"s","v":"sx-transitions"},{"t":"s","v":"get"},{"t":"s","v":"style"},{"t":"s","v":"transition"},{"t":"s","v":"trim"},{"t":"s","v":"not"},{"t":"s","v":"empty?"},{"t":"s","v":"dispose-islands-in"},{"t":"s","v":"starts-with?"},{"t":"s","v":"("},{"t":"s","v":"sx-render"},{"t":"s","v":"dom-create-element"},{"t":"s","v":"div"},{"t":"s","v":"dom-append"},{"t":"s","v":"with-transition"},{"t":"code","v":{"bytecode":[20,0,0,18,0,20,1,0,18,1,48,1,18,2,48,3,5,20,2,0,18,0,49,1,50],"constants":[{"t":"s","v":"swap-dom-nodes"},{"t":"s","v":"children-to-fragment"},{"t":"s","v":"post-swap"}],"upvalue-count":3}},{"t":"code","v":{"bytecode":[20,0,0,18,0,18,1,18,2,48,3,5,20,1,0,18,0,49,1,50],"constants":[{"t":"s","v":"swap-html-string"},{"t":"s","v":"post-swap"}],"upvalue-count":3}}],"arity":2}},{"t":"s","v":"bind-inline-handlers"},{"t":"code","v":{"bytecode":[51,1,0,20,2,0,16,0,6,34,6,0,5,20,3,0,48,0,1,4,0,48,2,52,0,0,2,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[51,1,0,1,0,20,2,0,16,0,48,1,52,0,0,2,50],"constants":[{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[16,0,52,0,0,1,17,1,16,0,1,2,0,52,1,0,2,17,2,16,1,1,4,0,52,3,0,2,33,83,0,16,1,1,6,0,52,5,0,2,17,3,20,8,0,18,0,1,10,0,16,3,52,9,0,2,48,2,52,7,0,1,33,45,0,20,11,0,18,0,1,10,0,16,3,52,9,0,2,48,2,5,20,12,0,16,2,48,1,17,4,20,13,0,18,0,16,3,51,14,0,0,0,1,4,49,3,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"first"},{"t":"s","v":"nth"},{"t":"n","v":1},{"t":"s","v":"starts-with?"},{"t":"s","v":"sx-on:"},{"t":"s","v":"slice"},{"t":"n","v":6},{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"str"},{"t":"s","v":"on:"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"sx-parse"},{"t":"s","v":"dom-on"},{"t":"code","v":{"bytecode":[20,0,0,52,1,0,0,48,1,17,1,20,2,0,16,1,1,3,0,16,0,48,3,5,20,2,0,16,1,1,4,0,18,0,48,3,5,20,2,0,16,1,1,5,0,20,6,0,16,0,48,1,48,3,5,51,8,0,1,1,18,1,52,7,0,2,50],"constants":[{"t":"s","v":"env-extend"},{"t":"s","v":"dict"},{"t":"s","v":"env-bind!"},{"t":"s","v":"event"},{"t":"s","v":"this"},{"t":"s","v":"detail"},{"t":"s","v":"event-detail"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,0,0,16,0,18,0,49,2,50],"constants":[{"t":"s","v":"eval-expr"}],"arity":1,"upvalue-count":1}}],"arity":1,"upvalue-count":2}}],"arity":1,"upvalue-count":1}},{"t":"s","v":"dom-attr-list"}],"arity":1}},{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"[sx-on\\:]"}],"arity":1}},{"t":"s","v":"bind-preload-for"},{"t":"code","v":{"bytecode":[20,0,0,16,0,1,1,0,48,2,17,1,16,1,33,76,0,16,1,1,3,0,52,2,0,2,33,13,0,1,3,0,1,5,0,52,4,0,2,32,7,0,1,6,0,52,4,0,1,17,2,16,1,1,3,0,52,2,0,2,33,6,0,1,7,0,32,3,0,1,8,0,17,3,20,9,0,16,0,16,2,16,3,51,10,0,1,0,49,4,32,1,0,2,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-preload"},{"t":"s","v":"="},{"t":"s","v":"mousedown"},{"t":"s","v":"list"},{"t":"s","v":"touchstart"},{"t":"s","v":"mouseover"},{"t":"n","v":0},{"t":"n","v":100},{"t":"s","v":"bind-preload"},{"t":"code","v":{"bytecode":[20,0,0,18,0,48,1,17,0,16,0,33,32,0,20,1,0,16,0,1,3,0,52,2,0,2,20,4,0,18,0,20,5,0,48,0,20,6,0,48,3,49,2,32,1,0,2,50],"constants":[{"t":"s","v":"get-verb-info"},{"t":"s","v":"do-preload"},{"t":"s","v":"get"},{"t":"s","v":"url"},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"}],"upvalue-count":1}}],"arity":1}},{"t":"s","v":"do-preload"},{"t":"code","v":{"bytecode":[20,1,0,20,2,0,16,0,48,2,52,0,0,1,33,15,0,20,3,0,16,0,16,1,20,2,0,49,3,32,1,0,2,50],"constants":[{"t":"s","v":"nil?"},{"t":"s","v":"preload-cache-get"},{"t":"s","v":"_preload-cache"},{"t":"s","v":"fetch-preload"}],"arity":2}},{"t":"s","v":"VERB_SELECTOR"},{"t":"s","v":"str"},{"t":"s","v":"[sx-get],[sx-post],[sx-put],[sx-delete],[sx-patch]"},{"t":"s","v":"process-elements"},{"t":"code","v":{"bytecode":[20,0,0,16,0,6,34,6,0,5,20,1,0,48,0,20,2,0,48,2,17,1,20,3,0,1,5,0,16,1,52,6,0,1,1,7,0,52,4,0,3,48,1,5,51,9,0,16,1,52,8,0,2,5,20,10,0,16,0,48,1,5,20,11,0,16,0,48,1,5,20,12,0,16,0,48,1,5,20,13,0,16,0,49,1,50],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"VERB_SELECTOR"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"DEBUG process-elements: found "},{"t":"s","v":"length"},{"t":"s","v":" verb elements"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,33,21,0,20,3,0,16,0,1,2,0,48,2,5,20,4,0,16,0,49,1,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"verb"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"process-one"}],"arity":1}},{"t":"s","v":"process-boosted"},{"t":"s","v":"process-sse"},{"t":"s","v":"bind-inline-handlers"},{"t":"s","v":"process-emit-elements"}],"arity":1}},{"t":"s","v":"process-one"},{"t":"code","v":{"bytecode":[20,0,0,16,0,48,1,17,1,16,1,33,87,0,20,2,0,16,0,1,3,0,48,2,52,1,0,1,33,66,0,20,4,0,1,6,0,20,7,0,16,0,48,1,1,8,0,20,9,0,16,0,1,10,0,48,2,1,11,0,20,9,0,16,0,1,12,0,48,2,52,5,0,6,48,1,5,20,13,0,16,0,16,1,48,2,5,20,14,0,16,0,49,1,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"get-verb-info"},{"t":"s","v":"not"},{"t":"s","v":"dom-has-attr?"},{"t":"s","v":"sx-disable"},{"t":"s","v":"log-info"},{"t":"s","v":"str"},{"t":"s","v":"DEBUG process-one: binding triggers for "},{"t":"s","v":"dom-tag-name"},{"t":"s","v":" href="},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"href"},{"t":"s","v":" sx-get="},{"t":"s","v":"sx-get"},{"t":"s","v":"bind-triggers"},{"t":"s","v":"bind-preload-for"}],"arity":1}},{"t":"s","v":"process-emit-elements"},{"t":"code","v":{"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],"constants":[{"t":"s","v":"dom-query-all"},{"t":"s","v":"dom-body"},{"t":"s","v":"[data-sx-emit]"},{"t":"s","v":"for-each"},{"t":"code","v":{"bytecode":[20,1,0,16,0,1,2,0,48,2,52,0,0,1,33,52,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,33,20,0,20,6,0,16,0,1,7,0,51,8,0,1,0,1,1,49,3,32,1,0,2,32,1,0,2,50],"constants":[{"t":"s","v":"not"},{"t":"s","v":"is-processed?"},{"t":"s","v":"emit"},{"t":"s","v":"mark-processed!"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"data-sx-emit"},{"t":"s","v":"dom-on"},{"t":"s","v":"click"},{"t":"code","v":{"bytecode":[20,0,0,18,0,1,1,0,48,2,17,1,16,1,33,10,0,20,2,0,16,1,48,1,32,4,0,52,3,0,0,17,2,20,4,0,18,0,18,1,16,2,49,3,50],"constants":[{"t":"s","v":"dom-get-attr"},{"t":"s","v":"data-sx-emit-detail"},{"t":"s","v":"json-parse"},{"t":"s","v":"dict"},{"t":"s","v":"dom-dispatch"}],"arity":1,"upvalue-count":2}}],"arity":1}}],"arity":1}},{"t":"s","v":"handle-popstate"},{"t":"code","v":{"bytecode":[20,0,0,48,0,17,1,20,1,0,1,2,0,48,1,17,2,16,2,33,44,0,20,3,0,16,2,1,4,0,48,2,17,4,16,4,6,33,14,0,5,16,4,1,7,0,52,6,0,2,52,5,0,1,33,5,0,16,4,32,1,0,2,32,1,0,2,17,3,16,3,6,34,4,0,5,1,8,0,17,3,20,1,0,16,3,48,1,17,4,20,9,0,16,1,48,1,17,5,16,4,33,58,0,20,10,0,16,5,16,3,48,2,33,13,0,20,11,0,1,12,0,16,0,49,2,32,30,0,20,13,0,16,4,20,14,0,48,0,20,15,0,48,3,17,6,20,16,0,16,4,16,1,16,6,16,0,49,4,32,1,0,2,50],"constants":[{"t":"s","v":"browser-location-href"},{"t":"s","v":"dom-query"},{"t":"s","v":"[sx-boost]"},{"t":"s","v":"dom-get-attr"},{"t":"s","v":"sx-boost"},{"t":"s","v":"not"},{"t":"s","v":"="},{"t":"s","v":"true"},{"t":"s","v":"#main-panel"},{"t":"s","v":"url-pathname"},{"t":"s","v":"try-client-route"},{"t":"s","v":"browser-scroll-to"},{"t":"n","v":0},{"t":"s","v":"build-request-headers"},{"t":"s","v":"loaded-component-names"},{"t":"s","v":"_css-hash"},{"t":"s","v":"fetch-and-restore"}],"arity":1}},{"t":"s","v":"engine-init"},{"t":"code","v":{"bytecode":[20,0,0,48,0,5,20,1,0,2,48,1,5,20,2,0,2,48,1,5,20,3,0,2,49,1,50],"constants":[{"t":"s","v":"init-css-tracking"},{"t":"s","v":"sx-process-scripts"},{"t":"s","v":"sx-hydrate"},{"t":"s","v":"process-elements"}]}}]}} \ No newline at end of file