@async/framework 0.11.16 → 0.11.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/browser.d.ts +45 -3
- package/browser.js +746 -47
- package/browser.min.js +1 -1
- package/browser.ts +746 -47
- package/browser.umd.js +746 -47
- package/browser.umd.min.js +1 -1
- package/framework.d.ts +45 -3
- package/framework.ts +746 -47
- package/package.json +1 -1
- package/server.js +746 -47
package/browser.umd.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e){const t=function(){"use strict";const e=(()=>{const e=Symbol.for("@async/framework.asyncSignal");function t(e){if(null==e)return null;const t={name:r(e),message:n(e)},o=function(e){if(!e||"object"!=typeof e||!Object.hasOwn(e,"code"))return;const t=e.code;return"string"==typeof t||"number"==typeof t?t:void 0}(e);return void 0!==o&&(t.code=o),t}function r(e){return e&&"object"==typeof e&&"string"==typeof e.name&&e.name.length>0?e.name:"Error"}function n(e){return e instanceof Error||e&&"object"==typeof e&&"string"==typeof e.message?e.message:String(e)}return{asyncSignal:function r(n,o){if("string"!=typeof n||0===n.length)throw new TypeError("asyncSignal(id, fn) requires a non-empty string id.");if("function"!=typeof o)throw new TypeError("asyncSignal(id, fn) requires a function.");let s,a,i,c=!1,u=null,l="idle",f=0,p=n,h=0,d=!1;const y=new Set,g=new Set,w={[e]:!0,kind:"async-signal",get id(){return p},get value(){return s},get loading(){return c},get error(){return u},get status(){return l},get version(){return f},set:e=>(s=e,c=!1,u=null,l="ready",A(),s),refresh(){if(!a||d)throw new Error(`Async signal "${p}" is not registered.`);S(i,new Error(`Async signal "${p}" refreshed.`));const e=a,t=f+1;f=t,c=!0,u=null,l="loading";const r=function(e,t,r){const n=new AbortController,o=n.signal,s=function(e,t){const r=e._context?.()??{},n={signals:e,router:r.router,loader:r.loader,cache:r.cache,abort:t,scheduler:r.scheduler};return{signals:e,server:"function"==typeof r.server?._withContext?r.server._withContext(n):r.server,router:r.router,loader:r.loader,cache:r.cache,scheduler:r.scheduler}}(e,o),a={token:++h,version:r,registry:e,id:t,controller:n,abort:o,...s};return function(e,t,r){Object.defineProperty(e,"cancel",{configurable:!0,enumerable:!1,value(e){"function"!=typeof r?t.abort(e):r(e)}})}(o,n,e=>{S(a,e,{settle:!0,notifyChange:!0})}),a}(e,p,t);i=r,A();const n=function(e){return{signals:e.signals,id:e.id,get server(){return e.server},get router(){return e.router},get loader(){return e.loader},get cache(){return e.cache},get scheduler(){return e.scheduler},get version(){return e.version},get abort(){return e.abort},refresh:()=>w.refresh()}}(r);let y;try{y=e._collectDependencies(()=>o.call(n))}catch(e){return m(r,e),Promise.reject(e)}return function(e,t){if(b(t)){for(const e of g)e();g.clear();for(const r of e){const e=String(r).split(".")[0];e&&e!==p&&g.add(t.registry.subscribe(r,()=>$()))}}}(y.dependencies,r),Promise.resolve(y.value).then(e=>b(r)?(s=e,c=!1,u=null,l="ready",i=void 0,A(),s):s,e=>b(r)?(m(r,e),s):s)},cancel:e=>(v(e,{settle:!0,notifyChange:!0}),s),subscribe(e){if("function"!=typeof e)throw new TypeError("subscribe(fn) requires a function.");return y.add(e),()=>y.delete(e)},snapshot:()=>({value:void 0===s&&null!==u?null:s,loading:c,error:t(u),status:l,version:f}),_cloneSignalDeclaration:()=>r(n,o),_restore:(e={})=>function(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&Object.hasOwn(e,"value")&&(Object.hasOwn(e,"loading")||Object.hasOwn(e,"error")||Object.hasOwn(e,"status")||Object.hasOwn(e,"version"))}(e)?(v(new Error(`Async signal "${p}" restored from snapshot.`)),s=e.value,c=Boolean(e.loading),u=function(e){return t(e)}(e.error),l="string"==typeof e.status?e.status:function({value:e,loading:t,error:r}){return t?"loading":r?"error":void 0===e?"idle":"ready"}({value:s,loading:c,error:u}),Number.isFinite(e.version)&&(f=e.version),A(),w):w.set(e),_bindRegistry(e,t){a=e,p=t;const r=()=>{d||a!==e||"idle"!==l||w.refresh()},n=a._context?.().scheduler;n?n.enqueue("async",r,{scope:p,key:`asyncSignal:${p}:initial`}):queueMicrotask(r)},_dispose(){if(!d){d=!0,function(){const e=a?._context?.().scheduler;e?.cancelScope?.(p)}(),v(new Error(`Async signal "${p}" disposed.`));for(const e of g)e();g.clear(),y.clear(),a=void 0}}};function m(e,t){b(e)&&(c=!1,u=t,l="error",i=void 0,A())}function b(e){return Boolean(e)&&!d&&i===e&&e.token===h&&e.registry===a&&e.id===p&&!e.abort.aborted}function v(e,t={}){const r=i,n=Boolean(r)||c;r?S(r,e):n&&(h+=1),t.settle&&n&&!d&&E(t.notifyChange)}function S(e,t,r={}){if(!e)return;const n=i===e;n&&(h+=1,i=void 0),e.abort.aborted||e.controller.abort(t),n&&r.settle&&!d&&E(r.notifyChange)}function E(e=!1){const t=void 0===s?"idle":"ready",r=c||null!==u||l!==t;c=!1,u=null,l=t,e&&r&&A()}function $(){if(d||!a)return;S(i,new Error(`Async signal "${p}" dependency changed.`));const e=a?._context?.().scheduler;e?e.enqueue("async",()=>w.refresh(),{scope:p,key:`asyncSignal:${p}:refresh`}):w.refresh()}function A(){for(const e of[...y])e(w)}return w},isAsyncSignal:function(t){return Boolean(t?.[e])}}})(),t=(()=>{const e=new Set(["handler","component","asyncSignal","partial","route"]);function t(t={}){const r=function(e){if("string"!=typeof e||0===e.length)throw new TypeError("registryAssets.baseUrl must be a non-empty string.");return i(e)||e.startsWith("/")||e.startsWith("./")||e.startsWith("../")?a(e):`/${s(e)}`}(t.baseUrl??"_async"),n={component:"component",handler:"handler",asyncSignal:"asyncSignal",partial:"partial",route:"route",...t.paths??{}};for(const[t,r]of Object.entries(n))if(e.has(t)&&("string"!=typeof r||0===r.length))throw new TypeError(`Registry asset path for "${t}" must be a non-empty string.`);return{baseUrl:r,paths:n}}function r(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.url)}function n(t,n,c,u){if(!e.has(t))throw new Error(`Registry type "${t}" does not support lazy descriptors.`);if(!r(c))throw new TypeError(`Registry descriptor for "${t}:${n}" requires a url.`);const{path:l,hash:f}=function(e){const t=e.indexOf("#");return-1===t?{path:e,hash:""}:{path:e.slice(0,t),hash:e.slice(t+1)}}(c.url),p=function(e,t,r){if(i(t)||t.startsWith("/")||t.startsWith("./")||t.startsWith("../"))return t;const n=r.paths[e]??e;return function(...e){const[t,...r]=e;return[a(t),...r.map(s)].filter(Boolean).join("/")}(r.baseUrl,n,t)}(t,l,u);return{moduleUrl:p,exportNames:f?[f]:o(n,l),url:f?`${p}#${f}`:p}}function o(e,t){const r=[],n=e.split(".").filter(Boolean).at(-1),o=t.split("/").filter(Boolean).at(-1)?.replace(/\.[^.]+$/,"");for(const e of[n,o,"default"])e&&!r.includes(e)&&r.push(e);return r}function s(e){return String(e).replace(/^\/+|\/+$/g,"")}function a(e){return String(e).replace(/\/+$/g,"")}function i(e){return/^[A-Za-z][A-Za-z\d+.-]*:/.test(e)}function c(e){return!e||"object"!=typeof e||Array.isArray(e)?JSON.stringify(e):JSON.stringify(Object.keys(e).sort().map(t=>[t,e[t]]))}return{defineRegistrySnapshot:function(e={}){if(!e||"object"!=typeof e||Array.isArray(e))throw new TypeError("defineRegistrySnapshot(snapshot) requires an object.");return e},createLazyRegistry:function(e={}){const o=t(e.registryAssets??e.assets),s=e.importModule??(e=>import(e)),a=new Map,i=new Map;return{registryAssets:o,resolveUrl:(e,t,r)=>n(e,t,r,o),async resolve(e,t,c){if(!r(c))return c;const u=`${e}:${t}`;if(i.has(u))return i.get(u);const l=n(e,t,c,o);let f,p=a.get(l.moduleUrl);p||(p=Promise.resolve().then(()=>s(l.moduleUrl)),a.set(l.moduleUrl,p));try{f=await p}catch(r){throw a.get(l.moduleUrl)===p&&a.delete(l.moduleUrl),new Error(`Lazy ${e} "${t}" failed to import ${l.moduleUrl}: ${h=r,h instanceof Error?h.message:String(h)}`,{cause:r})}var h;const d=function(e,t,r,n){for(const r of t)if(r in e)return e[r];throw new Error(`Lazy ${r} "${n}" did not export ${t.map(e=>`"${e}"`).join(", ")}.`)}(f,l.exportNames,e,t);return i.set(u,d),d},inspect:()=>({registryAssets:o,modules:[...a.keys()],exports:[...i.keys()]})}},normalizeRegistryAssets:t,isLazyDescriptor:r,sameRegistryValue:function(e,t){return e===t||!(!r(e)||!r(t))&&c(e)===c(t)},publicRegistryValue:function(e,t){return r(e)?{...e}:{id:t}}}})(),r=(()=>{const{publicRegistryValue:e}=t,r=new Set(["signal","handler","server","partial","route","component","asyncSignal"]),n=new Set(["cache.browser","cache.server"]),o=new Set(["cache.browser.entries","cache.server.entries"]),s=new Set([...r,...n,...o]);function a(e){if(!s.has(e))throw new Error(`Unknown Async registry type "${e}".`);return e}function i(e,t){if("string"!=typeof t||0===t.length)throw new TypeError(`${e} id must be a non-empty string.`)}function c(t,r,n,s){return"server"===t&&"browser"===s.target?e(n,r):o.has(t)?n?.value:n}function u(e,t){return"cache.server.entries"===e&&"browser"===t}function l(e){const t={};for(const[r,n]of e)t[r]="function"==typeof n?.snapshot?n.snapshot():n?.value??n;return t}function f(t){const r={};for(const[n,o]of t)r[n]=e(o,n);return r}function p(e){return Object.fromEntries(e)}function h(e){const t={};for(const[r,n]of e)t[r]=n?.value;return t}function d(e){return e&&"object"==typeof e&&Object.hasOwn(e,"value")?e:{value:e}}return{createRegistryStore:function e(t={},n={}){const o=n.backing??{signal:new Map,handler:new Map,server:new Map,partial:new Map,route:new Map,component:new Map,asyncSignal:new Map,cache:{browser:new Map,server:new Map},cacheEntries:{browser:new Map,server:new Map}},s=n.target??"server",y={target:s,register(e,t,r){const n=y._map(e);if(i(e,t),n.has(t))throw new Error(`${e} "${t}" is already registered.`);return n.set(t,r),t},registerMany(e,t={}){for(const[r,n]of Object.entries(t??{}))y.register(e,r,n);return y},set(e,t,r){const n=y._map(e);return i(e,t),n.set(t,r),r},unregister:(e,t)=>y.delete(e,t),delete:(e,t)=>y._map(e).delete(t),keys:e=>u(e,s)?[]:[...y._map(e).keys()],entries(e,t={}){const r=a(e);return u(r,t.target??s)?[]:[...y._map(r)].map(([e,n])=>[e,c(r,e,n,{target:s,...t})])},has:(e,t)=>(i(e,t),!u(e,s)&&y._map(e).has(t)),get(e,t,r={}){i(e,t);const n=a(e);if(u(n,r.target??s))return;const o=y._map(n).get(t);return void 0!==o?c(n,t,o,{target:s,...r}):void 0},snapshot(e={}){const t=e.target??s;return{signal:l(o.signal),handler:f(o.handler),server:f(o.server),partial:f(o.partial),route:p(o.route),component:f(o.component),asyncSignal:f(o.asyncSignal),cache:{browser:p(o.cache.browser),server:p(o.cache.server)},entries:{browser:h(o.cacheEntries.browser),server:"browser"===t?{}:h(o.cacheEntries.server)}}},rawSnapshot:()=>({signal:Object.fromEntries(o.signal),handler:Object.fromEntries(o.handler),server:Object.fromEntries(o.server),partial:Object.fromEntries(o.partial),route:Object.fromEntries(o.route),component:Object.fromEntries(o.component),asyncSignal:Object.fromEntries(o.asyncSignal),cache:{browser:Object.fromEntries(o.cache.browser),server:Object.fromEntries(o.cache.server)}}),view:(t={})=>e(void 0,{backing:o,target:t.target??s}),_map(e){const t=a(e);if(r.has(t))return o[t];if("cache.browser"===t)return o.cache.browser;if("cache.server"===t)return o.cache.server;if("cache.browser.entries"===t)return o.cacheEntries.browser;if("cache.server.entries"===t)return o.cacheEntries.server;throw new Error(`Unknown Async registry type "${e}".`)}};return function(e,t={}){e.registerMany("signal",t.signal),e.registerMany("handler",t.handler),e.registerMany("server",t.server),e.registerMany("partial",t.partial),e.registerMany("route",t.route),e.registerMany("component",t.component),e.registerMany("asyncSignal",t.asyncSignal),e.registerMany("cache.browser",t.cache?.browser),e.registerMany("cache.server",t.cache?.server);const r=t.entries??{};for(const[t,n]of Object.entries(r.browser??{}))e.set("cache.browser.entries",t,d(n));for(const[t,n]of Object.entries(r.server??{}))e.set("cache.server.entries",t,d(n))}(y,t),y},attachRegistryInspection:function(e,t,r){return Object.defineProperty(e,"registry",{configurable:!0,enumerable:!0,value:t}),e.keys=()=>t.keys(r),e.entries=()=>t.entries(r),e.inspect=()=>t.entries(r),e}}})(),n=(()=>{const{attachRegistryInspection:e,createRegistryStore:t}=r,n=Symbol.for("@async/framework.cacheDefinition");function o(e={}){return{[n]:!0,kind:"cache-definition",store:e.store??"memory",ttl:e.ttl}}function s(e){if("string"!=typeof e||0===e.length)throw new TypeError("Cache id must be a non-empty string.")}function a(e){if("string"!=typeof e||0===e.length)throw new TypeError("Cache key must be a non-empty string.")}return{defineCache:o,createCacheRegistry:function(r={},{now:i=()=>Date.now(),registry:c,type:u="cache.browser"}={}){const l=c??t(),f=l._map(u),p=l._map(`${u}.entries`),h=new Map,d=e({register(e,t=o()){s(e);const r=function(e){return e?.[n]?e:o(e)}(t);if(f.has(e))throw new Error(`Cache "${e}" is already registered.`);return f.set(e,r),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))d.register(t,r);return d},unregister:e=>(s(e),f.delete(e)),resolve:e=>(s(e),f.get(e)),get:e=>(a(e),y(e).value),set(e,t,r={}){a(e);const n=r.ttl??function(e,t){if(void 0!==t)return f.get(t);if(f.has(e))return f.get(e);const r=e.split(":")[0];return f.get(r)}(e,r.cache)?.ttl;return p.set(e,{value:t,expiresAt:void 0===n?void 0:i()+n}),t},async getOrSet(e,t,r={}){if(a(e),"function"!=typeof t)throw new TypeError("cache.getOrSet(key, fn) requires a function.");const n=y(e);if(n.found)return n.value;if(h.has(e))return h.get(e);let o;return o=Promise.resolve().then(t).then(t=>(h.get(e)===o&&d.set(e,t,r),t)).finally(()=>{h.get(e)===o&&h.delete(e)}),h.set(e,o),o},delete:e=>(a(e),h.delete(e),p.delete(e)),clear(e){if(void 0===e)return p.clear(),h.clear(),d;for(const t of[...p.keys()])t.startsWith(e)&&p.delete(t);for(const t of[...h.keys()])t.startsWith(e)&&h.delete(t);return d},snapshot(){const e={};for(const[t]of p){const{found:r,value:n}=y(t);r&&void 0!==n&&(e[t]=n)}return e},restore(e={}){for(const[t,r]of Object.entries(e??{}))d.set(t,r);return d},entryKeys:()=>[...p.keys()],entryEntries:()=>l.entries(`${u}.entries`),_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))f.has(t)||d.register(t,r);return d}},l,u);return d.registerMany(r),d;function y(e){const t=p.get(e);return t?void 0!==t.expiresAt&&t.expiresAt<=i()?(p.delete(e),{found:!1,value:void 0}):{found:!0,value:t.value}:{found:!1,value:void 0}}}}})(),o=(()=>{const e=Object.freeze({async:["async:"],class:["class:"],signal:["signal:"],intersect:["intersect:"],on:["on:"]});function t(t={}){return{async:r(t.async,e.async),class:r(t.class,e.class),signal:r(t.signal,e.signal),intersect:r(t.intersect,e.intersect),on:r(t.on,e.on)}}function r(e,t){return(null==e?t:Array.isArray(e)?e:[e]).map(e=>{if("string"!=typeof e||0===e.length)throw new TypeError("Attribute prefixes must be non-empty strings.");return e})}return{defineAttributeConfig:function(e={}){return t(e)},normalizeAttributeConfig:t,attributeName:function(e,r,n){return t(e)[r][0]+n},readAttribute:function(e,r,n,o){for(const s of t(r)[n]){const t=`${s}${o}`;if(e.hasAttribute?.(t))return e.getAttribute(t)}return null},matchAttribute:function(e,r,n){for(const o of t(r)[n])if(e.startsWith(o))return e.slice(o.length);return null}}})(),s=(()=>{const{asyncSignal:n,isAsyncSignal:o}=e,{attachRegistryInspection:s,createRegistryStore:a}=r,{createLazyRegistry:i,isLazyDescriptor:c}=t,u=Symbol.for("@async/framework.signal"),l=Symbol.for("@async/framework.computed"),f=Symbol.for("@async/framework.effect"),p=Symbol.for("@async/framework.signalRef"),h=[];function d(e){let t=e;const r=new Set;return{[u]:!0,kind:"signal",get value(){return t},set value(e){this.set(e)},set:e=>(Object.is(t,e)||(t=e,function(){for(const e of[...r])e(t)}()),t),update(e){return this.set(e(t))},subscribe(e){if("function"!=typeof e)throw new TypeError("subscribe(fn) requires a function.");return r.add(e),()=>r.delete(e)},snapshot:()=>t,_cloneSignalDeclaration:()=>d(t)}}function y(e){return"function"==typeof e?._cloneSignalDeclaration?e._cloneSignalDeclaration():g(e)?d("function"==typeof e.snapshot?e.snapshot():e.value):d(e)}function g(e){return Boolean(e&&"object"==typeof e&&"function"==typeof e.subscribe)}function w(e,t){let r=e;for(const e of t){if(null==r)return;r=r[e]}return r}function m(e,t,r){const n=b(e,t[0]);let o=n;for(let e=0;e<t.length-1;e+=1){const r=t[e],n=t[e+1];o[r]=b(o[r],n),o=o[r]}return o[t.at(-1)]=r,n}function b(e,t){return Array.isArray(e)?[...e]:e&&"object"==typeof e?{...e}:(r=t,String(Number(r))===String(r)?[]:{});var r}function v(e,t){const r=e.get(t);if(!r)throw new Error(`Signal "${t}" is not registered.`);return r}function S(e){if("string"!=typeof e||0===e.length)throw new TypeError("Signal id must be a non-empty string.")}return{createSignal:d,computed:function e(t){if("function"!=typeof t)throw new TypeError("computed(fn) requires a function.");const r=d(void 0);return{[l]:!0,kind:"computed",get value(){return r.value},set:e=>r.set(e),update:e=>r.update(e),subscribe:e=>r.subscribe(e),snapshot:()=>r.snapshot(),_cloneSignalDeclaration:()=>e(t),_bindRegistry:(e,n)=>e.effect(()=>{r.set(t.call({signals:e,id:n,server:e._context?.().server,router:e._context?.().router,loader:e._context?.().loader,cache:e._context?.().cache,scheduler:e._context?.().scheduler}))})}},effect:function e(t){if("function"!=typeof t)throw new TypeError("effect(fn) requires a function.");return{[f]:!0,kind:"effect",fn:t,_cloneSignalDeclaration:()=>e(t),_bindRegistry:e=>e.effect(t)}},createSignalRegistry:function(e={},t={}){const r=t.registry??a(),u=t.type??"signal",l=r._map(u),f=r._map("asyncSignal"),b=t.lazyRegistry??i(t),E=new Map,$={},A=new Set;let j=0,O=0;for(const e of l.keys())if(f.has(e))throw new Error(`Signal "${e}" is already registered.`);const R=s({register(e,t){if(S(e),l.has(e)||f.has(e))throw new Error(`Signal "${e}" is already registered.`);const r=function(e){return g(e)?e:d(e)}(t);return l.set(e,r),k(e,r),R.ref(e)},registerMany(e){for(const[t,r]of Object.entries(e??{}))R.register(t,r);return R},unregister(e){S(e);const t=l.has(e),r=f.has(e);return!(!t&&!r||(t&&(E.get(e)?.(),E.delete(e),l.get(e)?._dispose?.(),l.delete(e),A.delete(e)),f.delete(e),0))},ensure:(e,t)=>(S(e),T(e),l.has(e)||R.register(e,d(t)),R.ref(e)),has:e=>l.has(e)||f.has(e),get(e){const t=_(e);return function(e){const t=h.at(-1);t&&t.add(e)}(t.path),function(e,t){if(o(e)&&t[0]?.startsWith("$"))return w(function(e,t){switch(t){case"$value":return e.value;case"$loading":return e.loading;case"$error":return e.error;case"$status":return e.status;case"$version":return e.version;default:return}}(e,t[0]),t.slice(1));return w(e.value,t)}(v(l,t.id),t.parts)},set(e,t){const r=_(e),n=v(l,r.id);if(0===r.parts.length)return n.set(t);const o=m(n.value,r.parts,t);return n.set(o),t},update(e,t){if("function"!=typeof t)throw new TypeError("update(path, fn) requires a function.");return R.set(e,t(R.get(e)))},ref:e=>(S(e),T(e),function(e,t){return{[p]:!0,kind:"signal-ref",id:t,get value(){return e.get(t)},set value(r){e.set(t,r)},get loading(){return e._entry(t).loading??!1},get error(){return e._entry(t).error??null},get status(){return e._entry(t).status??"ready"},get version(){return e._entry(t).version??0},get:()=>e.get(t),set:r=>e.set(t,r),update:r=>e.update(t,r),subscribe:r=>e.subscribe(t,r),refresh(){const r=e._entry(t);if("function"!=typeof r.refresh)throw new Error(`Signal "${t}" cannot refresh.`);return r.refresh()},cancel(r){const n=e._entry(t);if("function"!=typeof n.cancel)throw new Error(`Signal "${t}" cannot cancel.`);return n.cancel(r)},toString:()=>t,[Symbol.toPrimitive]:()=>t}}(R,e)),subscribe(e,t,r={}){if("function"!=typeof t)throw new TypeError("subscribe(path, fn) requires a function.");const n=_(e),o=v(l,n.id),s=++j;return o.subscribe(()=>{!function(e,t={}){const r=t.scheduler;r&&"sync"!==t.phase?r.enqueue(t.phase??"effect",e,{scope:t.scope,key:t.key}):e()}(()=>t(R.get(n.path),{id:n.id,path:n.path,signal:o}),{...r,key:r.key??`signal:${n.path}:${s}`})})},snapshot(){const e={};for(const[t,r]of l)e[t]="function"==typeof r.snapshot?r.snapshot():r.value;return e},asyncSignal:(e,t)=>(R.register(e,n(e,t)),R.ref(e)),effect(e,t={}){let r,n=[],o=!1;const s=t.scheduler,a=++O,i=()=>{if(o)return;"function"==typeof r&&r();for(const e of n)e();n=[];const t=R._collectDependencies(()=>e.call({signals:R,server:$.server,router:$.router,loader:$.loader,cache:$.cache,scheduler:$.scheduler}));r=t.value,n=t.dependencies.map(e=>R.subscribe(e,c))},c=()=>{s?s.enqueue(t.phase??"effect",i,{scope:t.scope,key:t.key??`effect:${a}`}):i()};return i(),()=>{o=!0,"function"==typeof r&&r();for(const e of n)e()}},destroy(){for(const e of E.values())e();E.clear();for(const e of l.values())e._dispose?.();l.clear()},_collectDependencies(e){const t=new Set;h.push(t);try{return{value:e(),dependencies:[...t]}}finally{h.pop()}},_entry:e=>(T(e),v(l,e)),_setPath(e,t){const r=function(e){if("string"!=typeof e||0===e.length)throw new TypeError("Signal path must be a non-empty string.");const[t,...r]=e.split(".");return{id:t,parts:r,path:e}}(e);l.has(r.id)||(f.has(r.id)?T(r.id):R.register(r.id,d(0===r.parts.length?t:{})));const n=v(l,r.id);if(0===r.parts.length)return n.set(t);const o=m(n.value,r.parts,t);return n.set(o),t},_setContext:(e={})=>(Object.assign($,e),R),_context:()=>$,_adoptMany(e={}){for(const[t,r]of Object.entries(e??{})){if(!l.has(t)){if(f.has(t))throw new Error(`Signal "${t}" is already registered.`);const e=y(r);l.set(t,e),k(t,e);continue}k(t,l.get(t))}return R}},r,u);for(const[e,t]of l)k(e,t);return R.registerMany(e),R;function k(e,t){if(A.has(e)||"function"!=typeof t?._bindRegistry)return;A.add(e);const r=t._bindRegistry(R,e);"function"==typeof r&&E.set(e,r)}function _(e){if("string"!=typeof e||0===e.length)throw new TypeError("Signal path must be a non-empty string.");const t=e.split(".");for(let r=t.length;r>0;r-=1){const n=t.slice(0,r).join(".");if(l.has(n)||f.has(n))return T(n),{id:n,parts:t.slice(r),path:e}}const[r,...n]=t;return{id:r,parts:n,path:e}}function T(e){if(l.has(e)||!f.has(e))return;const t=f.get(e);if(!c(t)&&"function"!=typeof t)throw new TypeError(`Async signal "${e}" must be a function or lazy descriptor.`);const r=n(e,async function(...r){const n=await b.resolve("asyncSignal",e,t);if("function"!=typeof n)throw new TypeError(`Async signal "${e}" did not resolve to a function.`);return n.apply(this,r)});l.set(e,r),k(e,r)}},cloneSignalDeclaration:y,isSignalRef:function(e){return Boolean(e?.[p])},signal:d}})(),a=(()=>{const{isSignalRef:e}=s,{attributeName:t,matchAttribute:r,normalizeAttributeConfig:n}=o,a=Symbol.for("@async/framework.template"),i=Symbol.for("@async/framework.rawHtml");function c(e){return Boolean(e?.[a])}function u(e,t={}){if(c(e)){const r=p(t);let n="";for(let t=0;t<e.strings.length;t+=1)n+=e.strings[t],t<e.values.length&&(n+=l(e.values[t],{...r,attribute:h(e.strings[t])}));return n}return l(e,p(t))}function l(n,o=p()){return n?.[i]?n.html:c(n)?u(n,o):o.attribute?function(n,o){const s=r(o.attribute.name,o.attributes,"signal"),a=r(o.attribute.name,o.attributes,"class"),i=function(t,r){return e(t)?t.id:"string"==typeof t&&r.signals?.has?.(t)?t:null}(n,o);if("value"===o.attribute.name&&i){const r=function(t,r){return e(t)?t.value:"string"==typeof t&&r.signals?.has?.(t)?r.signals.get(t):t}(n,o),s=t(o.attributes,"signal","value");return`${d(r)}${o.attribute.quote} ${s}=${o.attribute.quote}${d(i)}`}if(null!=s||null!=a){if(i)return d(i);if(function(e){return Boolean(e&&"object"==typeof e)}(n))return d(function(e,t){return"function"!=typeof t.bind?e:t.bind(e)}(n,o))}return f(n,o)}(n,o):Array.isArray(n)?n.map(e=>l(e,o)).join(""):e(n)?d(n.value):null==n||!1===n?"":d(n)}function f(t,r){return Array.isArray(t)?t.map(e=>f(e,r)).join(""):e(t)?d(t.value):null==t||!1===t?"":d(t)}function p(e={}){return{...e,attributes:n(e.attributes)}}function h(e){const t=e.match(/(?:^|[\s<])([^\s"'=<>`]+)\s*=\s*(["'])$/);return t?{name:t[1],quote:t[2]}:null}function d(e){return String(e).replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}return{html:function(e,...t){return{[a]:!0,strings:e,values:t}},isTemplateResult:c,rawHtml:function(e){return{[i]:!0,html:String(e??"")}},renderTemplate:u,escapeHtml:d}})(),i=(()=>{const{attributeName:e}=o,{escapeHtml:n,rawHtml:s,renderTemplate:i}=a,{attachRegistryInspection:c,createRegistryStore:u}=r,{createLazyRegistry:l,isLazyDescriptor:f}=t,p=Symbol.for("@async/framework.component");let h=0;function d(e){if("function"!=typeof e)throw new TypeError("defineComponent(fn) requires a function.");return Object.defineProperty(e,p,{configurable:!0,value:!0}),e}function y(e){return Boolean(e?.[p])}function g(t,r={},o,a="component"){if(!y(t)&&"function"!=typeof t)throw new TypeError("renderComponent(Component) requires a component function.");const c=`${a}.${b(t)}.${++h}`,u=[],l=[],f=[],p=[],d=[],v=[],S={attributes:o.attributes,signals:o.signals,bind(e){const t=o.loader?._registerBinding?.(e);if(!t)throw new Error("Inline template bindings require a Loader.");return v.push(t),t}},E=e=>i(e,S),$=function({runtime:t,scope:r,cleanups:o,attachHooks:a,visibleHooks:i,intersectionHooks:c,destroyHooks:u,renderScopedTemplate:l}){const{signals:f,handlers:p,loader:h,server:d,router:y,cache:b,scheduler:v}=t,S=new WeakMap;let E=0,$=0;const A={scope:r,signals:f,handlers:p,loader:h,server:d,router:y,cache:b,scheduler:v,signal(e,t){if(1===arguments.length){const t=m(r,"signal."+ ++$),n=f.ensure(t,e);return o.push(()=>f.unregister?.(t)),n}const n=m(r,e),s=!f.has(n),a=f.ensure(n,t);return s&&o.push(()=>f.unregister?.(n)),a},computed(e,t){const n=m(r,e),s=!f.has(n),a=f.ensure(n,void 0);s&&o.push(()=>f.unregister?.(n));const i=f.effect(()=>{f.set(n,t.call(A))});return o.push(i),a},asyncSignal(e,t){const n=m(r,e),s=!f.has(n);return f.has(n)||f.asyncSignal(n,t),s&&o.push(()=>f.unregister?.(n)),f.ref(n)},effect(e){const t=f.effect(()=>e.call(A),{scheduler:v,phase:"effect",scope:r});return o.push(t),t},handler(e,t){if("function"==typeof e&&void 0===t){const t=e;if(S.has(t))return S.get(t);const r=j("handler."+ ++E,t);return S.set(t,r),r}if("function"!=typeof t)throw new TypeError("this.handler(name, fn) or this.handler(fn) requires a function.");return j(e,t)},render(e,n={}){const u=g(e,n,t,r);return o.push(u.cleanup),a.push(e=>u.attach(e)),i.push(e=>u.visible(e,h._observeVisible)),c.push(e=>u.intersection(e,h._observeIntersection)),s(u.html)},suspense(r,o){const a=r?.id;if(!a)throw new TypeError("this.suspense(signalRef, views) requires a signal ref.");const i=function(e){const t="function"==typeof e?{ready:e}:e;if(!t||"object"!=typeof t||Array.isArray(t))throw new TypeError("this.suspense(signalRef, views) requires views to be a function or object.");for(const e of["loading","ready","error"])if(Object.hasOwn(t,e)&&void 0!==t[e]&&"function"!=typeof t[e])throw new TypeError(`this.suspense(signalRef, views) view "${e}" must be a function.`);return t}(o),c=[];for(const o of["loading","ready","error"]){const s=i[o];if(!s)continue;const u=e(t.attributes,"async",o),f=l(s.call(A,r));c.push(`<template ${u}="${n(a)}">${f}</template>`)}return s(c.join(""))},on(e,t,r){if("string"!=typeof e||0===e.length)throw new TypeError("Component lifecycle event must be a non-empty string.");const n="mount"===e?"attach":e;if("intersect"===n){const{options:n,fn:o}=w(`Component lifecycle "${e}"`,t,r);return void c.push(e=>{A.intersect(e,n,o)})}if(void 0!==r||"function"!=typeof t)throw new TypeError(`Component lifecycle "${e}" requires a function.`);const o=t;if("attach"!==n)if("visible"!==n){if("destroy"!==n)throw new Error(`Unsupported component lifecycle event "${e}".`);u.push(()=>o.call(A))}else i.push(e=>o.call(A,e));else a.push(e=>o.call(A,e))},onMount(e){A.on("attach",e)},onVisible(e){A.on("visible",e)},intersect(e,t,n){const{options:s,fn:a}=w("this.intersect(target, ...)",t,n),i=h._observeIntersection(e,e=>a.call(A,e),{...s,scope:r});return"function"==typeof i&&o.push(i),i}};return A;function j(e,t){const n=m(r,e);return p.register(n,e=>t.call({...A,...e},e)),o.push(()=>p.unregister?.(n)),n}}({runtime:o,scope:c,cleanups:u,attachHooks:l,visibleHooks:f,intersectionHooks:p,destroyHooks:d,renderScopedTemplate:E}),A=t.call($,r);if(A&&"function"==typeof A.then)throw new TypeError(`Component "${b(t)}" returned a Promise. Async components are not supported by synchronous renderComponent(). Use an async partial or handler instead.`);return{html:E(A),attach(e){for(let t=0;t<l.length;t+=1){const r=l[t];o.scheduler?.enqueue("lifecycle",()=>{const t=r(e);"function"==typeof t&&u.push(t)},{scope:c,key:`attach:${t}`})??j(r,e)}},mount(e){this.attach(e)},visible(e,t){if(0===f.length)return;const r=t(e,()=>{for(let t=0;t<f.length;t+=1){const r=f[t];o.scheduler?.enqueue("lifecycle",()=>{const t=r(e);"function"==typeof t&&u.push(t)},{scope:c,key:`visible:${t}`})??O(r,e)}});"function"==typeof r&&u.push(r)},intersection(e,t){if(0!==p.length)for(let r=0;r<p.length;r+=1)(0,p[r])(e,t)},cleanup(){for(;d.length>0;)d.pop()?.();for(o.scheduler?.markScopeDestroyed(c);u.length>0;)u.pop()?.();for(;v.length>0;)o.loader?._releaseBinding?.(v.pop())}};function j(e,t){const r=e(t);"function"==typeof r&&u.push(r)}function O(e,t){const r=e(t);"function"==typeof r&&u.push(r)}}function w(e,t,r){if("function"==typeof t&&void 0===r)return{options:{},fn:t};if((null==t||"object"==typeof t&&!Array.isArray(t))&&"function"==typeof r)return{options:t??{},fn:r};throw new TypeError(`${e} requires (fn) or (options, fn).`)}function m(e,t){if("string"!=typeof t||0===t.length)throw new TypeError("Scoped signal or handler name must be a non-empty string.");return`${e}.${t}`}function b(e){return e.displayName||e.name||"anonymous"}return{defineComponent:d,createComponentRegistry:function(e={},t={}){const r=t.registry??u(),n=t.type??"component",o=r._map(n),s=t.lazyRegistry??l(t),a=new Map,i=c({register(e,t){if("string"!=typeof e||0===e.length)throw new TypeError("Component id must be a non-empty string.");if(!y(t)&&"function"!=typeof t&&!f(t))throw new TypeError(`Component "${e}" must be a component function.`);if(o.has(e))throw new Error(`Component "${e}" is already registered.`);return o.set(e,t),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))i.register(t,r);return i},unregister(e){if("string"!=typeof e||0===e.length)throw new TypeError("Component id must be a non-empty string.");return a.delete(e),o.delete(e)},resolve(e){if("string"!=typeof e||0===e.length)throw new TypeError("Component id must be a non-empty string.");const t=o.get(e);return f(t)?(a.has(e)||a.set(e,async function(...r){const o=await s.resolve(n,e,t);if("function"!=typeof o)throw new TypeError(`Component "${e}" did not resolve to a function.`);return o.apply(this,r)}),a.get(e)):t},_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))o.has(t)||i.register(t,r);return i}},r,n);return i.registerMany(e),i},isComponent:y,renderComponent:g,component:d}})(),c=(()=>{const e=Symbol.for("@async/framework.serverResult"),t=Symbol("@async/framework.serverResultInvocation");async function r(e,r={}){if(!y(e))return e;const n=function(e={}){return e[t]??{applied:new WeakSet}}(r);if(n.applied.has(e))return e;if(n.applied.add(e),e.error)throw(o=e.error)instanceof Error?o:o&&"object"==typeof o&&"string"==typeof o.message?Object.assign(new Error(o.message),o):new Error(String(o));var o;if(e.signals&&r.signals)for(const[t,n]of Object.entries(e.signals))r.signals.set?.(t,n);return e.cache?.browser&&r.cache?.restore&&r.cache.restore(e.cache.browser),e.boundary&&Object.hasOwn(e,"html")&&r.loader?.swap?.(e.boundary,e.html),e.redirect&&await(r.router?.navigate?.(e.redirect)),e}async function n(e,t={}){return await r(e,t),o(e)}function o(e){return y(e)?Object.hasOwn(e,"value")?e.value:void 0:e}function s(e={}){const r=e[t]??{applied:new WeakSet};return{...e,[t]:r}}function a(e={}){const t=f(e);if(t)return p(new t.ownerDocument.defaultView.FormData(t));const r=e.element??e.el??e.event?.target;if(!r)return{};const n={};return"value"in r&&(n.value=r.value),"checked"in r&&(n.checked=r.checked),r.dataset&&(n.dataset={...r.dataset}),n}function i(e,t={},r=()=>({})){const n=new Map;return function o(s){const a=s.join(".");if(n.has(a))return n.get(a);const c=new Proxy(async(...t)=>{if(0===s.length)throw new Error("Server namespace is not directly callable.");const n=r()??{};return e(s.join("."),t,n)},{get(n,a){if("then"!==a)return a in n?n[a]:0===s.length&&"_withContext"===a?(n={})=>i(e,t,()=>({...r()??{},...n})):0===s.length&&"run"===a&&"function"==typeof t.run?(e,n=[],o={})=>t.run(e,n,{...r()??{},...o}):0===s.length&&Object.hasOwn(t,a)?t[a]:a===Symbol.toStringTag?"AsyncServerNamespace":"toString"===a?()=>0===s.length?"server":`server.${s.join(".")}`:o([...s,String(a)])}});return n.set(a,c),c}([])}function c(e=[],t){const r={};for(const n of e)r[n]=u(t,n);return r}function u(e,t){if(!e||"function"!=typeof e.get)throw new Error(`Signal "${t}" cannot be read without a signal registry.`);return e.get(t)}function l(e,t,{forServer:r}={}){if(("$event"===e||"$el"===e)&&r)throw new Error(`${e} cannot be passed to a server command.`);if("$event"===e)return t.event;if("$el"===e)return t.element??t.el;if("$value"===e){const e=t.element??t.el??t.event?.target;return e?.value}if("$checked"===e){const e=t.element??t.el??t.event?.target;return e?.checked}if("$form"===e){const e=f(t);return e?p(new e.ownerDocument.defaultView.FormData(e)):{}}if("$dataset"===e){const e=t.element??t.el??t.event?.target;return e?.dataset?{...e.dataset}:{}}throw new Error(`Event local "${e}" is not supported.`)}function f(e){const t=e.event,r=e.element??e.el??t?.target;return"FORM"===r?.tagName?r:"submit"===t?.type&&"FORM"===t.target?.tagName?t.target:"submit"===t?.type&&r?.form?r.form:null}function p(e){const t={};for(const[r,n]of e.entries())Object.hasOwn(t,r)?t[r]=Array.isArray(t[r])?[...t[r],n]:[t[r],n]:t[r]=n;return t}function h(e,t="$",r=new Set){if(null===e)return;const n=typeof e;if("boolean"===n||"string"===n)return;if("number"===n){if(!Number.isFinite(e))throw new Error(`Server proxy JSON transport does not support non-finite numbers at ${t}.`);return}if("bigint"===n)throw new Error(`Server proxy JSON transport does not support BigInt values at ${t}.`);if("undefined"===n)throw new Error(`Server proxy JSON transport does not support undefined values at ${t}.`);if("function"===n||"symbol"===n)throw new Error(`Server proxy JSON transport does not support ${n} values at ${t}.`);if("object"!==n)throw new Error(`Server proxy JSON transport does not support ${n} values at ${t}.`);if(r.has(e))throw new Error(`Server proxy JSON transport does not support circular values at ${t}.`);r.add(e);const o=Object.prototype.toString.call(e);if("[object File]"===o||"[object Blob]"===o||"[object FormData]"===o)throw new Error(`Server proxy JSON transport does not support File, Blob, or FormData values yet at ${t}.`);if(function(e,t=Object.prototype.toString.call(e)){return"[object URLSearchParams]"===t||"[object Headers]"===t||"[object Request]"===t||"[object Response]"===t||"[object ReadableStream]"===t||"[object ArrayBuffer]"===t||ArrayBuffer.isView(e)}(e,o))throw new Error(`Server proxy JSON transport does not support URLSearchParams, Headers, Request, Response, ReadableStream, ArrayBuffer, or typed array values yet at ${t}.`);if(Array.isArray(e)){for(let n=0;n<e.length;n+=1){if(!Object.hasOwn(e,n))throw new Error(`Server proxy JSON transport does not support sparse arrays at ${t}[${n}].`);h(e[n],`${t}[${n}]`,r)}r.delete(e)}else{if(!function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))throw new Error(`Server proxy JSON transport only supports plain objects at ${t}.`);for(const[n,o]of Object.entries(e))h(o,d(t,n),r);r.delete(e)}}function d(e,t){return/^[A-Za-z_$][\w$]*$/.test(t)?`${e}.${t}`:`${e}[${JSON.stringify(t)}]`}function y(t){return!(!t||"object"!=typeof t||Array.isArray(t)||!0!==t[e]&&1!==t.__async_server_result__)}function g(e){if("string"!=typeof e||0===e.length)throw new TypeError("Server function id must be a non-empty string.")}return{createServerProxy:function({endpoint:e="/__async/server",transport:t,signals:r,loader:o,router:u,cache:l,scheduler:f,headers:p={}}={}){if("function"!=typeof t)throw new TypeError("createServerProxy(...) requires a transport function.");const d={signals:r,loader:o,router:u,cache:l,scheduler:f};async function y(r,o=[],i={}){g(r);const u=s({...d,...i}),l={args:o,input:i.input??a(u),signals:i.signalValues??c(i.signalPaths,u.signals)};h(l);const f=await t(function(e,t){return`${String(e).replace(/\/$/,"")}/${encodeURIComponent(t)}`}(e,r),{method:"POST",headers:{"content-type":"application/json",...p},body:JSON.stringify(l),signal:i.abort});if(function(e,t){if(!t||"object"!=typeof t)throw new Error(`Server function "${e}" transport returned an invalid response: expected a fetch Response-like object.`);if("boolean"!=typeof t.ok)throw new Error(`Server function "${e}" transport returned an invalid response: missing boolean ok.`);if(!t.headers||"function"!=typeof t.headers.get)throw new Error(`Server function "${e}" transport returned an invalid response: missing headers.get(name).`)}(r,f),!f.ok)throw new Error(`Server function "${r}" failed with ${f.status}.`);return n(await async function(e,t){if(204===t.status)return;if((t.headers.get("content-type")??"").includes("application/json")){if("function"!=typeof t.json)throw new Error(`Server function "${e}" transport returned an invalid response: missing json().`);try{return await t.json()}catch(t){throw new Error(`Server function "${e}" returned invalid JSON: ${r=t,r instanceof Error?r.message:String(r)}`,{cause:t})}}var r;if("function"!=typeof t.text)throw new Error(`Server function "${e}" transport returned an invalid response: missing text().`);return t.text()}(r,f),u)}return i(y,{run:y,_setContext(e={}){Object.assign(d,e)}},()=>d)},resolveServerCommandArguments:function(e,t={}){const r=[],n={},o=[];for(const s of e){if("local"===s.type){r.push(l(s.name,t,{forServer:!0}));continue}const e=u(t.signals,s.path);r.push(e),n[s.path]=e,o.push(s.path)}return{args:r,signalValues:n,signalPaths:o}},applyServerResult:r,consumeServerResult:n,unwrapServerResult:o,createServerResultContext:s,defaultInput:a,createServerNamespace:i,createSignalReader:function(e){return e&&"function"!=typeof e.get?{get:t=>function(e,t){return String(t).split(".").reduce((e,t)=>e?.[t],e)}(e,t),snapshot:()=>({...e})}:e},assertServerId:g}})(),u=(()=>{const{defaultInput:e,resolveServerCommandArguments:n}=c,{attachRegistryInspection:o,createRegistryStore:s}=r,{createLazyRegistry:a,isLazyDescriptor:i}=t,u=new Set(["prevent","preventDefault","stopPropagation","stopImmediatePropagation"]),l={prevent:f,preventDefault:f,stopPropagation(){this.event?.stopPropagation?.()},stopImmediatePropagation(){this.event?.stopImmediatePropagation?.()}};function f(){this.event?.preventDefault?.()}function p(e){if("string"!=typeof e||0===e.trim().length)throw new TypeError("Handler ref must be a non-empty string.");return e.split(";").map(e=>e.trim()).filter(Boolean).map(d)}function h(e){if("string"!=typeof e||0===e.length)throw new TypeError("Handler id must be a non-empty string.")}function d(e){if(e.startsWith("server."))return function(e){const t=e.indexOf("(");if(-1===t||!e.endsWith(")"))throw new Error(`Server command "${e}" must be called with parentheses.`);const r=e.slice(7,t).trim();if(!function(e){return/^[^.\s();]+(?:\.[^.\s();]+)*$/.test(e)}(r))throw new Error(`Server command "${e}" has an invalid function id.`);return{type:"server",id:r,args:y(e.slice(t+1,-1))}}(e);if(e.includes("(")||e.includes(")"))throw new Error(`Command "${e}" is not supported.`);return{type:"handler",id:e}}function y(e){return 0===e.trim().length?[]:e.split(",").map(e=>e.trim()).filter(Boolean).map(g)}function g(e){if(!/^[^\s,();]+$/.test(e))throw new Error(`Argument "${e}" is not supported.`);return e.startsWith("$")?{type:"local",name:e}:{type:"signal",path:e}}return{createHandlerRegistry:function(t={},r={}){const c=r.registry??s(),f=r.type??"handler",d=c._map(f),y=r.lazyRegistry??a(r),g=new Map,w=o({register(e,t){if(h(e),"function"!=typeof t&&!i(t))throw new TypeError(`Handler "${e}" must be a function.`);if(d.has(e))throw new Error(`Handler "${e}" is already registered.`);return d.set(e,t),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))w.register(t,r);return w},unregister:e=>(h(e),g.delete(e),d.delete(e)),resolve(e){h(e);const t=d.get(e);return i(t)?(g.has(e)||g.set(e,async function(...r){const n=await y.resolve(f,e,t);if("function"!=typeof n)throw new TypeError(`Handler "${e}" did not resolve to a function.`);return n.apply(this,r)}),g.get(e)):t},async run(t,r={}){const o=p(t),s=[];let a=!1;const i={...r,handlers:w,input:r.input??e(r),stop(){a=!0}};for(const e of o){if(a)break;if("server"===e.type){if(!i.server||"function"!=typeof i.server.run)throw new Error(`Server command "${e.id}" cannot run without a server registry.`);const t=n(e.args,i),r=await i.server.run(e.id,t.args,{...i,signalPaths:t.signalPaths,signalValues:t.signalValues});s.push(r);continue}const t=w.resolve(e.id);if(!t)throw new Error(`Handler "${e.id}" is not registered.`);const r=await t.call(i,i);u.has(e.id)&&t===l[e.id]||s.push(r)}return s},_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))d.has(t)||w.register(t,r);return w}},c,f);return function(e,t){for(const[r,n]of Object.entries(l))if(t.has(r)){if(t.get(r)!==n)throw new Error(`Handler "${r}" is already registered.`)}else e.register(r,n)}(w,d),w.registerMany(t),w},parseHandlerRef:p,isHandlerToken:function(e){return u.has(e)}}})(),l=(()=>{const e=["binding","lifecycle","effect","async","post"];function t(e){return"object"==typeof e&&null!==e||"function"==typeof e}function r(e,t){if(!e||"object"!=typeof e&&"function"!=typeof e)return e;try{Object.defineProperty(e,"scheduler",{configurable:!0,value:{phase:t.phase,scope:t.scope,key:t.key}})}catch{}return e}function n(){}return{createScheduler:function(o={}){const s=[...o.phases??e],a=new Map(s.map(e=>[e,[]])),i=new Map,c=new WeakSet,u=new Set,l=new WeakMap,f="function"==typeof o.onError?o.onError:void 0,p=o.maxDepth??100,h=o.strategy??"microtask";let d=!1,y=!1,g=!1,w=0,m=0,b=0;const v={strategy:h,phases:s,batch(e){if("function"!=typeof e)throw new TypeError("scheduler.batch(fn) requires a function.");O(),w+=1;let t=!1;try{const r=e();return r&&"function"==typeof r.then?(t=!0,Promise.resolve(r).finally(()=>{w-=1,S()})):r}finally{!t&&w>0&&(w-=1,S())}},enqueue(e,t,r={}){if(O(),function(e){if(!a.has(e))throw new Error(`Unknown scheduler phase "${e}".`)}(e),"function"!=typeof t)throw new TypeError("scheduler.enqueue(phase, fn) requires a function.");const o=r.scope;if(R(o))return n;const s=void 0===r.key?void 0:`${e}:${function(e){return void 0===e?"global":"object"==typeof e&&null!==e||"function"==typeof e?(l.has(e)||l.set(e,"scope:"+ ++b),l.get(e)):String(e)}(o)}:${String(r.key)}`;if(s&&i.has(s))return i.get(s).cancel;const c={id:++m,phase:e,fn:t,scope:o,boundary:r.boundary,key:s,canceled:!1,cancel(){c.canceled=!0,c.key&&i.delete(c.key)}};return a.get(e).push(c),c.key&&i.set(c.key,c),S(),c.cancel},afterFlush:(e,t={})=>v.enqueue("post",e,t),async flush(){if(O(),y)return;g=!1,y=!0;let e=0;try{for(;A();){if(e+=1,e>p)throw new Error(`Scheduler exceeded maxDepth ${p}.`);for(const e of s)await E(e)}}finally{y=!1,A()&&S()}},async flushScope(e){if(O(),y)return;g=!1,y=!0;let t=0;try{for(;j(e);){if(t+=1,t>p)throw new Error(`Scheduler exceeded maxDepth ${p}.`);for(const t of s)await E(t,e)}}finally{y=!1,A()&&S()}},cancelScope(e){if(void 0===e)return v;for(const t of a.values())for(const r of t)r.scope===e&&r.cancel();return v},markScopeDestroyed:e=>(void 0!==e&&(t(e)?c.add(e):u.add(e),v.cancelScope(e)),v),reviveScope:e=>(void 0!==e&&(t(e)?c.delete(e):u.delete(e)),v),isScopeDestroyed:e=>R(e),inspect(){const e={};for(const[t,r]of a)e[t]=r.filter(e=>!e.canceled).length;return{strategy:h,phases:[...s],pending:e,scopesDestroyed:u.size,flushing:y,scheduled:g}},destroy(){d=!0;for(const e of a.values()){for(const t of e)t.cancel();e.length=0}i.clear(),u.clear()}};return v;function S(){var e;"manual"===h||d||y||w>0||g||(g=!0,e=()=>{d||v.flush().catch($)},"function"!=typeof queueMicrotask?Promise.resolve().then(e):queueMicrotask(e))}async function E(e,t){const n=a.get(e),o=[],s=[];for(const e of n.splice(0))e.canceled||(void 0===t||e.scope===t?s.push(e):o.push(e));n.push(...o);for(const e of s)if(e.key&&i.delete(e.key),!e.canceled&&!R(e.scope))try{await e.fn()}catch(t){if(!f)throw r(t,e);f(t,e)}}function $(e){"function"!=typeof globalThis.reportError?setTimeout(()=>{throw e},0):globalThis.reportError(e)}function A(){for(const e of a.values())if(e.some(e=>!e.canceled))return!0;return!1}function j(e){for(const t of a.values())if(t.some(t=>!t.canceled&&t.scope===e))return!0;return!1}function O(){if(d)throw new Error("Scheduler has been destroyed.")}function R(e){return void 0!==e&&(t(e)?c.has(e):u.has(e))}}}})(),f=(()=>{const{renderComponent:e}=i,{createHandlerRegistry:t}=u,{createScheduler:r}=l,{createSignalRegistry:n,isSignalRef:a}=s,{matchAttribute:c,normalizeAttributeConfig:f,readAttribute:p}=o,h="__async:inline:";function d({root:o,signals:s,handlers:i,server:u,router:l,cache:d,attributes:E,scheduler:R}={}){const T=o?.ownerDocument??o??globalThis.document,C=o??T,q=s??n(),M=i??t(),x=R??r(),B=!R,D=f(E),L=new Set,N=new WeakMap,P=new WeakMap,I=new WeakSet,z=new WeakSet,H=new WeakMap,W=new WeakMap,U=new WeakSet,V=new Map,J=new WeakMap;let F=0,K=!1;const Z={root:C,signals:q,handlers:M,server:u,router:l,cache:d,scheduler:x,attributes:D,start:()=>(fe(),Z.scan(C),Z),scan:(e=C)=>(fe(),function(e){for(const t of j(e))x.reviveScope?.(t)}(e),function(e){for(const t of j(e))for(const e of t.getAttributeNames?.()??[]){const r=c(e,D,"signal");if(r){if("text"===r){const r=t.getAttribute(e);Q(t,`text:${r}`,r,e=>{t.textContent=e??""});continue}if("value"===r){const r=t.getAttribute(e);Q(t,`value:${r}`,r,e=>{"value"in t&&t.value!==String(e??"")?t.value=e??"":"value"in t||t.setAttribute("value",e??"")}),X(t,r);continue}if(r.startsWith("attr:")){const n=r.slice(5),o=t.getAttribute(e);Q(t,`attr:${n}:${o}`,o,e=>$(t,n,e));continue}if(r.startsWith("prop:")){const n=r.slice(5),o=t.getAttribute(e);Q(t,`prop:${n}:${o}`,o,e=>A(t,n,e));continue}if(r.startsWith("class:")){const n=r.slice(6),o=t.getAttribute(e);""===n||"{}"===n?G(t,n,o):Q(t,`class:${n}:${o}`,o,e=>{t.classList.toggle(n,Boolean(e))});continue}if("class"===r){const r=t.getAttribute(e);G(t,"{}",r)}}}}(e),function(e){for(const t of j(e))for(const e of t.getAttributeNames?.()??[]){const r=c(e,D,"class");null!=r&&G(t,r,t.getAttribute(e))}}(e),function(e){for(const t of j(e))if("function"==typeof t.getAttributeNames)for(const e of t.getAttributeNames()){const r=c(e,D,"on");r&&"attach"!==r&&"mount"!==r&&"visible"!==r&&"intersect"!==r&&Y(t,r,t.getAttribute(e))}}(e),function(e){for(const t of j(e)){if(U.has(t))continue;const e=O(t,D);if(null!=e){if(!W.has(t)){const r=S(t,e,D);if(0===Object.keys(r).length||!q.has(e))continue;const n={id:e,templates:r,cleanup:q.subscribe(`${e}.$status`,()=>{x.enqueue("binding",()=>ee(t),{scope:t,key:`boundary:${e}`})})};W.set(t,n),pe(n.cleanup,t)}ee(t)}}}(e),function(e){for(const t of j(e)){const e=te(t,["attach","mount"]);if(0!==e.length&&!I.has(t)){I.add(t);for(const r of e)we(t,()=>re(t,r),`attach:${r}`)}}for(const t of j(e)){const e=p(t,D,"on","visible");null!=e&&(z.has(t)||(z.add(t),pe(ne(t,()=>we(t,()=>re(t,e),`visible:${e}`)),t)))}for(const t of j(e)){const e=p(t,D,"on","intersect");if(null==e)continue;const r=se(t),n=`intersect:${e}:${ae(r)}`,o=H.get(t)??new Set;o.has(n)||(o.add(n),H.set(t,o),pe(oe(t,r=>re(t,e,r),{...r,key:n}),t))}}(e),Z),swap(e,t){fe();const r=function(e,t,r){for(const n of j(e))if(O(n,r)===String(t))return n;return null}(C,e,D);if(!r)throw new Error(`Boundary "${e}" was not found.`);return de(r),r.replaceChildren(k(t,T)),Z.scan(r),r},mount(t,r,n={}){fe();const o=e(r,n,{signals:q,handlers:M,loader:Z,server:Z.server,router:Z.router,cache:Z.cache,scheduler:x,attributes:D});return de(t),t.replaceChildren(k(o.html,t.ownerDocument)),Z.scan(t),o.mount(t),o.visible(t,Z._observeVisible),o.intersection(t,Z._observeIntersection),pe(o.cleanup,t,"children"),o},destroy(){if(!K){K=!0,function(e){for(const t of j(e))x.markScopeDestroyed(t)}(C);for(const e of[...L])he(e);L.clear(),B&&x.destroy()}},_observeVisible:(e,t)=>ne(e,t),_observeIntersection:(e,t,r={})=>oe(e,t,r),_registerBinding(e){const t=`${h}${++F}`;return V.set(t,e),t},_releaseBinding(e){V.delete(e)}};function Y(e,t,r){const n=`${t}:${r}`,o=N.get(e)??new Set;if(o.has(n))return;o.add(n),N.set(e,o);const s=async t=>{try{await x.batch(()=>M.run(r,{signals:q,handlers:M,loader:Z,server:Z.server,router:Z.router,cache:Z.cache,scheduler:x,event:t,element:e,el:e,root:C}))}catch(t){_(e,t)}};e.addEventListener(t,s),pe(()=>e.removeEventListener(t,s),e)}function G(e,t,r){if(""===t||"{}"===t){const t=b(e);let n=new Set;return void Q(e,`class:{}:${r}`,r,r=>{const o=y(r),s=b(e);for(const e of n)o.has(e)||t.has(e)||s.delete(e);for(const e of o)s.add(e);v(e,s),n=o},{rawInline:!0})}Q(e,`class:${t}:${r}`,r,r=>{!function(e,t,r){const n=b(e);for(const e of y(t))r?n.add(e):n.delete(e);v(e,n)}(e,t,Boolean(r))})}function Q(e,t,r,n,o={}){const s=P.get(e)??new Set;if(s.has(t))return;s.add(t),P.set(e,s);const a=()=>function(e,t={}){if(m(e)){const r=V.get(e);return t.rawInline?r:g(r)}return q.get(e)}(r,o);n(a()),pe(function(e,t){if(!m(e))return q.subscribe(e,t);const r=w(V.get(e)).map(e=>e.subscribe(t));return()=>{for(const e of r)e()}}(r,()=>{x.enqueue("binding",()=>n(a()),{scope:e,key:t})}),e)}function X(e,t){Y(e,"input",`__async:set:${t}`),Y(e,"change",`__async:set:${t}`),M.resolve(`__async:set:${t}`)||M.register(`__async:set:${t}`,({element:e})=>{!function(e,t){if(!m(e))return q.set(e,t);const r=V.get(e);if(a(r))return r.set(t);throw new Error(`Inline binding "${e}" is not writable.`)}(t,e.value)})}function ee(e){const t=W.get(e);if(!t)return;const r=q.get(`${t.id}.$status`),n=function(e,t){return"ready"===t?e.ready??e.loading??e.error:"error"===t?e.error??e.ready??e.loading:e.loading??e.ready??e.error}(t.templates,r);if(n){de(e),e.replaceChildren(n.content.cloneNode(!0)),U.add(e);try{Z.scan(e)}finally{U.delete(e)}}}function te(e,t){const r=[];for(const n of t){const t=p(e,D,"on",n);null!=t&&r.push(t)}return r}async function re(e,t,r={}){try{const n=await M.run(t,{signals:q,handlers:M,loader:Z,server:Z.server,router:Z.router,cache:Z.cache,scheduler:x,element:e,el:e,root:C,...r});for(const t of n)"function"==typeof t&&pe(t,e)}catch(t){_(e,t)}}function ne(e,t){return oe(e,r=>{r.isIntersecting&&t(e)},{once:!0,threshold:0})}function oe(e,t,r={}){if("function"!=typeof t)throw new TypeError("observeIntersection(target, fn) requires a callback.");const n=function(e,t){const r=e?.ownerDocument?.defaultView??globalThis;if(!le(e,r))throw new TypeError("Intersection target must be an Element.");const n=t.root??null;if(null!==n&&!le(n,r)&&!function(e,t=globalThis){const r=t.Document??globalThis.Document;return Boolean(r&&e instanceof r)}(n,r))throw new TypeError("Intersection root must be an Element, Document, or null.");const o=t.rootMargin??"0px";if("string"!=typeof o)throw new TypeError("Intersection rootMargin must be a string.");const s=function(e){return Array.isArray(e)?e.map(ie):ie(e)}(t.threshold??0),a=t.schedule??"lifecycle";if("lifecycle"!==a&&"sync"!==a)throw new TypeError('Intersection schedule must be "lifecycle" or "sync".');return{root:n,rootMargin:o,threshold:s,once:Boolean(t.once),schedule:a,scope:t.scope??e,key:t.key}}(e,r),o=(e.ownerDocument?.defaultView??globalThis).IntersectionObserver??globalThis.IntersectionObserver;if(!o){let r=!1;const o=ce({target:e,root:n.root,entry:ue(e),observer:null,unsupported:!0}),s=x.enqueue("lifecycle",()=>{r||K||t(o)},{scope:n.scope,key:n.key??"intersect:fallback"});return()=>{r=!0,s?.()}}let s=!1,a=!1;const i=new o(r=>{if(s||a||K)return;const o=r.filter(t=>t.target===e),c=o.length>0?o:r,u=c[0];if(!u)return;const l=ce({target:e,root:n.root,entry:u,entries:c,observer:i,unsupported:!1});n.once&&l.isIntersecting&&(a=!0,i.disconnect()),function(e,t,r,n=()=>!0){"sync"!==r.schedule?x.enqueue("lifecycle",()=>{!K&&n()&&e(t)},{scope:r.scope,key:r.key}):n()&&e(t)}(t,l,n,()=>!s)},{root:n.root,rootMargin:n.rootMargin,threshold:n.threshold});return i.observe(e),()=>{s||(s=!0,a=!0,i.disconnect())}}function se(e){const t={},r=p(e,D,"intersect","threshold");null!=r&&(t.threshold=function(e){const t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(0===t.length)throw new TypeError("intersect:threshold must include a number from 0 to 1.");const r=t.map(e=>ie(Number(e)));return 1===r.length?r[0]:r}(r));const n=p(e,D,"intersect","root-margin")??p(e,D,"intersect","rootMargin");null!=n&&(t.rootMargin=n);const o=p(e,D,"intersect","once");return null!=o&&(t.once=function(e){const t=String(e).trim().toLowerCase();return""===t||"true"===t||"1"===t}(o)),t}function ae(e){return JSON.stringify({rootMargin:e.rootMargin??"0px",threshold:e.threshold??0,once:Boolean(e.once)})}function ie(e){if("number"!=typeof e||!Number.isFinite(e)||e<0||e>1)throw new TypeError("Intersection threshold must be a number from 0 to 1.");return e}function ce({target:e,root:t,entry:r,entries:n=[r],observer:o,unsupported:s}){const a=Boolean(r?.isIntersecting),i="number"==typeof r?.intersectionRatio?r.intersectionRatio:a?1:0;return{target:e,element:e,el:e,root:t??C,entry:r,entries:n,observer:o,isIntersecting:a,intersectionRatio:i,unsupported:Boolean(s)}}function ue(e){const t=e.getBoundingClientRect?.()??null;return{target:e,isIntersecting:!0,intersectionRatio:1,time:0,rootBounds:null,boundingClientRect:t,intersectionRect:t}}function le(e,t=globalThis){const r=t.Element??globalThis.Element;return Boolean(r&&e instanceof r)}function fe(){if(K)throw new Error("Loader has been destroyed.")}function pe(e,t,r="self"){if("function"!=typeof e)return e;if(L.add(e),t){const n=J.get(t)??[];n.push({cleanup:e,mode:r}),J.set(t,n)}return e}function he(e){"function"==typeof e&&L.has(e)&&(L.delete(e),e())}function de(e){ge(e,"children");for(const t of[...e.childNodes??[]])ye(t)}function ye(e){if(1===e.nodeType)for(const t of j(e))ge(t),x.markScopeDestroyed(t)}function ge(e,t){const r=J.get(e);if(!r)return;const n=[];for(const e of r)t&&e.mode!==t?n.push(e):he(e.cleanup);n.length>0?J.set(e,n):J.delete(e)}function we(e,t,r){x.enqueue("lifecycle",t,{scope:e,key:r})}return q._setContext?.({server:Z.server,router:Z.router,loader:Z,cache:Z.cache,scheduler:x}),Z.server?._setContext?.({signals:q,handlers:M,loader:Z,router:Z.router,cache:Z.cache,scheduler:x}),Z}function y(e,t=new Set){if(null==e||!1===e)return t;if(a(e)){const r=e.value;return!0===r?(t.add(e.id.split(".").at(-1)),t):y(r,t)}if("string"==typeof e){for(const r of e.split(/\s+/).filter(Boolean))t.add(r);return t}if(Array.isArray(e)){for(const r of e)y(r,t);return t}if("object"==typeof e){for(const[r,n]of Object.entries(e))(a(n)?n.value:n)&&y(r,t);return t}return!0!==e&&t.add(String(e)),t}function g(e){return a(e)?e.value:Array.isArray(e)?e.map(g):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,g(t)])):e}function w(e,t=new Map){if(a(e))return t.set(e.id,e),[...t.values()];if(Array.isArray(e)){for(const r of e)w(r,t);return[...t.values()]}if(e&&"object"==typeof e)for(const r of Object.values(e))w(r,t);return[...t.values()]}function m(e){return"string"==typeof e&&e.startsWith(h)}function b(e){return y(e.getAttribute("class")??"")}function v(e,t){const r=[...t].join(" ");0!==r.length?e.setAttribute("class",r):e.removeAttribute("class")}function S(e,t,r){const n={};for(const o of[...e.children].filter(e=>"TEMPLATE"===e.tagName))E(o,"loading",t,e,r)&&(n.loading=o),E(o,"ready",t,e,r)&&(n.ready=o),E(o,"error",t,e,r)&&(n.error=o);return n}function E(e,t,r,n,o){return p(e,o,"async",t)===r||R(n)&&e.hasAttribute?.(t)}function $(e,t,r){if(!1===r||null==r)return e.removeAttribute(t),void(t in e&&(e[t]=!1));e.setAttribute(t,!0===r?"":String(r)),t in e&&(e[t]=r)}function A(e,t,r){e[t]=null!=r?r:""}function j(e){return function(e,t){const r=[];return 1===e?.nodeType&&e.matches?.(t)&&r.push(e),r.push(...e?.querySelectorAll?.(t)??[]),r}(e,"*")}function O(e,t){return R(e)&&e.hasAttribute?.("for")?e.getAttribute("for"):p(e,t,"async","boundary")}function R(e){return"ASYNC-SUSPENSE"===e?.tagName}function k(e,t){if(11===e?.nodeType)return e;if("TEMPLATE"===e?.tagName)return e.content.cloneNode(!0);if(e?.nodeType){const r=t.createDocumentFragment();return r.append(e),r}const r=t.createElement("template");return r.innerHTML=String(e??""),r.content.cloneNode(!0)}function _(e,t){const r=e.ownerDocument?.defaultView?.CustomEvent??globalThis.CustomEvent;e.dispatchEvent(new r("async:error",{bubbles:!0,detail:{error:t}}))}return{Loader:d,AsyncLoader:d}})(),p=(()=>{const{isTemplateResult:e,renderTemplate:n}=a,{attachRegistryInspection:o,createRegistryStore:s}=r,{createLazyRegistry:i,isLazyDescriptor:c}=t;function u(e,t={}){return r=e,Boolean(r&&"object"==typeof r&&!Array.isArray(r)&&(Object.hasOwn(r,"html")||Object.hasOwn(r,"signals")||Object.hasOwn(r,"boundary")||Object.hasOwn(r,"redirect")||Object.hasOwn(r,"status")||Object.hasOwn(r,"cache")))?{...e,html:Object.hasOwn(e,"html")?l(e.html,t):e.html}:{html:l(e,t)};var r}function l(t,r){return t?.nodeType||"string"==typeof t?t:(e(t),n(t,function(e){return{attributes:e.loader?.attributes,signals:e.signals,bind:e.loader?._registerBinding?.bind(e.loader)}}(r)))}function f(e){if("string"!=typeof e||0===e.length)throw new TypeError("Partial id must be a non-empty string.")}return{createPartialRegistry:function(e={},t={}){const r=t.registry??s(),n=t.type??"partial",a=r._map(n),l=t.lazyRegistry??i(t),p=new Map,h=o({register(e,t){if(f(e),"function"!=typeof t&&!c(t))throw new TypeError(`Partial "${e}" must be a function.`);if(a.has(e))throw new Error(`Partial "${e}" is already registered.`);return a.set(e,t),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))h.register(t,r);return h},unregister:e=>(f(e),p.delete(e),a.delete(e)),resolve(e){f(e);const t=a.get(e);return c(t)?(p.has(e)||p.set(e,async function(...r){const o=await l.resolve(n,e,t);if("function"!=typeof o)throw new TypeError(`Partial "${e}" did not resolve to a function.`);return o.apply(this,r)}),p.get(e)):t},async render(e,t={},r={}){f(e);const n=h.resolve(e);if(!n)throw new Error(`Partial "${e}" is not registered.`);const o={...r,id:e,props:t,cache:r.cache,partials:h};return u(await n.call(o,t),o)},_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))a.has(t)||h.register(t,r);return h}},r,n);return h.registerMany(e),h},normalizePartialResult:u}})(),h=(()=>{const{Loader:e}=f,{createHandlerRegistry:t}=u,{createScheduler:n}=l,{createSignalRegistry:a}=s,{applyServerResult:i}=c,{createRegistryStore:p}=r,{normalizeAttributeConfig:h}=o;function d(e,t={}){return{...t,partial:e}}const y=d,g=new Set(["csr","spa","ssr","mpa"]);function w(e={},t={}){const r=t.registry??p(),n=t.type??"route",o=r._map(n),s=[],a={registry:r,register(e,t){if(A(e),s.some(t=>t.pattern===e))throw new Error(`Route "${e}" is already registered.`);const r=m(e,t);return o.set(e,r.definition),s.push(r),E(s),r},registerMany(e){for(const[t,r]of Object.entries(e??{}))a.register(t,r);return a},unregister(e){A(e);const t=s.findIndex(t=>t.pattern===e);return-1!==t&&s.splice(t,1),o.delete(e)},match(e){const t=function(e){return e instanceof URL?e:new URL(String(e),globalThis.location?.href??"http://localhost/")}(e).pathname;for(const e of s){const r=e.regex.exec(t);if(!r)continue;const n={};return e.keys.forEach((e,t)=>{n[e]=S(r[t+1]??"")}),{pattern:e.pattern,params:n,route:e.definition}}return null},entries:()=>s.map(({pattern:e,definition:t})=>({pattern:e,route:t})),keys:()=>[...o.keys()],inspect:()=>r.entries(n),_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))o.has(t)?i(t,o.get(t)):a.register(t,r);return a}};for(const[e,t]of o)i(e,t);return a.registerMany(e),a;function i(e,t){if(s.some(t=>t.pattern===e))return;const r=m(e,t);o.set(e,r.definition),s.push(r),E(s)}}function m(e,t){const r="string"==typeof t?d(t):t,{regex:n,keys:o}=function(e){const t=[];if("*"===e)return{regex:/^.*$/,keys:t};if("/"===e)return{regex:/^\/$/,keys:t};const r=e.split("/").map(e=>e.startsWith(":")?(t.push(e.slice(1)),"([^/]+)"):String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("/");return{regex:new RegExp(`^${r}$`),keys:t}}(e);return{pattern:e,regex:n,keys:o,score:$(e),definition:r}}function b(e,t){return e?.closest?.(t)}function v(e){return Object.fromEntries(e.searchParams.entries())}function S(e){try{return decodeURIComponent(e)}catch{return e}}function E(e){e.sort((e,t)=>t.score-e.score||t.pattern.length-e.pattern.length)}function $(e){return"*"===e?-1:e.split("/").filter(Boolean).reduce((e,t)=>"*"===t?e:t.startsWith(":")?e+2:e+4,"/"===e?3:0)}function A(e){if("string"!=typeof e||"*"!==e&&!e.startsWith("/"))throw new TypeError('Route pattern must be a path string or "*".')}return{defineRoute:d,createRouteRegistry:w,createRouter:function({mode:r="ssr",root:o,boundary:s="route",routes:c=w(),loader:u,signals:l,handlers:f,server:p,cache:d,partials:y,attributes:m,scheduler:S}={}){!function(e){if(!g.has(e))throw new TypeError(`Unknown router mode "${e}".`)}(r);const E=o?.ownerDocument??o??globalThis.document,$=o??E,A=l??u?.signals??a(),j=f??u?.handlers??t(),O=S??u?.scheduler??n(),R=!S&&!u?.scheduler,k=h(m??u?.attributes),_=u??e({root:$,signals:A,handlers:j,server:p,cache:d,scheduler:O,attributes:k}),T=!u,C=new Set;let q,M=!1,x=0;const B={mode:r,root:$,boundary:s,routes:c,loader:_,signals:A,handlers:j,server:p,cache:d,partials:y,scheduler:O,attributes:k,start:()=>(V(),_.router=B,A._setContext?.({router:B,loader:_,server:p,cache:d,scheduler:O}),T&&_.start(),"mpa"===r||"ssr"===r?(P(),B):(function(){const e=e=>{const t=b(e.target,"a[href]");t&&!function(e,t){if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return!0;if(t.target||t.hasAttribute("download"))return!0;const r=U(t.href),n=W();return r.origin!==n.origin||function(e,t,r){return e.origin===t.origin&&e.pathname===t.pathname&&e.search===t.search&&(e.hash!==t.hash||!0===r.getAttribute?.("href")?.startsWith("#"))}(r,n,t)}(e,t)&&(e.preventDefault(),H(B.navigate(t.href)))},t=e=>{const t=b(e.target,"form");t&&!function(e){return"get"!==String(e.method||"get").toLowerCase()||U(e.action).origin!==W().origin}(t)&&(e.preventDefault(),H(B.navigate(function(e){const t=U(e.action||e.ownerDocument.defaultView.location.href),r=new e.ownerDocument.defaultView.FormData(e);return t.search=new URLSearchParams(r).toString(),t.href}(t))))},r=()=>H(B.navigate(W(),{history:!1}));$.addEventListener?.("click",e),$.addEventListener?.("submit",t),E.defaultView?.addEventListener?.("popstate",r),C.add(()=>$.removeEventListener?.("click",e)),C.add(()=>$.removeEventListener?.("submit",t)),C.add(()=>E.defaultView?.removeEventListener?.("popstate",r))}(),"csr"===r?(H(B.navigate(W(),{replace:!0,initial:!0,source:"client"})),B):(P(),B))),match:e=>c.match(U(e)),prefetch(e){if(V(),"mpa"===r||"ssr"===r)return Promise.resolve(null);const t=B.match(e);return t?.route?.partial&&y?.resolve?.(t.route.partial)?y.render(t.route.partial,t.params,{...D(t),prefetch:!0}):Promise.resolve(null)},navigate:async(e,t={})=>(V(),"mpa"===r||"ssr"===r?(E.defaultView?.location?.assign?.(e),null):async function(e,t={}){const r=B.match(e);if(!r)return L(e,null),function(e){I(e,null,{pending:!1,error:new Error(`No route matched ${e.pathname}${e.search}`)})}(e),null;const n=L(e,r);I(e,r,{pending:!0,error:null});try{if(!r.route?.partial||!y?.resolve?.(r.route.partial)){const t=new Error(`Route "${e.pathname}" does not have a registered partial.`);return N(n)&&z({pending:!1,error:t}),null}const o=await y.render(r.route.partial,r.params,D(r,n));return N(n)?(await async function(e,t,r,n){N(n)&&(await i(e,{signals:A,loader:_,router:B,cache:d,scheduler:O,abort:n?.abort}),await O.flush(),N(n)&&(null==e?.html||e.boundary||e.redirect||(_.swap(s,e.html),await O.flush()),e?.redirect||!1===r.history||(r.replace?E.defaultView?.history?.replaceState?.({},"",t.href):E.defaultView?.history?.pushState?.({},"",t.href))))}(o,e,t,n),N(n)?(z({pending:!1,error:null}),o):null):null}catch(e){if(!N(n))return null;throw z({pending:!1,error:e}),e}}(U(e),t)),destroy(){if(!M){M=!0,q?.controller.abort(new Error("Router has been destroyed."));for(const e of C)e();C.clear(),R&&O.destroy()}}};return B;function D(e,t){return{params:e.params,route:e.route,router:B,signals:A,handlers:j,loader:_,server:p,cache:d,scheduler:O,abort:t?.abort}}function L(e,t){q?.controller.abort(new Error(`Router navigation superseded by ${e.pathname}${e.search}.`));const r=new AbortController,n={id:++x,controller:r,abort:r.signal,target:e,matched:t};return q=n,n}function N(e){return!M&&e&&q?.id===e.id&&!e.abort.aborted}function P(){const e=W();I(e,B.match(e),{pending:!1,error:null})}function I(e,t,r={}){A.ensure("router",{}),z({url:e.href,path:e.pathname,query:v(e),params:t?.params??{},route:t?.route??null,...r})}function z(e){A.ensure("router",{});for(const[t,r]of Object.entries(e))A.set(`router.${t}`,r)}function H(e){e.catch(e=>{M||(z({pending:!1,error:e}),function(e,t){const r=e.ownerDocument?.defaultView?.CustomEvent??globalThis.CustomEvent;"function"==typeof r&&e.dispatchEvent?.(new r("async:error",{bubbles:!0,detail:{error:t}}))}($,e))})}function W(){return U(E.defaultView?.location?.href??"http://localhost/")}function U(e){return e instanceof URL?e:new URL(String(e),E.defaultView?.location?.href??"http://localhost/")}function V(){if(M)throw new Error("Router has been destroyed.")}},route:y}})(),d=(()=>{const{createCacheRegistry:e}=n,{createComponentRegistry:a}=i,{createHandlerRegistry:d}=u,{Loader:y}=f,{createPartialRegistry:g}=p,{createRouteRegistry:w,createRouter:m}=h,{createScheduler:b}=l,{createServerNamespace:v}=c,{cloneSignalDeclaration:S,createSignal:E,createSignalRegistry:$}=s,{createRegistryStore:A}=r,{attributeName:j,normalizeAttributeConfig:O}=o,{createLazyRegistry:R,defineRegistrySnapshot:k,sameRegistryValue:_}=t,T=new Set(["signal","handler","server","partial","route","component","asyncSignal"]);function C(e,t={}){const r=A(void 0,{target:"browser"}),n=new Set,o=t.createRuntime??q,s={registry:r,use(e,t){const o=function(e,t){const r={signal:{},handler:{},server:{},partial:{},route:{},component:{},asyncSignal:{},cache:{browser:{},server:{}}};if("string"==typeof e){if(!T.has(e))throw new Error(`Unknown Async registry type "${e}".`);return r[e]=J(e,t),r}if(!e||"object"!=typeof e)throw new TypeError("Async.use(...) requires a registry type or module object.");for(const[t,n]of Object.entries(e))if("cache"!==t){if(!T.has(t))throw new Error(`Unknown Async registry type "${t}".`);r[t]=J(t,n)}else r.cache.browser={...n?.browser??{}},r.cache.server={...n?.server??{}};return r}(e,t);!function(e,t){for(const r of T)L(e,r,t[r]);L(e,"cache.browser",t.cache.browser),L(e,"cache.server",t.cache.server)}(r,o);for(const e of n)e._applyUse(o);return s},snapshot:()=>r.rawSnapshot(),start(e={}){const t=o(s,e).start();return s.runtime=t,t},attachRoot:e=>function(e){return e.runtime||e.start(),e.runtime}(s).attachRoot(e),detachRoot:e=>s.runtime?.detachRoot(e)??s,applySnapshot:(e,t={})=>s.runtime?(s.runtime.applySnapshot(e,t),s):(function(e,t={},r={}){const n=I(t);for(const[t,o]of Object.entries(n.signal))P(e,"signal",t,E(o),r);for(const t of["handler","server","partial","route","component","asyncSignal"])for(const[o,s]of Object.entries(n[t]))P(e,t,o,s,r)}(r,e,t),s),inspectRoots:()=>s.runtime?.inspectRoots()??{count:0,roots:[]},_attach:e=>(n.add(e),()=>s._detach(e)),_detach(e){n.delete(e)}};return e&&s.use(e),s}function q(t=M,r={}){const n=(q=t,Boolean(q&&"function"==typeof q.use&&"function"==typeof q.snapshot&&q.registry)?t:C(t??{})),o=r.target??"browser",s=r.scheduler??r.loader?.scheduler??b({strategy:"server"===o?"manual":"microtask"}),i=!r.scheduler&&!r.loader?.scheduler,c=O(r.attributes),u=r.lazyRegistry??R({registryAssets:r.registryAssets,importModule:r.importModule}),l=r.registry??function(e,{target:t}={}){const r=e.rawSnapshot();return A({...r,signal:D(r.signal)},{target:t})}(n.registry,{target:o}),f=r.signals??$(void 0,{registry:l,type:"signal",lazyRegistry:u}),p=r.handlers??d(void 0,{registry:l,type:"handler",lazyRegistry:u}),h=e(void 0,{registry:l,type:"cache.server"}),v=e(void 0,{registry:l,type:"cache.browser"}),S=r.serverFactory??V,E=r.server??S(void 0,{registry:l,type:"server"}),j=r.partials??g(void 0,{registry:l,type:"partial",lazyRegistry:u}),k=r.routes??w(void 0,{registry:l,type:"route"}),_=r.components??a(void 0,{registry:l,type:"component",lazyRegistry:u}),T=r.loader||Object.hasOwn(r,"root")?r.root:null;var q;let L=r.loader,P=r.router,z=!1,H=()=>{},J=!1,F=!1;const Z=new Map,Y=T??globalThis.document,G=r.snapshot??("browser"===o?x(Y,{attributes:c}):void 0);!function(e,t){try{e.cache=t}catch{}}(E,h);const Q={app:n,registry:l,target:o,signals:f,handlers:p,server:E,partials:j,routes:k,components:_,browser:{cache:v},loader:L,router:P,scheduler:s,attributes:c,start:()=>(ne(),J||(J=!0,"server"!==o?(te({cache:v}),f._setContext?.({server:E,loader:L,cache:v,scheduler:s}),L?(X(L.root,L),L.start(),ee(L.root)):null!=T&&Q.attachRoot(T)):(te({cache:h}),f._setContext?.({server:E,cache:h,scheduler:s}))),Q),use:(e,t)=>(n.use(e,t),Q),attachRoot(e){if(ne(),"server"===o)throw new Error("Server runtimes cannot attach DOM roots.");if(!e)throw new TypeError("runtime.attachRoot(root) requires a root.");if(Z.has(e))return Q;const t=0===Z.size&&L?L:y({root:e,signals:f,handlers:p,server:E,cache:v,scheduler:s,attributes:c});return X(e,t),t.start(),te({cache:v}),f._setContext?.({server:E,loader:Q.loader,cache:v,scheduler:s}),ee(e),Q},detachRoot(e){if(ne(),"server"===o)return Q;if(null==e){for(const e of new Set(Z.values()))e.destroy?.();return Z.clear(),P?.destroy?.(),P=void 0,z=!1,L=void 0,Q.loader=void 0,Q.router=void 0,Q}const t=Z.get(e);if(!t)return Q;if(t.destroy?.(),Z.delete(e),L===t){P?.destroy?.(),P=void 0,z=!1;const e=Z.values().next().value;L=e,Q.loader=e,Q.router=void 0,e&&ee(e.root)}return Q},inspectRoots:()=>({count:Z.size,roots:[...Z].map(([e,t])=>({root:e,loader:t,primary:t===L}))}),applySnapshot:(e,t={})=>(function(e,t={},r={}){const n=I(t);N(e,"asyncSignal",n.asyncSignal,null,r);for(const[t,r]of Object.entries(n.signal))W(e.signals,t,r);e.browser.cache.restore(n.cache.browser),N(e,"handler",n.handler,e.handlers,r),N(e,"server",n.server,e.server,r),N(e,"partial",n.partial,e.partials,r),N(e,"route",n.route,e.routes,r),N(e,"component",n.component,e.components,r)}(Q,e,t),Q),async render(e){ne(),te({cache:h}),f._setContext?.({server:E,cache:h,scheduler:s});const t=k.match(e);if(!t)return await s.flush(),{html:K("",{status:404,signals:f,browserCache:v,boundary:r.boundary??"route",attributes:c}),status:404,signals:f.snapshot(),cache:{browser:v.snapshot()}};const n=t.route.partial,o=n&&j.resolve(n)?await j.render(n,t.params,{params:t.params,route:t.route,signals:f,handlers:p,server:E,cache:h,browserCache:v,partials:j,scheduler:s,...re()}):{html:""};if(o.signals)for(const[e,t]of Object.entries(o.signals))U(f,e,t);o.cache?.browser&&v.restore(o.cache.browser),await s.flush();const a=o.status??200;return{html:K(o.html,{status:a,signals:f,browserCache:v,boundary:o.boundary??r.boundary??"route",attributes:c}),status:a,signals:f.snapshot(),cache:{browser:v.snapshot()}}},destroy(){if(F)return;F=!0,H(),P?.destroy?.();const e=new Set(Z.values());for(const t of e)t.destroy?.();Z.clear(),L&&!e.has(L)&&L?.destroy?.(),f.destroy?.(),i&&s.destroy()},_applyUse(e){!function(e,t){B(e.signals,e.registry,t.signal),B(e.handlers,e.registry,t.handler),B(e.server,e.registry,t.server),B(e.partials,e.registry,t.partial),B(e.routes,e.registry,t.route),B(e.components,e.registry,t.component),function(e,t,r){if(r&&0!==Object.keys(r).length)for(const[n,o]of Object.entries(r))e.has(t,n)||e.register(t,n,o)}(e.registry,"asyncSignal",t.asyncSignal),B(e.browser.cache,e.registry,t.cache.browser),B(e.server.cache,e.registry,t.cache.server)}(Q,e)}};return E.cache=h,Q.server.cache=h,Q.applySnapshot(G,{strict:r.strictSnapshots??!0}),H=n._attach(Q),Q;function X(e,t){Z.set(e,t),L||(L=t,Q.loader=t),t.server=E,t.cache=v,t.scheduler=s}function ee(e){!1!==P&&!z&&(P||function(e,t){return Boolean(t.routerOptions||t.mode||e.entries().length>0)}(k,r))&&Q.loader&&(P=P??m({mode:r.mode??"ssr",root:e,boundary:r.boundary??"route",routes:k,loader:Q.loader,signals:f,handlers:p,server:E,cache:v,partials:j,scheduler:s,attributes:c}),Q.router=P,Q.loader.router=P,te({cache:v,router:P}),P.start(),z=!0)}function te(e={}){const t=function(e){return"function"==typeof e?.registerMany}(E)?h:e.cache;E._setContext?.({signals:f,loader:L,router:P,cache:t,scheduler:s,requestContext:r.requestContext,...re()})}function re(){const e=(t=r.requestContext)?"function"==typeof t.get?t.get()??{}:"function"==typeof t.getStore?t.getStore()??{}:{}:{};var t;return{requestContext:e,request:e.request??r.request,headers:e.headers??r.headers,cookies:e.cookies??r.cookies,locals:e.locals??r.locals}}function ne(){if(F)throw new Error("Async app runtime has been destroyed.")}}const M=C();function x(e=globalThis.document,{attributes:t}={}){const r=O(t),n=j(r,"async","snapshot"),o=e?.ownerDocument??e??globalThis.document,s=e??o;if(!s?.querySelectorAll&&!o?.querySelectorAll)return{};const a={};for(const e of new Set([s,o]))if(e?.querySelectorAll)for(const t of e.querySelectorAll("script[type='application/json'], script")){if(!t.hasAttribute?.(n))continue;const e=t.textContent?.trim()??"";if(!e)continue;let r;try{r=JSON.parse(e)}catch(e){throw new Error(`Could not parse Async snapshot: ${e instanceof Error?e.message:String(e)}`)}z(a,r,{strict:!0})}return a}function B(e,t,r){r&&0!==Object.keys(r).length&&(e?.registry!==t?e?.registerMany?.(r):e._adoptMany?.(r))}function D(e={}){const t={};for(const[r,n]of Object.entries(e??{}))t[r]=S(n);return t}function L(e,t,r){for(const[n,o]of Object.entries(r??{}))e.register(t,n,o)}function N(e,t,r,n,o={}){if(r&&0!==Object.keys(r).length){for(const[n,s]of Object.entries(r)){if("asyncSignal"===t&&e.signals?.has?.(n)&&!e.registry.has(t,n))throw new Error(`Signal "${n}" is already registered.`);P(e.registry,t,n,s,o)}n?._adoptMany?.(r)}}function P(e,t,r,n,o={}){const s=o.strict??!0,a=e._map(t);if(a.has(r)){if(_(a.get(r),n)||H(a.get(r),n))return;if(s)throw new Error(`${t} "${r}" is already registered with a different value.`)}else e.set(t,r,n)}function I(e={}){return{signal:{...e.signals??{},...e.signal??{}},handler:{...e.handler??{}},server:{...e.server??{}},partial:{...e.partial??{}},route:{...e.route??{}},component:{...e.component??{}},asyncSignal:{...e.asyncSignal??{}},cache:{browser:{...e.entries?.browser??{},...e.cache?.browser??{}}}}}function z(e,t,r={}){const n=I(k(t));e.signal={...e.signal??e.signals??{},...n.signal},e.signals=e.signal,e.cache={...e.cache??{},browser:{...e.cache?.browser??{},...n.cache.browser}};for(const t of["handler","server","partial","route","component","asyncSignal"]){e[t]=e[t]??{};for(const[o,s]of Object.entries(n[t]))if(Object.hasOwn(e[t],o)){if(_(e[t][o],s)||H(e[t][o],s))continue;if(r.strict??1)throw new Error(`${t} "${o}" is already declared with a different value.`)}else e[t][o]=s}return e}function H(e,t){if(e===t)return!0;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}function W(e,t,r){if(e.has?.(t)){const n=e._entry?.(t);return"function"==typeof n?._restore&&function(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&Object.hasOwn(e,"value")&&(Object.hasOwn(e,"loading")||Object.hasOwn(e,"error")||Object.hasOwn(e,"status")||Object.hasOwn(e,"version"))}(r)?void n._restore(r):void e.set(t,r)}e.register(t,E(r))}function U(e,t,r){if("function"==typeof e._setPath)return void e._setPath(t,r);const n=String(t).split(".")[0];e.has?.(n)?e.set(t,r):(e.register(n,E(t===n?r:{})),t!==n&&e.set(t,r))}function V(e={},t={}){const r=t.registry??A(),n=t.type??"server",o={},s={registry:r,register:(e,t)=>(r.register(n,e,t),e),registerMany(e){for(const[t,r]of Object.entries(e??{}))s.register(t,r);return s},unregister:e=>r.unregister(n,e),resolve(){},async run(e){throw new Error(`Server command "${e}" cannot run without a server proxy or server registry.`)},keys:()=>r.keys(n),entries:()=>r.entries(n),inspect:()=>r.entries(n),_setContext:(e={})=>(Object.assign(o,e),s),_adoptMany:()=>s};return s.registerMany(e),v((e,t,r)=>s.run(e,t,r),s,()=>o)}function J(e,t={}){if("signal"!==e)return{...t??{}};const r={};for(const[e,n]of Object.entries(t??{}))r[e]=F(n);return r}function F(e){return e&&"object"==typeof e&&"function"==typeof e.subscribe?e:E(e)}function K(e,{signals:t,browserCache:r,boundary:n,attributes:o}){const s={signals:t.snapshot(),cache:{browser:r.snapshot()}},a=j(o,"async","boundary"),i=j(o,"async","snapshot");return`<section ${a}="${c=n,String(c).replaceAll("&","&").replaceAll('"',""").replaceAll("<","<")}">${e??""}</section><script type="application/json" ${i}>${function(e){return JSON.stringify(e).replaceAll("<","\\u003c")}(s)}<\/script>`;var c}return{defineApp:C,createApp:q,readSnapshot:x,Async:M}})(),y=(()=>{function e(e){if("string"!=typeof e||0===e.length)throw new TypeError("Boundary patch boundary must be a non-empty string.")}function t(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))}return{createBoundaryReceiver:function(r={}){const n=r.loader,o=r.signals??n?.signals,s=r.cache??n?.cache,a=r.scheduler??n?.scheduler,i=r.router??n?.router,c=r.recentLimit??50,u=!0===r.throwOnError,l="function"==typeof r.onApply?r.onApply:void 0,f="function"==typeof r.onIgnore?r.onIgnore:void 0,p="function"==typeof r.onError?r.onError:void 0,h="function"==typeof r.isScopeDestroyed?r.isScopeDestroyed:e=>a?.isScopeDestroyed?.(e)??a?.inspectDestroyed?.(e)??!1;if(!n||"function"!=typeof n.swap)throw new TypeError("createBoundaryReceiver(...) requires a loader with swap(boundary, html).");if(!Number.isInteger(c)||c<0)throw new TypeError("createBoundaryReceiver(...) recentLimit must be a non-negative integer.");const d=new Map,y=[];let g=!1;const w={async apply(r){if(g)throw new Error("Boundary receiver has been destroyed.");const c=function(r){if(!r||"object"!=typeof r||Array.isArray(r))throw new TypeError("receiver.apply(patch) requires a boundary patch object.");if(e(r.boundary),"number"!=typeof r.seq||!Number.isFinite(r.seq))throw new TypeError("Boundary patch seq must be a finite number.");if(void 0!==r.signals&&!t(r.signals))throw new TypeError("Boundary patch signals must be an object.");if(void 0!==r.cache&&!t(r.cache))throw new TypeError("Boundary patch cache must be an object.");if(void 0!==r.cache?.browser&&!t(r.cache.browser))throw new TypeError("Boundary patch cache.browser must be an object.");if(void 0!==r.redirect&&("string"!=typeof r.redirect||0===r.redirect.length))throw new TypeError("Boundary patch redirect must be a non-empty string.");if(void 0!==r.parentScope&&"string"!=typeof r.parentScope)throw new TypeError("Boundary patch parentScope must be a string.");if(void 0!==r.scope&&"string"!=typeof r.scope)throw new TypeError("Boundary patch scope must be a string.");const n=Object.hasOwn(r,"html")&&null!=r.html,o=r.signals&&Object.keys(r.signals).length>0,s=r.cache?.browser&&Object.keys(r.cache.browser).length>0,a=Boolean(r.redirect),i=Object.hasOwn(r,"error");if(!(n||o||s||a||i))throw new TypeError("Boundary patch must include html, signals, cache.browser, redirect, or error.");return r}(r),y=(w=c.boundary,d.has(w)||d.set(w,{lastSeq:-1/0,applied:0,ignored:0,errored:0,lastStatus:void 0,pending:void 0}),d.get(w));var w;let b;const v=y.pending??Promise.resolve(),S=new Promise(e=>{b=e});y.pending=S;try{if(await v,g)throw new Error("Boundary receiver has been destroyed.");return await async function(e,t,r){if(t.seq<=e.lastSeq){const n={status:"ignored-stale",boundary:t.boundary,seq:t.seq,lastSeq:e.lastSeq};return e.ignored+=1,e.lastStatus=n.status,m(n),f?.(n,r),n}if(void 0!==t.parentScope&&h(t.parentScope)){const n={status:"ignored-destroyed",boundary:t.boundary,seq:t.seq,parentScope:t.parentScope};return e.ignored+=1,e.lastStatus=n.status,m(n),f?.(n,r),n}if(Object.hasOwn(t,"error")){const n=(c=t.error)instanceof Error?c:c&&"object"==typeof c&&"string"==typeof c.message?Object.assign(new Error(c.message),c):new Error(String(c)),o={status:"errored",boundary:t.boundary,seq:t.seq,error:n};if(e.lastSeq=t.seq,e.errored+=1,e.lastStatus=o.status,m(o),p?.(n,o,r),u)throw n;return o}var c;if(t.signals){if(!o||"function"!=typeof o.set)throw new Error("Boundary patch includes signals, but no signal registry is available.");for(const[e,r]of Object.entries(t.signals))o.set(e,r)}if(t.cache?.browser){if(!s||"function"!=typeof s.restore)throw new Error("Boundary patch includes browser cache, but no cache registry is available.");s.restore(t.cache.browser)}if(null!=t.html&&n.swap(t.boundary,t.html),await async function(e,t){e&&(void 0===t||"function"!=typeof e.flushScope?"function"==typeof e.flush&&await e.flush():await e.flushScope(t))}(a,t.scope),t.redirect){const o={status:"redirected",boundary:t.boundary,seq:t.seq,redirect:t.redirect};return await async function(e,t,r){if(t&&"function"==typeof t.navigate)return void await t.navigate(e);const n=r?.root?.ownerDocument?.defaultView?.location??globalThis.location;n?.assign?.(e)}(t.redirect,i,n),e.applied+=1,e.lastSeq=t.seq,e.lastStatus=o.status,m(o),l?.(o,r),o}const d={status:"applied",boundary:t.boundary,seq:t.seq};return e.applied+=1,e.lastSeq=t.seq,e.lastStatus=d.status,m(d),l?.(d,r),d}(y,c,r)}finally{b(),y.pending===S&&(y.pending=void 0)}},inspect(){const e={};for(const[t,r]of d)e[t]={lastSeq:r.lastSeq,applied:r.applied,ignored:r.ignored,lastStatus:r.lastStatus},r.errored>0&&(e[t].errored=r.errored);return{destroyed:g,boundaries:e,recent:y.map(e=>({...e}))}},reset(t){if(void 0===t)return d.clear(),y.length=0,w;e(t),d.delete(t);for(let e=y.length-1;e>=0;e-=1)y[e].boundary===t&&y.splice(e,1);return w},destroy(){g=!0,d.clear(),y.length=0}};return w;function m(e){if(0!==c)for(y.push(function(e){const t={boundary:e.boundary,seq:e.seq,status:e.status};return"ignored-stale"===e.status&&(t.lastSeq=e.lastSeq),"ignored-destroyed"===e.status&&void 0!==e.parentScope&&(t.parentScope=e.parentScope),"redirected"===e.status&&(t.redirect=e.redirect),t}(e));y.length>c;)y.shift()}}}})(),g=(()=>{function e(e){return e?.reason??new Error("Operation aborted")}return{delay:function(t,r){return r?.aborted?Promise.reject(e(r)):new Promise((n,o)=>{let s=setTimeout(function(){s=void 0,r?.removeEventListener?.("abort",a),n()},t);function a(){void 0!==s&&clearTimeout(s),s=void 0,r?.removeEventListener?.("abort",a),o(e(r))}r?.addEventListener?.("abort",a,{once:!0})})}}})(),w=(()=>{const{Async:e}=d;return{defineAsyncContainerElement:function(t={}){const r=t.tagName??"async-container",n=t.customElements??globalThis.customElements;if(!n)throw new Error("defineAsyncContainerElement(...) requires customElements.");const o=n.get(r);if(o)return o;const s=t.app??t.Async??e,a=t.HTMLElement??t.window?.HTMLElement??globalThis.HTMLElement;if(!a)throw new Error("defineAsyncContainerElement(...) requires HTMLElement.");class i extends a{connectedCallback(){if(this.__asyncAttached)return;const e=s.runtime??s.start?.();e?.attachRoot?.(this),this.__asyncRuntime=e,this.__asyncAttached=!0}disconnectedCallback(){this.__asyncAttached&&(this.__asyncRuntime?.detachRoot?.(this),this.__asyncRuntime=void 0,this.__asyncAttached=!1)}}return n.define(r,i),i},defineAsyncSuspenseElement:function(e={}){const t=e.tagName??"async-suspense",r=e.customElements??globalThis.customElements;if(!r)throw new Error("defineAsyncSuspenseElement(...) requires customElements.");const n=r.get(t);if(n)return n;const o=e.HTMLElement??e.window?.HTMLElement??globalThis.HTMLElement;if(!o)throw new Error("defineAsyncSuspenseElement(...) requires HTMLElement.");class s extends o{}return r.define(t,s),s}}})(),{asyncSignal:m}=e,{Async:b}=d,{createApp:v}=d,{defineApp:S}=d,{readSnapshot:E}=d,{attributeName:$}=o,{defineAttributeConfig:A}=o,{createBoundaryReceiver:j}=y,{createCacheRegistry:O}=n,{defineCache:R}=n,{component:k}=i,{createComponentRegistry:_}=i,{defineComponent:T}=i,{delay:C}=g,{defineAsyncContainerElement:q}=w,{defineAsyncSuspenseElement:M}=w,{createHandlerRegistry:x}=u,{html:B}=a,{createLazyRegistry:D}=t,{defineRegistrySnapshot:L}=t,{Loader:N}=f,{AsyncLoader:P}=f,{createPartialRegistry:I}=p,{createRegistryStore:z}=r,{createRouteRegistry:H}=h,{createRouter:W}=h,{defineRoute:U}=h,{route:V}=h,{createScheduler:J}=l,{applyServerResult:F}=c,{createServerProxy:K}=c,{resolveServerCommandArguments:Z}=c,{unwrapServerResult:Y}=c,{computed:G}=s,{createSignal:Q}=s,{createSignalRegistry:X}=s,{effect:ee}=s,{signal:te}=s,re={asyncSignal:m,Async:b,createApp:v,defineApp:S,readSnapshot:E,attributeName:$,defineAttributeConfig:A,createBoundaryReceiver:j,createCacheRegistry:O,defineCache:R,component:k,createComponentRegistry:_,defineComponent:T,delay:C,defineAsyncContainerElement:q,defineAsyncSuspenseElement:M,createHandlerRegistry:x,html:B,createLazyRegistry:D,defineRegistrySnapshot:L,Loader:N,AsyncLoader:P,createPartialRegistry:I,createRegistryStore:z,createRouteRegistry:H,createRouter:W,defineRoute:U,route:V,createScheduler:J,applyServerResult:F,createServerProxy:K,resolveServerCommandArguments:Z,unwrapServerResult:Y,computed:G,createSignal:Q,createSignalRegistry:X,effect:ee,signal:te};return function(e,t){const r=Object.keys(e).filter(e=>"Async"!==e&&Object.prototype.hasOwnProperty.call(t,e));if(r.length>0)throw new Error(`UMD Async namespace export conflict: ${r.join(", ")}.`)}(re,b),Object.assign(b,re),b.Async=b,b}();"function"==typeof define&&define.amd?define([],()=>t):"object"==typeof module&&module.exports?module.exports=t:(e.AsyncFramework=t,e.Async=t)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this);
|
|
1
|
+
!function(e){const t=function(){"use strict";const e=(()=>{const e=Symbol.for("@async/framework.asyncSignal");function t(e){if(null==e)return null;const t={name:r(e),message:n(e)},o=function(e){if(!e||"object"!=typeof e||!Object.hasOwn(e,"code"))return;const t=e.code;return"string"==typeof t||"number"==typeof t?t:void 0}(e);return void 0!==o&&(t.code=o),t}function r(e){return e&&"object"==typeof e&&"string"==typeof e.name&&e.name.length>0?e.name:"Error"}function n(e){return e instanceof Error||e&&"object"==typeof e&&"string"==typeof e.message?e.message:String(e)}return{asyncSignal:function r(n,o){if("string"!=typeof n||0===n.length)throw new TypeError("asyncSignal(id, fn) requires a non-empty string id.");if("function"!=typeof o)throw new TypeError("asyncSignal(id, fn) requires a function.");let s,a,i,c=!1,u=null,l="idle",f=0,p=n,d=0,h=!1;const y=new Set,g=new Set,m={[e]:!0,kind:"async-signal",get id(){return p},get value(){return s},get loading(){return c},get error(){return u},get status(){return l},get version(){return f},set:e=>(s=e,c=!1,u=null,l="ready",A(),s),refresh(){if(!a||h)throw new Error(`Async signal "${p}" is not registered.`);S(i,new Error(`Async signal "${p}" refreshed.`));const e=a,t=f+1;f=t,c=!0,u=null,l="loading";const r=function(e,t,r){const n=new AbortController,o=n.signal,s=function(e,t){const r=e._context?.()??{},n={signals:e,router:r.router,loader:r.loader,cache:r.cache,abort:t,scheduler:r.scheduler};return{signals:e,server:"function"==typeof r.server?._withContext?r.server._withContext(n):r.server,router:r.router,loader:r.loader,cache:r.cache,scheduler:r.scheduler}}(e,o),a={token:++d,version:r,registry:e,id:t,controller:n,abort:o,...s};return function(e,t,r){Object.defineProperty(e,"cancel",{configurable:!0,enumerable:!1,value(e){"function"!=typeof r?t.abort(e):r(e)}})}(o,n,e=>{S(a,e,{settle:!0,notifyChange:!0})}),a}(e,p,t);i=r,A();const n=function(e){return{signals:e.signals,id:e.id,get server(){return e.server},get router(){return e.router},get loader(){return e.loader},get cache(){return e.cache},get scheduler(){return e.scheduler},get version(){return e.version},get abort(){return e.abort},refresh:()=>m.refresh()}}(r);let y;try{y=e._collectDependencies(()=>o.call(n))}catch(e){return w(r,e),Promise.reject(e)}return function(e,t){if(b(t)){for(const e of g)e();g.clear();for(const r of e){const e=String(r).split(".")[0];e&&e!==p&&g.add(t.registry.subscribe(r,()=>$()))}}}(y.dependencies,r),Promise.resolve(y.value).then(e=>b(r)?(s=e,c=!1,u=null,l="ready",i=void 0,A(),s):s,e=>b(r)?(w(r,e),s):s)},cancel:e=>(v(e,{settle:!0,notifyChange:!0}),s),subscribe(e){if("function"!=typeof e)throw new TypeError("subscribe(fn) requires a function.");return y.add(e),()=>y.delete(e)},snapshot:()=>({value:void 0===s&&null!==u?null:s,loading:c,error:t(u),status:l,version:f}),_cloneSignalDeclaration:()=>r(n,o),_restore:(e={})=>function(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&Object.hasOwn(e,"value")&&(Object.hasOwn(e,"loading")||Object.hasOwn(e,"error")||Object.hasOwn(e,"status")||Object.hasOwn(e,"version"))}(e)?(v(new Error(`Async signal "${p}" restored from snapshot.`)),s=e.value,c=Boolean(e.loading),u=function(e){return t(e)}(e.error),l="string"==typeof e.status?e.status:function({value:e,loading:t,error:r}){return t?"loading":r?"error":void 0===e?"idle":"ready"}({value:s,loading:c,error:u}),Number.isFinite(e.version)&&(f=e.version),A(),m):m.set(e),_bindRegistry(e,t){a=e,p=t;const r=()=>{h||a!==e||"idle"!==l||m.refresh()},n=a._context?.().scheduler;n?n.enqueue("async",r,{scope:p,key:`asyncSignal:${p}:initial`}):queueMicrotask(r)},_dispose(){if(!h){h=!0,function(){const e=a?._context?.().scheduler;e?.cancelScope?.(p)}(),v(new Error(`Async signal "${p}" disposed.`));for(const e of g)e();g.clear(),y.clear(),a=void 0}}};function w(e,t){b(e)&&(c=!1,u=t,l="error",i=void 0,A())}function b(e){return Boolean(e)&&!h&&i===e&&e.token===d&&e.registry===a&&e.id===p&&!e.abort.aborted}function v(e,t={}){const r=i,n=Boolean(r)||c;r?S(r,e):n&&(d+=1),t.settle&&n&&!h&&E(t.notifyChange)}function S(e,t,r={}){if(!e)return;const n=i===e;n&&(d+=1,i=void 0),e.abort.aborted||e.controller.abort(t),n&&r.settle&&!h&&E(r.notifyChange)}function E(e=!1){const t=void 0===s?"idle":"ready",r=c||null!==u||l!==t;c=!1,u=null,l=t,e&&r&&A()}function $(){if(h||!a)return;S(i,new Error(`Async signal "${p}" dependency changed.`));const e=a?._context?.().scheduler;e?e.enqueue("async",()=>m.refresh(),{scope:p,key:`asyncSignal:${p}:refresh`}):m.refresh()}function A(){for(const e of[...y])e(m)}return m},isAsyncSignal:function(t){return Boolean(t?.[e])}}})(),t=(()=>{const e=new Set(["handler","component","asyncSignal","partial","route"]);function t(t={}){const r=function(e){if("string"!=typeof e||0===e.length)throw new TypeError("registryAssets.baseUrl must be a non-empty string.");return i(e)||e.startsWith("/")||e.startsWith("./")||e.startsWith("../")?a(e):`/${s(e)}`}(t.baseUrl??"_async"),n={component:"component",handler:"handler",asyncSignal:"asyncSignal",partial:"partial",route:"route",...t.paths??{}};for(const[t,r]of Object.entries(n))if(e.has(t)&&("string"!=typeof r||0===r.length))throw new TypeError(`Registry asset path for "${t}" must be a non-empty string.`);return{baseUrl:r,paths:n}}function r(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.url)}function n(t,n,c,u){if(!e.has(t))throw new Error(`Registry type "${t}" does not support lazy descriptors.`);if(!r(c))throw new TypeError(`Registry descriptor for "${t}:${n}" requires a url.`);const{path:l,hash:f}=function(e){const t=e.indexOf("#");return-1===t?{path:e,hash:""}:{path:e.slice(0,t),hash:e.slice(t+1)}}(c.url),p=function(e,t,r){if(i(t)||t.startsWith("/")||t.startsWith("./")||t.startsWith("../"))return t;const n=r.paths[e]??e;return function(...e){const[t,...r]=e;return[a(t),...r.map(s)].filter(Boolean).join("/")}(r.baseUrl,n,t)}(t,l,u);return{moduleUrl:p,exportNames:f?[f]:o(n,l),url:f?`${p}#${f}`:p}}function o(e,t){const r=[],n=e.split(".").filter(Boolean).at(-1),o=t.split("/").filter(Boolean).at(-1)?.replace(/\.[^.]+$/,"");for(const e of[n,o,"default"])e&&!r.includes(e)&&r.push(e);return r}function s(e){return String(e).replace(/^\/+|\/+$/g,"")}function a(e){return String(e).replace(/\/+$/g,"")}function i(e){return/^[A-Za-z][A-Za-z\d+.-]*:/.test(e)}function c(e){return!e||"object"!=typeof e||Array.isArray(e)?JSON.stringify(e):JSON.stringify(Object.keys(e).sort().map(t=>[t,e[t]]))}return{defineRegistrySnapshot:function(e={}){if(!e||"object"!=typeof e||Array.isArray(e))throw new TypeError("defineRegistrySnapshot(snapshot) requires an object.");return e},createLazyRegistry:function(e={}){const o=t(e.registryAssets??e.assets),s=e.importModule??(e=>import(e)),a=new Map,i=new Map;return{registryAssets:o,resolveUrl:(e,t,r)=>n(e,t,r,o),async resolve(e,t,c){if(!r(c))return c;const u=`${e}:${t}`;if(i.has(u))return i.get(u);const l=n(e,t,c,o);let f,p=a.get(l.moduleUrl);p||(p=Promise.resolve().then(()=>s(l.moduleUrl)),a.set(l.moduleUrl,p));try{f=await p}catch(r){throw a.get(l.moduleUrl)===p&&a.delete(l.moduleUrl),new Error(`Lazy ${e} "${t}" failed to import ${l.moduleUrl}: ${d=r,d instanceof Error?d.message:String(d)}`,{cause:r})}var d;const h=function(e,t,r,n){for(const r of t)if(r in e)return e[r];throw new Error(`Lazy ${r} "${n}" did not export ${t.map(e=>`"${e}"`).join(", ")}.`)}(f,l.exportNames,e,t);return i.set(u,h),h},inspect:()=>({registryAssets:o,modules:[...a.keys()],exports:[...i.keys()]})}},normalizeRegistryAssets:t,isLazyDescriptor:r,sameRegistryValue:function(e,t){return e===t||!(!r(e)||!r(t))&&c(e)===c(t)},publicRegistryValue:function(e,t){return r(e)?{...e}:{id:t}}}})(),r=(()=>{const{publicRegistryValue:e}=t,r=new Set(["signal","handler","server","partial","route","component","asyncSignal"]),n=new Set(["cache.browser","cache.server"]),o=new Set(["cache.browser.entries","cache.server.entries"]),s=new Set([...r,...n,...o]);function a(e){if(!s.has(e))throw new Error(`Unknown Async registry type "${e}".`);return e}function i(e,t){if("string"!=typeof t||0===t.length)throw new TypeError(`${e} id must be a non-empty string.`)}function c(t,r,n,s){return"server"===t&&"browser"===s.target?e(n,r):o.has(t)?n?.value:n}function u(e,t){return"cache.server.entries"===e&&"browser"===t}function l(e){const t={};for(const[r,n]of e)t[r]="function"==typeof n?.snapshot?n.snapshot():n?.value??n;return t}function f(t){const r={};for(const[n,o]of t)r[n]=e(o,n);return r}function p(e){return Object.fromEntries(e)}function d(e){const t={};for(const[r,n]of e)t[r]=n?.value;return t}function h(e){return e&&"object"==typeof e&&Object.hasOwn(e,"value")?e:{value:e}}return{createRegistryStore:function e(t={},n={}){const o=n.backing??{signal:new Map,handler:new Map,server:new Map,partial:new Map,route:new Map,component:new Map,asyncSignal:new Map,cache:{browser:new Map,server:new Map},cacheEntries:{browser:new Map,server:new Map}},s=n.target??"server",y={target:s,register(e,t,r){const n=y._map(e);if(i(e,t),n.has(t))throw new Error(`${e} "${t}" is already registered.`);return n.set(t,r),t},registerMany(e,t={}){for(const[r,n]of Object.entries(t??{}))y.register(e,r,n);return y},set(e,t,r){const n=y._map(e);return i(e,t),n.set(t,r),r},unregister:(e,t)=>y.delete(e,t),delete:(e,t)=>y._map(e).delete(t),keys:e=>u(e,s)?[]:[...y._map(e).keys()],entries(e,t={}){const r=a(e);return u(r,t.target??s)?[]:[...y._map(r)].map(([e,n])=>[e,c(r,e,n,{target:s,...t})])},has:(e,t)=>(i(e,t),!u(e,s)&&y._map(e).has(t)),get(e,t,r={}){i(e,t);const n=a(e);if(u(n,r.target??s))return;const o=y._map(n).get(t);return void 0!==o?c(n,t,o,{target:s,...r}):void 0},snapshot(e={}){const t=e.target??s;return{signal:l(o.signal),handler:f(o.handler),server:f(o.server),partial:f(o.partial),route:p(o.route),component:f(o.component),asyncSignal:f(o.asyncSignal),cache:{browser:p(o.cache.browser),server:p(o.cache.server)},entries:{browser:d(o.cacheEntries.browser),server:"browser"===t?{}:d(o.cacheEntries.server)}}},rawSnapshot:()=>({signal:Object.fromEntries(o.signal),handler:Object.fromEntries(o.handler),server:Object.fromEntries(o.server),partial:Object.fromEntries(o.partial),route:Object.fromEntries(o.route),component:Object.fromEntries(o.component),asyncSignal:Object.fromEntries(o.asyncSignal),cache:{browser:Object.fromEntries(o.cache.browser),server:Object.fromEntries(o.cache.server)}}),view:(t={})=>e(void 0,{backing:o,target:t.target??s}),_map(e){const t=a(e);if(r.has(t))return o[t];if("cache.browser"===t)return o.cache.browser;if("cache.server"===t)return o.cache.server;if("cache.browser.entries"===t)return o.cacheEntries.browser;if("cache.server.entries"===t)return o.cacheEntries.server;throw new Error(`Unknown Async registry type "${e}".`)}};return function(e,t={}){e.registerMany("signal",t.signal),e.registerMany("handler",t.handler),e.registerMany("server",t.server),e.registerMany("partial",t.partial),e.registerMany("route",t.route),e.registerMany("component",t.component),e.registerMany("asyncSignal",t.asyncSignal),e.registerMany("cache.browser",t.cache?.browser),e.registerMany("cache.server",t.cache?.server);const r=t.entries??{};for(const[t,n]of Object.entries(r.browser??{}))e.set("cache.browser.entries",t,h(n));for(const[t,n]of Object.entries(r.server??{}))e.set("cache.server.entries",t,h(n))}(y,t),y},attachRegistryInspection:function(e,t,r){return Object.defineProperty(e,"registry",{configurable:!0,enumerable:!0,value:t}),e.keys=()=>t.keys(r),e.entries=()=>t.entries(r),e.inspect=()=>t.entries(r),e}}})(),n=(()=>{const{attachRegistryInspection:e,createRegistryStore:t}=r,n=Symbol.for("@async/framework.cacheDefinition");function o(e={}){return{[n]:!0,kind:"cache-definition",store:e.store??"memory",ttl:e.ttl}}function s(e){if("string"!=typeof e||0===e.length)throw new TypeError("Cache id must be a non-empty string.")}function a(e){if("string"!=typeof e||0===e.length)throw new TypeError("Cache key must be a non-empty string.")}return{defineCache:o,createCacheRegistry:function(r={},{now:i=()=>Date.now(),registry:c,type:u="cache.browser"}={}){const l=c??t(),f=l._map(u),p=l._map(`${u}.entries`),d=new Map,h=e({register(e,t=o()){s(e);const r=function(e){return e?.[n]?e:o(e)}(t);if(f.has(e))throw new Error(`Cache "${e}" is already registered.`);return f.set(e,r),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))h.register(t,r);return h},unregister:e=>(s(e),f.delete(e)),resolve:e=>(s(e),f.get(e)),get:e=>(a(e),y(e).value),set(e,t,r={}){a(e);const n=r.ttl??function(e,t){if(void 0!==t)return f.get(t);if(f.has(e))return f.get(e);const r=e.split(":")[0];return f.get(r)}(e,r.cache)?.ttl;return p.set(e,{value:t,expiresAt:void 0===n?void 0:i()+n}),t},async getOrSet(e,t,r={}){if(a(e),"function"!=typeof t)throw new TypeError("cache.getOrSet(key, fn) requires a function.");const n=y(e);if(n.found)return n.value;if(d.has(e))return d.get(e);let o;return o=Promise.resolve().then(t).then(t=>(d.get(e)===o&&h.set(e,t,r),t)).finally(()=>{d.get(e)===o&&d.delete(e)}),d.set(e,o),o},delete:e=>(a(e),d.delete(e),p.delete(e)),clear(e){if(void 0===e)return p.clear(),d.clear(),h;for(const t of[...p.keys()])t.startsWith(e)&&p.delete(t);for(const t of[...d.keys()])t.startsWith(e)&&d.delete(t);return h},snapshot(){const e={};for(const[t]of p){const{found:r,value:n}=y(t);r&&void 0!==n&&(e[t]=n)}return e},restore(e={}){for(const[t,r]of Object.entries(e??{}))h.set(t,r);return h},entryKeys:()=>[...p.keys()],entryEntries:()=>l.entries(`${u}.entries`),_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))f.has(t)||h.register(t,r);return h}},l,u);return h.registerMany(r),h;function y(e){const t=p.get(e);return t?void 0!==t.expiresAt&&t.expiresAt<=i()?(p.delete(e),{found:!1,value:void 0}):{found:!0,value:t.value}:{found:!1,value:void 0}}}}})(),o=(()=>{const e=Object.freeze({async:["async:"],class:["class:"],signal:["signal:"],intersect:["intersect:"],on:["on:"]});function t(t={}){return{async:r(t.async,e.async),class:r(t.class,e.class),signal:r(t.signal,e.signal),intersect:r(t.intersect,e.intersect),on:r(t.on,e.on)}}function r(e,t){return(null==e?t:Array.isArray(e)?e:[e]).map(e=>{if("string"!=typeof e||0===e.length)throw new TypeError("Attribute prefixes must be non-empty strings.");return e})}return{defineAttributeConfig:function(e={}){return t(e)},normalizeAttributeConfig:t,attributeName:function(e,r,n){return t(e)[r][0]+n},readAttribute:function(e,r,n,o){for(const s of t(r)[n]){const t=`${s}${o}`;if(e.hasAttribute?.(t))return e.getAttribute(t)}return null},matchAttribute:function(e,r,n){for(const o of t(r)[n])if(e.startsWith(o))return e.slice(o.length);return null}}})(),s=(()=>{const{asyncSignal:n,isAsyncSignal:o}=e,{attachRegistryInspection:s,createRegistryStore:a}=r,{createLazyRegistry:i,isLazyDescriptor:c}=t,u=Symbol.for("@async/framework.signal"),l=Symbol.for("@async/framework.computed"),f=Symbol.for("@async/framework.effect"),p=Symbol.for("@async/framework.signalRef"),d=[];function h(e){let t=e;const r=new Set;return{[u]:!0,kind:"signal",get value(){return t},set value(e){this.set(e)},set:e=>(Object.is(t,e)||(t=e,function(){for(const e of[...r])e(t)}()),t),update(e){return this.set(e(t))},subscribe(e){if("function"!=typeof e)throw new TypeError("subscribe(fn) requires a function.");return r.add(e),()=>r.delete(e)},snapshot:()=>t,_cloneSignalDeclaration:()=>h(t)}}function y(e){return"function"==typeof e?._cloneSignalDeclaration?e._cloneSignalDeclaration():g(e)?h("function"==typeof e.snapshot?e.snapshot():e.value):h(e)}function g(e){return Boolean(e&&"object"==typeof e&&"function"==typeof e.subscribe)}function m(e,t){let r=e;for(const e of t){if(null==r)return;r=r[e]}return r}function w(e,t,r){const n=b(e,t[0]);let o=n;for(let e=0;e<t.length-1;e+=1){const r=t[e],n=t[e+1];o[r]=b(o[r],n),o=o[r]}return o[t.at(-1)]=r,n}function b(e,t){return Array.isArray(e)?[...e]:e&&"object"==typeof e?{...e}:(r=t,String(Number(r))===String(r)?[]:{});var r}function v(e,t){const r=e.get(t);if(!r)throw new Error(`Signal "${t}" is not registered.`);return r}function S(e){if("string"!=typeof e||0===e.length)throw new TypeError("Signal id must be a non-empty string.")}return{createSignal:h,computed:function e(t){if("function"!=typeof t)throw new TypeError("computed(fn) requires a function.");const r=h(void 0);return{[l]:!0,kind:"computed",get value(){return r.value},set:e=>r.set(e),update:e=>r.update(e),subscribe:e=>r.subscribe(e),snapshot:()=>r.snapshot(),_cloneSignalDeclaration:()=>e(t),_bindRegistry:(e,n)=>e.effect(()=>{r.set(t.call({signals:e,id:n,server:e._context?.().server,router:e._context?.().router,loader:e._context?.().loader,cache:e._context?.().cache,scheduler:e._context?.().scheduler}))})}},effect:function e(t){if("function"!=typeof t)throw new TypeError("effect(fn) requires a function.");return{[f]:!0,kind:"effect",fn:t,_cloneSignalDeclaration:()=>e(t),_bindRegistry:e=>e.effect(t)}},createSignalRegistry:function(e={},t={}){const r=t.registry??a(),u=t.type??"signal",l=r._map(u),f=r._map("asyncSignal"),b=t.lazyRegistry??i(t),E=new Map,$={},A=new Set;let j=0,O=0;for(const e of l.keys())if(f.has(e))throw new Error(`Signal "${e}" is already registered.`);const R=s({register(e,t){if(S(e),l.has(e)||f.has(e))throw new Error(`Signal "${e}" is already registered.`);const r=function(e){return g(e)?e:h(e)}(t);return l.set(e,r),T(e,r),R.ref(e)},registerMany(e){for(const[t,r]of Object.entries(e??{}))R.register(t,r);return R},unregister(e){S(e);const t=l.has(e),r=f.has(e);return!(!t&&!r||(t&&(E.get(e)?.(),E.delete(e),l.get(e)?._dispose?.(),l.delete(e),A.delete(e)),f.delete(e),0))},ensure:(e,t)=>(S(e),_(e),l.has(e)||R.register(e,h(t)),R.ref(e)),has:e=>l.has(e)||f.has(e),get(e){const t=k(e);return function(e){const t=d.at(-1);t&&t.add(e)}(t.path),function(e,t){if(o(e)&&t[0]?.startsWith("$"))return m(function(e,t){switch(t){case"$value":return e.value;case"$loading":return e.loading;case"$error":return e.error;case"$status":return e.status;case"$version":return e.version;default:return}}(e,t[0]),t.slice(1));return m(e.value,t)}(v(l,t.id),t.parts)},set(e,t){const r=k(e),n=v(l,r.id);if(0===r.parts.length)return n.set(t);const o=w(n.value,r.parts,t);return n.set(o),t},update(e,t){if("function"!=typeof t)throw new TypeError("update(path, fn) requires a function.");return R.set(e,t(R.get(e)))},ref:e=>(S(e),_(e),function(e,t){return{[p]:!0,kind:"signal-ref",id:t,get value(){return e.get(t)},set value(r){e.set(t,r)},get loading(){return e._entry(t).loading??!1},get error(){return e._entry(t).error??null},get status(){return e._entry(t).status??"ready"},get version(){return e._entry(t).version??0},get:()=>e.get(t),set:r=>e.set(t,r),update:r=>e.update(t,r),subscribe:r=>e.subscribe(t,r),refresh(){const r=e._entry(t);if("function"!=typeof r.refresh)throw new Error(`Signal "${t}" cannot refresh.`);return r.refresh()},cancel(r){const n=e._entry(t);if("function"!=typeof n.cancel)throw new Error(`Signal "${t}" cannot cancel.`);return n.cancel(r)},toString:()=>t,[Symbol.toPrimitive]:()=>t}}(R,e)),subscribe(e,t,r={}){if("function"!=typeof t)throw new TypeError("subscribe(path, fn) requires a function.");const n=k(e),o=v(l,n.id),s=++j;return o.subscribe(()=>{!function(e,t={}){const r=t.scheduler;r&&"sync"!==t.phase?r.enqueue(t.phase??"effect",e,{scope:t.scope,key:t.key}):e()}(()=>t(R.get(n.path),{id:n.id,path:n.path,signal:o}),{...r,key:r.key??`signal:${n.path}:${s}`})})},snapshot(){const e={};for(const[t,r]of l)e[t]="function"==typeof r.snapshot?r.snapshot():r.value;return e},asyncSignal:(e,t)=>(R.register(e,n(e,t)),R.ref(e)),effect(e,t={}){let r,n=[],o=!1;const s=t.scheduler,a=++O,i=()=>{if(o)return;"function"==typeof r&&r();for(const e of n)e();n=[];const t=R._collectDependencies(()=>e.call({signals:R,server:$.server,router:$.router,loader:$.loader,cache:$.cache,scheduler:$.scheduler}));r=t.value,n=t.dependencies.map(e=>R.subscribe(e,c))},c=()=>{s?s.enqueue(t.phase??"effect",i,{scope:t.scope,key:t.key??`effect:${a}`}):i()};return i(),()=>{o=!0,"function"==typeof r&&r();for(const e of n)e()}},destroy(){for(const e of E.values())e();E.clear();for(const e of l.values())e._dispose?.();l.clear()},_collectDependencies(e){const t=new Set;d.push(t);try{return{value:e(),dependencies:[...t]}}finally{d.pop()}},_entry:e=>(_(e),v(l,e)),_setPath(e,t){const r=function(e){if("string"!=typeof e||0===e.length)throw new TypeError("Signal path must be a non-empty string.");const[t,...r]=e.split(".");return{id:t,parts:r,path:e}}(e);l.has(r.id)||(f.has(r.id)?_(r.id):R.register(r.id,h(0===r.parts.length?t:{})));const n=v(l,r.id);if(0===r.parts.length)return n.set(t);const o=w(n.value,r.parts,t);return n.set(o),t},_setContext:(e={})=>(Object.assign($,e),R),_context:()=>$,_adoptMany(e={}){for(const[t,r]of Object.entries(e??{})){if(!l.has(t)){if(f.has(t))throw new Error(`Signal "${t}" is already registered.`);const e=y(r);l.set(t,e),T(t,e);continue}T(t,l.get(t))}return R}},r,u);for(const[e,t]of l)T(e,t);return R.registerMany(e),R;function T(e,t){if(A.has(e)||"function"!=typeof t?._bindRegistry)return;A.add(e);const r=t._bindRegistry(R,e);"function"==typeof r&&E.set(e,r)}function k(e){if("string"!=typeof e||0===e.length)throw new TypeError("Signal path must be a non-empty string.");const t=e.split(".");for(let r=t.length;r>0;r-=1){const n=t.slice(0,r).join(".");if(l.has(n)||f.has(n))return _(n),{id:n,parts:t.slice(r),path:e}}const[r,...n]=t;return{id:r,parts:n,path:e}}function _(e){if(l.has(e)||!f.has(e))return;const t=f.get(e);if(!c(t)&&"function"!=typeof t)throw new TypeError(`Async signal "${e}" must be a function or lazy descriptor.`);const r=n(e,async function(...r){const n=await b.resolve("asyncSignal",e,t);if("function"!=typeof n)throw new TypeError(`Async signal "${e}" did not resolve to a function.`);return n.apply(this,r)});l.set(e,r),T(e,r)}},cloneSignalDeclaration:y,isSignalRef:function(e){return Boolean(e?.[p])},signal:h}})(),a=(()=>{const{isSignalRef:e}=s,{attributeName:t,matchAttribute:r,normalizeAttributeConfig:n}=o,a=Symbol.for("@async/framework.template"),i=Symbol.for("@async/framework.rawHtml");function c(e){return Boolean(e?.[a])}function u(e,t={}){if(c(e)){const r=p(t);let n="";for(let t=0;t<e.strings.length;t+=1)n+=e.strings[t],t<e.values.length&&(n+=l(e.values[t],{...r,attribute:d(e.strings[t])}));return n}return l(e,p(t))}function l(n,o=p()){return n?.[i]?n.html:c(n)?u(n,o):o.attribute?function(n,o){const s=r(o.attribute.name,o.attributes,"signal"),a=r(o.attribute.name,o.attributes,"class"),i=function(t,r){return e(t)?t.id:"string"==typeof t&&r.signals?.has?.(t)?t:null}(n,o);if("value"===o.attribute.name&&i){const r=function(t,r){return e(t)?t.value:"string"==typeof t&&r.signals?.has?.(t)?r.signals.get(t):t}(n,o),s=t(o.attributes,"signal","value");return`${h(r)}${o.attribute.quote} ${s}=${o.attribute.quote}${h(i)}`}if(null!=s||null!=a){if(i)return h(i);if(function(e){return Boolean(e&&"object"==typeof e)}(n))return h(function(e,t){return"function"!=typeof t.bind?e:t.bind(e)}(n,o))}return f(n,o)}(n,o):Array.isArray(n)?n.map(e=>l(e,o)).join(""):e(n)?h(n.value):null==n||!1===n?"":h(n)}function f(t,r){return Array.isArray(t)?t.map(e=>f(e,r)).join(""):e(t)?h(t.value):null==t||!1===t?"":h(t)}function p(e={}){return{...e,attributes:n(e.attributes)}}function d(e){const t=e.match(/(?:^|[\s<])([^\s"'=<>`]+)\s*=\s*(["'])$/);return t?{name:t[1],quote:t[2]}:null}function h(e){return String(e).replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}return{html:function(e,...t){return{[a]:!0,strings:e,values:t}},isTemplateResult:c,rawHtml:function(e){return{[i]:!0,html:String(e??"")}},renderTemplate:u,escapeHtml:h}})(),i=(()=>{const{attributeName:e}=o,{escapeHtml:n,rawHtml:s,renderTemplate:i}=a,{attachRegistryInspection:c,createRegistryStore:u}=r,{createLazyRegistry:l,isLazyDescriptor:f}=t,p=Symbol.for("@async/framework.component");let d=0;function h(e){if("function"!=typeof e)throw new TypeError("defineComponent(fn) requires a function.");return Object.defineProperty(e,p,{configurable:!0,value:!0}),e}function y(e){return Boolean(e?.[p])}function g(t,r={},o,a="component"){if(!y(t)&&"function"!=typeof t)throw new TypeError("renderComponent(Component) requires a component function.");const c=`${a}.${b(t)}.${++d}`,u=[],l=[],f=[],p=[],h=[],v=[],S={attributes:o.attributes,signals:o.signals,bind(e){const t=o.loader?._registerBinding?.(e);if(!t)throw new Error("Inline template bindings require a Loader.");return v.push(t),t}},E=e=>i(e,S),$=function({runtime:t,scope:r,cleanups:o,attachHooks:a,visibleHooks:i,intersectionHooks:c,destroyHooks:u,renderScopedTemplate:l}){const{signals:f,handlers:p,loader:d,server:h,router:y,cache:b,scheduler:v}=t,S=new WeakMap;let E=0,$=0;const A={scope:r,signals:f,handlers:p,loader:d,server:h,router:y,cache:b,scheduler:v,signal(e,t){if(1===arguments.length){const t=w(r,"signal."+ ++$),n=f.ensure(t,e);return o.push(()=>f.unregister?.(t)),n}const n=w(r,e),s=!f.has(n),a=f.ensure(n,t);return s&&o.push(()=>f.unregister?.(n)),a},computed(e,t){const n=w(r,e),s=!f.has(n),a=f.ensure(n,void 0);s&&o.push(()=>f.unregister?.(n));const i=f.effect(()=>{f.set(n,t.call(A))});return o.push(i),a},asyncSignal(e,t){const n=w(r,e),s=!f.has(n);return f.has(n)||f.asyncSignal(n,t),s&&o.push(()=>f.unregister?.(n)),f.ref(n)},effect(e){const t=f.effect(()=>e.call(A),{scheduler:v,phase:"effect",scope:r});return o.push(t),t},handler(e,t){if("function"==typeof e&&void 0===t){const t=e;if(S.has(t))return S.get(t);const r=j("handler."+ ++E,t);return S.set(t,r),r}if("function"!=typeof t)throw new TypeError("this.handler(name, fn) or this.handler(fn) requires a function.");return j(e,t)},render(e,n={}){const u=g(e,n,t,r);return o.push(u.cleanup),a.push(e=>u.attach(e)),i.push(e=>u.visible(e,d._observeVisible)),c.push(e=>u.intersection(e,d._observeIntersection)),s(u.html)},suspense(r,o){const a=r?.id;if(!a)throw new TypeError("this.suspense(signalRef, views) requires a signal ref.");const i=function(e){const t="function"==typeof e?{ready:e}:e;if(!t||"object"!=typeof t||Array.isArray(t))throw new TypeError("this.suspense(signalRef, views) requires views to be a function or object.");for(const e of["loading","ready","error"])if(Object.hasOwn(t,e)&&void 0!==t[e]&&"function"!=typeof t[e])throw new TypeError(`this.suspense(signalRef, views) view "${e}" must be a function.`);return t}(o),c=[];for(const o of["loading","ready","error"]){const s=i[o];if(!s)continue;const u=e(t.attributes,"async",o),f=l(s.call(A,r));c.push(`<template ${u}="${n(a)}">${f}</template>`)}return s(c.join(""))},on(e,t,r){if("string"!=typeof e||0===e.length)throw new TypeError("Component lifecycle event must be a non-empty string.");const n="mount"===e?"attach":e;if("intersect"===n){const{options:n,fn:o}=m(`Component lifecycle "${e}"`,t,r);return void c.push(e=>{A.intersect(e,n,o)})}if(void 0!==r||"function"!=typeof t)throw new TypeError(`Component lifecycle "${e}" requires a function.`);const o=t;if("attach"!==n)if("visible"!==n){if("destroy"!==n)throw new Error(`Unsupported component lifecycle event "${e}".`);u.push(()=>o.call(A))}else i.push(e=>o.call(A,e));else a.push(e=>o.call(A,e))},onMount(e){A.on("attach",e)},onVisible(e){A.on("visible",e)},intersect(e,t,n){const{options:s,fn:a}=m("this.intersect(target, ...)",t,n),i=d._observeIntersection(e,e=>a.call(A,e),{...s,scope:r});return"function"==typeof i&&o.push(i),i}};return A;function j(e,t){const n=w(r,e);return p.register(n,e=>t.call({...A,...e},e)),o.push(()=>p.unregister?.(n)),n}}({runtime:o,scope:c,cleanups:u,attachHooks:l,visibleHooks:f,intersectionHooks:p,destroyHooks:h,renderScopedTemplate:E}),A=t.call($,r);if(A&&"function"==typeof A.then)throw new TypeError(`Component "${b(t)}" returned a Promise. Async components are not supported by synchronous renderComponent(). Use an async partial or handler instead.`);return{html:E(A),attach(e){for(let t=0;t<l.length;t+=1){const r=l[t];o.scheduler?.enqueue("lifecycle",()=>{const t=r(e);"function"==typeof t&&u.push(t)},{scope:c,key:`attach:${t}`})??j(r,e)}},mount(e){this.attach(e)},visible(e,t){if(0===f.length)return;const r=t(e,()=>{for(let t=0;t<f.length;t+=1){const r=f[t];o.scheduler?.enqueue("lifecycle",()=>{const t=r(e);"function"==typeof t&&u.push(t)},{scope:c,key:`visible:${t}`})??O(r,e)}});"function"==typeof r&&u.push(r)},intersection(e,t){if(0!==p.length)for(let r=0;r<p.length;r+=1)(0,p[r])(e,t)},cleanup(){for(;h.length>0;)h.pop()?.();for(o.scheduler?.markScopeDestroyed(c);u.length>0;)u.pop()?.();for(;v.length>0;)o.loader?._releaseBinding?.(v.pop())}};function j(e,t){const r=e(t);"function"==typeof r&&u.push(r)}function O(e,t){const r=e(t);"function"==typeof r&&u.push(r)}}function m(e,t,r){if("function"==typeof t&&void 0===r)return{options:{},fn:t};if((null==t||"object"==typeof t&&!Array.isArray(t))&&"function"==typeof r)return{options:t??{},fn:r};throw new TypeError(`${e} requires (fn) or (options, fn).`)}function w(e,t){if("string"!=typeof t||0===t.length)throw new TypeError("Scoped signal or handler name must be a non-empty string.");return`${e}.${t}`}function b(e){return e.displayName||e.name||"anonymous"}return{defineComponent:h,createComponentRegistry:function(e={},t={}){const r=t.registry??u(),n=t.type??"component",o=r._map(n),s=t.lazyRegistry??l(t),a=new Map,i=c({register(e,t){if("string"!=typeof e||0===e.length)throw new TypeError("Component id must be a non-empty string.");if(!y(t)&&"function"!=typeof t&&!f(t))throw new TypeError(`Component "${e}" must be a component function.`);if(o.has(e))throw new Error(`Component "${e}" is already registered.`);return o.set(e,t),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))i.register(t,r);return i},unregister(e){if("string"!=typeof e||0===e.length)throw new TypeError("Component id must be a non-empty string.");return a.delete(e),o.delete(e)},resolve(e){if("string"!=typeof e||0===e.length)throw new TypeError("Component id must be a non-empty string.");const t=o.get(e);return f(t)?(a.has(e)||a.set(e,async function(...r){const o=await s.resolve(n,e,t);if("function"!=typeof o)throw new TypeError(`Component "${e}" did not resolve to a function.`);return o.apply(this,r)}),a.get(e)):t},_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))o.has(t)||i.register(t,r);return i}},r,n);return i.registerMany(e),i},isComponent:y,renderComponent:g,component:h}})(),c=(()=>{const e=Symbol.for("@async/framework.serverResult"),t=Symbol("@async/framework.serverResultInvocation");async function r(e,r={}){if(!y(e))return e;const n=function(e={}){return e[t]??{applied:new WeakSet}}(r);if(n.applied.has(e))return e;if(n.applied.add(e),e.error)throw(o=e.error)instanceof Error?o:o&&"object"==typeof o&&"string"==typeof o.message?Object.assign(new Error(o.message),o):new Error(String(o));var o;if(e.signals&&r.signals)for(const[t,n]of Object.entries(e.signals))r.signals.set?.(t,n);return e.cache?.browser&&r.cache?.restore&&r.cache.restore(e.cache.browser),e.boundary&&Object.hasOwn(e,"html")&&r.loader?.swap?.(e.boundary,e.html),e.redirect&&await(r.router?.navigate?.(e.redirect)),e}async function n(e,t={}){return await r(e,t),o(e)}function o(e){return y(e)?Object.hasOwn(e,"value")?e.value:void 0:e}function s(e={}){const r=e[t]??{applied:new WeakSet};return{...e,[t]:r}}function a(e={}){const t=f(e);if(t)return p(new t.ownerDocument.defaultView.FormData(t));const r=e.element??e.el??e.event?.target;if(!r)return{};const n={};return"value"in r&&(n.value=r.value),"checked"in r&&(n.checked=r.checked),r.dataset&&(n.dataset={...r.dataset}),n}function i(e,t={},r=()=>({})){const n=new Map;return function o(s){const a=s.join(".");if(n.has(a))return n.get(a);const c=new Proxy(async(...t)=>{if(0===s.length)throw new Error("Server namespace is not directly callable.");const n=r()??{};return e(s.join("."),t,n)},{get(n,a){if("then"!==a)return a in n?n[a]:0===s.length&&"_withContext"===a?(n={})=>i(e,t,()=>({...r()??{},...n})):0===s.length&&"run"===a&&"function"==typeof t.run?(e,n=[],o={})=>t.run(e,n,{...r()??{},...o}):0===s.length&&Object.hasOwn(t,a)?t[a]:a===Symbol.toStringTag?"AsyncServerNamespace":"toString"===a?()=>0===s.length?"server":`server.${s.join(".")}`:o([...s,String(a)])}});return n.set(a,c),c}([])}function c(e=[],t){const r={};for(const n of e)r[n]=u(t,n);return r}function u(e,t){if(!e||"function"!=typeof e.get)throw new Error(`Signal "${t}" cannot be read without a signal registry.`);return e.get(t)}function l(e,t,{forServer:r}={}){if(("$event"===e||"$el"===e)&&r)throw new Error(`${e} cannot be passed to a server command.`);if("$event"===e)return t.event;if("$el"===e)return t.element??t.el;if("$value"===e){const e=t.element??t.el??t.event?.target;return e?.value}if("$checked"===e){const e=t.element??t.el??t.event?.target;return e?.checked}if("$form"===e){const e=f(t);return e?p(new e.ownerDocument.defaultView.FormData(e)):{}}if("$dataset"===e){const e=t.element??t.el??t.event?.target;return e?.dataset?{...e.dataset}:{}}throw new Error(`Event local "${e}" is not supported.`)}function f(e){const t=e.event,r=e.element??e.el??t?.target;return"FORM"===r?.tagName?r:"submit"===t?.type&&"FORM"===t.target?.tagName?t.target:"submit"===t?.type&&r?.form?r.form:null}function p(e){const t={};for(const[r,n]of e.entries())Object.hasOwn(t,r)?t[r]=Array.isArray(t[r])?[...t[r],n]:[t[r],n]:t[r]=n;return t}function d(e,t="$",r=new Set){if(null===e)return;const n=typeof e;if("boolean"===n||"string"===n)return;if("number"===n){if(!Number.isFinite(e))throw new Error(`Server proxy JSON transport does not support non-finite numbers at ${t}.`);return}if("bigint"===n)throw new Error(`Server proxy JSON transport does not support BigInt values at ${t}.`);if("undefined"===n)throw new Error(`Server proxy JSON transport does not support undefined values at ${t}.`);if("function"===n||"symbol"===n)throw new Error(`Server proxy JSON transport does not support ${n} values at ${t}.`);if("object"!==n)throw new Error(`Server proxy JSON transport does not support ${n} values at ${t}.`);if(r.has(e))throw new Error(`Server proxy JSON transport does not support circular values at ${t}.`);r.add(e);const o=Object.prototype.toString.call(e);if("[object File]"===o||"[object Blob]"===o||"[object FormData]"===o)throw new Error(`Server proxy JSON transport does not support File, Blob, or FormData values yet at ${t}.`);if(function(e,t=Object.prototype.toString.call(e)){return"[object URLSearchParams]"===t||"[object Headers]"===t||"[object Request]"===t||"[object Response]"===t||"[object ReadableStream]"===t||"[object ArrayBuffer]"===t||ArrayBuffer.isView(e)}(e,o))throw new Error(`Server proxy JSON transport does not support URLSearchParams, Headers, Request, Response, ReadableStream, ArrayBuffer, or typed array values yet at ${t}.`);if(Array.isArray(e)){for(let n=0;n<e.length;n+=1){if(!Object.hasOwn(e,n))throw new Error(`Server proxy JSON transport does not support sparse arrays at ${t}[${n}].`);d(e[n],`${t}[${n}]`,r)}r.delete(e)}else{if(!function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))throw new Error(`Server proxy JSON transport only supports plain objects at ${t}.`);for(const[n,o]of Object.entries(e))d(o,h(t,n),r);r.delete(e)}}function h(e,t){return/^[A-Za-z_$][\w$]*$/.test(t)?`${e}.${t}`:`${e}[${JSON.stringify(t)}]`}function y(t){return!(!t||"object"!=typeof t||Array.isArray(t)||!0!==t[e]&&1!==t.__async_server_result__)}function g(e){if("string"!=typeof e||0===e.length)throw new TypeError("Server function id must be a non-empty string.")}return{createServerProxy:function({endpoint:e="/__async/server",transport:t,signals:r,loader:o,router:u,cache:l,scheduler:f,headers:p={}}={}){if("function"!=typeof t)throw new TypeError("createServerProxy(...) requires a transport function.");const h={signals:r,loader:o,router:u,cache:l,scheduler:f};async function y(r,o=[],i={}){g(r);const u=s({...h,...i}),l={args:o,input:i.input??a(u),signals:i.signalValues??c(i.signalPaths,u.signals)};d(l);const f=await t(function(e,t){return`${String(e).replace(/\/$/,"")}/${encodeURIComponent(t)}`}(e,r),{method:"POST",headers:{"content-type":"application/json",...p},body:JSON.stringify(l),signal:i.abort});if(function(e,t){if(!t||"object"!=typeof t)throw new Error(`Server function "${e}" transport returned an invalid response: expected a fetch Response-like object.`);if("boolean"!=typeof t.ok)throw new Error(`Server function "${e}" transport returned an invalid response: missing boolean ok.`);if(!t.headers||"function"!=typeof t.headers.get)throw new Error(`Server function "${e}" transport returned an invalid response: missing headers.get(name).`)}(r,f),!f.ok)throw new Error(`Server function "${r}" failed with ${f.status}.`);return n(await async function(e,t){if(204===t.status)return;if((t.headers.get("content-type")??"").includes("application/json")){if("function"!=typeof t.json)throw new Error(`Server function "${e}" transport returned an invalid response: missing json().`);try{return await t.json()}catch(t){throw new Error(`Server function "${e}" returned invalid JSON: ${r=t,r instanceof Error?r.message:String(r)}`,{cause:t})}}var r;if("function"!=typeof t.text)throw new Error(`Server function "${e}" transport returned an invalid response: missing text().`);return t.text()}(r,f),u)}return i(y,{run:y,_setContext(e={}){Object.assign(h,e)}},()=>h)},resolveServerCommandArguments:function(e,t={}){const r=[],n={},o=[];for(const s of e){if("local"===s.type){r.push(l(s.name,t,{forServer:!0}));continue}const e=u(t.signals,s.path);r.push(e),n[s.path]=e,o.push(s.path)}return{args:r,signalValues:n,signalPaths:o}},applyServerResult:r,consumeServerResult:n,unwrapServerResult:o,createServerResultContext:s,defaultInput:a,createServerNamespace:i,createSignalReader:function(e){return e&&"function"!=typeof e.get?{get:t=>function(e,t){return String(t).split(".").reduce((e,t)=>e?.[t],e)}(e,t),snapshot:()=>({...e})}:e},assertServerId:g}})(),u=(()=>{const{defaultInput:e,resolveServerCommandArguments:n}=c,{attachRegistryInspection:o,createRegistryStore:s}=r,{createLazyRegistry:a,isLazyDescriptor:i}=t,u=new Set(["prevent","preventDefault","stopPropagation","stopImmediatePropagation"]),l={prevent:f,preventDefault:f,stopPropagation(){this.event?.stopPropagation?.()},stopImmediatePropagation(){this.event?.stopImmediatePropagation?.()}};function f(){this.event?.preventDefault?.()}function p(e){if("string"!=typeof e||0===e.trim().length)throw new TypeError("Handler ref must be a non-empty string.");return e.split(";").map(e=>e.trim()).filter(Boolean).map(h)}function d(e){if("string"!=typeof e||0===e.length)throw new TypeError("Handler id must be a non-empty string.")}function h(e){if(e.startsWith("server."))return function(e){const t=e.indexOf("(");if(-1===t||!e.endsWith(")"))throw new Error(`Server command "${e}" must be called with parentheses.`);const r=e.slice(7,t).trim();if(!function(e){return/^[^.\s();]+(?:\.[^.\s();]+)*$/.test(e)}(r))throw new Error(`Server command "${e}" has an invalid function id.`);return{type:"server",id:r,args:y(e.slice(t+1,-1))}}(e);if(e.includes("(")||e.includes(")"))throw new Error(`Command "${e}" is not supported.`);return{type:"handler",id:e}}function y(e){return 0===e.trim().length?[]:e.split(",").map(e=>e.trim()).filter(Boolean).map(g)}function g(e){if(!/^[^\s,();]+$/.test(e))throw new Error(`Argument "${e}" is not supported.`);return e.startsWith("$")?{type:"local",name:e}:{type:"signal",path:e}}return{createHandlerRegistry:function(t={},r={}){const c=r.registry??s(),f=r.type??"handler",h=c._map(f),y=r.lazyRegistry??a(r),g=new Map,m=o({register(e,t){if(d(e),"function"!=typeof t&&!i(t))throw new TypeError(`Handler "${e}" must be a function.`);if(h.has(e))throw new Error(`Handler "${e}" is already registered.`);return h.set(e,t),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))m.register(t,r);return m},unregister:e=>(d(e),g.delete(e),h.delete(e)),resolve(e){d(e);const t=h.get(e);return i(t)?(g.has(e)||g.set(e,async function(...r){const n=await y.resolve(f,e,t);if("function"!=typeof n)throw new TypeError(`Handler "${e}" did not resolve to a function.`);return n.apply(this,r)}),g.get(e)):t},async run(t,r={}){const o=p(t),s=[];let a=!1;const i={...r,handlers:m,input:r.input??e(r),stop(){a=!0}};for(const e of o){if(a)break;if("server"===e.type){if(!i.server||"function"!=typeof i.server.run)throw new Error(`Server command "${e.id}" cannot run without a server registry.`);const t=n(e.args,i),r=await i.server.run(e.id,t.args,{...i,signalPaths:t.signalPaths,signalValues:t.signalValues});s.push(r);continue}const t=m.resolve(e.id);if(!t)throw new Error(`Handler "${e.id}" is not registered.`);const r=await t.call(i,i);u.has(e.id)&&t===l[e.id]||s.push(r)}return s},_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))h.has(t)||m.register(t,r);return m}},c,f);return function(e,t){for(const[r,n]of Object.entries(l))if(t.has(r)){if(t.get(r)!==n)throw new Error(`Handler "${r}" is already registered.`)}else e.register(r,n)}(m,h),m.registerMany(t),m},parseHandlerRef:p,isHandlerToken:function(e){return u.has(e)}}})(),l=(()=>{const e=["binding","lifecycle","effect","async","post"];function t(e){return"object"==typeof e&&null!==e||"function"==typeof e}function r(e,t){if(!e||"object"!=typeof e&&"function"!=typeof e)return e;try{Object.defineProperty(e,"scheduler",{configurable:!0,value:{phase:t.phase,scope:t.scope,key:t.key}})}catch{}return e}function n(){}return{createScheduler:function(o={}){const s=[...o.phases??e],a=new Map(s.map(e=>[e,[]])),i=new Map,c=new WeakSet,u=new Set,l=new WeakMap,f="function"==typeof o.onError?o.onError:void 0,p=o.maxDepth??100,d=o.strategy??"microtask";let h=!1,y=!1,g=!1,m=0,w=0,b=0;const v={strategy:d,phases:s,batch(e){if("function"!=typeof e)throw new TypeError("scheduler.batch(fn) requires a function.");O(),m+=1;let t=!1;try{const r=e();return r&&"function"==typeof r.then?(t=!0,Promise.resolve(r).finally(()=>{m-=1,S()})):r}finally{!t&&m>0&&(m-=1,S())}},enqueue(e,t,r={}){if(O(),function(e){if(!a.has(e))throw new Error(`Unknown scheduler phase "${e}".`)}(e),"function"!=typeof t)throw new TypeError("scheduler.enqueue(phase, fn) requires a function.");const o=r.scope;if(R(o))return n;const s=void 0===r.key?void 0:`${e}:${function(e){return void 0===e?"global":"object"==typeof e&&null!==e||"function"==typeof e?(l.has(e)||l.set(e,"scope:"+ ++b),l.get(e)):String(e)}(o)}:${String(r.key)}`;if(s&&i.has(s))return i.get(s).cancel;const c={id:++w,phase:e,fn:t,scope:o,boundary:r.boundary,key:s,canceled:!1,cancel(){c.canceled=!0,c.key&&i.delete(c.key)}};return a.get(e).push(c),c.key&&i.set(c.key,c),S(),c.cancel},afterFlush:(e,t={})=>v.enqueue("post",e,t),async flush(){if(O(),y)return;g=!1,y=!0;let e=0;try{for(;A();){if(e+=1,e>p)throw new Error(`Scheduler exceeded maxDepth ${p}.`);for(const e of s)await E(e)}}finally{y=!1,A()&&S()}},async flushScope(e){if(O(),y)return;g=!1,y=!0;let t=0;try{for(;j(e);){if(t+=1,t>p)throw new Error(`Scheduler exceeded maxDepth ${p}.`);for(const t of s)await E(t,e)}}finally{y=!1,A()&&S()}},cancelScope(e){if(void 0===e)return v;for(const t of a.values())for(const r of t)r.scope===e&&r.cancel();return v},markScopeDestroyed:e=>(void 0!==e&&(t(e)?c.add(e):u.add(e),v.cancelScope(e)),v),reviveScope:e=>(void 0!==e&&(t(e)?c.delete(e):u.delete(e)),v),isScopeDestroyed:e=>R(e),inspect(){const e={};for(const[t,r]of a)e[t]=r.filter(e=>!e.canceled).length;return{strategy:d,phases:[...s],pending:e,scopesDestroyed:u.size,flushing:y,scheduled:g}},destroy(){h=!0;for(const e of a.values()){for(const t of e)t.cancel();e.length=0}i.clear(),u.clear()}};return v;function S(){var e;"manual"===d||h||y||m>0||g||(g=!0,e=()=>{h||v.flush().catch($)},"function"!=typeof queueMicrotask?Promise.resolve().then(e):queueMicrotask(e))}async function E(e,t){const n=a.get(e),o=[],s=[];for(const e of n.splice(0))e.canceled||(void 0===t||e.scope===t?s.push(e):o.push(e));n.push(...o);for(const e of s)if(e.key&&i.delete(e.key),!e.canceled&&!R(e.scope))try{await e.fn()}catch(t){if(!f)throw r(t,e);f(t,e)}}function $(e){"function"!=typeof globalThis.reportError?setTimeout(()=>{throw e},0):globalThis.reportError(e)}function A(){for(const e of a.values())if(e.some(e=>!e.canceled))return!0;return!1}function j(e){for(const t of a.values())if(t.some(t=>!t.canceled&&t.scope===e))return!0;return!1}function O(){if(h)throw new Error("Scheduler has been destroyed.")}function R(e){return void 0!==e&&(t(e)?c.has(e):u.has(e))}}}})(),f=(()=>{const{renderComponent:e}=i,{createHandlerRegistry:t}=u,{createScheduler:r}=l,{createSignalRegistry:n,isSignalRef:a}=s,{matchAttribute:c,normalizeAttributeConfig:f,readAttribute:p}=o,d="__async:inline:";function h({root:o,signals:s,handlers:i,server:u,router:l,cache:h,attributes:E,scheduler:R}={}){const _=o?.ownerDocument??o??globalThis.document,x=o??_,C=s??n(),q=i??t(),M=R??r(),B=!R,N=f(E),D=new Set,L=new WeakMap,P=new WeakMap,z=new WeakSet,I=new WeakSet,H=new WeakMap,W=new WeakMap,U=new WeakSet,V=new Map,J=new WeakMap;let F=0,K=!1;const Z={root:x,signals:C,handlers:q,server:u,router:l,cache:h,scheduler:M,attributes:N,start:()=>(fe(),Z.scan(x),Z),scan:(e=x)=>(fe(),function(e){for(const t of j(e))M.reviveScope?.(t)}(e),function(e){for(const t of j(e))for(const e of t.getAttributeNames?.()??[]){const r=c(e,N,"signal");if(r){if("text"===r){const r=t.getAttribute(e);Q(t,`text:${r}`,r,e=>{t.textContent=e??""});continue}if("value"===r){const r=t.getAttribute(e);Q(t,`value:${r}`,r,e=>{"value"in t&&t.value!==String(e??"")?t.value=e??"":"value"in t||t.setAttribute("value",e??"")}),X(t,r);continue}if(r.startsWith("attr:")){const n=r.slice(5),o=t.getAttribute(e);Q(t,`attr:${n}:${o}`,o,e=>$(t,n,e));continue}if(r.startsWith("prop:")){const n=r.slice(5),o=t.getAttribute(e);Q(t,`prop:${n}:${o}`,o,e=>A(t,n,e));continue}if(r.startsWith("class:")){const n=r.slice(6),o=t.getAttribute(e);""===n||"{}"===n?G(t,n,o):Q(t,`class:${n}:${o}`,o,e=>{t.classList.toggle(n,Boolean(e))});continue}if("class"===r){const r=t.getAttribute(e);G(t,"{}",r)}}}}(e),function(e){for(const t of j(e))for(const e of t.getAttributeNames?.()??[]){const r=c(e,N,"class");null!=r&&G(t,r,t.getAttribute(e))}}(e),function(e){for(const t of j(e))if("function"==typeof t.getAttributeNames)for(const e of t.getAttributeNames()){const r=c(e,N,"on");r&&"attach"!==r&&"mount"!==r&&"visible"!==r&&"intersect"!==r&&Y(t,r,t.getAttribute(e))}}(e),function(e){for(const t of j(e)){if(U.has(t))continue;const e=O(t,N);if(null!=e){if(!W.has(t)){const r=S(t,e,N);if(0===Object.keys(r).length||!C.has(e))continue;const n={id:e,templates:r,cleanup:C.subscribe(`${e}.$status`,()=>{M.enqueue("binding",()=>ee(t),{scope:t,key:`boundary:${e}`})})};W.set(t,n),pe(n.cleanup,t)}ee(t)}}}(e),function(e){for(const t of j(e)){const e=te(t,["attach","mount"]);if(0!==e.length&&!z.has(t)){z.add(t);for(const r of e)me(t,()=>re(t,r),`attach:${r}`)}}for(const t of j(e)){const e=p(t,N,"on","visible");null!=e&&(I.has(t)||(I.add(t),pe(ne(t,()=>me(t,()=>re(t,e),`visible:${e}`)),t)))}for(const t of j(e)){const e=p(t,N,"on","intersect");if(null==e)continue;const r=se(t),n=`intersect:${e}:${ae(r)}`,o=H.get(t)??new Set;o.has(n)||(o.add(n),H.set(t,o),pe(oe(t,r=>re(t,e,r),{...r,key:n}),t))}}(e),Z),swap(e,t){fe();const r=function(e,t,r){for(const n of j(e))if(O(n,r)===String(t))return n;return null}(x,e,N);if(!r)throw new Error(`Boundary "${e}" was not found.`);return he(r),r.replaceChildren(T(t,_)),Z.scan(r),r},mount(t,r,n={}){fe();const o=e(r,n,{signals:C,handlers:q,loader:Z,server:Z.server,router:Z.router,cache:Z.cache,scheduler:M,attributes:N});return he(t),t.replaceChildren(T(o.html,t.ownerDocument)),Z.scan(t),o.mount(t),o.visible(t,Z._observeVisible),o.intersection(t,Z._observeIntersection),pe(o.cleanup,t,"children"),o},destroy(){if(!K){K=!0,function(e){for(const t of j(e))M.markScopeDestroyed(t)}(x);for(const e of[...D])de(e);D.clear(),B&&M.destroy()}},_observeVisible:(e,t)=>ne(e,t),_observeIntersection:(e,t,r={})=>oe(e,t,r),_registerBinding(e){const t=`${d}${++F}`;return V.set(t,e),t},_releaseBinding(e){V.delete(e)}};function Y(e,t,r){const n=`${t}:${r}`,o=L.get(e)??new Set;if(o.has(n))return;o.add(n),L.set(e,o);const s=async t=>{try{await M.batch(()=>q.run(r,{signals:C,handlers:q,loader:Z,server:Z.server,router:Z.router,cache:Z.cache,scheduler:M,event:t,element:e,el:e,root:x}))}catch(t){k(e,t)}};e.addEventListener(t,s),pe(()=>e.removeEventListener(t,s),e)}function G(e,t,r){if(""===t||"{}"===t){const t=b(e);let n=new Set;return void Q(e,`class:{}:${r}`,r,r=>{const o=y(r),s=b(e);for(const e of n)o.has(e)||t.has(e)||s.delete(e);for(const e of o)s.add(e);v(e,s),n=o},{rawInline:!0})}Q(e,`class:${t}:${r}`,r,r=>{!function(e,t,r){const n=b(e);for(const e of y(t))r?n.add(e):n.delete(e);v(e,n)}(e,t,Boolean(r))})}function Q(e,t,r,n,o={}){const s=P.get(e)??new Set;if(s.has(t))return;s.add(t),P.set(e,s);const a=()=>function(e,t={}){if(w(e)){const r=V.get(e);return t.rawInline?r:g(r)}return C.get(e)}(r,o);n(a()),pe(function(e,t){if(!w(e))return C.subscribe(e,t);const r=m(V.get(e)).map(e=>e.subscribe(t));return()=>{for(const e of r)e()}}(r,()=>{M.enqueue("binding",()=>n(a()),{scope:e,key:t})}),e)}function X(e,t){Y(e,"input",`__async:set:${t}`),Y(e,"change",`__async:set:${t}`),q.resolve(`__async:set:${t}`)||q.register(`__async:set:${t}`,({element:e})=>{!function(e,t){if(!w(e))return C.set(e,t);const r=V.get(e);if(a(r))return r.set(t);throw new Error(`Inline binding "${e}" is not writable.`)}(t,e.value)})}function ee(e){const t=W.get(e);if(!t)return;const r=C.get(`${t.id}.$status`),n=function(e,t){return"ready"===t?e.ready??e.loading??e.error:"error"===t?e.error??e.ready??e.loading:e.loading??e.ready??e.error}(t.templates,r);if(n){he(e),e.replaceChildren(n.content.cloneNode(!0)),U.add(e);try{Z.scan(e)}finally{U.delete(e)}}}function te(e,t){const r=[];for(const n of t){const t=p(e,N,"on",n);null!=t&&r.push(t)}return r}async function re(e,t,r={}){try{const n=await q.run(t,{signals:C,handlers:q,loader:Z,server:Z.server,router:Z.router,cache:Z.cache,scheduler:M,element:e,el:e,root:x,...r});for(const t of n)"function"==typeof t&&pe(t,e)}catch(t){k(e,t)}}function ne(e,t){return oe(e,r=>{r.isIntersecting&&t(e)},{once:!0,threshold:0})}function oe(e,t,r={}){if("function"!=typeof t)throw new TypeError("observeIntersection(target, fn) requires a callback.");const n=function(e,t){const r=e?.ownerDocument?.defaultView??globalThis;if(!le(e,r))throw new TypeError("Intersection target must be an Element.");const n=t.root??null;if(null!==n&&!le(n,r)&&!function(e,t=globalThis){const r=t.Document??globalThis.Document;return Boolean(r&&e instanceof r)}(n,r))throw new TypeError("Intersection root must be an Element, Document, or null.");const o=t.rootMargin??"0px";if("string"!=typeof o)throw new TypeError("Intersection rootMargin must be a string.");const s=function(e){return Array.isArray(e)?e.map(ie):ie(e)}(t.threshold??0),a=t.schedule??"lifecycle";if("lifecycle"!==a&&"sync"!==a)throw new TypeError('Intersection schedule must be "lifecycle" or "sync".');return{root:n,rootMargin:o,threshold:s,once:Boolean(t.once),schedule:a,scope:t.scope??e,key:t.key}}(e,r),o=(e.ownerDocument?.defaultView??globalThis).IntersectionObserver??globalThis.IntersectionObserver;if(!o){let r=!1;const o=ce({target:e,root:n.root,entry:ue(e),observer:null,unsupported:!0}),s=M.enqueue("lifecycle",()=>{r||K||t(o)},{scope:n.scope,key:n.key??"intersect:fallback"});return()=>{r=!0,s?.()}}let s=!1,a=!1;const i=new o(r=>{if(s||a||K)return;const o=r.filter(t=>t.target===e),c=o.length>0?o:r,u=c[0];if(!u)return;const l=ce({target:e,root:n.root,entry:u,entries:c,observer:i,unsupported:!1});n.once&&l.isIntersecting&&(a=!0,i.disconnect()),function(e,t,r,n=()=>!0){"sync"!==r.schedule?M.enqueue("lifecycle",()=>{!K&&n()&&e(t)},{scope:r.scope,key:r.key}):n()&&e(t)}(t,l,n,()=>!s)},{root:n.root,rootMargin:n.rootMargin,threshold:n.threshold});return i.observe(e),()=>{s||(s=!0,a=!0,i.disconnect())}}function se(e){const t={},r=p(e,N,"intersect","threshold");null!=r&&(t.threshold=function(e){const t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(0===t.length)throw new TypeError("intersect:threshold must include a number from 0 to 1.");const r=t.map(e=>ie(Number(e)));return 1===r.length?r[0]:r}(r));const n=p(e,N,"intersect","root-margin")??p(e,N,"intersect","rootMargin");null!=n&&(t.rootMargin=n);const o=p(e,N,"intersect","once");return null!=o&&(t.once=function(e){const t=String(e).trim().toLowerCase();return""===t||"true"===t||"1"===t}(o)),t}function ae(e){return JSON.stringify({rootMargin:e.rootMargin??"0px",threshold:e.threshold??0,once:Boolean(e.once)})}function ie(e){if("number"!=typeof e||!Number.isFinite(e)||e<0||e>1)throw new TypeError("Intersection threshold must be a number from 0 to 1.");return e}function ce({target:e,root:t,entry:r,entries:n=[r],observer:o,unsupported:s}){const a=Boolean(r?.isIntersecting),i="number"==typeof r?.intersectionRatio?r.intersectionRatio:a?1:0;return{target:e,element:e,el:e,root:t??x,entry:r,entries:n,observer:o,isIntersecting:a,intersectionRatio:i,unsupported:Boolean(s)}}function ue(e){const t=e.getBoundingClientRect?.()??null;return{target:e,isIntersecting:!0,intersectionRatio:1,time:0,rootBounds:null,boundingClientRect:t,intersectionRect:t}}function le(e,t=globalThis){const r=t.Element??globalThis.Element;return Boolean(r&&e instanceof r)}function fe(){if(K)throw new Error("Loader has been destroyed.")}function pe(e,t,r="self"){if("function"!=typeof e)return e;if(D.add(e),t){const n=J.get(t)??[];n.push({cleanup:e,mode:r}),J.set(t,n)}return e}function de(e){"function"==typeof e&&D.has(e)&&(D.delete(e),e())}function he(e){ge(e,"children");for(const t of[...e.childNodes??[]])ye(t)}function ye(e){if(1===e.nodeType)for(const t of j(e))ge(t),M.markScopeDestroyed(t)}function ge(e,t){const r=J.get(e);if(!r)return;const n=[];for(const e of r)t&&e.mode!==t?n.push(e):de(e.cleanup);n.length>0?J.set(e,n):J.delete(e)}function me(e,t,r){M.enqueue("lifecycle",t,{scope:e,key:r})}return C._setContext?.({server:Z.server,router:Z.router,loader:Z,cache:Z.cache,scheduler:M}),Z.server?._setContext?.({signals:C,handlers:q,loader:Z,router:Z.router,cache:Z.cache,scheduler:M}),Z}function y(e,t=new Set){if(null==e||!1===e)return t;if(a(e)){const r=e.value;return!0===r?(t.add(e.id.split(".").at(-1)),t):y(r,t)}if("string"==typeof e){for(const r of e.split(/\s+/).filter(Boolean))t.add(r);return t}if(Array.isArray(e)){for(const r of e)y(r,t);return t}if("object"==typeof e){for(const[r,n]of Object.entries(e))(a(n)?n.value:n)&&y(r,t);return t}return!0!==e&&t.add(String(e)),t}function g(e){return a(e)?e.value:Array.isArray(e)?e.map(g):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,g(t)])):e}function m(e,t=new Map){if(a(e))return t.set(e.id,e),[...t.values()];if(Array.isArray(e)){for(const r of e)m(r,t);return[...t.values()]}if(e&&"object"==typeof e)for(const r of Object.values(e))m(r,t);return[...t.values()]}function w(e){return"string"==typeof e&&e.startsWith(d)}function b(e){return y(e.getAttribute("class")??"")}function v(e,t){const r=[...t].join(" ");0!==r.length?e.setAttribute("class",r):e.removeAttribute("class")}function S(e,t,r){const n={};for(const o of[...e.children].filter(e=>"TEMPLATE"===e.tagName))E(o,"loading",t,e,r)&&(n.loading=o),E(o,"ready",t,e,r)&&(n.ready=o),E(o,"error",t,e,r)&&(n.error=o);return n}function E(e,t,r,n,o){return p(e,o,"async",t)===r||R(n)&&e.hasAttribute?.(t)}function $(e,t,r){if(!1===r||null==r)return e.removeAttribute(t),void(t in e&&(e[t]=!1));e.setAttribute(t,!0===r?"":String(r)),t in e&&(e[t]=r)}function A(e,t,r){e[t]=null!=r?r:""}function j(e){return function(e,t){const r=[];return 1===e?.nodeType&&e.matches?.(t)&&r.push(e),r.push(...e?.querySelectorAll?.(t)??[]),r}(e,"*")}function O(e,t){return R(e)&&e.hasAttribute?.("for")?e.getAttribute("for"):p(e,t,"async","boundary")}function R(e){return"ASYNC-SUSPENSE"===e?.tagName}function T(e,t){if(11===e?.nodeType)return e;if("TEMPLATE"===e?.tagName)return e.content.cloneNode(!0);if(e?.nodeType){const r=t.createDocumentFragment();return r.append(e),r}const r=t.createElement("template");return r.innerHTML=String(e??""),r.content.cloneNode(!0)}function k(e,t){const r=e.ownerDocument?.defaultView?.CustomEvent??globalThis.CustomEvent;e.dispatchEvent(new r("async:error",{bubbles:!0,detail:{error:t}}))}return{Loader:h,AsyncLoader:h}})(),p=(()=>{const{isTemplateResult:e,renderTemplate:n}=a,{attachRegistryInspection:o,createRegistryStore:s}=r,{createLazyRegistry:i,isLazyDescriptor:c}=t;function u(e,t={}){return r=e,Boolean(r&&"object"==typeof r&&!Array.isArray(r)&&(Object.hasOwn(r,"html")||Object.hasOwn(r,"signals")||Object.hasOwn(r,"boundary")||Object.hasOwn(r,"redirect")||Object.hasOwn(r,"status")||Object.hasOwn(r,"cache")))?{...e,html:Object.hasOwn(e,"html")?l(e.html,t):e.html}:{html:l(e,t)};var r}function l(t,r){return t?.nodeType||"string"==typeof t?t:(e(t),n(t,function(e){return{attributes:e.loader?.attributes,signals:e.signals,bind:e.loader?._registerBinding?.bind(e.loader)}}(r)))}function f(e){if("string"!=typeof e||0===e.length)throw new TypeError("Partial id must be a non-empty string.")}return{createPartialRegistry:function(e={},t={}){const r=t.registry??s(),n=t.type??"partial",a=r._map(n),l=t.lazyRegistry??i(t),p=new Map,d=o({register(e,t){if(f(e),"function"!=typeof t&&!c(t))throw new TypeError(`Partial "${e}" must be a function.`);if(a.has(e))throw new Error(`Partial "${e}" is already registered.`);return a.set(e,t),e},registerMany(e){for(const[t,r]of Object.entries(e??{}))d.register(t,r);return d},unregister:e=>(f(e),p.delete(e),a.delete(e)),resolve(e){f(e);const t=a.get(e);return c(t)?(p.has(e)||p.set(e,async function(...r){const o=await l.resolve(n,e,t);if("function"!=typeof o)throw new TypeError(`Partial "${e}" did not resolve to a function.`);return o.apply(this,r)}),p.get(e)):t},async render(e,t={},r={}){f(e);const n=d.resolve(e);if(!n)throw new Error(`Partial "${e}" is not registered.`);const o={...r,id:e,props:t,cache:r.cache,partials:d};return u(await n.call(o,t),o)},_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))a.has(t)||d.register(t,r);return d}},r,n);return d.registerMany(e),d},normalizePartialResult:u}})(),d=(()=>{const{Loader:e}=f,{createHandlerRegistry:t}=u,{createScheduler:n}=l,{createSignalRegistry:a}=s,{applyServerResult:i}=c,{createRegistryStore:p}=r,{normalizeAttributeConfig:d}=o;function h(e,t={}){return{...t,partial:e}}const y=h,g=new Set(["csr","spa","ssr","mpa"]);function m(e={},t={}){const r=t.registry??p(),n=t.type??"route",o=r._map(n),s=[],a={registry:r,register(e,t){if(A(e),s.some(t=>t.pattern===e))throw new Error(`Route "${e}" is already registered.`);const r=w(e,t);return o.set(e,r.definition),s.push(r),E(s),r},registerMany(e){for(const[t,r]of Object.entries(e??{}))a.register(t,r);return a},unregister(e){A(e);const t=s.findIndex(t=>t.pattern===e);return-1!==t&&s.splice(t,1),o.delete(e)},match(e){const t=function(e){return e instanceof URL?e:new URL(String(e),globalThis.location?.href??"http://localhost/")}(e).pathname;for(const e of s){const r=e.regex.exec(t);if(!r)continue;const n={};return e.keys.forEach((e,t)=>{n[e]=S(r[t+1]??"")}),{pattern:e.pattern,params:n,route:e.definition}}return null},entries:()=>s.map(({pattern:e,definition:t})=>({pattern:e,route:t})),keys:()=>[...o.keys()],inspect:()=>r.entries(n),_adoptMany(e={}){for(const[t,r]of Object.entries(e??{}))o.has(t)?i(t,o.get(t)):a.register(t,r);return a}};for(const[e,t]of o)i(e,t);return a.registerMany(e),a;function i(e,t){if(s.some(t=>t.pattern===e))return;const r=w(e,t);o.set(e,r.definition),s.push(r),E(s)}}function w(e,t){const r="string"==typeof t?h(t):t,{regex:n,keys:o}=function(e){const t=[];if("*"===e)return{regex:/^.*$/,keys:t};if("/"===e)return{regex:/^\/$/,keys:t};const r=e.split("/").map(e=>e.startsWith(":")?(t.push(e.slice(1)),"([^/]+)"):String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("/");return{regex:new RegExp(`^${r}$`),keys:t}}(e);return{pattern:e,regex:n,keys:o,score:$(e),definition:r}}function b(e,t){return e?.closest?.(t)}function v(e){return Object.fromEntries(e.searchParams.entries())}function S(e){try{return decodeURIComponent(e)}catch{return e}}function E(e){e.sort((e,t)=>t.score-e.score||t.pattern.length-e.pattern.length)}function $(e){return"*"===e?-1:e.split("/").filter(Boolean).reduce((e,t)=>"*"===t?e:t.startsWith(":")?e+2:e+4,"/"===e?3:0)}function A(e){if("string"!=typeof e||"*"!==e&&!e.startsWith("/"))throw new TypeError('Route pattern must be a path string or "*".')}return{defineRoute:h,createRouteRegistry:m,createRouter:function({mode:r="ssr",root:o,boundary:s="route",routes:c=m(),loader:u,signals:l,handlers:f,server:p,cache:h,partials:y,attributes:w,scheduler:S}={}){!function(e){if(!g.has(e))throw new TypeError(`Unknown router mode "${e}".`)}(r);const E=o?.ownerDocument??o??globalThis.document,$=o??E,A=l??u?.signals??a(),j=f??u?.handlers??t(),O=S??u?.scheduler??n(),R=!S&&!u?.scheduler,T=d(w??u?.attributes),k=u??e({root:$,signals:A,handlers:j,server:p,cache:h,scheduler:O,attributes:T}),_=!u,x=new Set;let C,q=!1,M=0;const B={mode:r,root:$,boundary:s,routes:c,loader:k,signals:A,handlers:j,server:p,cache:h,partials:y,scheduler:O,attributes:T,start:()=>(V(),k.router=B,A._setContext?.({router:B,loader:k,server:p,cache:h,scheduler:O}),_&&k.start(),"mpa"===r||"ssr"===r?(P(),B):(function(){const e=e=>{const t=b(e.target,"a[href]");t&&!function(e,t){if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return!0;if(t.target||t.hasAttribute("download"))return!0;const r=U(t.href),n=W();return r.origin!==n.origin||function(e,t,r){return e.origin===t.origin&&e.pathname===t.pathname&&e.search===t.search&&(e.hash!==t.hash||!0===r.getAttribute?.("href")?.startsWith("#"))}(r,n,t)}(e,t)&&(e.preventDefault(),H(B.navigate(t.href)))},t=e=>{const t=b(e.target,"form");t&&!function(e){return"get"!==String(e.method||"get").toLowerCase()||U(e.action).origin!==W().origin}(t)&&(e.preventDefault(),H(B.navigate(function(e){const t=U(e.action||e.ownerDocument.defaultView.location.href),r=new e.ownerDocument.defaultView.FormData(e);return t.search=new URLSearchParams(r).toString(),t.href}(t))))},r=()=>H(B.navigate(W(),{history:!1}));$.addEventListener?.("click",e),$.addEventListener?.("submit",t),E.defaultView?.addEventListener?.("popstate",r),x.add(()=>$.removeEventListener?.("click",e)),x.add(()=>$.removeEventListener?.("submit",t)),x.add(()=>E.defaultView?.removeEventListener?.("popstate",r))}(),"csr"===r?(H(B.navigate(W(),{replace:!0,initial:!0,source:"client"})),B):(P(),B))),match:e=>c.match(U(e)),prefetch(e){if(V(),"mpa"===r||"ssr"===r)return Promise.resolve(null);const t=B.match(e);return t?.route?.partial&&y?.resolve?.(t.route.partial)?y.render(t.route.partial,t.params,{...N(t),prefetch:!0}):Promise.resolve(null)},navigate:async(e,t={})=>(V(),"mpa"===r||"ssr"===r?(E.defaultView?.location?.assign?.(e),null):async function(e,t={}){const r=B.match(e);if(!r)return D(e,null),function(e){z(e,null,{pending:!1,error:new Error(`No route matched ${e.pathname}${e.search}`)})}(e),null;const n=D(e,r);z(e,r,{pending:!0,error:null});try{if(!r.route?.partial||!y?.resolve?.(r.route.partial)){const t=new Error(`Route "${e.pathname}" does not have a registered partial.`);return L(n)&&I({pending:!1,error:t}),null}const o=await y.render(r.route.partial,r.params,N(r,n));return L(n)?(await async function(e,t,r,n){L(n)&&(await i(e,{signals:A,loader:k,router:B,cache:h,scheduler:O,abort:n?.abort}),await O.flush(),L(n)&&(null==e?.html||e.boundary||e.redirect||(k.swap(s,e.html),await O.flush()),e?.redirect||!1===r.history||(r.replace?E.defaultView?.history?.replaceState?.({},"",t.href):E.defaultView?.history?.pushState?.({},"",t.href))))}(o,e,t,n),L(n)?(I({pending:!1,error:null}),o):null):null}catch(e){if(!L(n))return null;throw I({pending:!1,error:e}),e}}(U(e),t)),destroy(){if(!q){q=!0,C?.controller.abort(new Error("Router has been destroyed."));for(const e of x)e();x.clear(),R&&O.destroy()}}};return B;function N(e,t){return{params:e.params,route:e.route,router:B,signals:A,handlers:j,loader:k,server:p,cache:h,scheduler:O,abort:t?.abort}}function D(e,t){C?.controller.abort(new Error(`Router navigation superseded by ${e.pathname}${e.search}.`));const r=new AbortController,n={id:++M,controller:r,abort:r.signal,target:e,matched:t};return C=n,n}function L(e){return!q&&e&&C?.id===e.id&&!e.abort.aborted}function P(){const e=W();z(e,B.match(e),{pending:!1,error:null})}function z(e,t,r={}){A.ensure("router",{}),I({url:e.href,path:e.pathname,query:v(e),params:t?.params??{},route:t?.route??null,...r})}function I(e){A.ensure("router",{});for(const[t,r]of Object.entries(e))A.set(`router.${t}`,r)}function H(e){e.catch(e=>{q||(I({pending:!1,error:e}),function(e,t){const r=e.ownerDocument?.defaultView?.CustomEvent??globalThis.CustomEvent;"function"==typeof r&&e.dispatchEvent?.(new r("async:error",{bubbles:!0,detail:{error:t}}))}($,e))})}function W(){return U(E.defaultView?.location?.href??"http://localhost/")}function U(e){return e instanceof URL?e:new URL(String(e),E.defaultView?.location?.href??"http://localhost/")}function V(){if(q)throw new Error("Router has been destroyed.")}},route:y}})(),h=(()=>{const{createCacheRegistry:e}=n,{createComponentRegistry:a}=i,{createHandlerRegistry:h}=u,{Loader:y}=f,{createPartialRegistry:g}=p,{createRouteRegistry:m,createRouter:w}=d,{createScheduler:b}=l,{createServerNamespace:v}=c,{cloneSignalDeclaration:S,createSignal:E,createSignalRegistry:$}=s,{createRegistryStore:A}=r,{attributeName:j,normalizeAttributeConfig:O}=o,{createLazyRegistry:R,defineRegistrySnapshot:T,sameRegistryValue:k}=t,_=new Set(["signal","handler","server","partial","route","component","asyncSignal"]);function x(e,t={}){const r=A(void 0,{target:"browser"}),n=new Set,o=t.createRuntime??C,s={registry:r,use(e,t){const o=function(e,t){const r={signal:{},handler:{},server:{},partial:{},route:{},component:{},asyncSignal:{},cache:{browser:{},server:{}}};if("string"==typeof e){if(!_.has(e))throw new Error(`Unknown Async registry type "${e}".`);return r[e]=J(e,t),r}if(!e||"object"!=typeof e)throw new TypeError("Async.use(...) requires a registry type or module object.");for(const[t,n]of Object.entries(e))if("cache"!==t){if(!_.has(t))throw new Error(`Unknown Async registry type "${t}".`);r[t]=J(t,n)}else r.cache.browser={...n?.browser??{}},r.cache.server={...n?.server??{}};return r}(e,t);!function(e,t){for(const r of _)D(e,r,t[r]);D(e,"cache.browser",t.cache.browser),D(e,"cache.server",t.cache.server)}(r,o);for(const e of n)e._applyUse(o);return s},snapshot:()=>r.rawSnapshot(),start(e={}){const t=o(s,e).start();return s.runtime=t,t},attachRoot:e=>function(e){return e.runtime||e.start(),e.runtime}(s).attachRoot(e),detachRoot:e=>s.runtime?.detachRoot(e)??s,applySnapshot:(e,t={})=>s.runtime?(s.runtime.applySnapshot(e,t),s):(function(e,t={},r={}){const n=z(t);for(const[t,o]of Object.entries(n.signal))P(e,"signal",t,E(o),r);for(const t of["handler","server","partial","route","component","asyncSignal"])for(const[o,s]of Object.entries(n[t]))P(e,t,o,s,r)}(r,e,t),s),inspectRoots:()=>s.runtime?.inspectRoots()??{count:0,roots:[]},_attach:e=>(n.add(e),()=>s._detach(e)),_detach(e){n.delete(e)}};return e&&s.use(e),s}function C(t=q,r={}){const n=(C=t,Boolean(C&&"function"==typeof C.use&&"function"==typeof C.snapshot&&C.registry)?t:x(t??{})),o=r.target??"browser",s=r.scheduler??r.loader?.scheduler??b({strategy:"server"===o?"manual":"microtask"}),i=!r.scheduler&&!r.loader?.scheduler,c=O(r.attributes),u=r.lazyRegistry??R({registryAssets:r.registryAssets,importModule:r.importModule}),l=r.registry??function(e,{target:t}={}){const r=e.rawSnapshot();return A({...r,signal:N(r.signal)},{target:t})}(n.registry,{target:o}),f=r.signals??$(void 0,{registry:l,type:"signal",lazyRegistry:u}),p=r.handlers??h(void 0,{registry:l,type:"handler",lazyRegistry:u}),d=e(void 0,{registry:l,type:"cache.server"}),v=e(void 0,{registry:l,type:"cache.browser"}),S=r.serverFactory??V,E=r.server??S(void 0,{registry:l,type:"server"}),j=r.partials??g(void 0,{registry:l,type:"partial",lazyRegistry:u}),T=r.routes??m(void 0,{registry:l,type:"route"}),k=r.components??a(void 0,{registry:l,type:"component",lazyRegistry:u}),_=r.loader||Object.hasOwn(r,"root")?r.root:null;var C;let D=r.loader,P=r.router,I=!1,H=()=>{},J=!1,F=!1;const Z=new Map,Y=_??globalThis.document,G=r.snapshot??("browser"===o?M(Y,{attributes:c}):void 0);!function(e,t){try{e.cache=t}catch{}}(E,d);const Q={app:n,registry:l,target:o,signals:f,handlers:p,server:E,partials:j,routes:T,components:k,browser:{cache:v},loader:D,router:P,scheduler:s,attributes:c,start:()=>(ne(),J||(J=!0,"server"!==o?(te({cache:v}),f._setContext?.({server:E,loader:D,cache:v,scheduler:s}),D?(X(D.root,D),D.start(),ee(D.root)):null!=_&&Q.attachRoot(_)):(te({cache:d}),f._setContext?.({server:E,cache:d,scheduler:s}))),Q),use:(e,t)=>(n.use(e,t),Q),attachRoot(e){if(ne(),"server"===o)throw new Error("Server runtimes cannot attach DOM roots.");if(!e)throw new TypeError("runtime.attachRoot(root) requires a root.");if(Z.has(e))return Q;const t=0===Z.size&&D?D:y({root:e,signals:f,handlers:p,server:E,cache:v,scheduler:s,attributes:c});return X(e,t),t.start(),te({cache:v}),f._setContext?.({server:E,loader:Q.loader,cache:v,scheduler:s}),ee(e),Q},detachRoot(e){if(ne(),"server"===o)return Q;if(null==e){for(const e of new Set(Z.values()))e.destroy?.();return Z.clear(),P?.destroy?.(),P=void 0,I=!1,D=void 0,Q.loader=void 0,Q.router=void 0,Q}const t=Z.get(e);if(!t)return Q;if(t.destroy?.(),Z.delete(e),D===t){P?.destroy?.(),P=void 0,I=!1;const e=Z.values().next().value;D=e,Q.loader=e,Q.router=void 0,e&&ee(e.root)}return Q},inspectRoots:()=>({count:Z.size,roots:[...Z].map(([e,t])=>({root:e,loader:t,primary:t===D}))}),applySnapshot:(e,t={})=>(function(e,t={},r={}){const n=z(t);L(e,"asyncSignal",n.asyncSignal,null,r);for(const[t,r]of Object.entries(n.signal))W(e.signals,t,r);e.browser.cache.restore(n.cache.browser),L(e,"handler",n.handler,e.handlers,r),L(e,"server",n.server,e.server,r),L(e,"partial",n.partial,e.partials,r),L(e,"route",n.route,e.routes,r),L(e,"component",n.component,e.components,r)}(Q,e,t),Q),async render(e){ne(),te({cache:d}),f._setContext?.({server:E,cache:d,scheduler:s});const t=T.match(e);if(!t)return await s.flush(),{html:K("",{status:404,signals:f,browserCache:v,boundary:r.boundary??"route",attributes:c}),status:404,signals:f.snapshot(),cache:{browser:v.snapshot()}};const n=t.route.partial,o=n&&j.resolve(n)?await j.render(n,t.params,{params:t.params,route:t.route,signals:f,handlers:p,server:E,cache:d,browserCache:v,partials:j,scheduler:s,...re()}):{html:""};if(o.signals)for(const[e,t]of Object.entries(o.signals))U(f,e,t);o.cache?.browser&&v.restore(o.cache.browser),await s.flush();const a=o.status??200;return{html:K(o.html,{status:a,signals:f,browserCache:v,boundary:o.boundary??r.boundary??"route",attributes:c}),status:a,signals:f.snapshot(),cache:{browser:v.snapshot()}}},destroy(){if(F)return;F=!0,H(),P?.destroy?.();const e=new Set(Z.values());for(const t of e)t.destroy?.();Z.clear(),D&&!e.has(D)&&D?.destroy?.(),f.destroy?.(),i&&s.destroy()},_applyUse(e){!function(e,t){B(e.signals,e.registry,t.signal),B(e.handlers,e.registry,t.handler),B(e.server,e.registry,t.server),B(e.partials,e.registry,t.partial),B(e.routes,e.registry,t.route),B(e.components,e.registry,t.component),function(e,t,r){if(r&&0!==Object.keys(r).length)for(const[n,o]of Object.entries(r))e.has(t,n)||e.register(t,n,o)}(e.registry,"asyncSignal",t.asyncSignal),B(e.browser.cache,e.registry,t.cache.browser),B(e.server.cache,e.registry,t.cache.server)}(Q,e)}};return E.cache=d,Q.server.cache=d,Q.applySnapshot(G,{strict:r.strictSnapshots??!0}),H=n._attach(Q),Q;function X(e,t){Z.set(e,t),D||(D=t,Q.loader=t),t.server=E,t.cache=v,t.scheduler=s}function ee(e){!1!==P&&!I&&(P||function(e,t){return Boolean(t.routerOptions||t.mode||e.entries().length>0)}(T,r))&&Q.loader&&(P=P??w({mode:r.mode??"ssr",root:e,boundary:r.boundary??"route",routes:T,loader:Q.loader,signals:f,handlers:p,server:E,cache:v,partials:j,scheduler:s,attributes:c}),Q.router=P,Q.loader.router=P,te({cache:v,router:P}),P.start(),I=!0)}function te(e={}){const t=function(e){return"function"==typeof e?.registerMany}(E)?d:e.cache;E._setContext?.({signals:f,loader:D,router:P,cache:t,scheduler:s,requestContext:r.requestContext,...re()})}function re(){const e=(t=r.requestContext)?"function"==typeof t.get?t.get()??{}:"function"==typeof t.getStore?t.getStore()??{}:{}:{};var t;return{requestContext:e,request:e.request??r.request,headers:e.headers??r.headers,cookies:e.cookies??r.cookies,locals:e.locals??r.locals}}function ne(){if(F)throw new Error("Async app runtime has been destroyed.")}}const q=x();function M(e=globalThis.document,{attributes:t}={}){const r=O(t),n=j(r,"async","snapshot"),o=e?.ownerDocument??e??globalThis.document,s=e??o;if(!s?.querySelectorAll&&!o?.querySelectorAll)return{};const a={};for(const e of new Set([s,o]))if(e?.querySelectorAll)for(const t of e.querySelectorAll("script[type='application/json'], script")){if(!t.hasAttribute?.(n))continue;const e=t.textContent?.trim()??"";if(!e)continue;let r;try{r=JSON.parse(e)}catch(e){throw new Error(`Could not parse Async snapshot: ${e instanceof Error?e.message:String(e)}`)}I(a,r,{strict:!0})}return a}function B(e,t,r){r&&0!==Object.keys(r).length&&(e?.registry!==t?e?.registerMany?.(r):e._adoptMany?.(r))}function N(e={}){const t={};for(const[r,n]of Object.entries(e??{}))t[r]=S(n);return t}function D(e,t,r){for(const[n,o]of Object.entries(r??{}))e.register(t,n,o)}function L(e,t,r,n,o={}){if(r&&0!==Object.keys(r).length){for(const[n,s]of Object.entries(r)){if("asyncSignal"===t&&e.signals?.has?.(n)&&!e.registry.has(t,n))throw new Error(`Signal "${n}" is already registered.`);P(e.registry,t,n,s,o)}n?._adoptMany?.(r)}}function P(e,t,r,n,o={}){const s=o.strict??!0,a=e._map(t);if(a.has(r)){if(k(a.get(r),n)||H(a.get(r),n))return;if(s)throw new Error(`${t} "${r}" is already registered with a different value.`)}else e.set(t,r,n)}function z(e={}){return{signal:{...e.signals??{},...e.signal??{}},handler:{...e.handler??{}},server:{...e.server??{}},partial:{...e.partial??{}},route:{...e.route??{}},component:{...e.component??{}},asyncSignal:{...e.asyncSignal??{}},cache:{browser:{...e.entries?.browser??{},...e.cache?.browser??{}}}}}function I(e,t,r={}){const n=z(T(t));e.signal={...e.signal??e.signals??{},...n.signal},e.signals=e.signal,e.cache={...e.cache??{},browser:{...e.cache?.browser??{},...n.cache.browser}};for(const t of["handler","server","partial","route","component","asyncSignal"]){e[t]=e[t]??{};for(const[o,s]of Object.entries(n[t]))if(Object.hasOwn(e[t],o)){if(k(e[t][o],s)||H(e[t][o],s))continue;if(r.strict??1)throw new Error(`${t} "${o}" is already declared with a different value.`)}else e[t][o]=s}return e}function H(e,t){if(e===t)return!0;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}function W(e,t,r){if(e.has?.(t)){const n=e._entry?.(t);return"function"==typeof n?._restore&&function(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&Object.hasOwn(e,"value")&&(Object.hasOwn(e,"loading")||Object.hasOwn(e,"error")||Object.hasOwn(e,"status")||Object.hasOwn(e,"version"))}(r)?void n._restore(r):void e.set(t,r)}e.register(t,E(r))}function U(e,t,r){if("function"==typeof e._setPath)return void e._setPath(t,r);const n=String(t).split(".")[0];e.has?.(n)?e.set(t,r):(e.register(n,E(t===n?r:{})),t!==n&&e.set(t,r))}function V(e={},t={}){const r=t.registry??A(),n=t.type??"server",o={},s={registry:r,register:(e,t)=>(r.register(n,e,t),e),registerMany(e){for(const[t,r]of Object.entries(e??{}))s.register(t,r);return s},unregister:e=>r.unregister(n,e),resolve(){},async run(e){throw new Error(`Server command "${e}" cannot run without a server proxy or server registry.`)},keys:()=>r.keys(n),entries:()=>r.entries(n),inspect:()=>r.entries(n),_setContext:(e={})=>(Object.assign(o,e),s),_adoptMany:()=>s};return s.registerMany(e),v((e,t,r)=>s.run(e,t,r),s,()=>o)}function J(e,t={}){if("signal"!==e)return{...t??{}};const r={};for(const[e,n]of Object.entries(t??{}))r[e]=F(n);return r}function F(e){return e&&"object"==typeof e&&"function"==typeof e.subscribe?e:E(e)}function K(e,{signals:t,browserCache:r,boundary:n,attributes:o}){const s={signals:t.snapshot(),cache:{browser:r.snapshot()}},a=j(o,"async","boundary"),i=j(o,"async","snapshot");return`<section ${a}="${c=n,String(c).replaceAll("&","&").replaceAll('"',""").replaceAll("<","<")}">${e??""}</section><script type="application/json" ${i}>${function(e){return JSON.stringify(e).replaceAll("<","\\u003c")}(s)}<\/script>`;var c}return{defineApp:x,createApp:C,readSnapshot:M,Async:q}})(),y=(()=>{const{normalizeAttributeConfig:e,readAttribute:t}=o,{renderTemplate:r}=a,n="data-pending-id",s=new Set(["as-ready","forwards","backwards","together"]),i=new Set(["collapsed","hidden"]),c=new Set(["innerhtml","outerhtml","textcontent","children","childnodes"]);function u(r={}){const o=r.loader,a=r.signals??o?.signals,c=r.cache??o?.cache,u=r.scheduler??o?.scheduler,l=r.router??o?.router,T=e(r.attributes??o?.attributes),_=r.recentLimit??50,x=!0===r.throwOnError,C="function"==typeof r.onApply?r.onApply:void 0,q="function"==typeof r.onIgnore?r.onIgnore:void 0,M="function"==typeof r.onError?r.onError:void 0,B="function"==typeof r.isScopeDestroyed?r.isScopeDestroyed:e=>u?.isScopeDestroyed?.(e)??u?.inspectDestroyed?.(e)??!1;if(!o||"function"!=typeof o.swap)throw new TypeError("createBoundaryReceiver(...) requires a loader with swap(boundary, html).");if(!Number.isInteger(_)||_<0)throw new TypeError("createBoundaryReceiver(...) recentLimit must be a non-negative integer.");const N=new Map,D=new Map,L=[];let P=!1;const z={async apply(e){if(P)throw new Error("Boundary receiver has been destroyed.");const t=function(e){if(!e||"object"!=typeof e||Array.isArray(e))throw new TypeError("receiver.apply(patch) requires a boundary patch object.");if(f(e.boundary),"number"!=typeof e.seq||!Number.isFinite(e.seq))throw new TypeError("Boundary patch seq must be a finite number.");if(void 0!==e.signals&&!k(e.signals))throw new TypeError("Boundary patch signals must be an object.");if(void 0!==e.cache&&!k(e.cache))throw new TypeError("Boundary patch cache must be an object.");if(void 0!==e.cache?.browser&&!k(e.cache.browser))throw new TypeError("Boundary patch cache.browser must be an object.");if(void 0!==e.redirect&&("string"!=typeof e.redirect||0===e.redirect.length))throw new TypeError("Boundary patch redirect must be a non-empty string.");if(void 0!==e.parentScope&&"string"!=typeof e.parentScope)throw new TypeError("Boundary patch parentScope must be a string.");if(void 0!==e.scope&&"string"!=typeof e.scope)throw new TypeError("Boundary patch scope must be a string.");const t={...e};void 0!==e.attrs&&(t.attrs=function(e){if(!Array.isArray(e))throw new TypeError("Boundary patch attrs must be an array.");if(0===e.length)return{kind:"built",items:[]};if(Array.isArray(e[0]))return{kind:"named",items:e.map(e=>function(e){if(!Array.isArray(e)||3!==e.length)throw new TypeError("No-build attribute patches must be [targetName, attrName, value] tuples.");const[t,r,n]=e;if("string"!=typeof t||0===t.length)throw new TypeError("No-build attribute patch target names must be non-empty strings.");return d(r),h(n),{target:t,name:r,value:n}}(e))};if(e.some(Array.isArray))throw new TypeError("Boundary patch attrs cannot mix built triples and no-build tuples.");if(e.length%3!=0)throw new TypeError("Built attribute patch triples must have a length divisible by 3.");const t=[];for(let r=0;r<e.length;r+=3){const n=e[r],o=e[r+1],s=e[r+2];p(n),d(o),h(s),t.push({target:n,name:o,value:s})}return{kind:"built",items:t}}(e.attrs)),void 0!==e.replace&&(t.replace=(r=e.replace,(Array.isArray(r)?r:[r]).map(e=>{if(!k(e))throw new TypeError("Boundary patch replace records must be objects.");if("string"!=typeof e.target||0===e.target.length)throw new TypeError("Boundary patch replace target must be a non-empty string.");if(void 0!==e.mode&&"pending"!==e.mode&&"boundary"!==e.mode)throw new TypeError('Boundary patch replace mode must be "pending" or "boundary".');if(!Object.hasOwn(e,"html")||null==e.html)throw new TypeError("Boundary patch replace records must include html.");return{target:e.target,html:e.html,mode:e.mode??"pending"}}))),void 0!==e.reveal&&(t.reveal=function(e){if(!k(e))throw new TypeError("Boundary patch reveal metadata must be an object.");const t=e.order??"as-ready";if("string"!=typeof e.group||0===e.group.length)throw new TypeError("Reveal group must be a non-empty string.");if(!Number.isInteger(e.count)||e.count<1)throw new TypeError("Reveal count must be a positive integer.");if(!Number.isInteger(e.index)||e.index<0||e.index>=e.count)throw new TypeError("Reveal index must be an integer from 0 to count - 1.");if(!s.has(t))throw new TypeError("Reveal order must be as-ready, forwards, backwards, or together.");if(void 0!==e.tail&&!i.has(e.tail))throw new TypeError("Reveal tail must be collapsed or hidden.");return{group:e.group,index:e.index,count:e.count,order:t,tail:e.tail}}(e.reveal));var r;const n=Object.hasOwn(e,"html")&&null!=e.html,o=e.signals&&Object.keys(e.signals).length>0,a=e.cache?.browser&&Object.keys(e.cache.browser).length>0,c=Boolean(e.redirect),u=Object.hasOwn(e,"error"),l=t.attrs?.items.length>0,y=t.replace?.length>0;if(!(n||o||a||c||u||l||y))throw new TypeError("Boundary patch must include html, replace, attrs, signals, cache.browser, redirect, or error.");return t}(e),r=(n=t.boundary,N.has(n)||N.set(n,{lastSeq:-1/0,applied:0,ignored:0,errored:0,lastStatus:void 0,pending:void 0}),N.get(n));var n;let o;const a=r.pending??Promise.resolve(),c=new Promise(e=>{o=e});r.pending=c;try{if(await a,P)throw new Error("Boundary receiver has been destroyed.");return await async function(e,t,r){const n=K(e,t);if(n)return Z(e,n,r),n;if(Object.hasOwn(t,"error")){const n=(o=t.error)instanceof Error?o:o&&"object"==typeof o&&"string"==typeof o.message?Object.assign(new Error(o.message),o):new Error(String(o)),s={status:"errored",boundary:t.boundary,seq:t.seq,error:n};if(e.lastSeq=t.seq,e.errored+=1,e.lastStatus=s.status,Y(s),M?.(n,s,r),x)throw n;return s}var o;return H(t),t.reveal?await async function(e,t,r){const n=function(e){const t=D.get(e.group);if(t){if(t.count!==e.count||t.order!==e.order||t.tail!==e.tail)throw new TypeError(`Reveal group "${e.group}" metadata does not match earlier patches.`);return t}const r={id:e.group,count:e.count,order:e.order,tail:e.tail,pending:new Map,committed:new Set,nextForward:0,nextBackward:e.count-1};return D.set(e.group,r),r}(t.reveal),o=t.reveal.index;if(n.committed.has(o))throw new TypeError(`Reveal group "${n.id}" already committed index ${o}.`);if(n.pending.has(o))throw new TypeError(`Reveal group "${n.id}" already has a pending patch for index ${o}.`);const s={record:e,normalized:t,patch:r};n.pending.set(o,s);const a=function(e){if("as-ready"===e.order)return g(e,[...e.pending.keys()].sort((e,t)=>e-t));if("forwards"===e.order){const t=[];for(;e.pending.has(e.nextForward);)t.push(e.nextForward),e.nextForward+=1;return g(e,t)}if("backwards"===e.order){const t=[];for(;e.pending.has(e.nextBackward);)t.push(e.nextBackward),e.nextBackward-=1;return g(e,t)}if(e.committed.size+e.pending.size<e.count)return[];const t=[];for(let r=0;r<e.count;r+=1)e.pending.has(r)&&t.push(r);return g(e,t)}(n);if(!a.includes(s)){const r={status:"buffered",boundary:t.boundary,seq:t.seq,reveal:w(t.reveal)};return e.lastStatus=r.status,Y(r),F(n),r}let i;for(const e of a){const t=await I(e.record,e.normalized,e.patch,{stateApplied:!0});n.committed.add(e.normalized.reveal.index),e===s&&(i=t)}return F(n),i}(e,t,r):await I(e,t,r,{stateApplied:!0})}(r,t,e)}finally{o(),r.pending===c&&(r.pending=void 0)}},inspect(){const e={};for(const[t,r]of N)e[t]={lastSeq:r.lastSeq,applied:r.applied,ignored:r.ignored,lastStatus:r.lastStatus},r.errored>0&&(e[t].errored=r.errored);return{destroyed:P,boundaries:e,reveal:m(D),recent:L.map(e=>({...e}))}},reset(e){if(void 0===e)return N.clear(),D.clear(),L.length=0,z;f(e),N.delete(e);for(let t=L.length-1;t>=0;t-=1)L[t].boundary===e&&L.splice(t,1);for(const t of D.values())for(const[r,n]of t.pending)n.normalized.boundary===e&&t.pending.delete(r);return z},destroy(){P=!0,N.clear(),D.clear(),L.length=0}};return z;async function I(e,t,r,s={}){const a=K(e,t);if(a)return Z(e,a,r),a;let i;s.stateApplied||H(t);let c,f=0;if(null!=t.html&&(i=o.swap(t.boundary,t.html)),t.replace&&(i??=v(o.root,t.boundary,T),f=function(e,t){let r=0;for(const s of t){if("boundary"===s.mode){if(!A(e,v(o.root,s.target,T)))throw new Error(`Boundary replacement target "${s.target}" is outside boundary "${S(e,T)}".`);o.swap(s.target,s.html),r+=1;continue}const t=V(e,e=>e.getAttribute?.(n)===s.target,`Pending replacement target "${s.target}"`),a=O(s.html,j(e)),i=[...a.childNodes];t.replaceWith(a);for(const e of i)1!==e.nodeType&&11!==e.nodeType||o.scan?.(e);r+=1}return r}(i,t.replace)),t.attrs&&(i??=v(o.root,t.boundary,T),c=function(e,t){let r=0;for(const n of t.items)y("built"===t.kind?W(e,n.target):U(e,n.target),n.name,n.value),r+=1;return{applied:r,ignored:0}}(i,t.attrs)),await async function(e,t){e&&(void 0===t||"function"!=typeof e.flushScope?"function"==typeof e.flush&&await e.flush():await e.flushScope(t))}(u,t.scope),t.redirect){const n=b({status:"redirected",boundary:t.boundary,seq:t.seq,redirect:t.redirect},c,f);return await async function(e,t,r){if(t&&"function"==typeof t.navigate)return void await t.navigate(e);const n=r?.root?.ownerDocument?.defaultView?.location??globalThis.location;n?.assign?.(e)}(t.redirect,l,o),e.applied+=1,e.lastSeq=t.seq,e.lastStatus=n.status,Y(n),C?.(n,r),n}const p=b({status:"applied",boundary:t.boundary,seq:t.seq},c,f);return e.applied+=1,e.lastSeq=t.seq,e.lastStatus=p.status,Y(p),C?.(p,r),p}function H(e){if(e.signals){if(!a||"function"!=typeof a.set)throw new Error("Boundary patch includes signals, but no signal registry is available.");for(const[t,r]of Object.entries(e.signals))a.set(t,r)}if(e.cache?.browser){if(!c||"function"!=typeof c.restore)throw new Error("Boundary patch includes browser cache, but no cache registry is available.");c.restore(e.cache.browser)}}function W(e,t){const r=J(e).filter(e=>e.hasAttribute?.("data-async-backpatch"))[t];if(!r)throw new Error(`Built attribute patch target ${t} was not found in boundary "${S(e,T)}".`);return r}function U(e,r){return V(e,e=>t(e,T,"async","patch")===r,`Attribute patch target "${r}"`)}function V(e,t,r){const n=J(e).filter(t);if(0===n.length)throw new Error(`${r} was not found.`);if(n.length>1)throw new Error(`${r} is ambiguous.`);return n[0]}function J(e){return R(e).filter(t=>!function(e,t,r){if(e===t)return!1;if(null!=S(e,r))return!0;let n=e.parentElement;for(;n&&n!==t;){if(null!=S(n,r))return!0;n=n.parentElement}return!1}(t,e,T))}function F(e){if(!e.tail)return;const r=function(e,r,n){return R(e).find(e=>t(e,n,"async","reveal")===r)??null}(o.root,e.id,T);if(!r)return;const n=E(r,T).slice(0,e.count);if(0===n.length)return;const s=[];for(let t=0;t<n.length;t+=1)e.committed.has(t)?$(n[t],!1):s.push(t);const a="collapsed"===e.tail&&s.length>0?function(e,t){return"backwards"===e.order?t.slice().sort((e,t)=>t-e):t.slice().sort((e,t)=>e-t)}(e,s)[0]:void 0;for(const t of s)$(n[t],"hidden"===e.tail||t!==a)}function K(e,t){return t.seq<=e.lastSeq?{status:"ignored-stale",boundary:t.boundary,seq:t.seq,lastSeq:e.lastSeq}:void 0!==t.parentScope&&B(t.parentScope)?{status:"ignored-destroyed",boundary:t.boundary,seq:t.seq,parentScope:t.parentScope}:null}function Z(e,t,r){e.ignored+=1,e.lastStatus=t.status,Y(t),q?.(t,r)}function Y(e){if(0!==_)for(L.push(function(e){const t={boundary:e.boundary,seq:e.seq,status:e.status};return"ignored-stale"===e.status&&(t.lastSeq=e.lastSeq),"ignored-destroyed"===e.status&&void 0!==e.parentScope&&(t.parentScope=e.parentScope),"redirected"===e.status&&(t.redirect=e.redirect),"buffered"===e.status&&(t.reveal=e.reveal),e.attrs&&(t.attrs={...e.attrs}),e.replace&&(t.replace={...e.replace}),t}(e));L.length>_;)L.shift()}}function l(r,n={}){if(!r||"object"!=typeof r||"string"!=typeof r.textContent)throw new TypeError("AsyncStream.applyScript(script) requires a JSON script element.");const o=e(n.attributes??n.receiver?.attributes),s=function(e,{root:r,attributes:n}){if(!e||"object"!=typeof e||Array.isArray(e))throw new TypeError("Async stream patch JSON must be an object.");const o={...e};void 0!==e.replace&&(o.replace=function(e,r,n){return(Array.isArray(e)?e:[e]).map(e=>{if(!k(e))throw new TypeError("Stream replacement records must be objects.");if(void 0===e.template||Object.hasOwn(e,"html"))return e;const o=function(e,r,n){if("string"!=typeof r||0===r.length)throw new TypeError("Stream replacement template must be a non-empty string.");return R(e).find(e=>"TEMPLATE"===e.tagName&&t(e,n,"async","stream-template")===r)??null}(r,e.template,n);if(!o)throw new Error(`Stream template "${e.template}" was not found.`);return{...e,html:o.innerHTML}})}(e.replace,r,n));const s=function(e,r,n){if("string"!=typeof e.boundary||0===e.boundary.length)return null;const o=v(r,e.boundary,n,{required:!1}),s=o?.parentElement,a=s?t(s,n,"async","reveal"):null;if(!a)return null;const i=E(s,n),c=i.indexOf(o);return-1===c?null:{group:a,index:c,count:i.length,order:t(s,n,"async","reveal-order")||"as-ready",tail:t(s,n,"async","reveal-tail")||void 0}}(o,r,n);if(void 0!==e.reveal&&s&&(a=e.reveal,i=s,a?.group!==i.group||a?.index!==i.index||a?.count!==i.count||(a?.order??"as-ready")!==i.order||a?.tail!==i.tail))throw new TypeError("Explicit stream reveal metadata conflicts with DOM reveal metadata.");var a,i;return void 0===e.reveal&&s&&(o.reveal=s),o}(function(e){try{return JSON.parse(e)}catch(e){throw new TypeError(`Async stream patch JSON is invalid: ${e.message}`)}}(r.textContent),{root:n.root??r.ownerDocument??globalThis.document,attributes:o});return function(e={}){if(e.receiver&&"function"==typeof e.receiver.apply)return e.receiver;const t=e.runtime??globalThis.Async?.runtime,r=e.loader??t?.loader;if(!r)throw new TypeError("AsyncStream requires receiver, loader, or runtime.loader.");return u({loader:r,signals:e.signals??t?.signals,cache:e.cache??t?.browser?.cache,scheduler:e.scheduler??t?.scheduler,router:e.router??t?.router,attributes:e.attributes??t?.attributes??r.attributes})}(n).apply(s)}function f(e){if("string"!=typeof e||0===e.length)throw new TypeError("Boundary patch boundary must be a non-empty string.")}function p(e){if(!Number.isInteger(e)||e<0)throw new TypeError("Built attribute patch target indexes must be non-negative integers.")}function d(e){if("string"!=typeof e||0===e.length)throw new TypeError("Attribute patch names must be non-empty strings.");const t=e.toLowerCase();if(t.startsWith("on")||c.has(t)||/[\s<>"'=]/.test(e))throw new TypeError(`Attribute patch name "${e}" is not allowed.`)}function h(e){const t=typeof e;if(null!=e&&"string"!==t&&"number"!==t&&"boolean"!==t)throw new TypeError("Attribute patch values must be strings, numbers, booleans, null, or undefined.")}function y(e,t,r){!1!==r&&null!=r?e.setAttribute(t,!0===r?"":String(r)):e.removeAttribute(t)}function g(e,t){const r=[];for(const n of t){const t=e.pending.get(n);t&&(e.pending.delete(n),r.push(t))}return r}function m(e){const t={};for(const[r,n]of e)t[r]={count:n.count,order:n.order,tail:n.tail,pending:[...n.pending.keys()].sort((e,t)=>e-t),committed:[...n.committed].sort((e,t)=>e-t)};return t}function w(e){return{group:e.group,index:e.index,count:e.count,order:e.order,tail:e.tail}}function b(e,t,r){return t&&(e.attrs=t),r>0&&(e.replace={applied:r}),e}function v(e,t,r,n={}){const o=R(e).find(e=>S(e,r)===String(t));if(!o&&!1!==n.required)throw new Error(`Boundary "${t}" was not found.`);return o??null}function S(e,r){return"ASYNC-SUSPENSE"===e?.tagName&&e.hasAttribute?.("for")?e.getAttribute("for"):t(e,r,"async","boundary")}function E(e,t){return[...e?.children??[]].filter(e=>null!=S(e,t))}function $(e,t){if(t)return e.setAttribute("hidden",""),void("hidden"in e&&(e.hidden=!0));e.removeAttribute("hidden"),"hidden"in e&&(e.hidden=!1)}function A(e,t){return e===t||e.contains?.(t)}function j(e){return e.ownerDocument??globalThis.document}function O(e,t){if(11===e?.nodeType)return e.cloneNode(!0);if("TEMPLATE"===e?.tagName)return e.content.cloneNode(!0);if(e?.nodeType){const r=t.createDocumentFragment();return r.append(e.cloneNode(!0)),r}const n=t.createElement("template");return n.innerHTML="string"==typeof e?e:r(e),n.content.cloneNode(!0)}function R(e){const t=[];return 1===e?.nodeType&&t.push(e),t.push(...e?.querySelectorAll?.("*")??[]),t}function T(e){return Boolean(1===e?.nodeType&&"string"==typeof e.textContent)}function k(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))}return{createBoundaryReceiver:u,AsyncStream:Object.freeze({applyScript:l,applyCurrentScript:function(e,t){return l(T(e)?e:globalThis.document?.currentScript,T(e)?t??{}:e??{})}})}})(),g=(()=>{function e(e){return e?.reason??new Error("Operation aborted")}return{delay:function(t,r){return r?.aborted?Promise.reject(e(r)):new Promise((n,o)=>{let s=setTimeout(function(){s=void 0,r?.removeEventListener?.("abort",a),n()},t);function a(){void 0!==s&&clearTimeout(s),s=void 0,r?.removeEventListener?.("abort",a),o(e(r))}r?.addEventListener?.("abort",a,{once:!0})})}}})(),m=(()=>{const{Async:e}=h;return{defineAsyncContainerElement:function(t={}){const r=t.tagName??"async-container",n=t.customElements??globalThis.customElements;if(!n)throw new Error("defineAsyncContainerElement(...) requires customElements.");const o=n.get(r);if(o)return o;const s=t.app??t.Async??e,a=t.HTMLElement??t.window?.HTMLElement??globalThis.HTMLElement;if(!a)throw new Error("defineAsyncContainerElement(...) requires HTMLElement.");class i extends a{connectedCallback(){if(this.__asyncAttached)return;const e=s.runtime??s.start?.();e?.attachRoot?.(this),this.__asyncRuntime=e,this.__asyncAttached=!0}disconnectedCallback(){this.__asyncAttached&&(this.__asyncRuntime?.detachRoot?.(this),this.__asyncRuntime=void 0,this.__asyncAttached=!1)}}return n.define(r,i),i},defineAsyncSuspenseElement:function(e={}){const t=e.tagName??"async-suspense",r=e.customElements??globalThis.customElements;if(!r)throw new Error("defineAsyncSuspenseElement(...) requires customElements.");const n=r.get(t);if(n)return n;const o=e.HTMLElement??e.window?.HTMLElement??globalThis.HTMLElement;if(!o)throw new Error("defineAsyncSuspenseElement(...) requires HTMLElement.");class s extends o{}return r.define(t,s),s}}})(),{asyncSignal:w}=e,{Async:b}=h,{createApp:v}=h,{defineApp:S}=h,{readSnapshot:E}=h,{attributeName:$}=o,{defineAttributeConfig:A}=o,{AsyncStream:j}=y,{createBoundaryReceiver:O}=y,{createCacheRegistry:R}=n,{defineCache:T}=n,{component:k}=i,{createComponentRegistry:_}=i,{defineComponent:x}=i,{delay:C}=g,{defineAsyncContainerElement:q}=m,{defineAsyncSuspenseElement:M}=m,{createHandlerRegistry:B}=u,{html:N}=a,{createLazyRegistry:D}=t,{defineRegistrySnapshot:L}=t,{Loader:P}=f,{AsyncLoader:z}=f,{createPartialRegistry:I}=p,{createRegistryStore:H}=r,{createRouteRegistry:W}=d,{createRouter:U}=d,{defineRoute:V}=d,{route:J}=d,{createScheduler:F}=l,{applyServerResult:K}=c,{createServerProxy:Z}=c,{resolveServerCommandArguments:Y}=c,{unwrapServerResult:G}=c,{computed:Q}=s,{createSignal:X}=s,{createSignalRegistry:ee}=s,{effect:te}=s,{signal:re}=s,ne={asyncSignal:w,Async:b,createApp:v,defineApp:S,readSnapshot:E,attributeName:$,defineAttributeConfig:A,AsyncStream:j,createBoundaryReceiver:O,createCacheRegistry:R,defineCache:T,component:k,createComponentRegistry:_,defineComponent:x,delay:C,defineAsyncContainerElement:q,defineAsyncSuspenseElement:M,createHandlerRegistry:B,html:N,createLazyRegistry:D,defineRegistrySnapshot:L,Loader:P,AsyncLoader:z,createPartialRegistry:I,createRegistryStore:H,createRouteRegistry:W,createRouter:U,defineRoute:V,route:J,createScheduler:F,applyServerResult:K,createServerProxy:Z,resolveServerCommandArguments:Y,unwrapServerResult:G,computed:Q,createSignal:X,createSignalRegistry:ee,effect:te,signal:re};return function(e,t){const r=Object.keys(e).filter(e=>"Async"!==e&&Object.prototype.hasOwnProperty.call(t,e));if(r.length>0)throw new Error(`UMD Async namespace export conflict: ${r.join(", ")}.`)}(ne,b),Object.assign(b,ne),b.Async=b,b}();"function"==typeof define&&define.amd?define([],()=>t):"object"==typeof module&&module.exports?module.exports=t:(e.AsyncFramework=t,e.Async=t)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this);
|
package/framework.d.ts
CHANGED
|
@@ -513,10 +513,30 @@ export interface LoaderInstance {
|
|
|
513
513
|
export type AsyncLoaderOptions = LoaderOptions;
|
|
514
514
|
export type AsyncLoaderInstance = LoaderInstance;
|
|
515
515
|
|
|
516
|
+
export type AttributePatchValue = string | number | boolean | null | undefined;
|
|
517
|
+
export type BuiltAttributePatchTriples = readonly AttributePatchValue[];
|
|
518
|
+
export type NoBuildAttributePatchTuple = readonly [targetName: string, attrName: string, value: AttributePatchValue];
|
|
519
|
+
export type NoBuildAttributePatchTuples = readonly NoBuildAttributePatchTuple[];
|
|
520
|
+
export interface StreamReplacement {
|
|
521
|
+
target: string;
|
|
522
|
+
html?: TemplateLike;
|
|
523
|
+
template?: string;
|
|
524
|
+
mode?: "pending" | "boundary";
|
|
525
|
+
}
|
|
526
|
+
export interface StreamRevealMetadata {
|
|
527
|
+
group: string;
|
|
528
|
+
index: number;
|
|
529
|
+
count: number;
|
|
530
|
+
order?: "as-ready" | "forwards" | "backwards" | "together";
|
|
531
|
+
tail?: "collapsed" | "hidden";
|
|
532
|
+
}
|
|
516
533
|
export interface BoundaryPatch {
|
|
517
534
|
boundary: string;
|
|
518
535
|
seq: number;
|
|
519
536
|
html?: TemplateLike;
|
|
537
|
+
replace?: StreamReplacement | readonly StreamReplacement[];
|
|
538
|
+
attrs?: BuiltAttributePatchTriples | NoBuildAttributePatchTuples;
|
|
539
|
+
reveal?: StreamRevealMetadata;
|
|
520
540
|
signals?: Record<string, unknown>;
|
|
521
541
|
cache?: { browser?: Record<string, unknown> };
|
|
522
542
|
redirect?: string;
|
|
@@ -526,17 +546,24 @@ export interface BoundaryPatch {
|
|
|
526
546
|
meta?: Record<string, unknown>;
|
|
527
547
|
}
|
|
528
548
|
|
|
549
|
+
export interface BoundaryPatchCounts {
|
|
550
|
+
applied: number;
|
|
551
|
+
ignored?: number;
|
|
552
|
+
}
|
|
553
|
+
|
|
529
554
|
export type BoundaryApplyResult =
|
|
530
|
-
| { status: "applied"; boundary: string; seq: number }
|
|
555
|
+
| { status: "applied"; boundary: string; seq: number; attrs?: BoundaryPatchCounts; replace?: BoundaryPatchCounts }
|
|
556
|
+
| { status: "buffered"; boundary: string; seq: number; reveal: Required<Pick<StreamRevealMetadata, "group" | "index" | "count">> & Pick<StreamRevealMetadata, "order" | "tail"> }
|
|
531
557
|
| { status: "ignored-stale"; boundary: string; seq: number; lastSeq: number }
|
|
532
558
|
| { status: "ignored-destroyed"; boundary: string; seq: number; parentScope?: string }
|
|
533
|
-
| { status: "redirected"; boundary: string; seq: number; redirect: string }
|
|
559
|
+
| { status: "redirected"; boundary: string; seq: number; redirect: string; attrs?: BoundaryPatchCounts; replace?: BoundaryPatchCounts }
|
|
534
560
|
| { status: "errored"; boundary: string; seq: number; error: Error };
|
|
535
561
|
|
|
536
562
|
export interface BoundaryReceiverInspection {
|
|
537
563
|
destroyed: boolean;
|
|
538
564
|
boundaries: Record<string, { lastSeq: number; applied: number; ignored: number; errored?: number; lastStatus?: BoundaryApplyResult["status"] }>;
|
|
539
|
-
|
|
565
|
+
reveal: Record<string, { count: number; order: string; tail?: string; pending: number[]; committed: number[] }>;
|
|
566
|
+
recent: Array<{ boundary: string; seq: number; status: BoundaryApplyResult["status"]; lastSeq?: number; parentScope?: string; redirect?: string; attrs?: BoundaryPatchCounts; replace?: BoundaryPatchCounts; reveal?: StreamRevealMetadata }>;
|
|
540
567
|
}
|
|
541
568
|
|
|
542
569
|
export interface BoundaryReceiverOptions {
|
|
@@ -545,6 +572,7 @@ export interface BoundaryReceiverOptions {
|
|
|
545
572
|
cache?: CacheRegistry;
|
|
546
573
|
scheduler?: Scheduler;
|
|
547
574
|
router?: Router;
|
|
575
|
+
attributes?: AttributeConfig;
|
|
548
576
|
onApply?(result: BoundaryApplyResult, patch: BoundaryPatch): void;
|
|
549
577
|
onIgnore?(result: BoundaryApplyResult, patch: BoundaryPatch): void;
|
|
550
578
|
onError?(error: Error, result: BoundaryApplyResult, patch: BoundaryPatch): void;
|
|
@@ -560,6 +588,18 @@ export interface BoundaryReceiver {
|
|
|
560
588
|
destroy(): void;
|
|
561
589
|
}
|
|
562
590
|
|
|
591
|
+
export interface AsyncStreamApplyOptions extends Partial<BoundaryReceiverOptions> {
|
|
592
|
+
receiver?: BoundaryReceiver;
|
|
593
|
+
runtime?: AppRuntime;
|
|
594
|
+
root?: Document | Element | DocumentFragment;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
export interface AsyncStreamNamespace {
|
|
598
|
+
applyScript(script: Element, options?: AsyncStreamApplyOptions): Promise<BoundaryApplyResult>;
|
|
599
|
+
applyCurrentScript(script?: Element, options?: AsyncStreamApplyOptions): Promise<BoundaryApplyResult>;
|
|
600
|
+
applyCurrentScript(options?: AsyncStreamApplyOptions): Promise<BoundaryApplyResult>;
|
|
601
|
+
}
|
|
602
|
+
|
|
563
603
|
export interface RegistryStore {
|
|
564
604
|
target: RuntimeTarget;
|
|
565
605
|
register(type: RegistryType, id: string, value: unknown): string;
|
|
@@ -696,6 +736,7 @@ export interface AsyncNamespace extends AppHub {
|
|
|
696
736
|
inspectRoots: AppHub["inspectRoots"];
|
|
697
737
|
attributeName: typeof attributeName;
|
|
698
738
|
defineAttributeConfig: typeof defineAttributeConfig;
|
|
739
|
+
AsyncStream: AsyncStreamNamespace;
|
|
699
740
|
createBoundaryReceiver: typeof createBoundaryReceiver;
|
|
700
741
|
createCacheRegistry: typeof createCacheRegistry;
|
|
701
742
|
defineCache: typeof defineCache;
|
|
@@ -738,6 +779,7 @@ export declare function defineApp(initial?: AppDefinition): AppHub;
|
|
|
738
779
|
export declare function readSnapshot(root?: Document | Element, options?: { attributes?: AttributeConfig }): RegistryRuntimeSnapshot;
|
|
739
780
|
export declare function attributeName(attributes: AttributeConfig | undefined, type: keyof NormalizedAttributeConfig, name: string): string;
|
|
740
781
|
export declare function defineAttributeConfig(config?: AttributeConfig): NormalizedAttributeConfig;
|
|
782
|
+
export declare const AsyncStream: AsyncStreamNamespace;
|
|
741
783
|
export declare function createBoundaryReceiver(options: BoundaryReceiverOptions): BoundaryReceiver;
|
|
742
784
|
export declare function createCacheRegistry(initialMap?: Record<string, CacheDefinition | CacheDefinitionOptions>, options?: { now?: () => number; registry?: RegistryStore; type?: "cache.browser" | "cache.server" }): CacheRegistry;
|
|
743
785
|
export declare function defineCache(options?: CacheDefinitionOptions): CacheDefinition;
|