@devframes/plugin-og--assets 0.9.10 → 0.9.12

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.
@@ -6,4 +6,4 @@ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],en
6
6
  `)].join(`
7
7
  `))}return()=>i.value||r.value||o.value?Ys(t.default({present:o.value})[0],{ref:e=>{let t=$u(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),gd=V({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=ad(n.default()),r=e.findIndex(e=>e.type!==W);if(r===-1)return e;let i=e[r];delete i.props?.ref;let a=i.props?ws(t,i.props):t,o=_s({...i,props:{}},a);return e.length===1?o:(e[r]=o,e)}}}),_d=[`area`,`img`,`input`],vd=V({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&_d.includes(r)?()=>Ys(r,t):r===`template`?()=>Ys(gd,t,{default:n.default}):()=>Ys(e.as,t,{default:n.default})}});function yd(){let e=L();return{primitiveElement:e,currentElement:Z(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:$u(e))}}var bd=`data-reka-collection-item`;function xd(e={}){let{key:t=``,isProvider:n=!1}=e,r=`${t}CollectionProvider`,i;n?(i={collectionRef:L(),itemMap:L(new Map)},pr(r,i)):i=mr(r);let a=(e=!1)=>{let t=i.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${bd}]`)),r=new Map(n.map((e,t)=>[e,t])),a=Array.from(i.itemMap.value.values()).sort((e,t)=>(r.get(e.ref)??-1)-(r.get(t.ref)??-1));return e?a:a.filter(e=>e.ref.dataset.disabled!==``)},o=V({name:`CollectionSlot`,inheritAttrs:!1,setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:a}=yd();return xr(a,()=>{i.collectionRef.value=a.value}),()=>Ys(gd,{ref:r,...n},t)}}),s=V({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:a}=yd();return vr(t=>{if(a.value){let n=nn(a.value);i.itemMap.value.set(n,{ref:a.value,value:e.value}),t(()=>i.itemMap.value.delete(n))}}),()=>Ys(gd,{...n,[bd]:``,ref:r},t)}});return{getItems:a,reactiveItems:Z(()=>Array.from(i.itemMap.value.values())),itemMapSize:Z(()=>i.itemMap.value.size),CollectionSlot:o,CollectionItem:s}}var Sd=`rovingFocusGroup.onEntryFocus`,Cd={bubbles:!1,cancelable:!0},wd={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function Td(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function Ed(e,t,n){let r=Td(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return wd[r]}function Dd(e,t=!1){let n=Ju();for(let r of e)if(r===n||(r.focus({preventScroll:t}),Ju()!==n))return}function Od(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[kd,Ad]=qu(`RovingFocusGroup`),jd=V({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:t,emit:n}){let r=e,i=n,{loop:a,orientation:o,dir:s}=hn(r),c=cd(s),l=id(r,`currentTabStopId`,i,{defaultValue:r.defaultCurrentTabStopId,passive:r.currentTabStopId===void 0}),u=L(!1),d=L(!1),f=L(0),{getItems:p,CollectionSlot:m}=xd({isProvider:!0});function h(e){let t=!d.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!u.value){let t=new CustomEvent(Sd,Cd);if(e.currentTarget.dispatchEvent(t),i(`entryFocus`,t),!t.defaultPrevented){let e=p().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);Dd([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===l.value),...e].filter(Boolean),r.preventScrollOnEntryFocus)}}d.value=!1}function g(){setTimeout(()=>{d.value=!1},1)}return t({getItems:p}),Ad({loop:a,dir:c,orientation:o,currentTabStopId:l,onItemFocus:e=>{l.value=e},onItemShiftTab:()=>{u.value=!0},onFocusableItemAdd:()=>{f.value++},onFocusableItemRemove:()=>{f.value--}}),(e,t)=>(G(),q(R(m),null,{default:B(()=>[Y(R(vd),{tabindex:u.value||f.value===0?-1:0,"data-orientation":R(o),as:e.as,"as-child":e.asChild,dir:R(c),style:{outline:`none`},onMousedown:t[0]||=e=>d.value=!0,onMouseup:g,onFocus:h,onBlur:t[1]||=e=>u.value=!1},{default:B(()=>[da(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),Md=V({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=kd(),r=dd(),i=Z(()=>t.tabStopId||r),a=Z(()=>n.currentTabStopId.value===i.value),{getItems:o,CollectionItem:s}=xd();Ki(()=>{t.focusable&&n.onFocusableItemAdd()}),Xi(()=>{t.focusable&&n.onFocusableItemRemove()}),xr(()=>t.focusable,(e,t)=>{e!==t&&(e?n.onFocusableItemAdd():n.onFocusableItemRemove())});function c(e){if(e.key===`Tab`&&e.shiftKey){n.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let r=Ed(e,n.orientation.value,n.dir.value);if(r!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!t.allowShiftKey&&e.shiftKey)return;e.preventDefault();let i=[...o().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(r===`last`)i.reverse();else if(r===`prev`||r===`next`){r===`prev`&&i.reverse();let t=i.indexOf(e.currentTarget);i=n.loop.value?Od(i,t+1):i.slice(t+1)}Jn(()=>Dd(i))}}return(e,t)=>(G(),q(R(s),null,{default:B(()=>[Y(R(vd),{tabindex:a.value?0:-1,"data-orientation":R(n).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?R(n).onItemFocus(i.value):t.preventDefault()},onFocus:t[1]||=e=>R(n).onItemFocus(i.value),onKeydown:c},{default:B(()=>[da(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}}),[Nd,Pd]=qu(`TabsRoot`),Fd=V({__name:`TabsRoot`,props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:`horizontal`},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:`automatic`},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,{orientation:i,unmountOnHide:a,dir:o}=hn(n),s=cd(o);ld();let c=id(n,`modelValue`,r,{defaultValue:n.defaultValue,passive:n.modelValue===void 0}),l=L(),u=on(new Set);return Pd({modelValue:c,changeModelValue:e=>{c.value=e},orientation:i,dir:s,unmountOnHide:a,activationMode:n.activationMode,baseId:dd(void 0,`reka-tabs`),tabsList:l,contentIds:u,registerContent:e=>{u.value=new Set([...u.value,e])},unregisterContent:e=>{let t=new Set(u.value);t.delete(e),u.value=t}}),(e,t)=>(G(),q(R(vd),{dir:R(s),"data-orientation":R(i),"as-child":e.asChild,as:e.as},{default:B(()=>[da(e.$slots,`default`,{modelValue:R(c)})]),_:3},8,[`dir`,`data-orientation`,`as-child`,`as`]))}});function Id(e,t){return`${e}-trigger-${t}`}function Ld(e,t){return`${e}-content-${t}`}var Rd=V({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n}=ld(),r=Nd(),i=Z(()=>Id(r.baseId,t.value)),a=Z(()=>Ld(r.baseId,t.value)),o=Z(()=>t.value===r.modelValue.value),s=L(o.value);return Ki(()=>{r.registerContent(t.value),requestAnimationFrame(()=>{s.value=!1})}),Yi(()=>{r.unregisterContent(t.value)}),(e,t)=>(G(),q(R(hd),{present:e.forceMount||o.value,"force-mount":``},{default:B(({present:t})=>[Y(R(vd),{id:a.value,ref:R(n),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":o.value?`active`:`inactive`,"data-orientation":R(r).orientation.value,"aria-labelledby":i.value,hidden:!t,tabindex:`0`,style:pe({animationDuration:s.value?`0s`:void 0})},{default:B(()=>[!R(r).unmountOnHide.value||t?da(e.$slots,`default`,{key:0}):bs(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),zd=V({__name:`TabsIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e,{expose:t}){let n=e,r=Nd();t({updateIndicatorStyle:s}),ld();let i=ed(),a=L({size:null,thickness:null,position:null}),o=L([]);xr(()=>[r.modelValue.value,r?.dir.value],()=>{s()},{immediate:!0,flush:`post`}),yr(()=>{o.value=Array.from(r.tabsList.value?.querySelectorAll(`[role="tab"]`)||[])}),rd(Z(()=>[r.tabsList.value,...o.value]),s);function s(){let e=r.tabsList.value?.querySelector(`[role="tab"][data-state="active"]`);e&&(r.orientation.value===`horizontal`?a.value={size:e.offsetWidth,thickness:e.offsetHeight,position:e.offsetLeft}:a.value={size:e.offsetHeight,thickness:e.offsetWidth,position:e.offsetTop})}return(e,t)=>R(i)&&typeof a.value.size==`number`?(G(),q(R(vd),ws({key:0},n,{style:{"--reka-tabs-indicator-size":`${a.value.size}px`,"--reka-tabs-indicator-thickness":`${a.value.thickness}px`,"--reka-tabs-indicator-position":`${a.value.position}px`}}),{default:B(()=>[da(e.$slots,`default`)]),_:3},16,[`style`])):bs(`v-if`,!0)}}),Bd=V({__name:`TabsList`,props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{loop:t}=hn(e),{forwardRef:n,currentElement:r}=ld(),i=Nd();return i.tabsList=r,(e,r)=>(G(),q(R(jd),{"as-child":``,orientation:R(i).orientation.value,dir:R(i).dir.value,loop:R(t)},{default:B(()=>[Y(R(vd),{ref:R(n),role:`tablist`,"as-child":e.asChild,as:e.as,"aria-orientation":R(i).orientation.value},{default:B(()=>[da(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`aria-orientation`])]),_:3},8,[`orientation`,`dir`,`loop`]))}}),Vd=V({__name:`TabsTrigger`,props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:n}=ld(),r=Nd(),i=Z(()=>Id(r.baseId,t.value)),a=Z(()=>r.contentIds.value.has(t.value)?Ld(r.baseId,t.value):void 0),o=Z(()=>t.value===r.modelValue.value);return(e,t)=>(G(),q(R(Md),{"as-child":``,focusable:!e.disabled,active:o.value},{default:B(()=>[Y(R(vd),{id:i.value,ref:R(n),role:`tab`,type:e.as===`button`?`button`:void 0,as:e.as,"as-child":e.asChild,"aria-selected":o.value?`true`:`false`,"aria-controls":a.value,"data-state":o.value?`active`:`inactive`,disabled:e.disabled,"data-disabled":e.disabled?``:void 0,"data-orientation":R(r).orientation.value,onMousedown:t[0]||=eu(t=>{!e.disabled&&t.ctrlKey===!1?R(r).changeModelValue(e.value):t.preventDefault()},[`left`]),onKeydown:t[1]||=nu(t=>R(r).changeModelValue(e.value),[`enter`,`space`]),onFocus:t[2]||=()=>{let t=R(r).activationMode!==`manual`;!o.value&&!e.disabled&&t&&R(r).changeModelValue(e.value)}},{default:B(()=>[da(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as`,`as-child`,`aria-selected`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`data-orientation`])]),_:3},8,[`focusable`,`active`]))}}),Hd={key:1,class:`text-micro font-mono px-1.5 rounded-full bg-active inline-flex h-5 min-w-5 items-center justify-center tabular-nums`},Ud=V({__name:`LayoutTabs`,props:ja({tabs:{},variant:{default:`underline`},lazy:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=$a(e,`modelValue`);return(n,r)=>(G(),q(R(Fd),{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,class:j(e.variant===`segment`?``:`border-b border-base`)},{default:B(()=>[Y(R(Bd),{class:j([`flex items-center relative`,e.variant===`segment`?`gap-1 p-1 rounded-lg bg-sunken w-max`:`gap-1`])},{default:B(()=>[(G(!0),K(U,null,la(e.tabs,t=>(G(),q(R(Vd),{key:t.value,value:t.value,as:t.href?`a`:`button`,href:t.href,disabled:t.disabled,class:j([`text-sm color-muted outline-none flex gap-1.5 transition items-center relative disabled:op50 focus-visible:ring-2 focus-visible:ring-primary-500/40`,e.variant===`segment`?`px-3 py-1 rounded-md data-[state=active]:bg-raised data-[state=active]:color-base data-[state=active]:shadow-sm`:`px-3 py-2 -mb-px border-b-2 border-transparent hover:color-base data-[state=active]:color-active data-[state=active]:border-primary-500 dark:data-[state=active]:border-primary-400`])},{default:B(()=>[t.icon?(G(),K(`span`,{key:0,class:j(t.icon),"aria-hidden":`true`},null,2)):bs(``,!0),vs(` `+M(t.label??t.value)+` `,1),t.count==null?bs(``,!0):(G(),K(`span`,Hd,M(t.count),1))]),_:2},1032,[`value`,`as`,`href`,`disabled`,`class`]))),128)),e.variant===`underline`?(G(),q(R(zd),{key:0,class:`rounded-full bg-primary-500 h-0.5 w-[--reka-tabs-indicator-size] translate-x-[--reka-tabs-indicator-position] transition-all duration-200 bottom-0 left-0 absolute`})):bs(``,!0)]),_:1},8,[`class`]),da(n.$slots,`default`),(G(!0),K(U,null,la(e.tabs,t=>(G(),K(U,{key:`panel-${t.value}`},[n.$slots[t.value]?(G(),q(R(Rd),{key:0,value:t.value,"force-mount":!e.lazy||void 0,class:`py-3 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`},{default:B(()=>[da(n.$slots,t.value)]),_:2},1032,[`value`,`force-mount`])):bs(``,!0)],64))),128))]),_:3},8,[`modelValue`,`class`]))}}),Wd={key:0,class:`border border-base rounded-lg overflow-hidden bg-base`},Gd={class:`flex flex-wrap items-center gap-2 border-b border-base bg-secondary px3 py2`},Kd={class:`color-muted text-xs`},qd={key:0,class:`divide-y divide-base`},Jd=[`href`],Yd={key:1,class:`font-mono text-xs color-active`},Xd={class:`color-muted text-xs`},Zd={class:`justify-self-start rounded bg-secondary px1.5 py0.5 color-muted text-2.5 md:justify-self-end`},Qd={key:1,class:`relative p3`},$d={class:`m0 overflow-auto rounded bg-secondary p3 color-base font-mono text-xs leading-relaxed`},ef=V({__name:`MissingTags`,props:{tags:{}},setup(e){let t=e,n=on(`missing`),r=on(!1),i=[{value:`missing`,label:`Missing tags`},{value:`snippet`,label:`Nuxt snippet`}],a=Z(()=>vu.filter(e=>!t.tags.some(t=>t.name===e.name))),o=Z(()=>xu(a.value));async function s(){await navigator.clipboard.writeText(o.value),r.value=!0,window.setTimeout(()=>r.value=!1,1500)}return(e,t)=>a.value.length?(G(),K(`section`,Wd,[J(`header`,Gd,[t[1]||=J(`span`,{class:`i-ph-warning-duotone color-warning`},null,-1),t[2]||=J(`h2`,{class:`m0 text-sm font-semibold`},` Suggestions `,-1),J(`span`,Kd,M(a.value.length)+` missing`,1),Y(Ud,{modelValue:n.value,"onUpdate:modelValue":t[0]||=e=>n.value=e,tabs:i,variant:`segment`,class:`ml-auto`},null,8,[`modelValue`])]),n.value===`missing`?(G(),K(`div`,qd,[(G(!0),K(U,null,la(a.value,e=>(G(),K(`div`,{key:e.name,class:`grid gap-1 px3 py2 md:grid-cols-[9rem_1fr_auto] md:items-center`},[e.docs?(G(),K(`a`,{key:0,href:e.docs,target:`_blank`,rel:`noreferrer`,class:`font-mono text-xs color-active`},M(e.name),9,Jd)):(G(),K(`span`,Yd,M(e.name),1)),J(`span`,Xd,M(e.description),1),J(`span`,Zd,M(e.suggestion),1)]))),128))])):(G(),K(`div`,Qd,[J(`pre`,$d,[J(`code`,null,M(o.value),1)]),Y(Nu,{class:`absolute right5 top5`,size:`sm`,icon:r.value?`i-ph-check-duotone`:`i-ph-copy-duotone`,onClick:s},{default:B(()=>[vs(M(r.value?`Copied`:`Copy`),1)]),_:1},8,[`icon`])]))])):bs(``,!0)}}),tf=[`src`,`alt`],nf=V({__name:`PreviewImage`,props:{src:{},alt:{},class:{}},setup(e){let t=e,n=on(!1);return xr(()=>t.src,()=>n.value=!1),(t,r)=>e.src&&!n.value?(G(),K(`img`,{key:0,src:e.src,alt:e.alt,class:j([t.$props.class,`block bg-secondary object-cover img-outline`]),onError:r[0]||=e=>n.value=!0},null,42,tf)):(G(),K(`div`,{key:1,class:j([t.$props.class,`flex items-center justify-center bg-secondary color-faint img-outline`])},[...r[1]||=[J(`span`,{class:`i-ph-image-broken-duotone text-2xl`},null,-1)]],2))}}),rf={class:`w-full max-w-125 bg-base`},af={class:`border border-t-0 border-base bg-secondary px3 py2.5`},of={class:`truncate color-muted text-xs uppercase`},sf={class:`my1 truncate text-base font-semibold`},cf={class:`m0 truncate color-muted text-sm`},lf=V({__name:`FacebookPreview`,props:{card:{}},setup(e){return(t,n)=>(G(),K(`article`,rf,[Y(nf,{src:e.card.image,alt:e.card.imageAlt,class:`aspect-1.91/1 w-full`},null,8,[`src`,`alt`]),J(`div`,af,[J(`div`,of,M(e.card.hostname),1),J(`h3`,sf,M(e.card.title||`Untitled page`),1),J(`p`,cf,M(e.card.description||`No description provided.`),1)])]))}}),uf={class:`w-full max-w-125 overflow-hidden border border-base rounded-sm bg-base shadow-sm`},df={class:`p3`},ff={class:`m0 truncate text-base font-semibold`},pf={class:`mt1 truncate color-muted text-xs`},mf=V({__name:`LinkedinPreview`,props:{card:{}},setup(e){return(t,n)=>(G(),K(`article`,uf,[Y(nf,{src:e.card.image,alt:e.card.imageAlt,class:`aspect-1.91/1 w-full`},null,8,[`src`,`alt`]),J(`div`,df,[J(`h3`,ff,M(e.card.title||`Untitled page`),1),J(`div`,pf,M(e.card.hostname),1)])]))}}),hf={class:`w-full max-w-105 border border-base rounded-4 rounded-bl-sm bg-base p3 shadow-sm`},gf=[`href`],_f={class:`mt2 grid grid-cols-[2px_1fr] gap-2`},vf={class:`min-w-0`},yf={class:`color-active text-sm font-semibold`},bf={class:`my1 text-sm font-semibold`},xf={class:`m0 color-muted text-sm`},Sf={class:`mt1 text-right color-faint font-mono text-2.5 tabular-nums`},Cf=V({__name:`TelegramPreview`,props:{card:{}},setup(e){let t=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(new Date);return(n,r)=>(G(),K(`article`,hf,[J(`a`,{href:e.card.url,target:`_blank`,rel:`noreferrer`,class:`block truncate color-active text-sm underline`},M(e.card.url),9,gf),J(`div`,_f,[r[0]||=J(`div`,{class:`rounded bg-primary op70`},null,-1),J(`div`,vf,[Y(nf,{src:e.card.image,alt:e.card.imageAlt,class:`mb2 aspect-1.91/1 w-full rounded`},null,8,[`src`,`alt`]),J(`div`,yf,M(e.card.hostname),1),J(`h3`,bf,M(e.card.title||`Untitled page`),1),J(`p`,xf,M(e.card.description||`No description provided.`),1)])]),J(`div`,Sf,M(R(t)),1)]))}}),wf={key:0,class:`w-full max-w-110 overflow-hidden border border-base rounded-4 bg-base`},Tf={class:`p3`},Ef={class:`truncate color-muted text-xs lowercase`},Df={class:`my1 truncate text-sm font-semibold`},Of={class:`m0 line-clamp-2 color-muted text-sm`},kf={key:1,class:`w-full max-w-110 flex overflow-hidden border border-base rounded-4 bg-base`},Af={class:`min-w-0 flex flex-col justify-center p3`},jf={class:`truncate color-muted text-xs lowercase`},Mf={class:`my1 truncate text-sm font-semibold`},Nf={class:`m0 line-clamp-2 color-muted text-sm`},Pf=V({__name:`TwitterPreview`,props:{card:{}},setup(e){return(t,n)=>e.card.twitterCard===`summary`?(G(),K(`article`,kf,[Y(nf,{src:e.card.image,alt:e.card.imageAlt,class:`aspect-square w-32 shrink-0`},null,8,[`src`,`alt`]),J(`div`,Af,[J(`div`,jf,M(e.card.hostname),1),J(`h3`,Mf,M(e.card.title||`Untitled page`),1),J(`p`,Nf,M(e.card.description||`No description provided.`),1)])])):(G(),K(`article`,wf,[Y(nf,{src:e.card.image,alt:e.card.imageAlt,class:`aspect-2/1 w-full`},null,8,[`src`,`alt`]),J(`div`,Tf,[J(`div`,Ef,M(e.card.hostname),1),J(`h3`,Df,M(e.card.title||`Untitled page`),1),J(`p`,Of,M(e.card.description||`No description provided.`),1)])]))}}),Ff={class:`h-full min-h-100 flex flex-col border border-base rounded-lg overflow-hidden bg-base`},If={class:`flex flex-wrap items-center gap-2 border-b border-base bg-secondary px3 py2`},Lf={class:`preview-grid flex flex-1 items-center justify-center overflow-auto p5`},Rf=V({__name:`SocialPreview`,props:{snapshot:{}},setup(e){let t=e,n=on(`twitter`),r=Z(()=>bu(t.snapshot,n.value===`twitter`)),i=[{value:`twitter`,label:`Twitter`},{value:`facebook`,label:`Facebook`},{value:`linkedin`,label:`LinkedIn`},{value:`telegram`,label:`Telegram`}];return(e,t)=>(G(),K(`section`,Ff,[J(`header`,If,[t[1]||=J(`span`,{class:`i-ph-share-network-duotone color-active`},null,-1),t[2]||=J(`h2`,{class:`m0 text-sm font-semibold`},` Social preview `,-1),Y(Ud,{modelValue:n.value,"onUpdate:modelValue":t[0]||=e=>n.value=e,tabs:i,variant:`segment`,class:`ml-auto`},null,8,[`modelValue`])]),J(`div`,Lf,[n.value===`twitter`?(G(),q(Pf,{key:0,card:r.value},null,8,[`card`])):n.value===`facebook`?(G(),q(lf,{key:1,card:r.value},null,8,[`card`])):n.value===`linkedin`?(G(),q(mf,{key:2,card:r.value},null,8,[`card`])):(G(),q(Cf,{key:3,card:r.value},null,8,[`card`]))])]))}}),zf={key:0,class:`flex-1 min-w-0`},Bf={key:1,class:`flex gap-1 items-center`},Vf=V({__name:`LayoutToolbar`,props:{sticky:{type:Boolean,default:!0},glass:{type:Boolean,default:!0}},setup(e){return(t,n)=>(G(),K(`div`,{class:j([`px-3 py-2 border-b border-base flex gap-3 items-center`,[e.sticky?`sticky top-0 z-nav`:``,e.glass?`bg-glass`:`bg-base`]])},[da(t.$slots,`start`,{},()=>[da(t.$slots,`default`)]),t.$slots.search?(G(),K(`div`,zf,[da(t.$slots,`search`)])):bs(``,!0),t.$slots.end?(G(),K(`div`,Bf,[da(t.$slots,`end`)])):bs(``,!0)],2))}}),Hf={class:`flex items-center gap-1.5 shrink-0 font-semibold text-sm select-none`},Uf={key:0,class:`rounded bg-secondary px1.5 py0.5 color-muted text-2.5 font-normal`},Wf={class:`min-w-0 flex flex-1 items-center gap-2 border border-base rounded px3 py1.5 focus-within:border-active`},Gf=[`disabled`],Kf=V({__name:`ViewerToolbar`,props:ja({loading:{type:Boolean},isStatic:{type:Boolean}},{target:{required:!0},targetModifiers:{}}),emits:ja([`inspect`],[`update:target`]),setup(e,{emit:t}){let n=t,r=$a(e,`target`);return(t,i)=>(G(),q(Vf,{glass:!1,class:`h-nav`},{search:B(()=>[J(`form`,{class:`mx-auto w-full max-w-3xl flex items-center gap-2`,onSubmit:i[1]||=eu(e=>n(`inspect`),[`prevent`])},[J(`label`,Wf,[i[4]||=J(`span`,{class:`i-ph-globe-hemisphere-west-duotone color-muted shrink-0`},null,-1),dr(J(`input`,{"onUpdate:modelValue":i[0]||=e=>r.value=e,class:`min-w-0 flex-1 bg-transparent color-base font-mono text-xs outline-none`,inputmode:`url`,placeholder:`http://localhost:3000`,spellcheck:`false`,"aria-label":`Page URL`,disabled:e.isStatic},null,8,Gf),[[zl,r.value]])]),Y(Nu,{variant:`primary`,loading:e.loading,disabled:e.isStatic,icon:`i-ph-magnifying-glass-duotone`,type:`submit`},{default:B(()=>[...i[5]||=[vs(` Inspect `,-1)]]),_:1},8,[`loading`,`disabled`])],32)]),default:B(()=>[J(`div`,Hf,[i[2]||=J(`span`,{class:`i-ph-image-square-duotone text-base color-active`},null,-1),i[3]||=J(`span`,null,`Open Graph`,-1),e.isStatic?(G(),K(`span`,Uf,`static`)):bs(``,!0)])]),_:1}))}}),Q={bus:{agentManifestChanged:`agent:manifest:changed`,agentToolRegistered:`agent:tool:registered`,agentToolUnregistered:`agent:tool:unregistered`,agentResourceRegistered:`agent:resource:registered`,agentResourceUnregistered:`agent:resource:unregistered`},client:{isTrustedUpdated:`rpc:is-trusted:updated`,error:`rpc:error`,connectionStatus:`connection:status`,connectionError:`connection:error`},broadcast:{authRevoked:`devframe:auth:revoked`,clientStateUpdated:`devframe:rpc:client-state:updated`,clientStatePatch:`devframe:rpc:client-state:patch`,streamingChunk:`devframe:streaming:chunk`,streamingEnd:`devframe:streaming:end`,streamingUploadCancel:`devframe:streaming:upload-cancel`},inPageChannel:{panelStateUpdated:`devframe:in-page:panel-state:updated`,panelStatePatch:`devframe:in-page:panel-state:patch`},postMessage:{remoteAssetsError:`devframe:remote-assets-error`,inPageChannel:`devframe:in-page-channel`}},qf=`__connection.json`,Jf=`__DEVFRAME_CONNECTION__`,Yf=`x-birpc-session`,Xf=`__rpc-dump/index.json`,Zf=`devframe:services`,Qf=`devframe_otp`,$f=`devframe_auth_token`;Q.postMessage.remoteAssetsError;function ep(e){return Ku(e)}var tp=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>ep(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}};function np(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}var rp={blue:np(34,39),cyan:np(36,39),gray:np(90,39),green:np(32,39),red:np(31,39),yellow:np(33,39),bold:np(1,22),dim:np(2,22),reset:np(0,0),underline:np(4,24)};function ip(e,...t){return typeof e==`function`?e(...t):e}var ap=Error.captureStackTrace,op=class e extends Error{name;code;docs;fix;sources;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.code=this.name=t.code,this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,ap?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,stack:this.stack}}};function sp(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function cp(e){let t=e.reporters??[],n={},{docsBase:r}=e;for(let i of Object.keys(e.codes)){let a=e.codes[i],o=a.docs===!1?void 0:a.docs||sp(r,i),s=(e={},n={})=>{let r=new op({code:i,why:ip(a.why,e),fix:ip(a.fix,e),docs:o,cause:e.cause,sources:e.sources},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function lp(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
8
8
  `)}}var up=lp(rp);function dp(e,{method:t=`warn`}={}){console[t](up(e))}function fp(e){return cp({...e,reporters:[dp,...e.reporters??[]]})}var pp=fp({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is not \`true\`; MCP requires JSON-serializable data.`,fix:"Set `jsonSerializable: true` if the payload is JSON-safe, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});async function mp(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function hp(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function gp(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=await mp(i,n[r]);if(a.issues)throw pp.DF0043({name:e,index:r,issues:hp(a.issues)})}return r}async function _p(e,t,n){if(!t)return n;let r=await mp(t,n);if(r.issues)throw pp.DF0044({name:e,issues:hp(r.issues)});return n}async function vp(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function yp(e,t){let n=e.handler;if(!n){let r=await vp(e,t);if(!r.handler)throw pp.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await gp(e.name,r,t),o=await a(...n);return await _p(e.name,i,o)}}var bp=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return yp(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw pp.DF0021({name:e.name});xp(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw pp.DF0022({name:e.name});xp(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await yp(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw pp.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function xp(e){if(e.agent&&e.jsonSerializable!==!0)throw pp.DF0019({name:e.name})}function Sp(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw wp(t,`undefined`,r,e);return n}return i!==null&&Cp(i,r,e,t),n})}function Cp(e,t,n,r){if(typeof e==`bigint`)throw wp(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw wp(r,`Map`,t,n);if(e instanceof Set)throw wp(r,`Set`,t,n);if(e instanceof Date)throw wp(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw wp(r,e.constructor?.name??`class instance`,t,n)}function wp(e,t,n,r){let i=Tp(n,r);return pp.DF0020({name:e||`<anonymous>`,type:t,path:i})}function Tp(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}function Ep(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}String.fromCharCode;var Dp=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Op=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,kp=/^([/\\]\s*){2,}[^/\\]/,Ap=/\/$|\/\?|\/#/,jp=/^\.?\//;function Mp(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?Dp.test(e):Op.test(e)||(t.acceptRelative?kp.test(e):!1)}function Np(e=``,t){return t?Ap.test(e):e.endsWith(`/`)}function Pp(e=``,t){if(!t)return(Np(e)?e.slice(0,-1):e)||`/`;if(!Np(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function Fp(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(Np(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function Ip(e,t){if(Lp(t)||Mp(e))return e;let n=Pp(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return zp(n,e)}function Lp(e){return!e||e===`/`}function Rp(e){return e&&e!==`/`}function zp(e,...t){let n=e||``;for(let e of t.filter(e=>Rp(e)))if(n){let t=e.replace(jp,``);n=Fp(n)+t}else n=e;return n}function Bp(e,t){let n=e.match(Op);return n||=e.match(/^\/{2,}/),n?t+e.slice(n[0].length):t+e}var Vp=`__DEVFRAME_CONNECTION_META__`,Hp=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Up(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Wp(){return Up(Jf)}function Gp(){return Up(Vp)}function Kp(e){if(e)return e;try{let e=localStorage.getItem(Hp);if(e)return e}catch{}return Up(Hp)}function qp(e){globalThis[Jf]=e,globalThis[Vp]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Jp(e.authToken)}function Jp(e){try{localStorage.setItem(Hp,e)}catch{}globalThis[Hp]=e;let t=Wp();t&&(globalThis[Jf]={...t,authToken:e})}function Yp(e){let t=Ip(qf,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Xp(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Zp(){let e=Wp();if(e)return Xp(e,Kp()??e.authToken??e.connectionMeta.authToken);let t=Gp();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??Yp(`./`),authToken:Kp(t.authToken)}}async function Qp(e={}){if(e.connection){let t=Xp(e.connection,Kp(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return qp(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:Yp(t[0]??`./`),authToken:Kp(e.authToken??e.connectionMeta.authToken)};return qp(n),n}let n=Zp();if(n){let t=Xp(n,Kp(e.authToken??n.authToken??n.connectionMeta.authToken));return qp(t),t}let r=[];for(let n of t){let t=Ip(qf,n),i=Yp(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:Kp(e.authToken??r.authToken)};return qp(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var $p=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function em(e=Qf){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function tm(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function nm(e=Qf){let t=em(e);return t&&tm(e),t}async function rm(e,t={}){let n=nm(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function im(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(Zf,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}var am=Symbol.for(`immer-nothing`),om=Symbol.for(`immer-draftable`),$=Symbol.for(`immer-state`);function sm(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var cm=Object,lm=cm.getPrototypeOf,um=`constructor`,dm=`prototype`,fm=`configurable`,pm=`enumerable`,mm=`writable`,hm=`value`,gm=e=>!!e&&!!e[$];function _m(e){return e?bm(e)||Dm(e)||!!e[om]||!!e[um]?.[om]||Om(e)||km(e):!1}var vm=cm[dm][um].toString(),ym=new WeakMap;function bm(e){if(!e||!Am(e))return!1;let t=lm(e);if(t===null||t===cm[dm])return!0;let n=cm.hasOwnProperty.call(t,um)&&t[um];if(n===Object)return!0;if(!jm(n))return!1;let r=ym.get(n);return r===void 0&&(r=Function.toString.call(n),ym.set(n,r)),r===vm}function xm(e,t,n=!0){Sm(e)===0?(n?Reflect.ownKeys(e):cm.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Sm(e){let t=e[$];return t?t.type_:Dm(e)?1:Om(e)?2:km(e)?3:0}var Cm=(e,t,n=Sm(e))=>n===2?e.has(t):cm[dm].hasOwnProperty.call(e,t),wm=(e,t,n=Sm(e))=>n===2?e.get(t):e[t],Tm=(e,t,n,r=Sm(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Em(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Dm=Array.isArray,Om=e=>e instanceof Map,km=e=>e instanceof Set,Am=e=>typeof e==`object`,jm=e=>typeof e==`function`,Mm=e=>typeof e==`boolean`;function Nm(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Pm=e=>Am(e)?e?.[$]:null,Fm=e=>e.copy_||e.base_,Im=e=>e.modified_?e.copy_:e.base_;function Lm(e,t){if(Om(e))return new Map(e);if(km(e))return new Set(e);if(Dm(e))return Array[dm].slice.call(e);let n=bm(e);if(t===!0||t===`class_only`&&!n){let t=cm.getOwnPropertyDescriptors(e);delete t[$];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[mm]===!1&&(a[mm]=!0,a[fm]=!0),(a.get||a.set)&&(t[i]={[fm]:!0,[mm]:!0,[pm]:a[pm],[hm]:e[i]})}return cm.create(lm(e),t)}{let t=lm(e);if(t!==null&&n)return{...e};let r=cm.create(t);return cm.assign(r,e)}}function Rm(e,t=!1){return Vm(e)||gm(e)||!_m(e)?e:(Sm(e)>1&&cm.defineProperties(e,{set:Bm,add:Bm,clear:Bm,delete:Bm}),cm.freeze(e),t&&xm(e,(e,t)=>{Rm(t,!0)},!1),e)}function zm(){sm(2)}var Bm={[hm]:zm};function Vm(e){return e===null||!Am(e)||cm.isFrozen(e)}var Hm=`MapSet`,Um=`Patches`,Wm=`ArrayMethods`,Gm={};function Km(e){let t=Gm[e];return t||sm(0,e),t}var qm=e=>!!Gm[e];function Jm(e,t){Gm[e]||(Gm[e]=t)}var Ym,Xm=()=>Ym,Zm=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:qm(Hm)?Km(Hm):void 0,arrayMethodsPlugin_:qm(Wm)?Km(Wm):void 0});function Qm(e,t){t&&(e.patchPlugin_=Km(Um),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function $m(e){eh(e),e.drafts_.forEach(nh),e.drafts_=null}function eh(e){e===Ym&&(Ym=e.parent_)}var th=e=>Ym=Zm(Ym,e);function nh(e){let t=e[$];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function rh(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[$].modified_&&($m(t),sm(4)),_m(e)&&(e=ih(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[$].base_,e,t)}else e=ih(t,n);return ah(t,e,!0),$m(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===am?void 0:e}function ih(e,t){if(Vm(t))return t;let n=t[$];if(!n)return ph(t,e.handledSet_,e);if(!sh(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);dh(n,e)}return n.copy_}function ah(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Rm(t,n)}function oh(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var sh=(e,t)=>e.scope_===t,ch=[];function lh(e,t,n,r){let i=Fm(e),a=e.type_;if(r!==void 0&&wm(i,r,a)===t){Tm(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;xm(i,(e,n)=>{if(gm(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??ch;for(let e of o)Tm(i,e,n,a)}function uh(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!sh(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Im(i);lh(e,i.draft_??i,a,n),dh(i,r)})}function dh(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}oh(e)}}function fh(e,t,n){let{scope_:r}=e;if(gm(n)){let i=n[$];sh(i,r)&&i.callbacks_.push(function(){Sh(e),lh(e,n,Im(i),t)})}else _m(n)&&e.callbacks_.push(function(){let i=Fm(e);e.type_===3?i.has(n)&&ph(n,r.handledSet_,r):wm(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ph(wm(e.copy_,t,e.type_),r.handledSet_,r)})}function ph(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||gm(e)||t.has(e)||!_m(e)||Vm(e)?e:(t.add(e),xm(e,(r,i)=>{if(gm(i)){let t=i[$];sh(t,n)&&(Tm(e,r,Im(t),e.type_),oh(t))}else _m(i)&&ph(i,t,n)}),e)}function mh(e,t){let n=Dm(e),r={type_:+!!n,scope_:t?t.scope_:Xm(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=hh;n&&(i=[r],a=gh);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var hh={get(e,t){if(t===$)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Fm(e);if(!Cm(i,t,e.type_))return yh(e,i,t);let a=i[t];if(e.finalized_||!_m(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Nm(t))return a;if(a===_h(e.base_,t)||vh(e,t,a)){Sh(e);let n=e.type_===1?+t:t,r=wh(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in Fm(e)},ownKeys(e){return Reflect.ownKeys(Fm(e))},set(e,t,n){let r=bh(Fm(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=_h(Fm(e),t),i=r?.[$];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Em(n,r)&&(n!==void 0||Cm(e.base_,t,e.type_)))return!0;Sh(e),xh(e)}return e.copy_[t]===n&&(n!==void 0||Cm(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),fh(e,t,n),!0)},deleteProperty(e,t){return Sh(e),_h(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),xh(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Fm(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[mm]:!0,[fm]:e.type_!==1||t!==`length`,[pm]:r[pm],[hm]:n[t]}},defineProperty(){sm(11)},getPrototypeOf(e){return lm(e.base_)},setPrototypeOf(){sm(12)}},gh={};for(let e in hh){let t=hh[e];gh[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}gh.deleteProperty=function(e,t){return gh.set.call(this,e,t,void 0)},gh.set=function(e,t,n){return hh.set.call(this,e[0],t,n,e[0])};function _h(e,t){let n=e[$];return(n?Fm(n):e)[t]}function vh(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!_m(n)||n[$]?!1:e.baseRefs_.has(n)}function yh(e,t,n){let r=bh(t,n);return r?hm in r?r[hm]:r.get?.call(e.draft_):void 0}function bh(e,t){if(!(t in e))return;let n=lm(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=lm(n)}}function xh(e){e.modified_||(e.modified_=!0,e.parent_&&xh(e.parent_))}function Sh(e){e.copy_||=(e.assigned_=new Map,Lm(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Ch=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(jm(e)&&!jm(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}jm(t)||sm(6),n!==void 0&&!jm(n)&&sm(7);let r;if(_m(e)){let i=th(this),a=wh(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?$m(i):eh(i)}return Qm(i,n),rh(r,i)}if(!e||!Am(e)){if(r=t(e),r===void 0&&(r=e),r===am&&(r=void 0),this.autoFreeze_&&Rm(r,!0),n){let t=[],i=[];Km(Um).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}sm(1,e)},this.produceWithPatches=(e,t)=>{if(jm(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Mm(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Mm(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Mm(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){_m(e)||sm(8),gm(e)&&(e=Th(e));let t=th(this),n=wh(t,e,void 0);return n[$].isManual_=!0,eh(t),n}finishDraft(e,t){let n=e&&e[$];(!n||!n.isManual_)&&sm(9);let{scope_:r}=n;return Qm(r,t),rh(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Km(Um).applyPatches_;return gm(e)?r(e,t):this.produce(e,e=>r(e,t))}};function wh(e,t,n,r){let[i,a]=Om(t)?Km(Hm).proxyMap_(t,n):km(t)?Km(Hm).proxySet_(t,n):mh(t,n);return(n?.scope_??Xm()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?uh(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Th(e){return gm(e)||sm(10,e),Eh(e)}function Eh(e){if(!_m(e)||Vm(e))return e;let t=e[$],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Lm(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Lm(e,!0);return xm(n,(e,t)=>{Tm(n,e,Eh(t))},r),t&&(t.finalized_=!1),n}function Dh(){function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Pm(wm(e,n.key_)),i=wm(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||Cm(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=wm(n,r),!Am(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[$];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;xm(e.assigned_,(e,l)=>{let u=wm(o,e,c),f=wm(s,e,c),p=l?Cm(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===am?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=Sm(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===um)&&sm(19),jm(o)&&n===dm&&sm(19),o=wm(o,n),(o===null||!Am(o))&&sm(18,i.join(`/`))}let s=Sm(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:sm(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:sm(17,a)}}),e}function u(e){if(!_m(e))return e;if(Dm(e))return e.map(u);if(Om(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(km(e))return new Set(Array.from(e).map(u));let t=Object.create(lm(e));for(let n in e)t[n]=u(e[n]);return Cm(e,om)&&(t[om]=e[om]),t}function d(e){return gm(e)?u(e):e}Jm(Um,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var Oh=new Ch,kh=Oh.produce,Ah=Oh.produceWithPatches.bind(Oh),jh=Oh.applyPatches.bind(Oh),Mh=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Nh(e=21){let t=``,n=e;for(;n--;)t+=Mh[Math.random()*64|0];return t}var Ph=1e3;function Fh(e,t){if(e.add(t),e.size>Ph){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Ih(e){let{enablePatches:t=!1}=e;t&&Dh();let n=Ep(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Nh())=>{i.has(t)||(Dh(),r=jh(r,e),Fh(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Nh())=>{if(!i.has(a)){if(Fh(i,a),t){let[t,i]=Ah(r,e);r=t,n.emit(`updated`,r,i,a)}else r=kh(r,e),n.emit(`updated`,r,void 0,a)}},syncIds:i}}function Lh(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:Q.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.mutate(()=>o(e,n),r)}}),e.client.register({name:Q.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=Ih({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on(Q.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Rh=typeof self==`object`?self:globalThis,zh=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),Bh=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function Vh(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=zh.has(e)?Rh[e]:void 0;return n(new(r??Rh.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&Bh.has(a))return n(new Rh[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function Hh(e){return Vh(new Map,e)(0)}var Uh=``,{toString:Wh}={},{keys:Gh}=Object;function Kh(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=Wh.call(e).slice(8,-1);switch(n){case`Array`:return[1,Uh];case`Object`:return[2,Uh];case`Date`:return[3,Uh];case`RegExp`:return[4,Uh];case`Map`:return[5,Uh];case`Set`:return[6,Uh];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function qh([e,t]){return e===0&&(t===`function`||t===`symbol`)}function Jh(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=Kh(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Gh(r))(e||!qh(Kh(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(qh(Kh(n))||qh(Kh(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!qh(Kh(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function Yh(e,t={}){let n=[];return Jh(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:Xh,stringify:Zh}=JSON,Qh={json:!0,lossy:!0};function $h(e){return Hh(Xh(e))}function eg(e){return Zh(Yh(e,Qh))}function tg(e){return Hh(e)}function ng(e){return eg(e)}function rg(e){return $h(e)}var ig=new Map;function ag(e=ig){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?Sp(n,r??``):`s:${ng(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?rg(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function og(){}function sg(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function cg(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function lg(e){let{onConnected:t=og,onError:n=og,onDisconnected:r=og,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${$f}=${encodeURIComponent(e.authToken)}`);let s=ag(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function v(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=sg(r);if(!e)break;r=e.rest;let{event:t,data:n}=cg(e.frame);n.length>0&&_(t,n.join(`
9
- `))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[Yf]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function ug(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var dg=Math.random.bind(Math),fg=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function pg(e=21){let t=``,n=e;for(;n--;)t+=fg[dg()*64|0];return t}var mg=6e4,hg=e=>e,gg=hg,{clearTimeout:_g,setTimeout:vg}=globalThis;function yg(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=hg,deserialize:s=gg,resolver:c,bind:l=`rpc`,timeout:u=mg,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=ug(),_=pg();s.i=_;let v;async function y(n=s){return u>=0&&(v=vg(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{_g(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(_g(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function bg(e,t){let{channel:n,rpcOptions:r={}}=t;return yg(e,{...n,timeout:-1,...r,proxify:!1})}function xg(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Sg(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=xg();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(Q.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new $p(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new $p(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(Q.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new $p(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(Q.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let v=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(Q.client.connectionError,e),m(new $p(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new $p(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),y=bg(a.functions,{channel:v,rpcOptions:o});a.register({name:Q.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new $p(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(Q.client.connectionError,e),m(e),i.emit(Q.client.isTrustedUpdated,!1)}});let b=n;async function x(e){b=e;let t=await y.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new $p(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(Q.client.connectionError,e)}return i.emit(Q.client.isTrustedUpdated,c),t.isTrusted}async function S(e){let t=(await y.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(b=t,c=!0,d.resolve(!0),f(`connected`),i.emit(Q.client.isTrustedUpdated,!0)),t}async function C(){return c?!0:x(b??``)}async function w(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t=()=>{};return await Promise.race([d.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),c}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:C,requestTrustWithToken:x,requestTrustWithCode:S,ensureTrusted:w,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Q.client.error,n,t),Promise.reject(n)):g(y.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(Q.client.error,t,String(e[0]));return}return y.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Q.client.error,n,t),Promise.reject(n)):g(y.$callOptional(...e),t)},close:()=>{v.close()}}}function Cg(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function wg(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Cg(n.sse,r??`./`,location);return Sg({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>lg({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Tg(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Eg(r)?Tg(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Eg(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Dg(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function Og(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function kg(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function Ag(e){if(e.error)throw Tg(e.error);return e.output}function jg(e){return e.some(e=>e!=null)}function Mg(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function Ng(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?tg(e):e}function a(e,t){return i(Mg(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return kg(r)?Ag(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Dg(r)){if(jg(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(Og(r)){let e=ep(n),i=r.records[e];if(i)return Ag(await s(i,r.serialization));if(r.fallback)return Ag(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!jg(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Pg(e){let t=Ng(await e.fetchJsonFromBases(Xf),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var Fg=256,Ig=class extends Error{name=`StreamClosedError`};function Lg(e={}){let t=e.id??Nh(),n=Math.max(0,e.replayWindow??0),r=Ep(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new Ig(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=zg(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function Rg(e={}){let t=e.id??Nh(),n=Math.max(1,e.highWaterMark??Fg),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function zg(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var Bg=``;function Vg(e,t){return`${e}${Bg}${t}`}function Hg(e){let t=new Map,n=new Map;e.client.register({name:Q.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Vg(e,n))?._push(r,i)}}),e.client.register({name:Q.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Vg(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:Q.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Vg(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(Q.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(Bg);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=Vg(n,r),o=t.get(a);if(o)return o;let s=Rg({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(Q.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=Vg(t,r),a=n.get(i);if(a)return a;let o=Lg({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function Ug(){}var Wg=new Map;function Gg(e){let t=e.url;e.authToken&&(t=`${t}?${$f}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Ug,onError:i=Ug,onDisconnected:a=Ug,definitions:o=Wg}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=ag(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function Kg(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Bp(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function qg(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Kg(n.websocket,r??`./`,location);return Sg({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Gg({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function Jg(e){return e.includes(`:`)}function Yg(e,t){return Jg(t)?t:`${e}:${t}`}function Xg(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return{async get(e){return(await a()).value()[e]},async set(e,t){(await a()).mutate(n=>{n[e]=t})},async delete(e){(await a()).mutate(t=>{delete t[e]})},async all(){return(await a()).value()},async onChange(e){return(await a()).on(`updated`,t=>e(t))}}}function Zg(e,t){return{global:Xg(e,t,`global`),project:Xg(e,t,`project`)}}function Qg(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Jg(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(Yg(t,n),...r)),callEvent:((n,...r)=>e.callEvent(Yg(t,n),...r)),callOptional:((n,...r)=>e.callOptional(Yg(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(Yg(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(Yg(t,n),r,i),upload:(n,r)=>e.streaming.upload(Yg(t,n),r)}},settings:Zg(e,t),scope:e.scope}}function $g(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function e_(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Ep(),a=Array.isArray(t)?t:[t],o=await Qp(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new tp({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new bp(f);async function m(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ip(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let h={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},g=$g(e.transport??`auto`,s),_=g===`static`?await Pg({fetchJsonFromBases:m}):g===`sse`?wg({...h,sseOptions:e.sseOptions}):qg({...h,wsOptions:e.wsOptions}),v;try{v=new BroadcastChannel(`devframe-auth`)}catch{}let y,b=!1;function x(e){return((...t)=>b||!y?e(...t):y.then(()=>e(...t)))}let S={events:i,get isTrusted(){return _.isTrusted},get status(){return _.status},get connectionError(){return _.connectionError},get transport(){return _.transport??g},get connection(){return o},connectionMeta:s,ensureTrusted:_.ensureTrusted,requestTrust:_.requestTrust,requestTrustWithToken:async e=>(Jp(e),o={...o,authToken:e},_.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await _.requestTrustWithCode(e);if(!t)return!1;Jp(t),o={...o,authToken:t};try{v?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:x(_.call),callEvent:x(_.callEvent),callOptional:x(_.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:()=>_.close?.()};S.sharedState=Lh(S),S.streaming=Hg(S),S.services=im(S);let C=new Map;S.scope=(e=>{if(!e)return S;let t=C.get(e);return t||(t=Qg(S,e),C.set(e,t)),t}),f.rpc=S;function w(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ee(){if(!(e.simpleAuth===!1||!w())&&typeof globalThis.prompt==`function`)for(;!S.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await S.requestTrustWithCode(t))return}}async function T(){let t=await _.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await rm(S,{param:n}):!1;t||r||S.isTrusted||await ee()}return y=T().then(()=>{b=!0},()=>{b=!0}),v&&(v.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&S.requestTrustWithToken(e.data.authToken)}),S}var t_=e_;function n_(e){return t_(e)}function r_(){let e=on(null),t=on(new URLSearchParams(location.search).get(`url`)??``),n=on(null),r=on(!1),i=on(null),a=Z(()=>e.value?.connectionMeta.backend===`static`);async function o(o=t.value){if(!(a.value&&n.value)){t.value=o.trim(),r.value=!0,i.value=null;try{e.value??=await n_(),await e.value.ensureTrusted();let r=await e.value.call(`devframes:plugin:og:resolve-metadata`,{url:t.value});n.value=r,(!t.value||a.value)&&r.requestedUrl&&(t.value=r.requestedUrl);let i=new URL(location.href);t.value?i.searchParams.set(`url`,t.value):i.searchParams.delete(`url`),history.replaceState(null,``,i)}catch(e){i.value=e instanceof Error?e.message:String(e)}finally{r.value=!1}}}return{error:Yt(i),inspect:o,isStatic:a,loading:Yt(r),snapshot:Yt(n),target:t}}var i_={class:`h-100dvh flex flex-col bg-base color-base font-sans`},a_={key:0,class:`flex items-start gap-2 border-b border-base bg-red/8 px4 py2 color-red text-xs`},o_={class:`min-h-0 flex-1 overflow-auto`},s_={key:0,class:`h-full flex flex-col items-center justify-center gap-3 color-muted`},c_={key:1,class:`h-full flex flex-col items-center justify-center gap-3 px6 text-center color-muted`},l_={key:2,class:`grid min-h-full gap4 p4 xl:grid-cols-[minmax(0,1fr)_minmax(28rem,0.85fr)]`},u_={class:`min-w-0 flex flex-col gap4`},d_={class:`flex flex-wrap items-center gap-2 color-muted text-xs`},f_=[`href`,`title`],p_={class:`ml-auto font-mono tabular-nums`},m_={class:`min-w-0 xl:sticky xl:top4 xl:h-[calc(100dvh-6.5rem)]`},h_=V({__name:`app`,setup(e){let t=r_();return Ki(()=>t.inspect()),(e,n)=>(G(),K(`div`,i_,[Y(Kf,{target:R(t).target.value,"onUpdate:target":n[0]||=e=>R(t).target.value=e,loading:R(t).loading.value,"is-static":R(t).isStatic.value,onInspect:n[1]||=e=>R(t).inspect()},null,8,[`target`,`loading`,`is-static`]),R(t).error.value?(G(),K(`div`,a_,[n[2]||=J(`span`,{class:`i-ph-warning-octagon-duotone mt0.5 shrink-0`},null,-1),J(`span`,null,M(R(t).error.value),1)])):bs(``,!0),J(`main`,o_,[R(t).loading.value&&!R(t).snapshot.value?(G(),K(`div`,s_,[...n[3]||=[J(`span`,{class:`i-ph-circle-notch-duotone animate-spin text-3xl color-active`},null,-1),J(`span`,{class:`text-sm`},`Reading page metadata...`,-1)]])):R(t).snapshot.value?.url?(G(),K(`div`,l_,[J(`div`,u_,[J(`div`,d_,[n[5]||=J(`span`,{class:`i-ph-check-circle-duotone color-active`},null,-1),J(`a`,{href:R(t).snapshot.value.url,target:`_blank`,rel:`noreferrer`,class:`min-w-0 truncate font-mono hover:color-active`,title:R(t).snapshot.value.url},M(R(t).snapshot.value.url),9,f_),J(`span`,p_,`HTTP `+M(R(t).snapshot.value.status),1)]),Y(ju,{tags:R(t).snapshot.value.tags},null,8,[`tags`]),Y(ef,{tags:R(t).snapshot.value.tags},null,8,[`tags`])]),J(`div`,m_,[Y(Rf,{snapshot:R(t).snapshot.value},null,8,[`snapshot`])])])):(G(),K(`div`,c_,[...n[4]||=[J(`span`,{class:`i-ph-image-square-duotone text-4xl color-active op70`},null,-1),J(`div`,null,[J(`h1`,{class:`m0 color-base text-base font-semibold`},` Inspect a social card `),J(`p`,{class:`mb0 mt1 max-w-100 text-sm`},` Enter a page URL to resolve its Open Graph and Twitter metadata. `)],-1)]]))])]))}}),g_=window.matchMedia(`(prefers-color-scheme: dark)`);function __(e){document.documentElement.classList.toggle(`dark`,e),document.documentElement.classList.toggle(`light`,!e)}__(g_.matches),g_.addEventListener(`change`,e=>__(e.matches)),uu(h_).mount(`#app`);
9
+ `))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[Yf]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function ug(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var dg=Math.random.bind(Math),fg=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function pg(e=21){let t=``,n=e;for(;n--;)t+=fg[dg()*64|0];return t}var mg=6e4,hg=e=>e,gg=hg,{clearTimeout:_g,setTimeout:vg}=globalThis;function yg(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=hg,deserialize:s=gg,resolver:c,bind:l=`rpc`,timeout:u=mg,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=ug(),_=pg();s.i=_;let v;async function y(n=s){return u>=0&&(v=vg(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{_g(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(_g(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function bg(e,t){let{channel:n,rpcOptions:r={}}=t;return yg(e,{...n,timeout:-1,...r,proxify:!1})}function xg(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(Q.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new $p(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new $p(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(Q.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new $p(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(Q.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let v=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(Q.client.connectionError,e),m(new $p(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new $p(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),y=bg(a.functions,{channel:v,rpcOptions:o});a.register({name:Q.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new $p(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(Q.client.connectionError,e),m(e),i.emit(Q.client.isTrustedUpdated,!1)}});let b=n;async function x(e){b=e;let t=await y.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new $p(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(Q.client.connectionError,e)}return i.emit(Q.client.isTrustedUpdated,c),t.isTrusted}async function S(e){let t=(await y.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(b=t,c=!0,d.resolve(!0),f(`connected`),i.emit(Q.client.isTrustedUpdated,!0)),t}async function C(){return c?!0:x(b??``)}async function w(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t=()=>{};return await Promise.race([d.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),c}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:C,requestTrustWithToken:x,requestTrustWithCode:S,ensureTrusted:w,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Q.client.error,n,t),Promise.reject(n)):g(y.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(Q.client.error,t,String(e[0]));return}return y.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Q.client.error,n,t),Promise.reject(n)):g(y.$callOptional(...e),t)},close:()=>{v.close()}}}function Sg(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Cg(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Sg(n.sse,r??`./`,location);return xg({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>lg({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function wg(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Tg(r)?wg(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Tg(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Eg(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function Dg(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function Og(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function kg(e){if(e.error)throw wg(e.error);return e.output}function Ag(e){return e.some(e=>e!=null)}function jg(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function Mg(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?tg(e):e}function a(e,t){return i(jg(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return Og(r)?kg(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Eg(r)){if(Ag(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(Dg(r)){let e=ep(n),i=r.records[e];if(i)return kg(await s(i,r.serialization));if(r.fallback)return kg(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!Ag(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Ng(e){let t=Mg(await e.fetchJsonFromBases(Xf),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var Pg=256,Fg=class extends Error{name=`StreamClosedError`};function Ig(e={}){let t=e.id??Nh(),n=Math.max(0,e.replayWindow??0),r=Ep(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new Fg(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=Rg(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function Lg(e={}){let t=e.id??Nh(),n=Math.max(1,e.highWaterMark??Pg),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function Rg(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var zg=``;function Bg(e,t){return`${e}${zg}${t}`}function Vg(e){let t=new Map,n=new Map;e.client.register({name:Q.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Bg(e,n))?._push(r,i)}}),e.client.register({name:Q.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Bg(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:Q.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Bg(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(Q.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(zg);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=Bg(n,r),o=t.get(a);if(o)return o;let s=Lg({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(Q.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=Bg(t,r),a=n.get(i);if(a)return a;let o=Ig({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function Hg(){}var Ug=new Map;function Wg(e){let t=e.url;e.authToken&&(t=`${t}?${$f}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Hg,onError:i=Hg,onDisconnected:a=Hg,definitions:o=Ug}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=ag(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function Gg(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Bp(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function Kg(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Gg(n.websocket,r??`./`,location);return xg({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Wg({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function qg(e){return e.includes(`:`)}function Jg(e,t){return qg(t)?t:`${e}:${t}`}function Yg(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function Xg(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return Yg(a)}function Zg(e,t){return{global:Xg(e,t,`global`),project:Xg(e,t,`project`)}}function Qg(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(qg(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(Jg(t,n),...r)),callEvent:((n,...r)=>e.callEvent(Jg(t,n),...r)),callOptional:((n,...r)=>e.callOptional(Jg(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(Jg(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(Jg(t,n),r,i),upload:(n,r)=>e.streaming.upload(Jg(t,n),r)}},settings:Zg(e,t),scope:e.scope}}function $g(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function e_(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Ep(),a=Array.isArray(t)?t:[t],o=await Qp(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new tp({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new bp(f);async function m(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ip(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let h={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},g=$g(e.transport??`auto`,s),_=g===`static`?await Ng({fetchJsonFromBases:m}):g===`sse`?Cg({...h,sseOptions:e.sseOptions}):Kg({...h,wsOptions:e.wsOptions}),v;try{v=new BroadcastChannel(`devframe-auth`)}catch{}let y,b=!1;function x(e){return((...t)=>b||!y?e(...t):y.then(()=>e(...t)))}let S={events:i,get isTrusted(){return _.isTrusted},get status(){return _.status},get connectionError(){return _.connectionError},get transport(){return _.transport??g},get connection(){return o},connectionMeta:s,ensureTrusted:_.ensureTrusted,requestTrust:_.requestTrust,requestTrustWithToken:async e=>(Jp(e),o={...o,authToken:e},_.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await _.requestTrustWithCode(e);if(!t)return!1;Jp(t),o={...o,authToken:t};try{v?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:x(_.call),callEvent:x(_.callEvent),callOptional:x(_.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:()=>_.close?.()};S.sharedState=Lh(S),S.streaming=Vg(S),S.services=im(S);let C=new Map;S.scope=(e=>{if(!e)return S;let t=C.get(e);return t||(t=Qg(S,e),C.set(e,t)),t}),f.rpc=S;function w(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ee(){if(!(e.simpleAuth===!1||!w())&&typeof globalThis.prompt==`function`)for(;!S.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await S.requestTrustWithCode(t))return}}async function T(){let t=await _.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await rm(S,{param:n}):!1;t||r||S.isTrusted||await ee()}return y=T().then(()=>{b=!0},()=>{b=!0}),v&&(v.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&S.requestTrustWithToken(e.data.authToken)}),S}var t_=e_;function n_(){let e=on(null),t=on(new URLSearchParams(location.search).get(`url`)??``),n=on(null),r=on(!1),i=on(null),a=Z(()=>e.value?.connectionMeta.backend===`static`);async function o(o=t.value){if(!(a.value&&n.value)){t.value=o.trim(),r.value=!0,i.value=null;try{e.value??=await t_(),await e.value.ensureTrusted();let r=await e.value.call(`devframes:plugin:og:resolve-metadata`,{url:t.value});n.value=r,(!t.value||a.value)&&r.requestedUrl&&(t.value=r.requestedUrl);let i=new URL(location.href);t.value?i.searchParams.set(`url`,t.value):i.searchParams.delete(`url`),history.replaceState(null,``,i)}catch(e){i.value=e instanceof Error?e.message:String(e)}finally{r.value=!1}}}return{error:Yt(i),inspect:o,isStatic:a,loading:Yt(r),snapshot:Yt(n),target:t}}var r_={class:`h-100dvh flex flex-col bg-base color-base font-sans`},i_={key:0,class:`flex items-start gap-2 border-b border-base bg-red/8 px4 py2 color-red text-xs`},a_={class:`min-h-0 flex-1 overflow-auto`},o_={key:0,class:`h-full flex flex-col items-center justify-center gap-3 color-muted`},s_={key:1,class:`h-full flex flex-col items-center justify-center gap-3 px6 text-center color-muted`},c_={key:2,class:`grid min-h-full gap4 p4 xl:grid-cols-[minmax(0,1fr)_minmax(28rem,0.85fr)]`},l_={class:`min-w-0 flex flex-col gap4`},u_={class:`flex flex-wrap items-center gap-2 color-muted text-xs`},d_=[`href`,`title`],f_={class:`ml-auto font-mono tabular-nums`},p_={class:`min-w-0 xl:sticky xl:top4 xl:h-[calc(100dvh-6.5rem)]`},m_=V({__name:`app`,setup(e){let t=n_();return Ki(()=>t.inspect()),(e,n)=>(G(),K(`div`,r_,[Y(Kf,{target:R(t).target.value,"onUpdate:target":n[0]||=e=>R(t).target.value=e,loading:R(t).loading.value,"is-static":R(t).isStatic.value,onInspect:n[1]||=e=>R(t).inspect()},null,8,[`target`,`loading`,`is-static`]),R(t).error.value?(G(),K(`div`,i_,[n[2]||=J(`span`,{class:`i-ph-warning-octagon-duotone mt0.5 shrink-0`},null,-1),J(`span`,null,M(R(t).error.value),1)])):bs(``,!0),J(`main`,a_,[R(t).loading.value&&!R(t).snapshot.value?(G(),K(`div`,o_,[...n[3]||=[J(`span`,{class:`i-ph-circle-notch-duotone animate-spin text-3xl color-active`},null,-1),J(`span`,{class:`text-sm`},`Reading page metadata...`,-1)]])):R(t).snapshot.value?.url?(G(),K(`div`,c_,[J(`div`,l_,[J(`div`,u_,[n[5]||=J(`span`,{class:`i-ph-check-circle-duotone color-active`},null,-1),J(`a`,{href:R(t).snapshot.value.url,target:`_blank`,rel:`noreferrer`,class:`min-w-0 truncate font-mono hover:color-active`,title:R(t).snapshot.value.url},M(R(t).snapshot.value.url),9,d_),J(`span`,f_,`HTTP `+M(R(t).snapshot.value.status),1)]),Y(ju,{tags:R(t).snapshot.value.tags},null,8,[`tags`]),Y(ef,{tags:R(t).snapshot.value.tags},null,8,[`tags`])]),J(`div`,p_,[Y(Rf,{snapshot:R(t).snapshot.value},null,8,[`snapshot`])])])):(G(),K(`div`,s_,[...n[4]||=[J(`span`,{class:`i-ph-image-square-duotone text-4xl color-active op70`},null,-1),J(`div`,null,[J(`h1`,{class:`m0 color-base text-base font-semibold`},` Inspect a social card `),J(`p`,{class:`mb0 mt1 max-w-100 text-sm`},` Enter a page URL to resolve its Open Graph and Twitter metadata. `)],-1)]]))])]))}}),h_=window.matchMedia(`(prefers-color-scheme: dark)`);function g_(e){document.documentElement.classList.toggle(`dark`,e),document.documentElement.classList.toggle(`light`,!e)}g_(h_.matches),h_.addEventListener(`change`,e=>g_(e.matches)),uu(m_).mount(`#app`);
package/dist/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width,initial-scale=1" />
6
6
  <base href="./" />
7
7
  <title>Open Graph Viewer</title>
8
- <script type="module" crossorigin src="./assets/index-CH_5A3CY.js"></script>
8
+ <script type="module" crossorigin src="./assets/index-CsGPfuM9.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="./assets/index-De7TN4wv.css">
10
10
  </head>
11
11
  <body>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@devframes/plugin-og--assets",
3
3
  "type": "module",
4
- "version": "0.9.10",
4
+ "version": "0.9.12",
5
5
  "description": "Prebuilt browser assets (SPA) for @devframes/plugin-og, served on demand through devframe's remote-assets back-proxy.",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",