ugly-app 0.1.738 → 0.1.739
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/inspect/host-bundle.js +4 -4
- package/dist/native/proxy.js +5 -5
- package/dist/native/proxyClient.d.ts.map +1 -1
- package/dist/native/proxyClient.js +17 -6
- package/dist/native/proxyClient.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/native/proxy.ts +5 -5
- package/src/native/proxyClient.ts +17 -6
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.739";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{function Pe(e){let t=e.url??"/ws",n=t.startsWith("/")?typeof window<"u"?`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}${t}`:`ws://localhost:${4321}${t}`:t,r=0;function o(){return String(++r)}let c=new Map,i=null,
|
|
2
|
-
`))!==-1;){let Te=P.slice(0,le).replace(/\r$/,"");if(P=P.slice(le+1),!Te.startsWith("data:"))continue;let Re=Te.slice(5).trimStart();if(!Re)continue;let j;try{j=JSON.parse(Re)}catch{continue}if(j.type==="__result__"){A=j.result,Ee=!0;break}if(j.type==="__error__")throw new Error(j.error??`request ${u} failed`);f(j)}}return A},getDoc(u,s){return S("request",{name:"storeGetDoc",input:{collection:u,id:s}}).then(f=>f.item)},getDocs(u,s,f){return S("request",{name:"storeGetDocs",input:{collection:u,filter:s,...f}}).then(p=>p.items)},getQuery(u,s,f){return S("request",{name:"storeGetQuery",input:{collection:u,query:s,...f}}).then(p=>p.items)},trackDoc(u,s,f){let p=o();return I.set(p,f),D.set(p,{type:"trackDoc",params:{collection:u,id:s}}),S("trackDoc",{collection:u,id:s,subId:p}).catch(w=>{console.error("[trackDoc]",w)}),()=>{I.delete(p),D.delete(p),S("unsubscribe",{subId:p}).catch(()=>{})}},trackDocs(u,s,f,p){let w=o();return I.set(w,f),p&&z.set(w,p),D.set(w,{type:"trackDocs",params:{collection:u,keys:s.keys,filter:s.filter,sort:s.sort,limit:s.limit,skip:s.skip}}),S("trackDocs",{collection:u,keys:s.keys,filter:s.filter,subId:w,sort:s.sort,limit:s.limit,skip:s.skip}).catch(R=>{console.error("[trackDocs]",R)}),()=>{I.delete(w),z.delete(w),D.delete(w),S("unsubscribe",{subId:w}).catch(()=>{})}},find(u,s,f){return S("request",{name:"storeGetDocs",input:{collection:u,filter:s,...f}}).then(p=>p.items)},trackQuery(u,s,f){let p=o();return I.set(p,f),D.set(p,{type:"trackQuery",params:{collection:u,keys:s.keys,filter:s.filter,sort:s.sort,limit:s.limit,skip:s.skip}}),S("trackQuery",{collection:u,keys:s.keys,filter:s.filter,subId:p,sort:s.sort,limit:s.limit,skip:s.skip}).catch(w=>{console.error("[trackQuery]",w)}),()=>{I.delete(p),D.delete(p),S("unsubscribe",{subId:p}).catch(()=>{})}},async uploadFile(u,s){let{uploadUrl:f,resultUrl:p}=await S("request",{name:"uploadUrl",input:{key:s,contentType:u.type}}),w=await fetch(f,{method:"PUT",body:u,headers:{"Content-Type":u.type}});if(!w.ok)throw new Error(`Upload failed: ${w.status} ${w.statusText}`);return p},emit:he,send:ke,on(u,s){let f=c.get(u);return f||(f=new Set,c.set(u,f)),f.add(s),()=>{f.delete(s),f.size===0&&c.delete(u)}},waitForConnection(u=3e4){return d?Promise.resolve():new Promise((s,f)=>{let p=setTimeout(()=>f(new Error("Connection timeout")),u);re?.then(()=>{clearTimeout(p),s()}).catch(w=>{clearTimeout(p),f(w instanceof Error?w:new Error(String(w)))})})},get connectionState(){return x},setFocused(u){Se(u)},disconnect(){wt("Disconnected"),B(),i?.close(),i=null}}}var dn=new TextEncoder;function K(e){let t=/a=fingerprint:(\S+)\s+([0-9A-Fa-f:]+)/.exec(e||"");return t?`${t[1].toLowerCase()} ${t[2].toUpperCase()}`:null}function xe(e){return e??{}}function Ce(e){let t=e.rtcFactory??(g=>new RTCPeerConnection(g)),n=new Map,r=new Set,o=[];async function c(g){let a=String(g.from??"");if(!a)return;let y=String(g.sdp??""),k=String(g.origin??"");if(e.signer&&!await e.signer.verify("client",K(y)??"",String(g.fpTag??""))){e.socket.emit("rtc:error",{to:a,reason:"fingerprint-auth-failed"});return}try{n.get(a)?.pc.close()}catch{}let l=t({iceServers:e.iceServers??[]}),h={pc:l,dc:null,origin:k};n.set(a,h),l.onicecandidate=x=>{x.candidate&&e.socket.emit("rtc:ice",{to:a,candidate:x.candidate.toJSON()})},l.ondatachannel=x=>{h.dc=x.channel,x.channel.onmessage=te=>{d(h,x.channel,te.data)}},await l.setRemoteDescription({type:"offer",sdp:y});let v=await l.createAnswer();await l.setLocalDescription(v);let E=l.localDescription?.sdp??v.sdp??"",M=e.signer?await e.signer.sign("host",K(E)??""):void 0;e.socket.emit("rtc:answer",{to:a,sdp:E,fpTag:M})}async function i(g){let a=n.get(String(g.from??""));if(a)try{await a.pc.addIceCandidate(g.candidate)}catch{}}async function d(g,a,y){let k;try{k=JSON.parse(typeof y=="string"?y:new TextDecoder().decode(y))}catch{return}if(k.t==="req"&&k.id!==void 0)try{let l=await e.onInvoke(String(k.channel),k.payload,g.origin);m(a,{t:"res",id:k.id,ok:!0,result:l})}catch(l){m(a,{t:"res",id:k.id,ok:!1,error:String(l?.message??l)})}else if(k.t==="sub"&&k.id!==void 0)r.add({dc:a,event:String(k.channel??""),id:k.id}),m(a,{t:"res",id:k.id,ok:!0,result:{snapshot:null}});else if(k.t==="unsub"&&k.id!==void 0)for(let l of[...r])l.dc===a&&l.id===k.id&&r.delete(l)}function m(g,a){try{g.readyState==="open"&&g.send(JSON.stringify(a))}catch{}}return o.push(e.socket.on("rtc:offer",g=>{c(xe(g))})),o.push(e.socket.on("rtc:ice",g=>{i(xe(g))})),{stop(){for(let g of o)try{g()}catch{}for(let g of n.values())try{g.pc.close()}catch{}n.clear(),r.clear()},broadcast(g,a){for(let y of r)y.event===g&&m(y.dc,{t:"evt",event:g,data:a})},peerCount:()=>n.size}}function Ie(e){return{sign:async(t,n)=>(await e.invoke("proxy.signFingerprint",{role:t,fingerprint:n})).tag,verify:async(t,n,r)=>(await e.invoke("proxy.verifyFingerprint",{role:t,fingerprint:n,tag:r})).ok}}var $=class{constructor(t){this.cap=t}cap;items=[];push(t){this.items.push(t),this.items.length>this.cap&&this.items.splice(0,this.items.length-this.cap)}since(t,n){let r=0,o=this.items.length;for(;r<o;){let c=r+o>>>1;n(this.items[c])<t?r=c+1:o=c}return this.items.slice(r)}all(){return this.items.slice()}clear(){this.items=[]}size(){return this.items.length}};var J=class{seq=0;byId=new Map;put(t){let n=`o${++this.seq}`;return this.byId.set(n,t),n}get(t){return this.byId.get(t)}clear(){this.byId.clear()}};function Tt(e){return typeof Node<"u"&&typeof e=="object"&&e!==null&&e instanceof Node}function H(e,t){return e.length>t?`${e.slice(0,t)}\u2026`:e}function Ne(e){return Object.getPrototypeOf(e)?.constructor?.name}function C(e,t){switch(typeof e){case"undefined":return{type:"undefined"};case"boolean":return{type:"boolean",value:e};case"bigint":return{type:"bigint",value:`${e}n`,preview:`${e}n`};case"symbol":return{type:"symbol",value:String(e),preview:String(e)};case"string":return{type:"string",value:H(e,1e3)};case"number":return Number.isFinite(e)?{type:"number",value:e}:{type:"number",value:String(e),preview:String(e)};case"function":return{type:"function",className:"Function",preview:`\u0192 ${e.name||"(anonymous)"}()`};case"object":break;default:return{type:"object",preview:String(e)}}if(e===null)return{type:"null"};let n=e;if(Tt(e))return{type:"node",className:e.nodeName??"Node",preview:xt(e),nodeId:t.nodeIdFor?.(e)};if(e instanceof Date)return{type:"date",className:"Date",preview:It(e)};if(e instanceof RegExp)return{type:"regexp",className:"RegExp",preview:String(e)};if(e instanceof Error)return{type:"error",className:e.name||"Error",preview:H(`${e.name}: ${e.message}`,100),objectId:t.registry.put(e)};if(Ct(e))return{type:"promise",className:"Promise",preview:"Promise",objectId:t.registry.put(e)};if(e instanceof Map)return{type:"map",className:"Map",size:e.size,objectId:t.registry.put(e),preview:`Map(${e.size})`,entries:Oe(e,t)};if(e instanceof Set)return{type:"set",className:"Set",size:e.size,objectId:t.registry.put(e),preview:`Set(${e.size})`,entries:Ae(e,t)};if(Array.isArray(e))return{type:"array",className:"Array",size:e.length,objectId:t.registry.put(e),preview:`Array(${e.length})`,entries:De(e,t)};let r=Object.keys(n);return{type:"object",className:Ne(n)??"Object",size:r.length,objectId:t.registry.put(n),preview:Rt(n,r),entries:de(n,r,t)}}function Me(e,t){if(e instanceof Map)return Oe(e,t,1/0).map(n=>n.value);if(e instanceof Set)return Ae(e,t,1/0).map(n=>n.value);if(Array.isArray(e))return De(e,t,1/0).map(n=>n.value);if(e instanceof Error)return de({name:e.name,message:e.message,stack:e.stack},["name","message","stack"],t,1/0).map(n=>n.value);if(typeof e=="object"&&e!==null){let n=Object.keys(e);return de(e,n,t,1/0).map(r=>r.value)}return[]}function De(e,t,n=5){let r=[];for(let o=0;o<e.length&&o<n;o++)r.push({key:String(o),value:C(e[o],t)});return r}function de(e,t,n,r=5){let o=[];for(let c=0;c<t.length&&c<r;c++){let i=t[c],d;try{d=e[i]}catch{d="(getter threw)"}o.push({key:i,value:C(d,n)})}return o}function Oe(e,t,n=5){let r=[],o=0;for(let[c,i]of e){if(o++>=n)break;r.push({key:C(c,t),value:C(i,t)})}return r}function Ae(e,t,n=5){let r=[],o=0;for(let c of e){if(o++>=n)break;r.push({value:C(c,t)})}return r}function Rt(e,t){let n=t.slice(0,5).map(o=>{let c;try{c=e[o]}catch{c="\u2026"}return`${o}: ${Pt(c)}`}),r=t.length>5?", \u2026":"";return H(`{${n.join(", ")}${r}}`,100)}function Pt(e){let t=typeof e;return t==="string"?`"${H(e,20)}"`:t==="object"&&e!==null?Array.isArray(e)?`Array(${e.length})`:Ne(e)??"Object":String(e)}function xt(e){let t=e;if(t.nodeType===1){let n=(t.nodeName??"").toLowerCase(),r=t.id?`#${t.id}`:"",o=typeof t.className=="string"&&t.className?`.${t.className.trim().split(/\s+/).join(".")}`:"";return H(`<${n}${r}${o}>`,100)}return t.nodeName??"Node"}function Ct(e){return typeof e?.then=="function"}function It(e){try{return e.toISOString()}catch{return"Invalid Date"}}var je=["log","info","warn","error","debug"];function Le(e){if(typeof console>"u")return()=>{};let t=0,n={};for(let i of je){let d=console[i];typeof d=="function"&&(n[i]=d,console[i]=(...m)=>{try{c(i,m)}catch{}d.apply(console,m)})}let r=i=>{c("error",[i.message],{stack:O(i.error?.stack),source:{url:i.filename||"",line:i.lineno||0,col:i.colno||0}})},o=i=>{let d=i.reason;c("error",[`Unhandled rejection: ${d?.message??String(i.reason)}`],{stack:O(d?.stack)})};typeof window<"u"&&(window.addEventListener("error",r),window.addEventListener("unhandledrejection",o));function c(i,d,m){let g=d.map(k=>C(k,{registry:e.registry,nodeIdFor:e.nodeIdFor})),a=m?.stack??O(new Error().stack,1),y={seq:++t,ts:e.now(),level:i,args:g,text:Nt(d),stack:a.length?a:void 0,source:m?.source??a[0]?{url:a[0].url,line:a[0].line,col:a[0].col}:void 0};e.buffer.push(y),e.onEntry?.(y)}return()=>{for(let i of je){let d=n[i];d&&(console[i]=d)}typeof window<"u"&&(window.removeEventListener("error",r),window.removeEventListener("unhandledrejection",o))}}function Nt(e){return e.map(t=>{if(typeof t=="string")return t;if(t instanceof Error)return`${t.name}: ${t.message}`;try{return JSON.stringify(t)}catch{return String(t)}}).join(" ").slice(0,2e3)}function O(e,t=0){if(!e)return[];let n=[],r=e.split(`
|
|
3
|
-
`);for(let o of r){let c=o.trim(),i=/^at\s+(.*?)\s+\((.*?):(\d+):(\d+)\)$/.exec(c)||/^at\s+(.*?):(\d+):(\d+)$/.exec(c);if(i){i.length===5?n.push({functionName:i[1],url:i[2],line:+i[3],col:+i[4]}):n.push({functionName:"(anonymous)",url:i[1],line:+i[2],col:+i[3]});continue}i=/^(.*?)@(.*?):(\d+):(\d+)$/.exec(c),i&&n.push({functionName:i[1]||"(anonymous)",url:i[2],line:+i[3],col:+i[4]})}return n.slice(t)}function Fe(e,t,n=Date.now){let r=t!=null&&t>0?t:40,o=typeof document<"u"&&document.documentElement?fe(document.documentElement,e,r,0):At();return{documentUrl:typeof location<"u"?location.href:"",capturedAt:n(),root:o}}function fe(e,t,n,r){let o={nodeId:t.idFor(e),nodeType:e.nodeType,nodeName:e.nodeName};if(e.nodeType===Node.TEXT_NODE||e.nodeType===Node.COMMENT_NODE){let a=(e.textContent??"").trim();return a&&(o.textContent=a.slice(0,200)),o}if(e.nodeType!==Node.ELEMENT_NODE)return o;let c=e;if(o.attributes=Dt(c),o.rect=Ot(c),r>=n)return o;let i=c.shadowRoot;i&&(o.shadowRoots=Array.from(i.childNodes).filter(Be).map(a=>fe(a,t,n,r+1)));let
|
|
4
|
-
`)){let r=n.indexOf(":");r>0&&(t[n.slice(0,r).trim().toLowerCase()]=n.slice(r+1).trim())}return t}function ze(e){if(e!=null)return typeof e=="string"?e.slice(0,G):typeof URLSearchParams<"u"&&e instanceof URLSearchParams?e.toString().slice(0,G):"(binary)"}async function Kt(e,t){let n=e.headers.get("content-type")||"";if(!/json|text|javascript|xml|html|csv/i.test(n)){t.responseBody={kind:"omitted"};return}try{let r=await e.clone().text();t.sizeBytes=r.length;let o=/json/i.test(n)?"json":"text";t.responseBody={kind:o,data:r.slice(0,G)}}catch{t.responseBody={kind:"omitted"}}}function Jt(e){try{if(e.responseType===""||e.responseType==="text"){let t=e.responseText||"",n=e.getResponseHeader("content-type")||"";return{kind:/json/i.test(n)?"json":"text",data:t.slice(0,G)}}}catch{}return{kind:"omitted"}}var Y=class{seq=0;byId=new Map;idOf=new WeakMap;idFor(t){let n=this.idOf.get(t);if(n)return this.byId.set(n,t),n;let r=`n${++this.seq}`;return this.idOf.set(t,r),this.byId.set(r,t),r}get(t){return this.byId.get(t)}clear(){this.byId.clear()}};function Z(e){let t=e.getAttribute?.("data-id");if(t)return`[data-id=${t}]`;let n=e.getAttribute?.("role"),r=e.tagName.toLowerCase();return e.id?`${r}#${e.id}`:n?`${r}[role=${n}]`:r}var Xe="__ugly_inspect_overlay__";function Ke(e){if(typeof document>"u")return{setEnabled:()=>{},highlight:()=>{},destroy:()=>{}};let t=!1,n=null;function r(){if(n)return n;let a=document.createElement("div");return a.id=Xe,Object.assign(a.style,{position:"fixed",pointerEvents:"none",zIndex:"2147483647",background:"rgba(64,128,255,0.28)",border:"1px solid rgba(64,128,255,0.9)",boxSizing:"border-box",top:"0",left:"0",display:"none"}),document.documentElement.appendChild(a),n=a,a}function o(a){let y=r();if(!a){y.style.display="none";return}Object.assign(y.style,{display:"block",transform:`translate(${a.x}px, ${a.y}px)`,width:`${a.w}px`,height:`${a.h}px`})}let c=a=>{let y=d(a.clientX,a.clientY);y&&o(pe(y))},i=a=>{let y=d(a.clientX,a.clientY);y&&(a.preventDefault(),a.stopPropagation(),e.setPickedNode(y),e.onPicked({nodeId:e.reg.idFor(y),selector:Z(y),rect:pe(y)}),m(!1))};function d(a,y){n&&(n.style.display="none");let k=document.elementFromPoint(a,y);return k&&k.id!==Xe?k:null}function m(a){a!==t&&(t=a,a?(window.addEventListener("pointermove",c,!0),window.addEventListener("pointerdown",i,!0)):(window.removeEventListener("pointermove",c,!0),window.removeEventListener("pointerdown",i,!0),o(null)))}function g(a){if(!a){o(null);return}let y=e.reg.get(a);y?.nodeType===1&&o(pe(y))}return{setEnabled:m,highlight:g,destroy:()=>{m(!1),n?.remove(),n=null}}}function pe(e){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,w:t.width,h:t.height}}var Ge=4;async function Ye(e,t){let n=t(),r=[];await new Promise(c=>{let i=()=>{r.push(Qt()),t()-n>=e?c():Je(i)};Je(i)});let o=t();return{startTime:n,endTime:o,durationMs:o-n,sampleCount:r.length,precise:!1,root:Gt(r)}}function Je(e){typeof setTimeout<"u"?setTimeout(e,Ge):e()}function Qt(){return O(new Error().stack,1).filter(t=>!/profile\.(js|ts)/.test(t.url)).map(t=>({url:t.url,line:t.line,col:t.col,functionName:t.functionName})).reverse()}function Gt(e){let t=0,n=Qe(t++,"(root)");for(let r of e){let o=n;o.hitCount++;for(let c of r){let i=c,d=`${i.functionName??"(anonymous)"}@${i.url}:${i.line}`,m=o.childMap.get(d);m||(m=Qe(t++,i.functionName??"(anonymous)",{url:i.url,line:i.line,col:i.col}),o.childMap.set(d,m),o.children.push(m)),m.hitCount++,o=m}}return Ze(n,e.length),et(n)}function Qe(e,t,n){return{id:e,functionName:t,source:n,selfTimeMs:0,totalTimeMs:0,hitCount:0,children:[],childMap:new Map}}function Ze(e,t){let n=0;for(let r of e.children)n+=Ze(r,t);return e.totalTimeMs=e.hitCount*Ge,e.selfTimeMs=Math.max(0,e.totalTimeMs-n),e.totalTimeMs}function et(e){return{id:e.id,functionName:e.functionName,source:e.source,selfTimeMs:e.selfTimeMs,totalTimeMs:e.totalTimeMs,hitCount:e.hitCount,children:e.children.map(t=>et(t))}}function nt(e,t,n){if(e==="cookie"){document.cookie=`${encodeURIComponent(t)}=${encodeURIComponent(n)}; path=/`;return}ee(()=>e==="session"?sessionStorage:localStorage)?.setItem(t,n)}function rt(e,t){if(e==="cookie"){document.cookie=`${encodeURIComponent(t)}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;return}ee(()=>e==="session"?sessionStorage:localStorage)?.removeItem(t)}async function ot(){return{localStorage:tt(ee(()=>localStorage)),sessionStorage:tt(ee(()=>sessionStorage)),cookies:Yt(),indexedDB:await Zt()}}function ee(e){try{return e()}catch{return null}}function tt(e){let t={};if(!e)return t;for(let n=0;n<e.length;n++){let r=e.key(n);r!=null&&(t[r]=e.getItem(r)??"")}return t}function Yt(){if(typeof document>"u"||!document.cookie)return[];let e=typeof location<"u"?location.hostname:"";return document.cookie.split("; ").filter(Boolean).map(t=>{let n=t.indexOf("="),r=n>=0?t.slice(0,n):t,o=n>=0?t.slice(n+1):"";return{name:r,value:o,domain:e,path:"/"}})}async function Zt(){if(typeof indexedDB>"u"||typeof indexedDB.databases!="function")return[];try{let e=await indexedDB.databases(),t=[];for(let n of e)n.name&&t.push({name:n.name,stores:await en(n.name)});return t}catch{return[]}}function en(e){return new Promise(t=>{try{let n=indexedDB.open(e);n.onsuccess=()=>{let r=n.result,o=Array.from(r.objectStoreNames);r.close(),t(o)},n.onerror=()=>t([])}catch{t([])}})}var tn=40;function st(e){let t={longTasks:[]},n=[];if(typeof PerformanceObserver>"u")return{read:()=>({...t,navigation:it()}),stop:()=>{}};r("largest-contentful-paint",o=>{let c=o[o.length-1];if(!c)return;let i=c.element;t.lcp={valueMs:c.startTime,element:i?{nodeId:e.nodeIdFor(i),selector:Z(i),rect:rn(i)}:void 0}}),r("paint",o=>{for(let c of o)c.name==="first-contentful-paint"&&(t.fcp=c.startTime)}),r("layout-shift",o=>{let c=t.cls??0;for(let i of o)i.hadRecentInput||(c+=i.value);t.cls=c}),r("event",o=>{let c=t.inp??0;for(let i of o){let d=i.duration;d>c&&(c=d)}t.inp=c},{durationThreshold:40}),r("longtask",o=>{for(let c of o)t.longTasks.push({ts:e.now(),durationMs:c.duration});t.longTasks.length>200&&t.longTasks.splice(0,t.longTasks.length-200)});function r(o,c,i){try{let d=new PerformanceObserver(m=>c(m.getEntries()));d.observe({type:o,buffered:!0,...i??{}}),n.push(d)}catch{}}return{read:()=>{let o=it(),{resources:c,resourceSummary:i}=nn(o?.domInteractiveMs??t.fcp);return{...t,longTasks:t.longTasks.slice(),navigation:o,ttfb:t.ttfb??o?.ttfbMs,resources:c,resourceSummary:i}},stop:()=>n.forEach(o=>o.disconnect())}}function nn(e){if(typeof performance>"u"||!performance.getEntriesByType)return{};let t=performance.getEntriesByType("resource");if(!t.length)return{};let n=0,r=0;return{resources:t.map(i=>{n+=i.transferSize||0,r+=i.duration;let d=i.requestStart>0?Math.max(0,i.requestStart-i.startTime):void 0,m=e!=null&&i.responseEnd<=e&&(i.initiatorType==="link"||i.initiatorType==="css"||i.initiatorType==="script");return{name:i.name,initiatorType:i.initiatorType||"other",startMs:i.startTime,durationMs:i.duration,blockingMs:d,transferSizeBytes:i.transferSize||void 0,decodedSizeBytes:i.decodedBodySize||void 0,fromCache:i.transferSize===0&&i.decodedBodySize>0,renderBlocking:m}}).sort((i,d)=>d.durationMs-i.durationMs).slice(0,tn),resourceSummary:{count:t.length,transferBytes:n,durationMs:r}}}function it(){if(typeof performance>"u"||!performance.getEntriesByType)return;let e=performance.getEntriesByType("navigation")[0];if(e)return{ttfbMs:e.responseStart,domContentLoadedMs:e.domContentLoadedEventEnd,loadEventMs:e.loadEventEnd,domInteractiveMs:e.domInteractive,transferSizeBytes:e.transferSize}}function rn(e){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,w:t.width,h:t.height}}var ct=1e3;function L(){return typeof performance<"u"&&performance.now?performance.timeOrigin+performance.now():Date.now()}function on(e={}){let t=new J,n=new Y,r=l=>n.idFor(l),o=new $(ct),c=new $(ct),i=null,d,m=Le({buffer:o,registry:t,nodeIdFor:r,onEntry:l=>e.onConsole?.(l),now:L}),g=We({buffer:c,onEntry:l=>e.onNetwork?.(l),now:L}),a=st({nodeIdFor:r,now:L}),y=Ke({reg:n,onPicked:l=>e.onPicked?.(l),setPickedNode:l=>i=l});return{meta(){return{url:typeof location<"u"?location.href:"",title:typeof document<"u"?document.title:"",isUglyApp:typeof window<"u"&&"__uglyInspect"in window,viewport:{w:typeof window<"u"?window.innerWidth:0,h:typeof window<"u"?window.innerHeight:0,dpr:typeof window<"u"&&window.devicePixelRatio||1}}},consoleBuffer:l=>l==null?o.all():o.all().filter(h=>h.seq>l),networkBuffer:l=>{let v=[...c.all(),...Ve()].sort((E,M)=>E.ts-M.ts);return l==null?v:v.filter(E=>E.ts>l)},evaluate:(l,h)=>He(l,{registry:t,nodeIdFor:r,now:L,getPicked:()=>i,getLast:()=>d,setLast:v=>d=v},h),expand:l=>({entries:Me(t.get(l),{registry:t,nodeIdFor:r})}),domCapture:l=>Fe(n,l,L),element:l=>$e(n,l),highlight:l=>y.highlight(l),setPicker:l=>y.setEnabled(l),vitals:()=>a.read(),profile:l=>Ye(l,L),storage:()=>ot(),storageSet:(l,h,v)=>nt(l,h,v),storageRemove:(l,h)=>rt(l,h),reload:l=>{typeof location<"u"&&location.reload()},reset:()=>{t.clear(),n.clear(),o.clear(),c.clear(),i=null,d=void 0},stop:()=>{m(),g(),a.stop(),y.destroy()}}}function at(e){if(typeof window<"u"&&window.__uglyInspectAgent)return window.__uglyInspectAgent;let t=on(e);return typeof window<"u"&&(window.__uglyInspectAgent=t),t}var sn=new Set(["inspect.screenshot","inspect.openTarget"]);function ut(e,t,n){return{id:e,url:n.url,title:n.title,viewport:n.viewport,platform:t,isUglyApp:n.isUglyApp,open:!0}}async function lt(e,t,n={}){switch(t){case"inspect.eval":return e.evaluate(String(n.expression??""),{awaitPromise:n.awaitPromise,replMode:n.replMode});case"inspect.expand":return e.expand(String(n.objectId??""));case"inspect.console.buffer":return{entries:e.consoleBuffer(n.sinceSeq)};case"inspect.network.buffer":return{entries:e.networkBuffer(n.sinceTs)};case"inspect.dom.capture":return e.domCapture(n.maxDepth);case"inspect.element":return e.element({nodeId:n.nodeId,selector:n.selector});case"inspect.dom.highlight":e.highlight(n.nodeId??null);return;case"inspect.picker.set":e.setPicker(!!n.enabled);return;case"inspect.vitals":return e.vitals();case"inspect.profile":return e.profile(Number(n.durationMs??1e3));case"inspect.storage":return e.storage();case"inspect.storage.set":e.storageSet(n.area,String(n.key??""),String(n.value??""));return;case"inspect.storage.remove":e.storageRemove(n.area,String(n.key??""));return;case"inspect.network.reload":e.reload(!!n.ignoreCache);return;case"inspect.network.setCacheDisabled":case"inspect.setThrottle":return;default:throw sn.has(t)?new Error(`inspect: ${t} is host-serviced, not an agent method`):new Error(`inspect: unknown channel ${t}`)}}var q="self";function dt(e){let t=at({onConsole:n=>e.onEvent?.(`inspect.console:${q}`,n),onNetwork:n=>e.onEvent?.(`inspect.network:${q}`,n),onPicked:n=>e.onEvent?.(`inspect.picked:${q}`,n)});return{async dispatch(n,r={}){if(n==="inspect.listTargets")return{targets:[ut(q,e.platform,t.meta())]};if(n==="inspect.screenshot"){if(!e.screenshot)throw new Error("inspect.screenshot: no native capture on this shell");return e.screenshot({...r,targetId:q})}return lt(t,n,r)},stop(){t.stop()}}}function cn(e){return async()=>{let t=await e.invoke("capture.screenshot",void 0),n=typeof window<"u"?window.innerWidth:0,r=typeof window<"u"?window.innerHeight:0,o=typeof window<"u"&&window.devicePixelRatio||1;return{base64:t,width:n,height:r,dpr:o,format:"png"}}}function ft(e){let t=e.platform??e.native?.platform??"web",n=e.signer??(e.native?Ie(e.native):void 0),r=e.screenshot??(e.native?cn(e.native):void 0),o={},c=dt({platform:t,screenshot:r,onEvent:(i,d)=>o.host?.broadcast(i,d)});return o.host=Ce({socket:e.socket,signer:n,iceServers:e.iceServers,rtcFactory:e.rtcFactory,onInvoke:(i,d)=>c.dispatch(i,d??{})}),{stop(){o.host?.stop(),c.stop()},peerCount:()=>o.host?.peerCount()??0}}var U=window,N=U.__uglyInspectBootstrap;if(N&&U.UglyNative&&!U.__uglyInspectHostInstalled){U.__uglyInspectHostInstalled=!0;let e=U.UglyNative,t=Pe({requests:{},messages:{},url:N.wsUrl,getUrlParams:()=>({token:N.token,deviceId:N.deviceId,deviceLabel:N.deviceLabel??N.platform,inspectHost:"true",isHost:"true"})});t.connect(N.token).then(()=>ft({socket:t,native:e,platform:N.platform})).catch(()=>{})}})();
|
|
1
|
+
"use strict";(()=>{function Pe(e){let t=e.url??"/ws",n=t.startsWith("/")?typeof window<"u"?`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}${t}`:`ws://localhost:${4321}${t}`:t,r=0;function o(){return String(++r)}let c=new Map,i=null,l=!1,m=!1,g=!1,a=0,y=!1,k=!1,d=e.initialFocus??!0,h=e.keepConnectedWhenUnfocused??!1,v=null,E=!1,M=0,x="connecting",te=1e3,pt=3e4,mt=5,me=1e3,ne=!1,gt=3e4,re=null,ge=null,yt=null,oe=null,_=null,ie=[],se=[],b=new Map,I=new Map,z=new Map;function ce(){re=new Promise((u,s)=>{ge=u,yt=s}),re.catch(()=>{})}ce();function W(u,s){x=u,typeof window<"u"&&window.dispatchEvent(new CustomEvent("ws-connection-state",{detail:{state:u,...s}}))}function wt(u){for(let{reject:s,timeout:f}of b.values())clearTimeout(f),s(new Error(u));b.clear(),I.clear(),z.clear()}function ae(u){for(let[s,f]of b)clearTimeout(f.timeout),f.retry?we(se,s):(b.delete(s),f.reject(new Error(u?"WebSocket disconnected (idle)":"WebSocket disconnected")))}function ye(u){i.send(JSON.stringify(u))}function we(u,s){u.length>=me&&(u.shift(),ne||(console.warn(`[socket] queue exceeded ${me} \u2014 dropping oldest message(s)`),ne=!0)),u.push(s)}function V(u){g&&l&&i?.readyState===WebSocket.OPEN?i.send(u):we(ie,u)}function ke(u,s,f=6e4,p=!0){if(typeof u=="object"&&u!==null){V(JSON.stringify(u));return}return new Promise((w,R)=>{let T=o(),P=JSON.stringify({type:u,id:T,data:s}),A=setTimeout(()=>{b.delete(T),R(new Error(`Request timeout: ${u}`))},f);b.set(T,{resolve:w,reject:R,timeout:A,serialized:P,retry:p,timeoutMs:f}),V(P)})}function he(u,s){V(JSON.stringify({type:u,data:s}))}function be(){B(),!(!d&&!h)&&(E=!1,v=setInterval(()=>{if(!(!l||!(d||h))){if(E){E=!1,kt();return}E=!0,he("ping",{})}},gt))}function B(){v&&(clearInterval(v),v=null)}function kt(){let u=i;if(M++,l=!1,m=!1,B(),u)try{u.removeEventListener("message",ve),u.close()}catch{}i=null,W("reconnecting",{attempt:a+1}),ae(!1),ce(),a++,X()}function ht(){for(let[u,s]of D)S(s.type,{...s.params,subId:u}).catch(f=>console.error("[resubscribe]",f))}let D=new Map;function bt(){for(;se.length>0&&i?.readyState===WebSocket.OPEN;){let u=se.shift(),s=b.get(u);s&&(i.send(s.serialized),s.timeoutMs!==null&&(s.timeout=setTimeout(()=>{b.delete(u),s.reject(new Error(`Timeout: retry ${u}`))},s.timeoutMs)))}}function vt(){for(;ie.length>0&&i?.readyState===WebSocket.OPEN;)i.send(ie.shift());bt(),e.buildId&&ke("buildId",{}).then(u=>{u!==e.buildId&&typeof window<"u"&&window.dispatchEvent(new CustomEvent("version-mismatch"))}).catch(()=>{}),y&&(ht(),y=!1)}function ue(u,s){typeof window<"u"&&window.dispatchEvent(new CustomEvent(u,{detail:s}))}function ve(u){E=!1;let s=JSON.parse(u.data,e.messageReviver);switch(s.type){case"pong":return;case"ready":g=!0,vt();return;case"authFailed":ue("auth-failed",{});return;case"track":s.subId&&I.get(s.subId)?.(s.data);return;case"frame":s.subId&&z.get(s.subId)?.(s.data);return;case"response":if(s.id){let f=b.get(s.id);f&&(clearTimeout(f.timeout),b.delete(s.id),f.resolve(s.data??s.result))}return;case"pushNotification":ue("push-notification-received",s.data);return;case"server-draining":ue("server-draining",s.data);return;default:{if(s.id&&s.type==="error"){let p=b.get(s.id);p&&(clearTimeout(p.timeout),b.delete(s.id),p.reject(new Error(s.error??"Unknown error")));return}if(s.id){let p=b.get(s.id);if(p){clearTimeout(p.timeout),b.delete(s.id),p.resolve(s.data??s.result);return}}e.onCustomMessage?.(s);let f=c.get(s.type);if(f)for(let p of f)p(s.data)}}}function S(u,s,f=6e4,p=!1){return new Promise((w,R)=>{let T=o(),P=JSON.stringify({id:T,type:u,payload:s}),A=f===null?null:setTimeout(()=>{b.delete(T),R(new Error(`Timeout: ${u}`))},f);b.set(T,{resolve:w,reject:R,timeout:A??setTimeout(()=>{},0),serialized:P,retry:p,timeoutMs:f}),V(P)})}function Se(u){if(u!==d)if(d=u,u)l?be():(a=0,X());else{if(h)return;B(),k=!0}}typeof document<"u"&&(d=document.visibilityState==="visible",document.addEventListener("visibilitychange",()=>{Se(document.visibilityState==="visible")}));function X(){if(m)return;m=!0,g=!1;let u=++M,s=new URL(n,typeof window<"u"?window.location.href:void 0);if(e.getUrlParams)for(let[f,p]of Object.entries(e.getUrlParams()))s.searchParams.set(f,p);i=new WebSocket(s.toString()),i.addEventListener("message",ve),i.addEventListener("open",()=>{m=!1;let f=a>0,p=k;if(l=!0,y=f||p,a=0,ne=!1,k=!1,W("connected",{wasReconnect:f,wasIdleReconnect:p}),ge?.(),d&&be(),oe){let w;_!==null&&b.has(_)?w=_:(w=o(),b.set(w,{resolve:()=>{},reject:()=>{},timeout:setTimeout(()=>b.delete(w),3e4),serialized:"",retry:!1,timeoutMs:3e4})),_=null,ye({id:w,type:"auth",payload:{token:oe}})}}),i.addEventListener("close",()=>{if(u!==M)return;if(m=!1,l=!1,B(),!d&&!h){k=!0,W("idle-disconnected"),ae(!0);return}W("reconnecting",{attempt:a+1}),ae(!1);let f=Math.min(pt,te*Math.pow(2,Math.min(a,mt)));ce(),setTimeout(()=>{a++,X()},f)}),i.addEventListener("error",()=>{})}return X(),{connect(u){oe=u;let s=o(),f=new Promise((p,w)=>{b.set(s,{resolve:R=>{let T=R;p({user:T.user,appToken:T.appToken})},reject:w,timeout:setTimeout(()=>{b.delete(s),w(new Error("Auth timeout"))},3e4),serialized:"",retry:!1,timeoutMs:3e4})});return i?.readyState===WebSocket.OPEN?ye({id:s,type:"auth",payload:{token:u}}):_=s,f},request(u,s,f){let p=f?.timeoutMs===void 0?6e4:f.timeoutMs;return S("request",{name:u,input:s},p,f?.retry??!0)},async requestStream(u,s,f,p){let w=await fetch(`/api/${u}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},credentials:"include",body:JSON.stringify({input:s}),...p?.signal?{signal:p.signal}:{}});if(!w.ok||!w.body){let F=await w.json().catch(()=>({}));if(F.error)throw new Error(F.error);return F.result}let R=w.body.getReader(),T=new TextDecoder("utf-8"),P="",A,Ee=!1;for(;!Ee;){let{value:F,done:St}=await R.read();if(St)break;P+=T.decode(F,{stream:!0});let de;for(;(de=P.indexOf(`
|
|
2
|
+
`))!==-1;){let Te=P.slice(0,de).replace(/\r$/,"");if(P=P.slice(de+1),!Te.startsWith("data:"))continue;let Re=Te.slice(5).trimStart();if(!Re)continue;let j;try{j=JSON.parse(Re)}catch{continue}if(j.type==="__result__"){A=j.result,Ee=!0;break}if(j.type==="__error__")throw new Error(j.error??`request ${u} failed`);f(j)}}return A},getDoc(u,s){return S("request",{name:"storeGetDoc",input:{collection:u,id:s}}).then(f=>f.item)},getDocs(u,s,f){return S("request",{name:"storeGetDocs",input:{collection:u,filter:s,...f}}).then(p=>p.items)},getQuery(u,s,f){return S("request",{name:"storeGetQuery",input:{collection:u,query:s,...f}}).then(p=>p.items)},trackDoc(u,s,f){let p=o();return I.set(p,f),D.set(p,{type:"trackDoc",params:{collection:u,id:s}}),S("trackDoc",{collection:u,id:s,subId:p}).catch(w=>{console.error("[trackDoc]",w)}),()=>{I.delete(p),D.delete(p),S("unsubscribe",{subId:p}).catch(()=>{})}},trackDocs(u,s,f,p){let w=o();return I.set(w,f),p&&z.set(w,p),D.set(w,{type:"trackDocs",params:{collection:u,keys:s.keys,filter:s.filter,sort:s.sort,limit:s.limit,skip:s.skip}}),S("trackDocs",{collection:u,keys:s.keys,filter:s.filter,subId:w,sort:s.sort,limit:s.limit,skip:s.skip}).catch(R=>{console.error("[trackDocs]",R)}),()=>{I.delete(w),z.delete(w),D.delete(w),S("unsubscribe",{subId:w}).catch(()=>{})}},find(u,s,f){return S("request",{name:"storeGetDocs",input:{collection:u,filter:s,...f}}).then(p=>p.items)},trackQuery(u,s,f){let p=o();return I.set(p,f),D.set(p,{type:"trackQuery",params:{collection:u,keys:s.keys,filter:s.filter,sort:s.sort,limit:s.limit,skip:s.skip}}),S("trackQuery",{collection:u,keys:s.keys,filter:s.filter,subId:p,sort:s.sort,limit:s.limit,skip:s.skip}).catch(w=>{console.error("[trackQuery]",w)}),()=>{I.delete(p),D.delete(p),S("unsubscribe",{subId:p}).catch(()=>{})}},async uploadFile(u,s){let{uploadUrl:f,resultUrl:p}=await S("request",{name:"uploadUrl",input:{key:s,contentType:u.type}}),w=await fetch(f,{method:"PUT",body:u,headers:{"Content-Type":u.type}});if(!w.ok)throw new Error(`Upload failed: ${w.status} ${w.statusText}`);return p},emit:he,send:ke,on(u,s){let f=c.get(u);return f||(f=new Set,c.set(u,f)),f.add(s),()=>{f.delete(s),f.size===0&&c.delete(u)}},waitForConnection(u=3e4){return l?Promise.resolve():new Promise((s,f)=>{let p=setTimeout(()=>f(new Error("Connection timeout")),u);re?.then(()=>{clearTimeout(p),s()}).catch(w=>{clearTimeout(p),f(w instanceof Error?w:new Error(String(w)))})})},get connectionState(){return x},setFocused(u){Se(u)},disconnect(){wt("Disconnected"),B(),i?.close(),i=null}}}var ln=new TextEncoder;function K(e){let t=/a=fingerprint:(\S+)\s+([0-9A-Fa-f:]+)/.exec(e||"");return t?`${t[1].toLowerCase()} ${t[2].toUpperCase()}`:null}function xe(e){return e??{}}function Ce(e){let t=e.rtcFactory??(g=>new RTCPeerConnection(g)),n=new Map,r=new Set,o=[];async function c(g){let a=String(g.from??"");if(!a)return;let y=String(g.sdp??""),k=String(g.origin??"");if(e.signer&&!await e.signer.verify("client",K(y)??"",String(g.fpTag??""))){e.socket.emit("rtc:error",{to:a,reason:"fingerprint-auth-failed"});return}try{n.get(a)?.pc.close()}catch{}let d=t({iceServers:e.iceServers??[]}),h={pc:d,dc:null,origin:k};n.set(a,h),d.onicecandidate=x=>{x.candidate&&e.socket.emit("rtc:ice",{to:a,candidate:x.candidate.toJSON()})},d.ondatachannel=x=>{h.dc=x.channel,x.channel.onmessage=te=>{l(h,x.channel,te.data)}},await d.setRemoteDescription({type:"offer",sdp:y});let v=await d.createAnswer();await d.setLocalDescription(v);let E=d.localDescription?.sdp??v.sdp??"",M=e.signer?await e.signer.sign("host",K(E)??""):void 0;e.socket.emit("rtc:answer",{to:a,sdp:E,fpTag:M})}async function i(g){let a=n.get(String(g.from??""));if(a)try{await a.pc.addIceCandidate(g.candidate)}catch{}}async function l(g,a,y){let k;try{k=JSON.parse(typeof y=="string"?y:new TextDecoder().decode(y))}catch{return}if(k.t==="req"&&k.id!==void 0)try{let d=await e.onInvoke(String(k.channel),k.payload,g.origin);m(a,{t:"res",id:k.id,ok:!0,result:d})}catch(d){m(a,{t:"res",id:k.id,ok:!1,error:String(d?.message??d)})}else if(k.t==="sub"&&k.id!==void 0)r.add({dc:a,event:String(k.channel??""),id:k.id}),m(a,{t:"res",id:k.id,ok:!0,result:{snapshot:null}});else if(k.t==="unsub"&&k.id!==void 0)for(let d of[...r])d.dc===a&&d.id===k.id&&r.delete(d)}function m(g,a){try{g.readyState==="open"&&g.send(JSON.stringify(a))}catch{}}return o.push(e.socket.on("rtc:offer",g=>{c(xe(g))})),o.push(e.socket.on("rtc:ice",g=>{i(xe(g))})),{stop(){for(let g of o)try{g()}catch{}for(let g of n.values())try{g.pc.close()}catch{}n.clear(),r.clear()},broadcast(g,a){for(let y of r)y.event===g&&m(y.dc,{t:"evt",event:g,data:a})},peerCount:()=>n.size}}function Ie(e){return{sign:async(t,n)=>(await e.invoke("proxy.signFingerprint",{role:t,fingerprint:n})).tag,verify:async(t,n,r)=>(await e.invoke("proxy.verifyFingerprint",{role:t,fingerprint:n,tag:r})).ok}}var $=class{constructor(t){this.cap=t}cap;items=[];push(t){this.items.push(t),this.items.length>this.cap&&this.items.splice(0,this.items.length-this.cap)}since(t,n){let r=0,o=this.items.length;for(;r<o;){let c=r+o>>>1;n(this.items[c])<t?r=c+1:o=c}return this.items.slice(r)}all(){return this.items.slice()}clear(){this.items=[]}size(){return this.items.length}};var J=class{seq=0;byId=new Map;put(t){let n=`o${++this.seq}`;return this.byId.set(n,t),n}get(t){return this.byId.get(t)}clear(){this.byId.clear()}};function Tt(e){return typeof Node<"u"&&typeof e=="object"&&e!==null&&e instanceof Node}function H(e,t){return e.length>t?`${e.slice(0,t)}\u2026`:e}function Ne(e){return Object.getPrototypeOf(e)?.constructor?.name}function C(e,t){switch(typeof e){case"undefined":return{type:"undefined"};case"boolean":return{type:"boolean",value:e};case"bigint":return{type:"bigint",value:`${e}n`,preview:`${e}n`};case"symbol":return{type:"symbol",value:String(e),preview:String(e)};case"string":return{type:"string",value:H(e,1e3)};case"number":return Number.isFinite(e)?{type:"number",value:e}:{type:"number",value:String(e),preview:String(e)};case"function":return{type:"function",className:"Function",preview:`\u0192 ${e.name||"(anonymous)"}()`};case"object":break;default:return{type:"object",preview:String(e)}}if(e===null)return{type:"null"};let n=e;if(Tt(e))return{type:"node",className:e.nodeName??"Node",preview:xt(e),nodeId:t.nodeIdFor?.(e)};if(e instanceof Date)return{type:"date",className:"Date",preview:It(e)};if(e instanceof RegExp)return{type:"regexp",className:"RegExp",preview:String(e)};if(e instanceof Error)return{type:"error",className:e.name||"Error",preview:H(`${e.name}: ${e.message}`,100),objectId:t.registry.put(e)};if(Ct(e))return{type:"promise",className:"Promise",preview:"Promise",objectId:t.registry.put(e)};if(e instanceof Map)return{type:"map",className:"Map",size:e.size,objectId:t.registry.put(e),preview:`Map(${e.size})`,entries:Oe(e,t)};if(e instanceof Set)return{type:"set",className:"Set",size:e.size,objectId:t.registry.put(e),preview:`Set(${e.size})`,entries:Ae(e,t)};if(Array.isArray(e))return{type:"array",className:"Array",size:e.length,objectId:t.registry.put(e),preview:`Array(${e.length})`,entries:De(e,t)};let r=Object.keys(n);return{type:"object",className:Ne(n)??"Object",size:r.length,objectId:t.registry.put(n),preview:Rt(n,r),entries:le(n,r,t)}}function Me(e,t){if(e instanceof Map)return Oe(e,t,1/0).map(n=>n.value);if(e instanceof Set)return Ae(e,t,1/0).map(n=>n.value);if(Array.isArray(e))return De(e,t,1/0).map(n=>n.value);if(e instanceof Error)return le({name:e.name,message:e.message,stack:e.stack},["name","message","stack"],t,1/0).map(n=>n.value);if(typeof e=="object"&&e!==null){let n=Object.keys(e);return le(e,n,t,1/0).map(r=>r.value)}return[]}function De(e,t,n=5){let r=[];for(let o=0;o<e.length&&o<n;o++)r.push({key:String(o),value:C(e[o],t)});return r}function le(e,t,n,r=5){let o=[];for(let c=0;c<t.length&&c<r;c++){let i=t[c],l;try{l=e[i]}catch{l="(getter threw)"}o.push({key:i,value:C(l,n)})}return o}function Oe(e,t,n=5){let r=[],o=0;for(let[c,i]of e){if(o++>=n)break;r.push({key:C(c,t),value:C(i,t)})}return r}function Ae(e,t,n=5){let r=[],o=0;for(let c of e){if(o++>=n)break;r.push({value:C(c,t)})}return r}function Rt(e,t){let n=t.slice(0,5).map(o=>{let c;try{c=e[o]}catch{c="\u2026"}return`${o}: ${Pt(c)}`}),r=t.length>5?", \u2026":"";return H(`{${n.join(", ")}${r}}`,100)}function Pt(e){let t=typeof e;return t==="string"?`"${H(e,20)}"`:t==="object"&&e!==null?Array.isArray(e)?`Array(${e.length})`:Ne(e)??"Object":String(e)}function xt(e){let t=e;if(t.nodeType===1){let n=(t.nodeName??"").toLowerCase(),r=t.id?`#${t.id}`:"",o=typeof t.className=="string"&&t.className?`.${t.className.trim().split(/\s+/).join(".")}`:"";return H(`<${n}${r}${o}>`,100)}return t.nodeName??"Node"}function Ct(e){return typeof e?.then=="function"}function It(e){try{return e.toISOString()}catch{return"Invalid Date"}}var je=["log","info","warn","error","debug"];function Le(e){if(typeof console>"u")return()=>{};let t=0,n={};for(let i of je){let l=console[i];typeof l=="function"&&(n[i]=l,console[i]=(...m)=>{try{c(i,m)}catch{}l.apply(console,m)})}let r=i=>{c("error",[i.message],{stack:O(i.error?.stack),source:{url:i.filename||"",line:i.lineno||0,col:i.colno||0}})},o=i=>{let l=i.reason;c("error",[`Unhandled rejection: ${l?.message??String(i.reason)}`],{stack:O(l?.stack)})};typeof window<"u"&&(window.addEventListener("error",r),window.addEventListener("unhandledrejection",o));function c(i,l,m){let g=l.map(k=>C(k,{registry:e.registry,nodeIdFor:e.nodeIdFor})),a=m?.stack??O(new Error().stack,1),y={seq:++t,ts:e.now(),level:i,args:g,text:Nt(l),stack:a.length?a:void 0,source:m?.source??a[0]?{url:a[0].url,line:a[0].line,col:a[0].col}:void 0};e.buffer.push(y),e.onEntry?.(y)}return()=>{for(let i of je){let l=n[i];l&&(console[i]=l)}typeof window<"u"&&(window.removeEventListener("error",r),window.removeEventListener("unhandledrejection",o))}}function Nt(e){return e.map(t=>{if(typeof t=="string")return t;if(t instanceof Error)return`${t.name}: ${t.message}`;try{return JSON.stringify(t)}catch{return String(t)}}).join(" ").slice(0,2e3)}function O(e,t=0){if(!e)return[];let n=[],r=e.split(`
|
|
3
|
+
`);for(let o of r){let c=o.trim(),i=/^at\s+(.*?)\s+\((.*?):(\d+):(\d+)\)$/.exec(c)||/^at\s+(.*?):(\d+):(\d+)$/.exec(c);if(i){i.length===5?n.push({functionName:i[1],url:i[2],line:+i[3],col:+i[4]}):n.push({functionName:"(anonymous)",url:i[1],line:+i[2],col:+i[3]});continue}i=/^(.*?)@(.*?):(\d+):(\d+)$/.exec(c),i&&n.push({functionName:i[1]||"(anonymous)",url:i[2],line:+i[3],col:+i[4]})}return n.slice(t)}function Fe(e,t,n=Date.now){let r=t!=null&&t>0?t:40,o=typeof document<"u"&&document.documentElement?fe(document.documentElement,e,r,0):At();return{documentUrl:typeof location<"u"?location.href:"",capturedAt:n(),root:o}}function fe(e,t,n,r){let o={nodeId:t.idFor(e),nodeType:e.nodeType,nodeName:e.nodeName};if(e.nodeType===Node.TEXT_NODE||e.nodeType===Node.COMMENT_NODE){let a=(e.textContent??"").trim();return a&&(o.textContent=a.slice(0,200)),o}if(e.nodeType!==Node.ELEMENT_NODE)return o;let c=e;if(o.attributes=Dt(c),o.rect=Ot(c),r>=n)return o;let i=c.shadowRoot;i&&(o.shadowRoots=Array.from(i.childNodes).filter(Be).map(a=>fe(a,t,n,r+1)));let l=[],m=_e(c,"before");m&&l.push(m);for(let a of Array.from(c.childNodes))Be(a)&&l.push(fe(a,t,n,r+1));let g=_e(c,"after");return g&&l.push(g),l.length&&(o.children=l),o}function _e(e,t){if(typeof getComputedStyle>"u")return;let n;try{n=getComputedStyle(e,`::${t}`).content}catch{return}if(!(!n||n==="none"||n==="normal"))return{nodeId:`${Mt(e)}::${t}`,nodeType:1,nodeName:`::${t}`,pseudo:t,textContent:n}}function Mt(e){return e.__inspectPseudoBase??e.tagName}function Be(e){return e.nodeType===Node.TEXT_NODE?!!(e.textContent??"").trim():e.nodeType===Node.ELEMENT_NODE||e.nodeType===Node.COMMENT_NODE}function Dt(e){let t={};for(let n of Array.from(e.attributes))t[n.name]=n.value;return t}function Ot(e){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,w:t.width,h:t.height}}function At(){return{nodeId:"n0",nodeType:9,nodeName:"#document"}}function $e(e,t){let n=jt(e,t);if(!n)throw new Error(`inspect.element: node not found (${t.nodeId??t.selector??"?"})`);let r=getComputedStyle(n),o=Ut(n);return{nodeId:e.idFor(n),tag:n.tagName.toLowerCase(),attributes:qt(n),computedStyles:Lt(r),matchedRules:_t(n),boxModel:Ft(n,r,o),eventListeners:$t(n),accessibility:Ht(n),rect:o}}function jt(e,t){if(t.nodeId){let n=e.get(t.nodeId);return n?.nodeType===1?n:null}return t.selector&&typeof document<"u"?document.querySelector(t.selector):null}function Lt(e){let t={};for(let n=0;n<e.length;n++){let r=e.item(n);t[r]=e.getPropertyValue(r)}return t}function _t(e){let t=[];if(typeof document>"u")return t;for(let n of Array.from(document.styleSheets)){let r;try{r=n.cssRules}catch{continue}let o=n.href??void 0;for(let c of Array.from(r)){if(!(c instanceof CSSStyleRule))continue;let i=!1;try{i=e.matches(c.selectorText)}catch{i=!1}i&&t.push({selector:c.selectorText,source:o?{url:o,line:0,col:0}:void 0,props:Bt(c.style)})}}return t}function Bt(e){let t={};for(let n=0;n<e.length;n++){let r=e.item(n);t[r]=e.getPropertyValue(r)}return t}function Ft(e,t,n){let r=(o,c)=>({top:Q(t.getPropertyValue(`${o}-top${c}`)),right:Q(t.getPropertyValue(`${o}-right${c}`)),bottom:Q(t.getPropertyValue(`${o}-bottom${c}`)),left:Q(t.getPropertyValue(`${o}-left${c}`))});return{content:n,padding:r("padding",""),border:r("border","-width"),margin:r("margin","")}}function $t(e){let n=(typeof window<"u"?window:{}).__inspectGetEventListeners;if(!n)return[];try{let r=n(e),o=[];for(let[c,i]of Object.entries(r))for(let l of i)o.push({type:c,useCapture:l.useCapture,passive:l.passive});return o}catch{return[]}}function Ht(e){let t={};for(let o of Array.from(e.attributes))o.name.startsWith("aria-")&&(t[o.name]=o.value);let n=e.getAttribute("role")??void 0,r=e.getAttribute("aria-label")??e.title??(e.textContent??"").trim().slice(0,80)??void 0;return{role:n,name:r||void 0,properties:t}}function qt(e){let t={};for(let n of Array.from(e.attributes))t[n.name]=n.value;return t}function Ut(e){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,w:t.width,h:t.height}}function Q(e){let t=parseFloat(e);return Number.isFinite(t)?t:0}async function He(e,t,n){let r=t.now();try{let o=zt(e,n?.replMode?{$0:t.getPicked(),$_:t.getLast()}:{});return n?.awaitPromise&&Wt(o)&&(o=await o),t.setLast(o),{ok:!0,value:C(o,{registry:t.registry,nodeIdFor:t.nodeIdFor}),tookMs:t.now()-r}}catch(o){let c=o;return{ok:!1,exception:{text:`${c?.name??"Error"}: ${c?.message??String(o)}`,stack:O(c?.stack)},tookMs:t.now()-r}}}function zt(e,t){let n=Object.keys(t);if(n.length===0)return(0,eval)(e);let r=new Function(...n,`return (${e});`);try{return r(...n.map(o=>t[o]))}catch(o){if(o instanceof SyntaxError)return new Function(...n,e)(...n.map(i=>t[i]));throw o}}function Wt(e){return typeof e?.then=="function"}var G=64*1024;function We(e){if(typeof window>"u")return()=>{};let t=0,n=()=>`r${++t}`,r=window.fetch?.bind(window);r&&(window.fetch=async(m,g)=>{let a=e.now(),y=(g?.method||(m instanceof Request?m.method:"GET")).toUpperCase(),k=m instanceof Request?m.url:String(m),d={id:n(),ts:a,method:y,url:k,resourceType:"fetch",requestHeaders:Ue(g?.headers??(m instanceof Request?m.headers:void 0)),requestBody:ze(g?.body),timing:{startMs:a,durationMs:0}};try{let h=await r(m,g);return d.status=h.status,d.responseHeaders=Ue(h.headers),d.timing.durationMs=e.now()-a,d.fromCache=h.fromCache,await Kt(h,d),l(d),h}catch(h){throw d.failed=!0,d.timing.durationMs=e.now()-a,d.responseBody={kind:"text",data:String(h?.message??h)},l(d),h}});let o=window.XMLHttpRequest,c=o?.prototype.open,i=o?.prototype.send;o&&c&&i&&(o.prototype.open=function(g,a,...y){return this.__inspect={method:g.toUpperCase(),url:a,start:0},c.apply(this,[g,a,...y])},o.prototype.send=function(g){let a=this.__inspect;return a&&(a.start=e.now(),this.addEventListener("loadend",()=>{let y={id:n(),ts:a.start,method:a.method,url:a.url,status:this.status,resourceType:"xhr",requestHeaders:{},responseHeaders:Xt(this.getAllResponseHeaders()),requestBody:ze(g),responseBody:Jt(this),timing:{startMs:a.start,durationMs:e.now()-a.start},failed:this.status===0};l(y)})),i.apply(this,[g])});function l(m){e.buffer.push(m),e.onEntry?.(m)}return()=>{r&&(window.fetch=r),o&&c&&(o.prototype.open=c),o&&i&&(o.prototype.send=i)}}function qe(e){return e.responseStatus||void 0}function Ve(){if(typeof performance>"u"||!performance.getEntriesByType)return[];let e=performance.timeOrigin??0,t=[],n=performance.getEntriesByType("navigation")[0];n&&t.push({id:"nav",ts:e+n.startTime,method:"GET",url:n.name||(typeof location<"u"?location.href:""),status:qe(n),resourceType:"document",requestHeaders:{},timing:{startMs:e+n.startTime,durationMs:n.duration,ttfbMs:n.responseStart-n.startTime},sizeBytes:n.transferSize||void 0});for(let r of performance.getEntriesByType("resource"))r.initiatorType==="fetch"||r.initiatorType==="xmlhttprequest"||t.push({id:`res:${Math.round(r.startTime)}:${r.name}`,ts:e+r.startTime,method:"GET",url:r.name,status:qe(r),resourceType:Vt(r.initiatorType),requestHeaders:{},timing:{startMs:e+r.startTime,durationMs:r.duration},sizeBytes:r.transferSize||r.decodedBodySize||void 0,fromCache:r.transferSize===0&&r.decodedBodySize>0});return t}function Vt(e){switch(e){case"img":case"image":return"img";case"css":case"link":return"css";case"script":return"script";case"font":return"font";default:return e||"other"}}function Ue(e){let t={};if(!e)return t;if(typeof Headers<"u"&&e instanceof Headers)e.forEach((n,r)=>t[r]=n);else if(Array.isArray(e))for(let[n,r]of e)t[n]=r;else Object.assign(t,e);return t}function Xt(e){let t={};for(let n of e.split(`\r
|
|
4
|
+
`)){let r=n.indexOf(":");r>0&&(t[n.slice(0,r).trim().toLowerCase()]=n.slice(r+1).trim())}return t}function ze(e){if(e!=null)return typeof e=="string"?e.slice(0,G):typeof URLSearchParams<"u"&&e instanceof URLSearchParams?e.toString().slice(0,G):"(binary)"}async function Kt(e,t){let n=e.headers.get("content-type")||"";if(!/json|text|javascript|xml|html|csv/i.test(n)){t.responseBody={kind:"omitted"};return}try{let r=await e.clone().text();t.sizeBytes=r.length;let o=/json/i.test(n)?"json":"text";t.responseBody={kind:o,data:r.slice(0,G)}}catch{t.responseBody={kind:"omitted"}}}function Jt(e){try{if(e.responseType===""||e.responseType==="text"){let t=e.responseText||"",n=e.getResponseHeader("content-type")||"";return{kind:/json/i.test(n)?"json":"text",data:t.slice(0,G)}}}catch{}return{kind:"omitted"}}var Y=class{seq=0;byId=new Map;idOf=new WeakMap;idFor(t){let n=this.idOf.get(t);if(n)return this.byId.set(n,t),n;let r=`n${++this.seq}`;return this.idOf.set(t,r),this.byId.set(r,t),r}get(t){return this.byId.get(t)}clear(){this.byId.clear()}};function Z(e){let t=e.getAttribute?.("data-id");if(t)return`[data-id=${t}]`;let n=e.getAttribute?.("role"),r=e.tagName.toLowerCase();return e.id?`${r}#${e.id}`:n?`${r}[role=${n}]`:r}var Xe="__ugly_inspect_overlay__";function Ke(e){if(typeof document>"u")return{setEnabled:()=>{},highlight:()=>{},destroy:()=>{}};let t=!1,n=null;function r(){if(n)return n;let a=document.createElement("div");return a.id=Xe,Object.assign(a.style,{position:"fixed",pointerEvents:"none",zIndex:"2147483647",background:"rgba(64,128,255,0.28)",border:"1px solid rgba(64,128,255,0.9)",boxSizing:"border-box",top:"0",left:"0",display:"none"}),document.documentElement.appendChild(a),n=a,a}function o(a){let y=r();if(!a){y.style.display="none";return}Object.assign(y.style,{display:"block",transform:`translate(${a.x}px, ${a.y}px)`,width:`${a.w}px`,height:`${a.h}px`})}let c=a=>{let y=l(a.clientX,a.clientY);y&&o(pe(y))},i=a=>{let y=l(a.clientX,a.clientY);y&&(a.preventDefault(),a.stopPropagation(),e.setPickedNode(y),e.onPicked({nodeId:e.reg.idFor(y),selector:Z(y),rect:pe(y)}),m(!1))};function l(a,y){n&&(n.style.display="none");let k=document.elementFromPoint(a,y);return k&&k.id!==Xe?k:null}function m(a){a!==t&&(t=a,a?(window.addEventListener("pointermove",c,!0),window.addEventListener("pointerdown",i,!0)):(window.removeEventListener("pointermove",c,!0),window.removeEventListener("pointerdown",i,!0),o(null)))}function g(a){if(!a){o(null);return}let y=e.reg.get(a);y?.nodeType===1&&o(pe(y))}return{setEnabled:m,highlight:g,destroy:()=>{m(!1),n?.remove(),n=null}}}function pe(e){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,w:t.width,h:t.height}}var Ge=4;async function Ye(e,t){let n=t(),r=[];await new Promise(c=>{let i=()=>{r.push(Qt()),t()-n>=e?c():Je(i)};Je(i)});let o=t();return{startTime:n,endTime:o,durationMs:o-n,sampleCount:r.length,precise:!1,root:Gt(r)}}function Je(e){typeof setTimeout<"u"?setTimeout(e,Ge):e()}function Qt(){return O(new Error().stack,1).filter(t=>!/profile\.(js|ts)/.test(t.url)).map(t=>({url:t.url,line:t.line,col:t.col,functionName:t.functionName})).reverse()}function Gt(e){let t=0,n=Qe(t++,"(root)");for(let r of e){let o=n;o.hitCount++;for(let c of r){let i=c,l=`${i.functionName??"(anonymous)"}@${i.url}:${i.line}`,m=o.childMap.get(l);m||(m=Qe(t++,i.functionName??"(anonymous)",{url:i.url,line:i.line,col:i.col}),o.childMap.set(l,m),o.children.push(m)),m.hitCount++,o=m}}return Ze(n,e.length),et(n)}function Qe(e,t,n){return{id:e,functionName:t,source:n,selfTimeMs:0,totalTimeMs:0,hitCount:0,children:[],childMap:new Map}}function Ze(e,t){let n=0;for(let r of e.children)n+=Ze(r,t);return e.totalTimeMs=e.hitCount*Ge,e.selfTimeMs=Math.max(0,e.totalTimeMs-n),e.totalTimeMs}function et(e){return{id:e.id,functionName:e.functionName,source:e.source,selfTimeMs:e.selfTimeMs,totalTimeMs:e.totalTimeMs,hitCount:e.hitCount,children:e.children.map(t=>et(t))}}function nt(e,t,n){if(e==="cookie"){document.cookie=`${encodeURIComponent(t)}=${encodeURIComponent(n)}; path=/`;return}ee(()=>e==="session"?sessionStorage:localStorage)?.setItem(t,n)}function rt(e,t){if(e==="cookie"){document.cookie=`${encodeURIComponent(t)}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;return}ee(()=>e==="session"?sessionStorage:localStorage)?.removeItem(t)}async function ot(){return{localStorage:tt(ee(()=>localStorage)),sessionStorage:tt(ee(()=>sessionStorage)),cookies:Yt(),indexedDB:await Zt()}}function ee(e){try{return e()}catch{return null}}function tt(e){let t={};if(!e)return t;for(let n=0;n<e.length;n++){let r=e.key(n);r!=null&&(t[r]=e.getItem(r)??"")}return t}function Yt(){if(typeof document>"u"||!document.cookie)return[];let e=typeof location<"u"?location.hostname:"";return document.cookie.split("; ").filter(Boolean).map(t=>{let n=t.indexOf("="),r=n>=0?t.slice(0,n):t,o=n>=0?t.slice(n+1):"";return{name:r,value:o,domain:e,path:"/"}})}async function Zt(){if(typeof indexedDB>"u"||typeof indexedDB.databases!="function")return[];try{let e=await indexedDB.databases(),t=[];for(let n of e)n.name&&t.push({name:n.name,stores:await en(n.name)});return t}catch{return[]}}function en(e){return new Promise(t=>{try{let n=indexedDB.open(e);n.onsuccess=()=>{let r=n.result,o=Array.from(r.objectStoreNames);r.close(),t(o)},n.onerror=()=>t([])}catch{t([])}})}var tn=40;function st(e){let t={longTasks:[]},n=[];if(typeof PerformanceObserver>"u")return{read:()=>({...t,navigation:it()}),stop:()=>{}};r("largest-contentful-paint",o=>{let c=o[o.length-1];if(!c)return;let i=c.element;t.lcp={valueMs:c.startTime,element:i?{nodeId:e.nodeIdFor(i),selector:Z(i),rect:rn(i)}:void 0}}),r("paint",o=>{for(let c of o)c.name==="first-contentful-paint"&&(t.fcp=c.startTime)}),r("layout-shift",o=>{let c=t.cls??0;for(let i of o)i.hadRecentInput||(c+=i.value);t.cls=c}),r("event",o=>{let c=t.inp??0;for(let i of o){let l=i.duration;l>c&&(c=l)}t.inp=c},{durationThreshold:40}),r("longtask",o=>{for(let c of o)t.longTasks.push({ts:e.now(),durationMs:c.duration});t.longTasks.length>200&&t.longTasks.splice(0,t.longTasks.length-200)});function r(o,c,i){try{let l=new PerformanceObserver(m=>c(m.getEntries()));l.observe({type:o,buffered:!0,...i??{}}),n.push(l)}catch{}}return{read:()=>{let o=it(),{resources:c,resourceSummary:i}=nn(o?.domInteractiveMs??t.fcp);return{...t,longTasks:t.longTasks.slice(),navigation:o,ttfb:t.ttfb??o?.ttfbMs,resources:c,resourceSummary:i}},stop:()=>n.forEach(o=>o.disconnect())}}function nn(e){if(typeof performance>"u"||!performance.getEntriesByType)return{};let t=performance.getEntriesByType("resource");if(!t.length)return{};let n=0,r=0;return{resources:t.map(i=>{n+=i.transferSize||0,r+=i.duration;let l=i.requestStart>0?Math.max(0,i.requestStart-i.startTime):void 0,m=e!=null&&i.responseEnd<=e&&(i.initiatorType==="link"||i.initiatorType==="css"||i.initiatorType==="script");return{name:i.name,initiatorType:i.initiatorType||"other",startMs:i.startTime,durationMs:i.duration,blockingMs:l,transferSizeBytes:i.transferSize||void 0,decodedSizeBytes:i.decodedBodySize||void 0,fromCache:i.transferSize===0&&i.decodedBodySize>0,renderBlocking:m}}).sort((i,l)=>l.durationMs-i.durationMs).slice(0,tn),resourceSummary:{count:t.length,transferBytes:n,durationMs:r}}}function it(){if(typeof performance>"u"||!performance.getEntriesByType)return;let e=performance.getEntriesByType("navigation")[0];if(e)return{ttfbMs:e.responseStart,domContentLoadedMs:e.domContentLoadedEventEnd,loadEventMs:e.loadEventEnd,domInteractiveMs:e.domInteractive,transferSizeBytes:e.transferSize}}function rn(e){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,w:t.width,h:t.height}}var ct=1e3;function L(){return typeof performance<"u"&&performance.now?performance.timeOrigin+performance.now():Date.now()}function on(e={}){let t=new J,n=new Y,r=d=>n.idFor(d),o=new $(ct),c=new $(ct),i=null,l,m=Le({buffer:o,registry:t,nodeIdFor:r,onEntry:d=>e.onConsole?.(d),now:L}),g=We({buffer:c,onEntry:d=>e.onNetwork?.(d),now:L}),a=st({nodeIdFor:r,now:L}),y=Ke({reg:n,onPicked:d=>e.onPicked?.(d),setPickedNode:d=>i=d});return{meta(){return{url:typeof location<"u"?location.href:"",title:typeof document<"u"?document.title:"",isUglyApp:typeof window<"u"&&"__uglyInspect"in window,viewport:{w:typeof window<"u"?window.innerWidth:0,h:typeof window<"u"?window.innerHeight:0,dpr:typeof window<"u"&&window.devicePixelRatio||1}}},consoleBuffer:d=>d==null?o.all():o.all().filter(h=>h.seq>d),networkBuffer:d=>{let v=[...c.all(),...Ve()].sort((E,M)=>E.ts-M.ts);return d==null?v:v.filter(E=>E.ts>d)},evaluate:(d,h)=>He(d,{registry:t,nodeIdFor:r,now:L,getPicked:()=>i,getLast:()=>l,setLast:v=>l=v},h),expand:d=>({entries:Me(t.get(d),{registry:t,nodeIdFor:r})}),domCapture:d=>Fe(n,d,L),element:d=>$e(n,d),highlight:d=>y.highlight(d),setPicker:d=>y.setEnabled(d),vitals:()=>a.read(),profile:d=>Ye(d,L),storage:()=>ot(),storageSet:(d,h,v)=>nt(d,h,v),storageRemove:(d,h)=>rt(d,h),reload:d=>{typeof location<"u"&&location.reload()},reset:()=>{t.clear(),n.clear(),o.clear(),c.clear(),i=null,l=void 0},stop:()=>{m(),g(),a.stop(),y.destroy()}}}function at(e){if(typeof window<"u"&&window.__uglyInspectAgent)return window.__uglyInspectAgent;let t=on(e);return typeof window<"u"&&(window.__uglyInspectAgent=t),t}var sn=new Set(["inspect.screenshot","inspect.openTarget"]);function ut(e,t,n){return{id:e,url:n.url,title:n.title,viewport:n.viewport,platform:t,isUglyApp:n.isUglyApp,open:!0}}async function dt(e,t,n={}){switch(t){case"inspect.eval":return e.evaluate(String(n.expression??""),{awaitPromise:n.awaitPromise,replMode:n.replMode});case"inspect.expand":return e.expand(String(n.objectId??""));case"inspect.console.buffer":return{entries:e.consoleBuffer(n.sinceSeq)};case"inspect.network.buffer":return{entries:e.networkBuffer(n.sinceTs)};case"inspect.dom.capture":return e.domCapture(n.maxDepth);case"inspect.element":return e.element({nodeId:n.nodeId,selector:n.selector});case"inspect.dom.highlight":e.highlight(n.nodeId??null);return;case"inspect.picker.set":e.setPicker(!!n.enabled);return;case"inspect.vitals":return e.vitals();case"inspect.profile":return e.profile(Number(n.durationMs??1e3));case"inspect.storage":return e.storage();case"inspect.storage.set":e.storageSet(n.area,String(n.key??""),String(n.value??""));return;case"inspect.storage.remove":e.storageRemove(n.area,String(n.key??""));return;case"inspect.network.reload":e.reload(!!n.ignoreCache);return;case"inspect.network.setCacheDisabled":case"inspect.setThrottle":return;default:throw sn.has(t)?new Error(`inspect: ${t} is host-serviced, not an agent method`):new Error(`inspect: unknown channel ${t}`)}}var q="self";function lt(e){let t=at({onConsole:n=>e.onEvent?.(`inspect.console:${q}`,n),onNetwork:n=>e.onEvent?.(`inspect.network:${q}`,n),onPicked:n=>e.onEvent?.(`inspect.picked:${q}`,n)});return{async dispatch(n,r={}){if(n==="inspect.listTargets")return{targets:[ut(q,e.platform,t.meta())]};if(n==="inspect.screenshot"){if(!e.screenshot)throw new Error("inspect.screenshot: no native capture on this shell");return e.screenshot({...r,targetId:q})}return dt(t,n,r)},stop(){t.stop()}}}function cn(e){return async()=>{let t=await e.invoke("capture.screenshot",void 0),n=typeof window<"u"?window.innerWidth:0,r=typeof window<"u"?window.innerHeight:0,o=typeof window<"u"&&window.devicePixelRatio||1;return{base64:t,width:n,height:r,dpr:o,format:"png"}}}function ft(e){let t=e.platform??e.native?.platform??"web",n=e.signer??(e.native?Ie(e.native):void 0),r=e.screenshot??(e.native?cn(e.native):void 0),o={},c=lt({platform:t,screenshot:r,onEvent:(i,l)=>o.host?.broadcast(i,l)});return o.host=Ce({socket:e.socket,signer:n,iceServers:e.iceServers,rtcFactory:e.rtcFactory,onInvoke:(i,l)=>c.dispatch(i,l??{})}),{stop(){o.host?.stop(),c.stop()},peerCount:()=>o.host?.peerCount()??0}}var U=window,N=U.__uglyInspectBootstrap;if(N&&U.UglyNative&&!U.__uglyInspectHostInstalled){U.__uglyInspectHostInstalled=!0;let e=U.UglyNative,t=Pe({requests:{},messages:{},url:N.wsUrl,getUrlParams:()=>({token:N.token,deviceId:N.deviceId,deviceLabel:N.deviceLabel??N.platform,inspectHost:"true",isHost:"true"})});t.connect(N.token).then(()=>ft({socket:t,native:e,platform:N.platform})).catch(()=>{})}})();
|
package/dist/native/proxy.js
CHANGED
|
@@ -78,7 +78,7 @@ export function enableUglyProxy(opts) {
|
|
|
78
78
|
try {
|
|
79
79
|
// A pinned host (preferredHost) wins over the cached one and the picker.
|
|
80
80
|
const existing = preferredHost ?? (forceRepick ? null : (client.hostDeviceId() ?? lastConnectedHost));
|
|
81
|
-
console.
|
|
81
|
+
console.debug('[uglyproxy] ensureConnected: start', { existing, preferredHost, forceRepick });
|
|
82
82
|
if (existing) {
|
|
83
83
|
// Direct (re)connect to the cached, pinned, or last-known host — no picker.
|
|
84
84
|
setStatus('reconnecting', lastLabel);
|
|
@@ -86,7 +86,7 @@ export function enableUglyProxy(opts) {
|
|
|
86
86
|
lastConnectedHost = existing;
|
|
87
87
|
setStatus('connected', lastLabel);
|
|
88
88
|
preferredHost = null;
|
|
89
|
-
console.
|
|
89
|
+
console.debug('[uglyproxy] ensureConnected: connected', { existing });
|
|
90
90
|
// The host-side task.listen fanout is per-CONNECTION, so the drop that forced this
|
|
91
91
|
// reconnect silently dropped every passive task subscription. Re-register them, or a
|
|
92
92
|
// session viewer stays "connected" but never receives another task event.
|
|
@@ -96,11 +96,11 @@ export function enableUglyProxy(opts) {
|
|
|
96
96
|
forceRepick = false;
|
|
97
97
|
setStatus('connecting');
|
|
98
98
|
const hosts = await client.listHosts();
|
|
99
|
-
console.
|
|
99
|
+
console.debug('[uglyproxy] ensureConnected: listHosts', { hosts: hosts.map((h) => `${h.deviceId}:${h.label}`) });
|
|
100
100
|
const picked = (await native.invoke('proxy.pickHost', {
|
|
101
101
|
hosts: hosts.map((h) => ({ deviceId: h.deviceId, label: h.label, online: true, lastSeen: h.lastSeen })),
|
|
102
102
|
}));
|
|
103
|
-
console.
|
|
103
|
+
console.debug('[uglyproxy] ensureConnected: picked', { picked });
|
|
104
104
|
if (!picked) {
|
|
105
105
|
setStatus('none');
|
|
106
106
|
return false;
|
|
@@ -109,7 +109,7 @@ export function enableUglyProxy(opts) {
|
|
|
109
109
|
await client.connect(picked.deviceId);
|
|
110
110
|
lastConnectedHost = picked.deviceId;
|
|
111
111
|
setStatus('connected', lastLabel);
|
|
112
|
-
console.
|
|
112
|
+
console.debug('[uglyproxy] ensureConnected: connected', { deviceId: picked.deviceId });
|
|
113
113
|
return true;
|
|
114
114
|
}
|
|
115
115
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyClient.d.ts","sourceRoot":"","sources":["../../src/native/proxyClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,WAAW,CAO5E;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChE,kDAAkD;IAClD,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,iBAAiB,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB;2EACuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qFAAqF;IACrF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjC,iFAAiF;IACjF,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,yDAAyD;IACzD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;IACtG,MAAM,IAAI,OAAO,CAAC;IAClB,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,IAAI,IAAI,CAAC;CACf;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"proxyClient.d.ts","sourceRoot":"","sources":["../../src/native/proxyClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,WAAW,CAO5E;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChE,kDAAkD;IAClD,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,iBAAiB,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB;2EACuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qFAAqF;IACrF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjC,iFAAiF;IACjF,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,yDAAyD;IACzD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;IACtG,MAAM,IAAI,OAAO,CAAC;IAClB,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,IAAI,IAAI,CAAC;CACf;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CA8KpE"}
|
|
@@ -99,8 +99,19 @@ export function createProxyClient(opts) {
|
|
|
99
99
|
opts.socket.emit('rtc:ice', { to: hostDeviceId, candidate: e.candidate.toJSON() });
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
// Routine negotiation churn (checking/connected/new/completed) is debug-only so it
|
|
103
|
+
// stays out of the shipped errorLog; only real drops (disconnected/failed/closed) log
|
|
104
|
+
// at error, where the iceSent/iceRecv counts are the actual connection-drop signal.
|
|
105
|
+
conn.oniceconnectionstatechange = () => {
|
|
106
|
+
const state = conn.iceConnectionState;
|
|
107
|
+
const drop = state === 'disconnected' || state === 'failed' || state === 'closed';
|
|
108
|
+
(drop ? console.error : console.debug)('[uglyproxy] iceConnectionState', { state, iceSent, iceRecv });
|
|
109
|
+
};
|
|
110
|
+
conn.onconnectionstatechange = () => {
|
|
111
|
+
const state = conn.connectionState;
|
|
112
|
+
const drop = state === 'disconnected' || state === 'failed' || state === 'closed';
|
|
113
|
+
(drop ? console.error : console.debug)('[uglyproxy] connectionState', { state });
|
|
114
|
+
};
|
|
104
115
|
channel.onmessage = (e) => onDcMessage(e.data);
|
|
105
116
|
offs.push(opts.socket.on('rtc:answer', (d) => { void onAnswer(rec(d)); }));
|
|
106
117
|
offs.push(opts.socket.on('rtc:ice', (d) => { iceRecv++; void onRemoteIce(rec(d)); }));
|
|
@@ -134,14 +145,14 @@ export function createProxyClient(opts) {
|
|
|
134
145
|
// an empty origin is untrusted → fs/process denied.
|
|
135
146
|
const origin = typeof window !== 'undefined' ? window.location.origin : '';
|
|
136
147
|
opts.socket.emit('rtc:offer', { to: hostDeviceId, sdp, fpTag: tag, origin });
|
|
137
|
-
console.
|
|
148
|
+
console.debug('[uglyproxy] connect: offer sent, awaiting DataChannel open', { to: hostDeviceId, origin, signed: !!tag });
|
|
138
149
|
await opened;
|
|
139
|
-
console.
|
|
150
|
+
console.debug('[uglyproxy] connect: DataChannel OPEN', { to: hostDeviceId });
|
|
140
151
|
}
|
|
141
152
|
async function onAnswer(d) {
|
|
142
153
|
if (!pc || d['from'] !== host)
|
|
143
154
|
return;
|
|
144
|
-
console.
|
|
155
|
+
console.debug('[uglyproxy] onAnswer: received', { from: d['from'], hasFpTag: !!d['fpTag'] });
|
|
145
156
|
const sdp = String(d['sdp'] ?? '');
|
|
146
157
|
if (opts.signer) {
|
|
147
158
|
const ok = await opts.signer.verify('host', parseFingerprint(sdp) ?? '', String(d['fpTag'] ?? ''));
|
|
@@ -152,7 +163,7 @@ export function createProxyClient(opts) {
|
|
|
152
163
|
}
|
|
153
164
|
}
|
|
154
165
|
await pc.setRemoteDescription({ type: 'answer', sdp });
|
|
155
|
-
console.
|
|
166
|
+
console.debug('[uglyproxy] onAnswer: remote answer accepted, ICE negotiating');
|
|
156
167
|
}
|
|
157
168
|
async function onRemoteIce(d) {
|
|
158
169
|
if (!pc || d['from'] !== host)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyClient.js","sourceRoot":"","sources":["../../src/native/proxyClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"proxyClient.js","sourceRoot":"","sources":["../../src/native/proxyClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.739",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
6
6
|
"files": [
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.739";
|
package/src/native/proxy.ts
CHANGED
|
@@ -103,7 +103,7 @@ export function enableUglyProxy(opts: {
|
|
|
103
103
|
try {
|
|
104
104
|
// A pinned host (preferredHost) wins over the cached one and the picker.
|
|
105
105
|
const existing = preferredHost ?? (forceRepick ? null : (client.hostDeviceId() ?? lastConnectedHost));
|
|
106
|
-
console.
|
|
106
|
+
console.debug('[uglyproxy] ensureConnected: start', { existing, preferredHost, forceRepick });
|
|
107
107
|
if (existing) {
|
|
108
108
|
// Direct (re)connect to the cached, pinned, or last-known host — no picker.
|
|
109
109
|
setStatus('reconnecting', lastLabel);
|
|
@@ -111,7 +111,7 @@ export function enableUglyProxy(opts: {
|
|
|
111
111
|
lastConnectedHost = existing;
|
|
112
112
|
setStatus('connected', lastLabel);
|
|
113
113
|
preferredHost = null;
|
|
114
|
-
console.
|
|
114
|
+
console.debug('[uglyproxy] ensureConnected: connected', { existing });
|
|
115
115
|
// The host-side task.listen fanout is per-CONNECTION, so the drop that forced this
|
|
116
116
|
// reconnect silently dropped every passive task subscription. Re-register them, or a
|
|
117
117
|
// session viewer stays "connected" but never receives another task event.
|
|
@@ -121,17 +121,17 @@ export function enableUglyProxy(opts: {
|
|
|
121
121
|
forceRepick = false;
|
|
122
122
|
setStatus('connecting');
|
|
123
123
|
const hosts = await client.listHosts();
|
|
124
|
-
console.
|
|
124
|
+
console.debug('[uglyproxy] ensureConnected: listHosts', { hosts: hosts.map((h) => `${h.deviceId}:${h.label}`) });
|
|
125
125
|
const picked = (await native.invoke('proxy.pickHost' as never, {
|
|
126
126
|
hosts: hosts.map((h: HostInfo) => ({ deviceId: h.deviceId, label: h.label, online: true, lastSeen: h.lastSeen })),
|
|
127
127
|
} as never)) as { deviceId: string } | null;
|
|
128
|
-
console.
|
|
128
|
+
console.debug('[uglyproxy] ensureConnected: picked', { picked });
|
|
129
129
|
if (!picked) { setStatus('none'); return false; }
|
|
130
130
|
lastLabel = hosts.find((h) => h.deviceId === picked.deviceId)?.label;
|
|
131
131
|
await client.connect(picked.deviceId);
|
|
132
132
|
lastConnectedHost = picked.deviceId;
|
|
133
133
|
setStatus('connected', lastLabel);
|
|
134
|
-
console.
|
|
134
|
+
console.debug('[uglyproxy] ensureConnected: connected', { deviceId: picked.deviceId });
|
|
135
135
|
return true;
|
|
136
136
|
} catch (e) {
|
|
137
137
|
console.error('[uglyproxy] ensureConnected: FAILED', { message: (e as Error)?.message, stack: (e as Error)?.stack });
|
|
@@ -153,8 +153,19 @@ export function createProxyClient(opts: ProxyClientOpts): ProxyClient {
|
|
|
153
153
|
conn.onicecandidate = (e) => {
|
|
154
154
|
if (e.candidate) { iceSent++; opts.socket.emit('rtc:ice', { to: hostDeviceId, candidate: e.candidate.toJSON() }); }
|
|
155
155
|
};
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
// Routine negotiation churn (checking/connected/new/completed) is debug-only so it
|
|
157
|
+
// stays out of the shipped errorLog; only real drops (disconnected/failed/closed) log
|
|
158
|
+
// at error, where the iceSent/iceRecv counts are the actual connection-drop signal.
|
|
159
|
+
conn.oniceconnectionstatechange = () => {
|
|
160
|
+
const state = conn.iceConnectionState;
|
|
161
|
+
const drop = state === 'disconnected' || state === 'failed' || state === 'closed';
|
|
162
|
+
(drop ? console.error : console.debug)('[uglyproxy] iceConnectionState', { state, iceSent, iceRecv });
|
|
163
|
+
};
|
|
164
|
+
conn.onconnectionstatechange = () => {
|
|
165
|
+
const state = conn.connectionState;
|
|
166
|
+
const drop = state === 'disconnected' || state === 'failed' || state === 'closed';
|
|
167
|
+
(drop ? console.error : console.debug)('[uglyproxy] connectionState', { state });
|
|
168
|
+
};
|
|
158
169
|
channel.onmessage = (e: MessageEvent) => onDcMessage(e.data);
|
|
159
170
|
|
|
160
171
|
offs.push(opts.socket.on('rtc:answer', (d) => { void onAnswer(rec(d)); }));
|
|
@@ -188,22 +199,22 @@ export function createProxyClient(opts: ProxyClientOpts): ProxyClient {
|
|
|
188
199
|
// an empty origin is untrusted → fs/process denied.
|
|
189
200
|
const origin = typeof window !== 'undefined' ? window.location.origin : '';
|
|
190
201
|
opts.socket.emit('rtc:offer', { to: hostDeviceId, sdp, fpTag: tag, origin });
|
|
191
|
-
console.
|
|
202
|
+
console.debug('[uglyproxy] connect: offer sent, awaiting DataChannel open', { to: hostDeviceId, origin, signed: !!tag });
|
|
192
203
|
|
|
193
204
|
await opened;
|
|
194
|
-
console.
|
|
205
|
+
console.debug('[uglyproxy] connect: DataChannel OPEN', { to: hostDeviceId });
|
|
195
206
|
}
|
|
196
207
|
|
|
197
208
|
async function onAnswer(d: Record<string, unknown>): Promise<void> {
|
|
198
209
|
if (!pc || d['from'] !== host) return;
|
|
199
|
-
console.
|
|
210
|
+
console.debug('[uglyproxy] onAnswer: received', { from: d['from'], hasFpTag: !!d['fpTag'] });
|
|
200
211
|
const sdp = String(d['sdp'] ?? '');
|
|
201
212
|
if (opts.signer) {
|
|
202
213
|
const ok = await opts.signer.verify('host', parseFingerprint(sdp) ?? '', String(d['fpTag'] ?? ''));
|
|
203
214
|
if (!ok) { console.error('[uglyproxy] onAnswer: host fingerprint verify FAILED (answer rejected)'); cleanup(); return; }
|
|
204
215
|
}
|
|
205
216
|
await pc.setRemoteDescription({ type: 'answer', sdp });
|
|
206
|
-
console.
|
|
217
|
+
console.debug('[uglyproxy] onAnswer: remote answer accepted, ICE negotiating');
|
|
207
218
|
}
|
|
208
219
|
|
|
209
220
|
async function onRemoteIce(d: Record<string, unknown>): Promise<void> {
|