@liascript/exporter
Version:
A generic exporter for LiaScript
1 lines • 21.7 kB
JavaScript
function e(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var t=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}).parcelRequire55a5;t.register("g9MJ9",(function(n,r){e(n.exports,"selfId",(function(){return Be})),e(n.exports,"pauseRelayReconnection",(function(){return st})),e(n.exports,"resumeRelayReconnection",(function(){return it})),e(n.exports,"createEvent",(function(){return $t})),e(n.exports,"subscribe",(function(){return Ot})),e(n.exports,"joinRoom",(function(){return Ht})),e(n.exports,"defaultRelayUrls",(function(){return Bt})),e(n.exports,"getRelaySockets",(function(){return Kt}));var a,o,s,i,c,l,d,f,u,y,p,m,h,v,g,w,b,A,k,x=t("2Xs1f"),T=t("dM3DM"),P=t("aQXMn");const S={p:0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,n:0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,h:1n,a:0n,b:7n,Gx:0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,Gy:0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n},{p:E,n:C,Gx:U,Gy:L,b:D}=S,R=32,I={publicKey:33,publicKeyUncompressed:65,seed:48},$=(e="")=>{const t=Error(e);throw((...e)=>{"captureStackTrace"in Error&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(...e)})(t,$),t},O=(e,t,n="")=>{const r=(a=e)instanceof Uint8Array||ArrayBuffer.isView(a)&&"Uint8Array"===a.constructor.name;var a;const o=null==e?void 0:e.length,s=void 0!==t;return(!r||s&&o!==t)&&$((n&&`"${n}" `)+"expected Uint8Array"+(s?" of length "+t:"")+", got "+(r?"length="+o:"type="+typeof e)),e},j=e=>new Uint8Array(e),H=(e,t)=>e.toString(16).padStart(t,"0"),K=e=>Array.from(O(e)).map((e=>H(e,2))).join(""),M=e=>e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:void 0,B=e=>{const t="hex invalid";if("string"!=typeof e)return $(t);const n=e.length,r=n/2;if(n%2)return $(t);const a=j(r);for(let n=0,o=0;n<r;n++,o+=2){const r=M(e.charCodeAt(o)),s=M(e.charCodeAt(o+1));if(void 0===r||void 0===s)return $(t);a[n]=16*r+s}return a},V=()=>null===globalThis||void 0===globalThis?void 0:globalThis.crypto,X=()=>{var e;return null!==(k=null===(e=V())||void 0===e?void 0:e.subtle)&&void 0!==k?k:$("crypto.subtle must be defined, consider polyfill")},Z=(...e)=>{const t=j(e.reduce(((e,t)=>e+O(t).length),0));let n=0;return e.forEach((e=>{t.set(e,n),n+=e.length})),t},q=(e=32)=>V().getRandomValues(j(e)),Y=BigInt,G=(e,t,n,r="bad number: out of range")=>(e=>"bigint"==typeof e)(e)&&t<=e&&e<n?e:$(r),J=(e,t=E)=>{const n=e%t;return n>=0n?n:t+n},N=e=>J(e,C),_=e=>e instanceof ne?e:$("Point expected"),z=e=>J(J(e*e)*e+D),Q=e=>G(e,0n,E),F=e=>G(e,1n,E),W=e=>0n===(1n&e),ee=e=>Uint8Array.of(e),te=e=>{const t=z(F(e));let n=1n;for(let e=t,r=(E+1n)/4n;r>0n;r>>=1n)1n&r&&(n=n*e%E),e=e*e%E;return J(n*n)===t?n:$("sqrt invalid")};class ne{static CURVE(){return S}static fromAffine(e){const{x:t,y:n}=e;return 0n===t&&0n===n?ae:new ne(t,n,1n)}static fromBytes(e){O(e);const{publicKey:t,publicKeyUncompressed:n}=I;let r;const a=e.length,o=e[0],s=e.subarray(1),i=se(s,0,R);if(a===t&&(2===o||3===o)){let e=te(i);const t=W(e);W(Y(o))!==t&&(e=J(-e)),r=new ne(i,e,1n)}return a===n&&4===o&&(r=new ne(i,se(s,R,64),1n)),r?r.assertValidity():$("bad point: not on curve")}static fromHex(e){return ne.fromBytes(B(e))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}equals(e){const{X:t,Y:n,Z:r}=this,{X:a,Y:o,Z:s}=_(e),i=J(t*s),c=J(a*r),l=J(n*s),d=J(o*r);return i===c&&l===d}is0(){return this.equals(ae)}negate(){return new ne(this.X,J(-this.Y),this.Z)}double(){return this.add(this)}add(e){const{X:t,Y:n,Z:r}=this,{X:a,Y:o,Z:s}=_(e);let i=0n,c=0n,l=0n;const d=J(3n*D);let f=J(t*a),u=J(n*o),y=J(r*s),p=J(t+n),m=J(a+o);p=J(p*m),m=J(f+u),p=J(p-m),m=J(t+r);let h=J(a+s);return m=J(m*h),h=J(f+y),m=J(m-h),h=J(n+r),i=J(o+s),h=J(h*i),i=J(u+y),h=J(h-i),l=J(0n*m),i=J(d*y),l=J(i+l),i=J(u-l),l=J(u+l),c=J(i*l),u=J(f+f),u=J(u+f),y=J(0n*y),m=J(d*m),u=J(u+y),y=J(f-y),y=J(0n*y),m=J(m+y),f=J(u*m),c=J(c+f),f=J(h*m),i=J(p*i),i=J(i-f),f=J(p*u),l=J(h*l),l=J(l+f),new ne(i,c,l)}subtract(e){return this.add(_(e).negate())}multiply(e,t=!0){if(!t&&0n===e)return ae;if((e=>{G(e,1n,C)})(e),1n===e)return this;if(this.equals(re))return Ie(e).p;let n=ae,r=re;for(let a=this;e>0n;a=a.double(),e>>=1n)1n&e?n=n.add(a):t&&(r=r.add(a));return n}multiplyUnsafe(e){return this.multiply(e,!1)}toAffine(){const{X:e,Y:t,Z:n}=this;if(this.equals(ae))return{x:0n,y:0n};if(1n===n)return{x:e,y:t};const r=((e,t)=>{(0n===e||t<=0n)&&$("no inverse n="+e+" mod="+t);let n=J(e,t),r=t,a=0n,o=1n;for(;0n!==n;){const e=r%n,t=a-o*(r/n);r=n,n=e,a=o,o=t}return 1n===r?J(a,t):$("no inverse")})(n,E);return 1n!==J(n*r)&&$("inverse invalid"),{x:J(e*r),y:J(t*r)}}assertValidity(){const{x:e,y:t}=this.toAffine();return F(e),F(t),J(t*t)===z(e)?this:$("bad point: not on curve")}toBytes(e=!0){const{x:t,y:n}=this.assertValidity().toAffine(),r=ce(t);return e?Z((e=>ee(W(e)?2:3))(n),r):Z(ee(4),r,ce(n))}toHex(e){return K(this.toBytes(e))}constructor(e,t,n){(0,x.default)(this,"X",void 0),(0,x.default)(this,"Y",void 0),(0,x.default)(this,"Z",void 0),this.X=Q(e),this.Y=F(t),this.Z=Q(n),Object.freeze(this)}}(0,x.default)(ne,"BASE",void 0),(0,x.default)(ne,"ZERO",void 0);const re=new ne(U,L,1n),ae=new ne(0n,1n,0n);ne.BASE=re,ne.ZERO=ae;const oe=e=>Y("0x"+(K(e)||"0")),se=(e,t,n)=>oe(e.subarray(t,n)),ie=2n**256n,ce=e=>B(H(G(e,0n,ie),64)),le="SHA-256",de={async hmacSha256Async(e,t){const n=X(),r="HMAC",a=await n.importKey("raw",e,{name:r,hash:{name:le}},!1,["sign"]);return j(await n.sign(r,a,t))},hmacSha256:void 0,sha256Async:async e=>j(await X().digest(le,e)),sha256:void 0},fe=e=>Uint8Array.from("BIP0340/"+e,(e=>e.charCodeAt(0))),ue="nonce",ye="challenge",pe=(e,...t)=>{const n=(e=>{const t=de[e];return"function"!=typeof t&&$("hashes."+e+" not set"),t})("sha256"),r=n(fe(e));return n(Z(r,r,...t))},me=async(e,...t)=>{const n=de.sha256Async,r=await n(fe(e));return await n(Z(r,r,...t))},he=e=>{const t=(e=>{const t=oe(O(e,R,"secret key"));return G(t,1n,C,"invalid secret key: outside of range")})(e),n=re.multiply(t),{x:r,y:a}=n.assertValidity().toAffine();return{d:W(a)?t:N(-t),px:ce(r)}},ve=e=>N(oe(e)),ge=(...e)=>ve(pe(ye,...e)),we=async(...e)=>ve(await me(ye,...e)),be=e=>he(e).px,Ae=(ke=be,e=>{const t=((e=q(I.seed))=>{O(e),(e.length<I.seed||e.length>1024)&&$("expected 40-1024b");const t=J(oe(e),C-1n);return ce(t+1n)})(e);return{secretKey:t,publicKey:ke(t)}});var ke;const xe=(e,t,n)=>{const{px:r,d:a}=he(t);return{m:O(e),px:r,d:a,a:O(n,R)}},Te=e=>{const t=ve(e);0n===t&&$("sign failed: k is zero");const{px:n,d:r}=he(ce(t));return{rx:n,k:r}},Pe=(e,t,n,r)=>Z(t,ce(N(e+n*r))),Se="invalid signature produced",Ee=(e,t,n,r)=>{const a=O(e,64,"signature"),o=O(t,void 0,"message"),s=O(n,R,"publicKey");try{const e=oe(s),t=te(e),n=W(t)?t:J(-t),l=new ne(e,n,1n).assertValidity(),d=ce(l.toAffine().x),f=se(a,0,R);G(f,1n,E);const u=se(a,R,64);G(u,1n,C);return i=r(Z(ce(f),d,o)),c=e=>{const{x:t,y:n}=(r=l,a=u,o=N(-e),re.multiply(a,!1).add(r.multiply(o,!1)).assertValidity()).toAffine();var r,a,o;return!(!W(n)||t!==f)},i instanceof Promise?i.then(c):c(i)}catch(e){return!1}var i,c},Ce=(e,t,n)=>Ee(e,t,n,ge),Ue=async(e,t,n)=>Ee(e,t,n,we),Le={keygen:Ae,getPublicKey:be,sign(e,t,n=q(R)){const{m:r,px:a,d:o,a:s}=xe(e,t,n),i=pe("aux",s),c=ce(o^oe(i)),l=pe(ue,c,a,r),{rx:d,k:f}=Te(l),u=ge(d,a,r),y=Pe(f,d,u,o);return Ce(y,r,a)||$(Se),y},verify:Ce,async signAsync(e,t,n=q(R)){const{m:r,px:a,d:o,a:s}=xe(e,t,n),i=await me("aux",s),c=ce(o^oe(i)),l=await me(ue,c,a,r),{rx:d,k:f}=Te(l),u=await we(d,a,r),y=Pe(f,d,u,o);return await Ue(y,r,a)||$(Se),y},verifyAsync:Ue};let De;const Re=(e,t)=>{const n=t.negate();return e?n:t},Ie=e=>{const t=De||(De=(()=>{const e=[];let t=re,n=t;for(let r=0;r<33;r++){n=t,e.push(n);for(let r=1;r<128;r++)n=n.add(t),e.push(n);t=n.double()}return e})());let n=ae,r=re;const a=Y(255),o=Y(8);for(let s=0;s<33;s++){let i=Number(e&a);e>>=o,i>128&&(i-=256,e+=1n);const c=128*s,l=c,d=c+Math.abs(i)-1,f=s%2!=0,u=i<0;0===i?r=r.add(Re(f,t[l])):n=n.add(Re(u,t[d]))}return 0n!==e&&$("invalid wnaf"),{p:n,f:r}},{floor:$e,random:Oe,sin:je}=Math,He="Trystero",Ke=(e,t)=>Array(e).fill().map(t),Me=e=>Ke(e,(()=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[$e(62*Oe())])).join(""),Be=Me(20),Ve=Promise.all.bind(Promise),Xe="undefined"!=typeof window,{entries:Ze,fromEntries:qe,keys:Ye}=Object,Ge=()=>{},Je=e=>Error(`${He}: ${e}`),Ne=new TextEncoder,_e=new TextDecoder,ze=e=>Ne.encode(e),Qe=e=>_e.decode(e),Fe=e=>e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),""),We=(...e)=>e.join("@"),et=JSON.stringify,tt=JSON.parse,nt=(e,t=Number.MAX_SAFE_INTEGER)=>e.split("").reduce(((e,t)=>e+t.charCodeAt(0)),0)%t,rt={};let at=null,ot=null;const st=()=>{at||(at=new Promise((e=>{ot=e})).finally((()=>{ot=null,at=null})))},it=()=>null==ot?void 0:ot(),ct="AES-GCM",lt={},dt=async(e,t)=>new Uint8Array(await crypto.subtle.digest(e,ze(t))),ft=async e=>(a=lt)[o=e]||(a[o]=Array.from(await dt("SHA-1",e)).map((e=>e.toString(36))).join("")),ut=async(e,t)=>{const n=crypto.getRandomValues(new Uint8Array(16));var r;return n.join(",")+"$"+(r=await crypto.subtle.encrypt({name:ct,iv:n},await e,ze(t)),btoa(String.fromCharCode.apply(null,new Uint8Array(r))))},yt=async(e,t)=>{const[n,r]=t.split("$");return Qe(await crypto.subtle.decrypt({name:ct,iv:new Uint8Array(n.split(","))},await e,(e=>{const t=atob(e);return new Uint8Array(t.length).map(((e,n)=>t.charCodeAt(n))).buffer})(r)))},pt="icegatheringstatechange",mt="offer";var ht=(e,{rtcConfig:t,rtcPolyfill:n,turnConfig:r})=>{const a=new(n||RTCPeerConnection)((0,T.default)({iceServers:vt.concat(r||[])},t)),o={};let s=!1,i=!1,c=null;const l=e=>{e.binaryType="arraybuffer",e.bufferedAmountLowThreshold=65535,e.onmessage=e=>{var t;return null===(t=o.data)||void 0===t?void 0:t.call(o,e.data)},e.onopen=()=>{var e;return null===(e=o.connect)||void 0===e?void 0:e.call(o)},e.onclose=()=>{var e;return null===(e=o.close)||void 0===e?void 0:e.call(o)},e.onerror=e=>{var t;return null===(t=o.error)||void 0===t?void 0:t.call(o,e)}},d=e=>Promise.race([new Promise((t=>{const n=()=>{"complete"===e.iceGatheringState&&(e.removeEventListener(pt,n),t())};e.addEventListener(pt,n),n()})),new Promise((e=>setTimeout(e,5e3)))]).then((()=>({type:e.localDescription.type,sdp:e.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")})));return e?(c=a.createDataChannel("data"),l(c)):a.ondatachannel=({channel:e})=>{c=e,l(e)},a.onnegotiationneeded=async()=>{try{var e;s=!0,await a.setLocalDescription();const t=await d(a);null===(e=o.signal)||void 0===e||e.call(o,t)}catch(e){var t;null===(t=o.error)||void 0===t||t.call(o,e)}finally{s=!1}},a.onconnectionstatechange=()=>{var e;["disconnected","failed","closed"].includes(a.connectionState)&&(null===(e=o.close)||void 0===e||e.call(o))},a.ontrack=e=>{var t,n;null===(t=o.track)||void 0===t||t.call(o,e.track,e.streams[0]),null===(n=o.stream)||void 0===n||n.call(o,e.streams[0])},a.onremovestream=e=>{var t;return null===(t=o.stream)||void 0===t?void 0:t.call(o,e.stream)},e&&(a.canTrickleIceCandidates||a.onnegotiationneeded()),{created:Date.now(),connection:a,get channel(){return c},get isDead(){return"closed"===a.connectionState},async signal(t){var n;if("open"!==(null==c?void 0:c.readyState)||(null===(n=t.sdp)||void 0===n?void 0:n.includes("a=rtpmap")))try{if(t.type===mt){var r;if(s||"stable"!==a.signalingState&&!i){if(e)return;await Ve([a.setLocalDescription({type:"rollback"}),a.setRemoteDescription(t)])}else await a.setRemoteDescription(t);await a.setLocalDescription();const n=await d(a);return null===(r=o.signal)||void 0===r||r.call(o,n),n}if("answer"===t.type){i=!0;try{await a.setRemoteDescription(t)}finally{i=!1}}}catch(e){var l;null===(l=o.error)||void 0===l||l.call(o,e)}},sendData:e=>c.send(e),destroy(){null==c||c.close(),a.close(),s=!1,i=!1},setHandlers:e=>Object.assign(o,e),offerPromise:e?new Promise((e=>o.signal=t=>{t.type===mt&&e(t)})):Promise.resolve(),addStream:e=>e.getTracks().forEach((t=>a.addTrack(t,e))),removeStream:e=>a.getSenders().filter((t=>e.getTracks().includes(t.track))).forEach((e=>a.removeTrack(e))),addTrack:(e,t)=>a.addTrack(e,t),removeTrack(e){const t=a.getSenders().find((t=>t.track===e));t&&a.removeTrack(t)},replaceTrack(e,t){const n=a.getSenders().find((t=>t.track===e));if(n)return n.replaceTrack(t)}}};const vt=[...Ke(3,((e,t)=>`stun:stun${t||""}.l.google.com:19302`)),"stun:stun.cloudflare.com:3478"].map((e=>({urls:e}))),gt=Object.getPrototypeOf(Uint8Array),wt=16369,bt=255,At="bufferedamountlow",kt=e=>"@_"+e;var xt;const Tt={},Pt="EVENT",{secretKey:St,publicKey:Et}=Le.keygen(),Ct=Fe(Et),Ut={},Lt={},Dt={},Rt=()=>Math.floor(Date.now()/1e3),It=e=>null!==(xt=(p=Dt)[m=e])&&void 0!==xt?xt:p[m]=nt(e,1e4)+2e4,$t=async(e,t)=>{const n={kind:It(e),tags:[["x",e]],created_at:Rt(),content:t,pubkey:Ct},r=await dt("SHA-256",et([0,n.pubkey,n.created_at,n.kind,n.tags,n.content]));return et([Pt,(0,P.default)((0,T.default)({},n),{id:Fe(r),sig:Fe(await Le.signAsync(r,St))})])},Ot=(e,t)=>(Ut[e]=t,et(["REQ",e,{kinds:[It(t)],since:Rt(),"#x":[t]}])),jt=e=>(delete Ut[e],et(["CLOSE",e])),Ht=(({init:e,subscribe:t,announce:n})=>{const r={};let a,o,p,m,b=!1;return(A,k,x)=>{var S;const{appId:E}=A;if(null===(S=r[E])||void 0===S?void 0:S[k])return r[E][k];const C={},U={},L=We(He,E,k),D=ft(L),R=ft(We(L,Be)),I=(async(e,t,n)=>crypto.subtle.importKey("raw",await crypto.subtle.digest({name:"SHA-256"},ze(`${e}:${t}:${n}`)),{name:ct},!1,["encrypt","decrypt"]))(A.password||"",E,k),$=e=>async t=>({type:t.type,sdp:await e(I,t.sdp)}),O=$(yt),j=$(ut),H=()=>ht(!0,A),K=(e,t,n)=>{var r;U[t]?U[t]!==e&&e.destroy():(U[t]=e,Y(e,t),null===(r=C[t])||void 0===r||r.forEach(((e,t)=>{t!==n&&e.destroy()})),delete C[t])},M=(e,t)=>{U[t]===e&&delete U[t]},B=e=>(o.push(...Ke(e,H)),Ve(o.splice(0,e).map((e=>e.offerPromise.then(j).then((t=>({peer:e,offer:t}))))))),V=(e,t)=>null==x?void 0:x({error:`incorrect password (${A.password}) when decrypting ${t}`,appId:E,peerId:e,roomId:k});if(!A)throw Je("requires a config map as the first argument");if(!E&&!A.firebaseApp)throw Je("config map is missing appId field");if(!k)throw Je("roomId argument required");if(!b){const t=e(A);o=Ke(20,H),a=Array.isArray(t)?t:[t],b=!0,p=setInterval((()=>o=o.filter((e=>{const t=Date.now()-e.created<57333;return t||e.destroy(),t}))),59052.99),m=A.manualRelayReconnection?Ge:(()=>{if(Xe){const e=new AbortController;return addEventListener("online",it,{signal:e.signal}),addEventListener("offline",st,{signal:e.signal}),()=>e.abort()}return Ge})()}const X=a.map((()=>5333)),Z=[],q=a.map((async(e,n)=>t(await e,await D,await R,(e=>async(t,n,r)=>{const[a,o]=await Ve([D,R]);if(t!==a&&t!==o)return;const{peerId:s,offer:i,answer:c,peer:l}="string"==typeof n?tt(n):n;if(s!==Be&&!U[s])if(!s||i||c){if(i){var d;if((null===(d=C[s])||void 0===d?void 0:d[e])&&Be>s)return;const t=ht(!1,A);let n;t.setHandlers({connect:()=>K(t,s,e),close:()=>M(t,s)});try{n=await O(i)}catch(e){return void V(s,"offer")}if(t.isDead)return;const[a,o]=await Ve([ft(We(L,s)),t.signal(n)]);r(a,et({peerId:Be,answer:await j(o)}))}else if(c){let t;try{t=await O(c)}catch(e){return void V(s,"answer")}if(l)l.setHandlers({connect:()=>K(l,s,e),close:()=>M(l,s)}),l.signal(t);else{var f;const n=null===(f=C[s])||void 0===f?void 0:f[e];n&&!n.isDead&&n.signal(t)}}}else{var u;if(null===(u=C[s])||void 0===u?void 0:u[e])return;const[[{peer:t,offer:n}],a]=await Ve([B(1),ft(We(L,s))]);(h=C)[v=s]||(h[v]=[]),C[s][e]=t,setTimeout((()=>((e,t)=>{var n;if(U[e])return;const r=null===(n=C[e])||void 0===n?void 0:n[t];r&&(delete C[e][t],r.destroy())})(s,e)),.9*X[e]),t.setHandlers({connect:()=>K(t,s,e),close:()=>M(t,s)}),r(a,et({peerId:Be,offer:n}))}})(n),B)));Ve([D,R]).then((([e,t])=>{const r=async(a,o)=>{const s=await n(a,e,t);"number"==typeof s&&(X[o]=s),Z[o]=setTimeout((()=>r(a,o)),X[o])};q.forEach((async(e,t)=>{await e,r(await a[t],t)}))}));let Y=Ge;return(g=r)[w=E]||(g[w]={}),r[E][k]=((e,t,n)=>{const r={},a={},o={},p={},m={},h={},v={},g={onPeerJoin:Ge,onPeerLeave:Ge,onPeerStream:Ge,onPeerTrack:Ge},w=(e,t)=>(e?Array.isArray(e)?e:[e]:Ye(r)).flatMap((e=>{const n=r[e];return n?t(e,n):(console.warn(`${He}: no peer with id ${e} found`),[])})),b=e=>{r[e]&&(r[e].destroy(),delete r[e],delete p[e],delete m[e],g.onPeerLeave(e),t(e))},A=e=>{if(a[e])return o[e];if(!e)throw Je("action type argument is required");const t=ze(e);if(t.byteLength>12)throw Je(`action type string "${e}" (${t.byteLength}b) exceeds byte limit (12). Hint: choose a shorter name.`);const n=new Uint8Array(12);n.set(t);let c=0;return a[e]={onComplete:Ge,onProgress:Ge,setOnComplete:t=>a[e]=(0,P.default)((0,T.default)({},a[e]),{onComplete:t}),setOnProgress:t=>a[e]=(0,P.default)((0,T.default)({},a[e]),{onProgress:t}),async send(e,t,a,o){if(a&&"object"!=typeof a)throw Je("action meta argument must be an object");const s=typeof e;if("undefined"===s)throw Je("action data cannot be undefined");const i="string"!==s,l=e instanceof Blob,d=l||e instanceof ArrayBuffer||e instanceof gt;if(a&&!d)throw Je("action meta argument can only be used with binary data");const f=d?new Uint8Array(l?await e.arrayBuffer():e):ze(i?et(e):e),u=a?ze(et(a)):null,y=Math.ceil(f.byteLength/wt)+(a?1:0)||1,p=Ke(y,((e,t)=>{const r=t===y-1,o=a&&0===t,s=new Uint8Array(15+(o?u.byteLength:r?f.byteLength-wt*(y-(a?2:1)):wt));return s.set(n),s.set([c],12),s.set([r|o<<1|d<<2|i<<3],13),s.set([Math.round((t+1)/y*bt)],14),s.set(a?o?u:f.subarray((t-1)*wt,t*wt):f.subarray(t*wt,(t+1)*wt),15),s}));return c=c+1&bt,Ve(w(t,(async(e,t)=>{const{channel:n}=t;let s=0;for(;s<y;){const i=p[s];if(n.bufferedAmount>n.bufferedAmountLowThreshold&&await new Promise((e=>{const t=()=>{n.removeEventListener(At,t),e()};n.addEventListener(At,t)})),!r[e])break;t.sendData(i),s++,null==o||o(i[14]/bt,e,a)}})))}},(s=o)[i=e]||(s[i]=[a[e].send,a[e].setOnComplete,a[e].setOnProgress])},k=async()=>{await O(""),await new Promise((e=>setTimeout(e,99))),Ze(r).forEach((([e,t])=>{t.destroy(),delete r[e]})),n()},[x,S]=A(kt("ping")),[E,C]=A(kt("pong")),[U,L]=A(kt("signal")),[D,R]=A(kt("stream")),[I,$]=A(kt("track")),[O,j]=A(kt("leave"));return e(((e,t)=>{r[t]||(r[t]=e,e.setHandlers({data:e=>((e,t)=>{const n=new Uint8Array(t),r=Qe(n.subarray(0,12)).replaceAll("\0",""),[o]=n.subarray(12,13),[s]=n.subarray(13,14),[i]=n.subarray(14,15),m=n.subarray(15),h=!!(1&s),v=!!(2&s),g=!!(4&s),w=!!(8&s);if(!a[r])return void console.warn(`${He}: received message with unregistered type (${r})`);(c=p)[l=e]||(c[l]={}),(d=p[e])[f=r]||(d[f]={});const b=(u=p[e][r])[y=o]||(u[y]={chunks:[]});if(v?b.meta=tt(Qe(m)):b.chunks.push(m),a[r].onProgress(i/bt,e,b.meta),!h)return;const A=new Uint8Array(b.chunks.reduce(((e,t)=>e+t.byteLength),0));if(b.chunks.reduce(((e,t)=>(A.set(t,e),e+t.byteLength)),0),delete p[e][r][o],g)a[r].onComplete(A,e,b.meta);else{const t=Qe(A);a[r].onComplete(w?tt(t):t,e)}})(t,e),stream(e){g.onPeerStream(e,t,h[t]),delete h[t]},track(e,n){g.onPeerTrack(e,n,t,v[t]),delete v[t]},signal:e=>U(e,t),close:()=>b(t),error(e){console.error(e),b(t)}}),g.onPeerJoin(t))})),S(((e,t)=>E("",t))),C(((e,t)=>{var n;null===(n=m[t])||void 0===n||n.call(m),delete m[t]})),L(((e,t)=>{var n;return null===(n=r[t])||void 0===n?void 0:n.signal(e)})),R(((e,t)=>h[t]=e)),$(((e,t)=>v[t]=e)),j(((e,t)=>b(t))),Xe&&addEventListener("beforeunload",k),{makeAction:A,leave:k,async ping(e){if(!e)throw Je("ping() must be called with target peer ID");const t=Date.now();return x("",e),await new Promise((t=>m[e]=t)),Date.now()-t},getPeers:()=>qe(Ze(r).map((([e,t])=>[e,t.connection]))),addStream:(e,t,n)=>w(t,(async(t,r)=>{n&&await D(n,t),r.addStream(e)})),removeStream:(e,t)=>w(t,((t,n)=>n.removeStream(e))),addTrack:(e,t,n,r)=>w(n,(async(n,a)=>{r&&await I(r,n),a.addTrack(e,t)})),removeTrack:(e,t)=>w(t,((t,n)=>n.removeTrack(e))),replaceTrack:(e,t,n,r)=>w(n,(async(n,a)=>{r&&await I(r,n),a.replaceTrack(e,t)})),onPeerJoin:e=>g.onPeerJoin=e,onPeerLeave:e=>g.onPeerLeave=e,onPeerStream:e=>g.onPeerStream=e,onPeerTrack:e=>g.onPeerTrack=e}})((e=>Y=e),(e=>delete U[e]),(()=>{delete r[E][k],Z.forEach(clearTimeout),q.forEach((async e=>(await e)())),clearInterval(p),m(),b=!1}))}})({init:e=>((e,t,n)=>(e.relayUrls||((e,t)=>{const n=[...e],r=()=>{const e=1e4*je(t++);return e-$e(e)};let a=n.length;for(;a;){const e=$e(r()*a--);[n[a],n[e]]=[n[e],n[a]]}return n})(t,nt(e.appId))).slice(0,e.relayUrls?e.relayUrls.length:e.relayRedundancy||n))(e,Bt,5).map((e=>{const t=((e,t)=>{const n={},r=()=>{const a=new WebSocket(e);a.onclose=()=>{var t;at?at.then(r):(null!==(t=(b=rt)[A=e])&&void 0!==t||(b[A]=3333),setTimeout(r,rt[e]),rt[e]*=2)},a.onmessage=e=>t(e.data),n.socket=a,n.url=a.url,n.ready=new Promise((t=>a.onopen=()=>{t(n),rt[e]=3333})),n.send=e=>{1===a.readyState&&a.send(e)}};return r(),n})(e,(e=>{var n;const[r,a,o,s]=tt(e);if(r===Pt)null===(n=Lt[a])||void 0===n||n.call(Lt,Ut[a],o.content);else{const e=`${He}: relay failure from ${t.url} - `;"NOTICE"===r?console.warn(e+a):"OK"!==r||o||console.warn(e+s)}}));return Tt[e]=t,t.ready})),subscribe(e,t,n,r){const a=Me(64),o=Me(64);return Lt[a]=Lt[o]=(t,n)=>r(t,n,(async(t,n)=>e.send(await $t(t,n)))),e.send(Ot(a,t)),e.send(Ot(o,n)),()=>{e.send(jt(a)),e.send(jt(o)),delete Lt[a],delete Lt[o]}},announce:async(e,t)=>e.send(await $t(t,et({peerId:Be})))}),Kt=(Mt=Tt,()=>qe(Ze(Mt).map((([e,t])=>[e,t.socket]))));var Mt;const Bt=["black.nostrcity.club","ftp.halifax.rwth-aachen.de/nostr","nos.lol","nostr.cool110.xyz","nostr.data.haus","nostr.sathoarder.com","nostr.vulpem.com","relay.agorist.space","relay.binaryrobot.com","relay.damus.io","relay.fountain.fm","relay.mostro.network","relay.nostraddress.com","relay.nostrdice.com","relay.nostromo.social","relay.oldenburg.cool","relay.verified-nostr.com","yabu.me/v2"].map((e=>"wss://"+e))}));