@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.
@@ -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("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}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("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;")}">${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("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}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("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;")}">${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
- recent: Array<{ boundary: string; seq: number; status: BoundaryApplyResult["status"]; lastSeq?: number; parentScope?: string; redirect?: string }>;
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;