@libp2p/websockets 9.0.10 → 9.0.11-ad5cfd66a

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/index.min.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PWebsockets = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PWebsockets=(()=>{var Xr=Object.create;var me=Object.defineProperty;var Kr=Object.getOwnPropertyDescriptor;var Zr=Object.getOwnPropertyNames;var Yr=Object.getPrototypeOf,en=Object.prototype.hasOwnProperty;var De=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),I=(t,e)=>{for(var r in e)me(t,r,{get:e[r],enumerable:!0})},Pt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Zr(e))!en.call(t,o)&&o!==r&&me(t,o,{get:()=>e[o],enumerable:!(n=Kr(e,o))||n.enumerable});return t};var At=(t,e,r)=>(r=t!=null?Xr(Yr(t)):{},Pt(e||!t||!t.__esModule?me(r,"default",{value:t,enumerable:!0}):r,t)),tn=t=>Pt(me({},"__esModule",{value:!0}),t);var yr=De(Pe=>{"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});var gt=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let r={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(r)}else this.pushQueue.push(Promise.resolve(r)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let r of this.pullQueue)r.reject(e);this.pullQueue.length=0}else{let r=Promise.reject(e);r.catch(()=>{}),this.pushQueue.push(r)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let r=this.pushQueue.shift();return r?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),r):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},Ie=class{constructor(e,{highWaterMark:r=100,lowWaterMark:n=1}={}){let o=new gt;o.highWaterMark=r,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};Pe.EventIterator=Ie;Pe.default=Ie});var vr=De(fe=>{"use strict";Object.defineProperty(fe,"__esModule",{value:!0});var bt=yr();fe.EventIterator=bt.EventIterator;function Wo(t,e,r){return new bt.EventIterator(({push:n})=>(this.addEventListener(t,n,e),()=>this.removeEventListener(t,n,e)),r)}fe.subscribe=Wo;fe.default=bt.EventIterator});var Lr=De((wc,Dr)=>{function Ro(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}Dr.exports=Ro});var es={};I(es,{webSockets:()=>Yo});var Ut=Symbol.for("@libp2p/transport");var Tt;(function(t){t[t.FATAL_ALL=0]="FATAL_ALL",t[t.NO_FATAL=1]="NO_FATAL"})(Tt||(Tt={}));var we=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var xe=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}};var Nt=Symbol.for("@libp2p/service-capabilities"),os=Symbol.for("@libp2p/service-dependencies");var Me={};I(Me,{base58btc:()=>E,base58flickr:()=>cn});var Ts=new Uint8Array(0);function Dt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function F(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function Lt(t){return new TextEncoder().encode(t)}function $t(t){return new TextDecoder().decode(t)}function rn(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(r[i]!==255)throw new TypeError(s+" is ambiguous");r[i]=o}var a=t.length,u=t.charAt(0),m=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function w(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var v=0,_=0,T=0,N=f.length;T!==N&&f[T]===0;)T++,v++;for(var D=(N-T)*l+1>>>0,A=new Uint8Array(D);T!==N;){for(var L=f[T],z=0,U=D-1;(L!==0||z<_)&&U!==-1;U--,z++)L+=256*A[U]>>>0,A[U]=L%a>>>0,L=L/a>>>0;if(L!==0)throw new Error("Non-zero carry");_=z,T++}for(var k=D-_;k!==D&&A[k]===0;)k++;for(var he=u.repeat(v);k<D;++k)he+=t.charAt(A[k]);return he}function y(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var v=0;if(f[v]!==" "){for(var _=0,T=0;f[v]===u;)_++,v++;for(var N=(f.length-v)*m+1>>>0,D=new Uint8Array(N);f[v];){var A=r[f.charCodeAt(v)];if(A===255)return;for(var L=0,z=N-1;(A!==0||L<T)&&z!==-1;z--,L++)A+=a*D[z]>>>0,D[z]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");T=L,v++}if(f[v]!==" "){for(var U=N-T;U!==N&&D[U]===0;)U++;for(var k=new Uint8Array(_+(N-U)),he=_;U!==N;)k[he++]=D[U++];return k}}}function P(f){var v=y(f);if(v)return v;throw new Error(`Non-${e} character`)}return{encode:w,decodeUnsafe:y,decode:P}}var nn=rn,on=nn,Ft=on;var Le=class{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},$e=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){this.name=e,this.prefix=r;let o=r.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Mt(this,e)}},ke=class{decoders;constructor(e){this.decoders=e}or(e){return Mt(this,e)}decode(e){let r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Mt(t,e){return new ke({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}var Fe=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Le(e,r,n),this.decoder=new $e(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function X({name:t,prefix:e,encode:r,decode:n}){return new Fe(t,e,r,n)}function W({name:t,prefix:e,alphabet:r}){let{encode:n,decode:o}=Ft(r,t);return X({prefix:e,name:t,encode:n,decode:s=>F(o(s))})}function sn(t,e,r,n){let o={};for(let l=0;l<e.length;++l)o[e[l]]=l;let s=t.length;for(;t[s-1]==="=";)--s;let i=new Uint8Array(s*r/8|0),a=0,u=0,m=0;for(let l=0;l<s;++l){let w=o[t[l]];if(w===void 0)throw new SyntaxError(`Non-${n} character`);u=u<<r|w,a+=r,a>=8&&(a-=8,i[m++]=255&u>>a)}if(a>=r||255&u<<8-a)throw new SyntaxError("Unexpected end of data");return i}function an(t,e,r){let n=e[e.length-1]==="=",o=(1<<r)-1,s="",i=0,a=0;for(let u=0;u<t.length;++u)for(a=a<<8|t[u],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<r-i]),n)for(;s.length*r&7;)s+="=";return s}function x({name:t,prefix:e,bitsPerChar:r,alphabet:n}){return X({prefix:e,name:t,encode(o){return an(o,n,r)},decode(o){return sn(o,n,r,t)}})}var E=W({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),cn=W({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Oe={};I(Oe,{base32:()=>M,base32hex:()=>ln,base32hexpad:()=>hn,base32hexpadupper:()=>mn,base32hexupper:()=>fn,base32pad:()=>un,base32padupper:()=>dn,base32upper:()=>pn,base32z:()=>wn});var M=x({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),pn=x({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),un=x({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),dn=x({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),ln=x({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),fn=x({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),hn=x({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),mn=x({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),wn=x({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ze={};I(ze,{base36:()=>ae,base36upper:()=>xn});var ae=W({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),xn=W({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var gn=Wt,Ot=128,bn=127,yn=~bn,vn=Math.pow(2,31);function Wt(t,e,r){e=e||[],r=r||0;for(var n=r;t>=vn;)e[r++]=t&255|Ot,t/=128;for(;t&yn;)e[r++]=t&255|Ot,t>>>=7;return e[r]=t|0,Wt.bytes=r-n+1,e}var En=We,Sn=128,zt=127;function We(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw We.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&zt)<<o:(i&zt)*Math.pow(2,o),o+=7}while(i>=Sn);return We.bytes=s-n,r}var Cn=Math.pow(2,7),In=Math.pow(2,14),Pn=Math.pow(2,21),An=Math.pow(2,28),Tn=Math.pow(2,35),Un=Math.pow(2,42),Nn=Math.pow(2,49),Dn=Math.pow(2,56),Ln=Math.pow(2,63),$n=function(t){return t<Cn?1:t<In?2:t<Pn?3:t<An?4:t<Tn?5:t<Un?6:t<Nn?7:t<Dn?8:t<Ln?9:10},kn={encode:gn,decode:En,encodingLength:$n},Fn=kn,ce=Fn;function pe(t,e=0){return[ce.decode(t,e),ce.decode.bytes]}function K(t,e,r=0){return ce.encode(t,e,r),e}function Z(t){return ce.encodingLength(t)}function q(t,e){let r=e.byteLength,n=Z(t),o=n+Z(r),s=new Uint8Array(o+r);return K(t,s,0),K(r,s,n),s.set(e,o),new Y(t,r,e,s)}function be(t){let e=F(t),[r,n]=pe(e),[o,s]=pe(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Y(r,o,i,e)}function Vt(t,e){if(t===e)return!0;{let r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&Dt(t.bytes,r.bytes)}}var Y=class{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}};function Rt(t,e){let{bytes:r,version:n}=t;switch(n){case 0:return On(r,Ve(t),e??E.encoder);default:return zn(r,Ve(t),e??M.encoder)}}var Bt=new WeakMap;function Ve(t){let e=Bt.get(t);if(e==null){let r=new Map;return Bt.set(t,r),r}return e}var V=class t{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:r}=this;if(e!==ue)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==Wn)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return t.createV0(r)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:r}=this.multihash,n=q(e,r);return t.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return t.equals(this,e)}static equals(e,r){let n=r;return n!=null&&e.code===n.code&&e.version===n.version&&Vt(e.multihash,n.multihash)}toString(e){return Rt(this,e)}toJSON(){return{"/":Rt(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let r=e;if(r instanceof t)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){let{version:n,code:o,multihash:s,bytes:i}=r;return new t(n,o,s,i??jt(n,o,s.bytes))}else if(r[Vn]===!0){let{version:n,multihash:o,code:s}=r,i=be(o);return t.create(n,s,i)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==ue)throw new Error(`Version 0 CID must use dag-pb (code: ${ue}) block encoding`);return new t(e,r,n,n.bytes)}case 1:{let o=jt(e,r,n.bytes);return new t(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return t.create(0,ue,e)}static createV1(e,r){return t.create(1,e,r)}static decode(e){let[r,n]=t.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){let r=t.inspectBytes(e),n=r.size-r.multihashSize,o=F(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");let s=o.subarray(r.multihashSize-r.digestSize),i=new Y(r.multihashCode,r.digestSize,s,o);return[r.version===0?t.createV0(i):t.createV1(r.codec,i),e.subarray(r.size)]}static inspectBytes(e){let r=0,n=()=>{let[w,y]=pe(e.subarray(r));return r+=y,w},o=n(),s=ue;if(o===18?(o=0,r=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=r,a=n(),u=n(),m=r+u,l=m-i;return{version:o,codec:s,multihashCode:a,digestSize:u,multihashSize:l,size:m}}static parse(e,r){let[n,o]=Mn(e,r),s=t.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ve(s).set(n,e),s}};function Mn(t,e){switch(t[0]){case"Q":{let r=e??E;return[E.prefix,r.decode(`${E.prefix}${t}`)]}case E.prefix:{let r=e??E;return[E.prefix,r.decode(t)]}case M.prefix:{let r=e??M;return[M.prefix,r.decode(t)]}case ae.prefix:{let r=e??ae;return[ae.prefix,r.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function On(t,e,r){let{prefix:n}=r;if(n!==E.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);let o=e.get(n);if(o==null){let s=r.encode(t).slice(1);return e.set(n,s),s}else return o}function zn(t,e,r){let{prefix:n}=r,o=e.get(n);if(o==null){let s=r.encode(t);return e.set(n,s),s}else return o}var ue=112,Wn=18;function jt(t,e,r){let n=Z(t),o=n+Z(e),s=new Uint8Array(o+r.byteLength);return K(t,s,0),K(e,s,n),s.set(r,o),s}var Vn=Symbol.for("@ipld/js-cid/CID");function _t(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}var Re={};I(Re,{base10:()=>Rn});var Rn=W({prefix:"9",name:"base10",alphabet:"0123456789"});var Be={};I(Be,{base16:()=>Bn,base16upper:()=>jn});var Bn=x({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),jn=x({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var je={};I(je,{base2:()=>_n});var _n=x({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var _e={};I(_e,{base256emoji:()=>Jn});var qt=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),qn=qt.reduce((t,e,r)=>(t[r]=e,t),[]),Qn=qt.reduce((t,e,r)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function Gn(t){return t.reduce((e,r)=>(e+=qn[r],e),"")}function Hn(t){let e=[];for(let r of t){let n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);let o=Qn[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}var Jn=X({prefix:"\u{1F680}",name:"base256emoji",encode:Gn,decode:Hn});var qe={};I(qe,{base64:()=>Xn,base64pad:()=>Kn,base64url:()=>Zn,base64urlpad:()=>Yn});var Xn=x({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Kn=x({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Zn=x({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Yn=x({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Qe={};I(Qe,{base8:()=>eo});var eo=x({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Ge={};I(Ge,{identity:()=>to});var to=X({prefix:"\0",name:"identity",encode:t=>$t(t),decode:t=>Lt(t)});var ei=new TextEncoder,ti=new TextDecoder;var He={};I(He,{identity:()=>io});var Qt=0,oo="identity",Gt=F;function so(t){return q(Qt,Gt(t))}var io={code:Qt,name:oo,encode:Gt,digest:so};var Ke={};I(Ke,{sha256:()=>ao,sha512:()=>co});function Xe({name:t,code:e,encode:r}){return new Je(t,e,r)}var Je=class{name;code;encode;constructor(e,r,n){this.name=e,this.code=r,this.encode=n}digest(e){if(e instanceof Uint8Array){let r=this.encode(e);return r instanceof Uint8Array?q(this.code,r):r.then(n=>q(this.code,n))}else throw Error("Unknown type, must be binary type")}};function Jt(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}var ao=Xe({name:"sha2-256",code:18,encode:Jt("SHA-256")}),co=Xe({name:"sha2-512",code:19,encode:Jt("SHA-512")});var de={...Ge,...je,...Qe,...Re,...Be,...Oe,...ze,...Me,...qe,..._e},hi={...Ke,...He};function te(t=0){return new Uint8Array(t)}function Kt(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}var Xt=Kt("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ze=Kt("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);let e=te(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),po={utf8:Xt,"utf-8":Xt,hex:de.base16,latin1:Ze,ascii:Ze,binary:Ze,...de},ye=po;function S(t,e="utf8"){let r=ye[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}var uo=Math.pow(2,7),lo=Math.pow(2,14),fo=Math.pow(2,21),Ye=Math.pow(2,28),et=Math.pow(2,35),tt=Math.pow(2,42),rt=Math.pow(2,49),h=128,b=127;function $(t){if(t<uo)return 1;if(t<lo)return 2;if(t<fo)return 3;if(t<Ye)return 4;if(t<et)return 5;if(t<tt)return 6;if(t<rt)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function ho(t,e,r=0){switch($(t)){case 8:e[r++]=t&255|h,t/=128;case 7:e[r++]=t&255|h,t/=128;case 6:e[r++]=t&255|h,t/=128;case 5:e[r++]=t&255|h,t/=128;case 4:e[r++]=t&255|h,t>>>=7;case 3:e[r++]=t&255|h,t>>>=7;case 2:e[r++]=t&255|h,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function mo(t,e,r=0){switch($(t)){case 8:e.set(r++,t&255|h),t/=128;case 7:e.set(r++,t&255|h),t/=128;case 6:e.set(r++,t&255|h),t/=128;case 5:e.set(r++,t&255|h),t/=128;case 4:e.set(r++,t&255|h),t>>>=7;case 3:e.set(r++,t&255|h),t>>>=7;case 2:e.set(r++,t&255|h),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function wo(t,e){let r=t[e],n=0;if(n+=r&b,r<h||(r=t[e+1],n+=(r&b)<<7,r<h)||(r=t[e+2],n+=(r&b)<<14,r<h)||(r=t[e+3],n+=(r&b)<<21,r<h)||(r=t[e+4],n+=(r&b)*Ye,r<h)||(r=t[e+5],n+=(r&b)*et,r<h)||(r=t[e+6],n+=(r&b)*tt,r<h)||(r=t[e+7],n+=(r&b)*rt,r<h))return n;throw new RangeError("Could not decode varint")}function xo(t,e){let r=t.get(e),n=0;if(n+=r&b,r<h||(r=t.get(e+1),n+=(r&b)<<7,r<h)||(r=t.get(e+2),n+=(r&b)<<14,r<h)||(r=t.get(e+3),n+=(r&b)<<21,r<h)||(r=t.get(e+4),n+=(r&b)*Ye,r<h)||(r=t.get(e+5),n+=(r&b)*et,r<h)||(r=t.get(e+6),n+=(r&b)*tt,r<h)||(r=t.get(e+7),n+=(r&b)*rt,r<h))return n;throw new RangeError("Could not decode varint")}function re(t,e,r=0){return e==null&&(e=te($(t))),e instanceof Uint8Array?ho(t,e,r):mo(t,e,r)}function Q(t,e=0){return t instanceof Uint8Array?wo(t,e):xo(t,e)}function O(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));let r=te(e),n=0;for(let o of t)r.set(o,n),n+=o.length;return r}var ve=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let r=this.index,n=e();return n===void 0&&(this.index=r),n}parseWith(e){let r=e();if(this.index===this.input.length)return r}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let r=this.readChar();if(r===e)return r})}readSeparator(e,r,n){return this.readAtomically(()=>{if(!(r>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,r,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let u=a==="0",m=2**(8*o)-1;for(;;){let l=this.readAtomically(()=>{let w=this.readChar();if(w===void 0)return;let y=Number.parseInt(w,e);if(!Number.isNaN(y))return y});if(l===void 0)break;if(s*=e,s+=l,s>m||(i+=1,r!==void 0&&i>r))return}if(i!==0)return!n&&u&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let r=0;r<e.length;r++){let n=this.readSeparator(".",r,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[r]=n}return e})}readIPv6Addr(){let e=r=>{for(let n=0;n<r.length/2;n++){let o=n*2;if(n<r.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return r[o]=i[0],r[o+1]=i[1],r[o+2]=i[2],r[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];r[o]=s>>8,r[o+1]=s&255}return[r.length,!1]};return this.readAtomically(()=>{let r=new Uint8Array(16),[n,o]=e(r);if(n===16)return r;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return r.set(s.subarray(0,a),16-a),r})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Yt=45,go=15,ne=new ve;function nt(t){if(!(t.length>go))return ne.new(t).parseWith(()=>ne.readIPv4Addr())}function ot(t){if(t.includes("%")&&(t=t.split("%")[0]),!(t.length>Yt))return ne.new(t).parseWith(()=>ne.readIPv6Addr())}function Ee(t){if(t.includes("%")&&(t=t.split("%")[0]),!(t.length>Yt))return ne.new(t).parseWith(()=>ne.readIPAddr())}var Oi=parseInt("0xFFFF",16),zi=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function le(t,e="utf8"){let r=ye[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function rr(t){return!!nt(t)}function nr(t){return!!ot(t)}function Se(t){return!!Ee(t)}var or=rr,So=nr,st=function(t){let e=0;if(t=t.toString().trim(),or(t)){let r=new Uint8Array(e+4);return t.split(/\./g).forEach(n=>{r[e++]=parseInt(n,10)&255}),r}if(So(t)){let r=t.split(":",8),n;for(n=0;n<r.length;n++){let s=or(r[n]),i;s&&(i=st(r[n]),r[n]=S(i.slice(0,2),"base16")),i!=null&&++n<8&&r.splice(n,0,S(i.slice(2,4),"base16"))}if(r[0]==="")for(;r.length<8;)r.unshift("0");else if(r[r.length-1]==="")for(;r.length<8;)r.push("0");else if(r.length<8){for(n=0;n<r.length&&r[n]!=="";n++);let s=[n,1];for(n=9-r.length;n>0;n--)s.push("0");r.splice.apply(r,s)}let o=new Uint8Array(e+16);for(n=0;n<r.length;n++){let s=parseInt(r[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},sr=function(t,e=0,r){e=~~e,r=r??t.length-e;let n=new DataView(t.buffer);if(r===4){let o=[];for(let s=0;s<r;s++)o.push(t[e+s]);return o.join(".")}if(r===16){let o=[];for(let s=0;s<r;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var oe={},it={},Io=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Io.forEach(t=>{let e=Po(...t);it[e.code]=e,oe[e.name]=e});function Po(t,e,r,n,o){return{code:t,size:e,name:r,resolvable:!!n,path:!!o}}function d(t){if(typeof t=="number"){if(it[t]!=null)return it[t];throw new Error(`no protocol with code: ${t}`)}else if(typeof t=="string"){if(oe[t]!=null)return oe[t];throw new Error(`no protocol with name: ${t}`)}throw new Error(`invalid protocol id type: ${typeof t}`)}var Sa=d("ip4"),Ca=d("ip6"),Ia=d("ipcidr");function ut(t,e){switch(d(t).code){case 4:case 41:return To(e);case 42:return pt(e);case 6:case 273:case 33:case 132:return cr(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return pt(e);case 421:return Lo(e);case 444:return ar(e);case 445:return ar(e);case 466:return Do(e);case 481:return globalThis.encodeURIComponent(pt(e));default:return S(e,"base16")}}function dt(t,e){switch(d(t).code){case 4:return ir(e);case 41:return ir(e);case 42:return ct(e);case 6:case 273:case 33:case 132:return lt(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return ct(e);case 421:return Uo(e);case 444:return $o(e);case 445:return ko(e);case 466:return No(e);case 481:return ct(globalThis.decodeURIComponent(e));default:return le(e,"base16")}}var at=Object.values(de).map(t=>t.decoder),Ao=function(){let t=at[0].or(at[1]);return at.slice(2).forEach(e=>t=t.or(e)),t}();function ir(t){if(!Se(t))throw new Error("invalid ip address");return st(t)}function To(t){let e=sr(t,0,t.length);if(e==null)throw new Error("ipBuff is required");if(!Se(e))throw new Error("invalid ip address");return e}function lt(t){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,t),new Uint8Array(e)}function cr(t){return new DataView(t.buffer).getUint16(t.byteOffset)}function ct(t){let e=le(t),r=Uint8Array.from(re(e.length));return O([r,e],r.length+e.length)}function pt(t){let e=Q(t);if(t=t.slice($(e)),t.length!==e)throw new Error("inconsistent lengths");return S(t)}function Uo(t){let e;t[0]==="Q"||t[0]==="1"?e=be(E.decode(`z${t}`)).bytes:e=V.parse(t).multihash.bytes;let r=Uint8Array.from(re(e.length));return O([r,e],r.length+e.length)}function No(t){let e=Ao.decode(t),r=Uint8Array.from(re(e.length));return O([r,e],r.length+e.length)}function Do(t){let e=Q(t),r=t.slice($(e));if(r.length!==e)throw new Error("inconsistent lengths");return"u"+S(r,"base64url")}function Lo(t){let e=Q(t),r=t.slice($(e));if(r.length!==e)throw new Error("inconsistent lengths");return S(r,"base58btc")}function $o(t){let e=t.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let r=M.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=lt(n);return O([r,o],r.length+o.length)}function ko(t){let e=t.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let r=M.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=lt(n);return O([r,o],r.length+o.length)}function ar(t){let e=t.slice(0,t.length-2),r=t.slice(t.length-2),n=S(e,"base32"),o=cr(r);return`${n}:${o}`}function pr(t){t=ft(t);let e=[],r=[],n=null,o=t.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=d(i);if(a.size===0){e.push([a.code]),r.push([a.code]);continue}if(s++,s>=o.length)throw dr("invalid address: "+t);if(a.path===!0){n=ft(o.slice(s).join("/")),e.push([a.code,dt(a.code,n)]),r.push([a.code,n]);break}let u=dt(a.code,o[s]);e.push([a.code,u]),r.push([a.code,ut(a.code,u)])}return{string:ur(r),bytes:mt(e),tuples:e,stringTuples:r,path:n}}function ht(t){let e=[],r=[],n=null,o=0;for(;o<t.length;){let s=Q(t,o),i=$(s),a=d(s),u=Fo(a,t.slice(o+i));if(u===0){e.push([s]),r.push([s]),o+=i;continue}let m=t.slice(o+i,o+i+u);if(o+=u+i,o>t.length)throw dr("Invalid address Uint8Array: "+S(t,"base16"));e.push([s,m]);let l=ut(s,m);if(r.push([s,l]),a.path===!0){n=l;break}}return{bytes:Uint8Array.from(t),string:ur(r),tuples:e,stringTuples:r,path:n}}function ur(t){let e=[];return t.map(r=>{let n=d(r[0]);return e.push(n.name),r.length>1&&r[1]!=null&&e.push(r[1]),null}),ft(e.join("/"))}function mt(t){return O(t.map(e=>{let r=d(e[0]),n=Uint8Array.from(re(r.code));return e.length>1&&e[1]!=null&&(n=O([n,e[1]])),n}))}function Fo(t,e){if(t.size>0)return t.size/8;if(t.size===0)return 0;{let r=Q(e instanceof Uint8Array?e:Uint8Array.from(e));return r+$(r)}}function ft(t){return"/"+t.trim().split("/").filter(e=>e).join("/")}function dr(t){return new Error("Error parsing address: "+t)}var Mo=Symbol.for("nodejs.util.inspect.custom"),xt=Symbol.for("@multiformats/js-multiaddr/multiaddr"),Oo=[d("dns").code,d("dns4").code,d("dns6").code,d("dnsaddr").code],wt=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Ce=class t{bytes;#t;#e;#r;#n;[xt]=!0;constructor(e){e==null&&(e="");let r;if(e instanceof Uint8Array)r=ht(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);r=pr(e)}else if(fr(e))r=ht(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=r.bytes,this.#t=r.string,this.#e=r.tuples,this.#r=r.stringTuples,this.#n=r.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let e,r,n,o,s="",i=d("tcp"),a=d("udp"),u=d("ip4"),m=d("ip6"),l=d("dns6"),w=d("ip6zone");for(let[P,f]of this.stringTuples())P===w.code&&(s=`%${f??""}`),Oo.includes(P)&&(r=i.name,o=443,n=`${f??""}${s}`,e=P===l.code?6:4),(P===i.code||P===a.code)&&(r=d(P).name,o=parseInt(f??"")),(P===u.code||P===m.code)&&(r=d(P).name,n=`${f??""}${s}`,e=P===m.code?6:4);if(e==null||r==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:r,port:o}}protos(){return this.#e.map(([e])=>Object.assign({},d(e)))}protoCodes(){return this.#e.map(([e])=>e)}protoNames(){return this.#e.map(([e])=>d(e).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(e){return e=new t(e),new t(this.toString()+e.toString())}decapsulate(e){let r=e.toString(),n=this.toString(),o=n.lastIndexOf(r);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new t(n.slice(0,o))}decapsulateCode(e){let r=this.tuples();for(let n=r.length-1;n>=0;n--)if(r[n][0]===e)return new t(mt(r.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===oe.p2p.code&&e.push([n,o]),n===oe["p2p-circuit"].code&&(e=[])});let r=e.pop();if(r?.[1]!=null){let n=r[1];return n[0]==="Q"||n[0]==="1"?S(E.decode(`z${n}`),"base58btc"):S(V.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return _t(this.bytes,e.bytes)}async resolve(e){let r=this.protos().find(s=>s.resolvable);if(r==null)return[this];let n=lr.get(r.name);if(n==null)throw new wt(`no available resolver for ${r.name}`);return(await n(this,e)).map(s=>R(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let r=(e??this).protos();return!(r.length!==2||r[0].code!==4&&r[0].code!==41||r[1].code!==6&&r[1].code!==273)}[Mo](){return`Multiaddr(${this.#t})`}};var lr=new Map;function fr(t){return!!t?.[xt]}function R(t){return new Ce(t)}var zo=[d("tcp").code,d("dns").code,d("dnsaddr").code,d("dns4").code,d("dns6").code];function hr(t){let e;try{e=d("sni").code}catch{return null}for(let[r,n]of t)if(r===e&&n!==void 0)return n;return null}function mr(t){return t.some(([e,r])=>e===d("tls").code)}function C(t,e,r){let n=wr[d(t).name];if(n===void 0)throw new Error(`Can't interpret protocol ${d(t).name}`);let o=n(e,r);return t===d("ip6").code?`[${o}]`:o}var wr={ip4:(t,e)=>t,ip6:(t,e)=>e.length===0?t:`[${t}]`,tcp:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${C(r[0],r[1]??"",e)}:${t}`},udp:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${C(r[0],r[1]??"",e)}:${t}`},dnsaddr:(t,e)=>t,dns4:(t,e)=>t,dns6:(t,e)=>t,dns:(t,e)=>t,ipfs:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/ipfs/${t}`},p2p:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p/${t}`},http:(t,e)=>{let r=mr(e),n=hr(e);if(r&&n!==null)return`https://${n}`;let o=r?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=C(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},"http-path":(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");let n=C(r[0],r[1]??"",e),o=decodeURIComponent(t);return`${n}/${o}`},tls:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return C(r[0],r[1]??"",e)},sni:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return C(r[0],r[1]??"",e)},https:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");let n=C(r[0],r[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(t,e)=>{let r=mr(e),n=hr(e);if(r&&n!==null)return`wss://${n}`;let o=r?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=C(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");let n=C(r[0],r[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(t,e)=>{let r=e.pop();if(r===void 0)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p-webrtc-direct`}};function xr(t,e){let n=R(t).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=d(o[0]),i=wr[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&zo.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var gr=async t=>{if(t.readyState>=2)throw new Error("socket closed");t.readyState!==1&&await new Promise((e,r)=>{function n(){t.removeEventListener("open",o),t.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),r(i.error??new Error(`connect ECONNREFUSED ${t.url}`))}t.addEventListener("open",o),t.addEventListener("error",s)})};var br=(t,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await gr(t)}catch(s){if(s.message==="socket closed")break;throw s}if(t.readyState===t.CLOSING||t.readyState===t.CLOSED)break;t.send(o)}e.closeOnEnd!=null&&t.readyState<=1&&await new Promise((o,s)=>{t.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{t.close()})})});var Sr=At(vr(),1);function Er(t){return t instanceof ArrayBuffer||t?.constructor?.name==="ArrayBuffer"&&typeof t?.byteLength=="number"}var Cr=t=>{t.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=l=>{t.removeEventListener("open",u),t.removeEventListener("error",m),l()},u=()=>{a(s)},m=l=>{a(()=>{i(l.error??new Error(`connect ECONNREFUSED ${t.url}`))})};t.addEventListener("open",u),t.addEventListener("error",m)})},r=async function*(){let s=new Sr.EventIterator(({push:i,stop:a,fail:u})=>{let m=w=>{let y=null;typeof w.data=="string"&&(y=le(w.data)),Er(w.data)&&(y=new Uint8Array(w.data)),w.data instanceof Uint8Array&&(y=w.data),y!=null&&i(y)},l=w=>{u(w.error??new Error("Socket error"))};return t.addEventListener("message",m),t.addEventListener("error",l),t.addEventListener("close",a),()=>{t.removeEventListener("message",m),t.removeEventListener("error",l),t.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield Er(i)?new Uint8Array(i):i}(),n=t.readyState===1,o;return t.addEventListener("open",()=>{n=!0,o=null}),t.addEventListener("close",()=>{n=!1,o=null}),t.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${t.url}`))}),Object.assign(r,{connected:e})};var Ir=(t,e)=>{e=e??{};let r=Cr(t),n=e.remoteAddress,o=e.remotePort;if(t.url!=null)try{let i=new URL(t.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:br(t,e),source:r,connected:async()=>{await r.connected()},close:async()=>{(t.readyState===t.CONNECTING||t.readyState===t.OPEN)&&await new Promise(i=>{t.addEventListener("close",()=>{i()}),t.close()})},destroy:()=>{t.terminate!=null?t.terminate():t.close()},remoteAddress:n,remotePort:o,socket:t}};var Pr=WebSocket;var Vo={"http:":"ws:","https:":"wss:"},Ar="ws:",Tr=(t,e)=>{if(t.startsWith("//")&&(t=`${e?.protocol??Ar}${t}`),t.startsWith("/")&&e!=null){let n=e.protocol??Ar,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";t=`${n}//${o}${s}${t}`}let r=new URL(t);for(let[n,o]of Object.entries(Vo))r.protocol===n&&(r.protocol=o);return r};function Ur(t,e){let r=typeof window>"u"?void 0:window.location;e=e??{};let n=Tr(t,r),o=new Pr(n.toString(),e.websocket);return Ir(o,e)}function yt(){let t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}var Ae=class extends Event{type;detail;constructor(e,r){super(e),this.type=e,this.detail=r}};var Te=class extends Error{type;code;constructor(e,r,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=r??"ABORT_ERR"}};async function Nr(t,e,r){if(e==null)return t;if(e.aborted)return Promise.reject(new Te(r?.errorMessage,r?.errorCode,r?.errorName));let n,o=new Te(r?.errorMessage,r?.errorCode,r?.errorName);try{return await Promise.race([t,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var $r=At(Lr(),1),Bo=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,kr=(0,$r.default)(),Fr=Bo&&!kr;var xc=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!kr,Mr=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,gc=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",bc=typeof navigator<"u"&&navigator.product==="ReactNative";var jo=c("dns4"),_o=c("dns6"),qo=c("dnsaddr"),j=g(c("dns"),qo,jo,_o),Ue=g(c("ip4"),c("ip6")),se=g(p(Ue,c("tcp")),p(j,c("tcp"))),Ne=p(Ue,c("udp")),Qo=p(Ne,c("utp")),Go=p(Ne,c("quic")),Ho=p(Ne,c("quic-v1")),vt=g(p(se,c("ws")),p(j,c("ws"))),ie=g(p(vt,c("p2p")),vt),Et=g(p(se,c("wss")),p(j,c("wss")),p(se,c("tls"),c("ws")),p(j,c("tls"),c("ws"))),H=g(p(Et,c("p2p")),Et),St=g(p(se,c("http")),p(Ue,c("http")),p(j,c("http"))),Ct=g(p(se,c("https")),p(Ue,c("https")),p(j,c("https"))),Or=p(Ne,c("webrtc-direct"),c("certhash")),Vr=g(p(Or,c("p2p")),Or),zr=p(Ho,c("webtransport"),c("certhash"),c("certhash")),Rr=g(p(zr,c("p2p")),zr),Br=g(p(ie,c("p2p-webrtc-star"),c("p2p")),p(H,c("p2p-webrtc-star"),c("p2p")),p(ie,c("p2p-webrtc-star")),p(H,c("p2p-webrtc-star"))),Ec=g(p(ie,c("p2p-websocket-star"),c("p2p")),p(H,c("p2p-websocket-star"),c("p2p")),p(ie,c("p2p-websocket-star")),p(H,c("p2p-websocket-star"))),jr=g(p(St,c("p2p-webrtc-direct"),c("p2p")),p(Ct,c("p2p-webrtc-direct"),c("p2p")),p(St,c("p2p-webrtc-direct")),p(Ct,c("p2p-webrtc-direct"))),J=g(vt,Et,St,Ct,Br,jr,se,Qo,Go,j,Vr,Rr),Sc=g(p(J,c("p2p-stardust"),c("p2p")),p(J,c("p2p-stardust"))),B=g(p(J,c("p2p")),Br,jr,Vr,Rr,c("p2p")),Wr=g(p(B,c("p2p-circuit"),B),p(B,c("p2p-circuit")),p(c("p2p-circuit"),B),p(J,c("p2p-circuit")),p(c("p2p-circuit"),J),c("p2p-circuit")),_r=()=>g(p(Wr,_r),Wr),G=_r(),Cc=g(p(G,B,G),p(B,G),p(G,B),G,B);var Ic=g(p(G,c("webrtc"),c("p2p")),p(G,c("webrtc")),p(J,c("webrtc"),c("p2p")),p(J,c("webrtc")),c("webrtc"));function qr(t){function e(r){let n;try{n=R(r)}catch{return!1}let o=t(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function p(...t){function e(r){if(r.length<t.length)return null;let n=r;return t.some(o=>(n=typeof o=="function"?o().partialMatch(r):o.partialMatch(r),Array.isArray(n)&&(r=n),n===null)),n}return{toString:function(){return"{ "+t.join(" ")+" }"},input:t,matches:qr(e),partialMatch:e}}function g(...t){function e(n){let o=null;return t.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+t.join(" ")+" }"},input:t,matches:qr(e),partialMatch:e}}function c(t){let e=t;function r(o){let s;try{s=R(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:r,partialMatch:n}}function Qr(t){return t.filter(e=>{if(e.protoCodes().includes(290))return!1;let r=e.decapsulateCode(421);return ie.matches(r)||H.matches(r)})}function Gr(t){return t.filter(e=>{if(e.protoCodes().includes(290))return!1;let r=e.decapsulateCode(421);return H.matches(r)})}function Hr(){throw new Error("WebSocket Servers can not be created in the browser!")}function Jr(t,e,r){let n=r.logger.forComponent("libp2p:websockets:maconn"),o=r.metrics,s=r.metricPrefix??"",i={log:n,async sink(a){try{await t.sink(async function*(){for await(let u of a)u instanceof Uint8Array?yield u:yield u.subarray()}())}catch(u){u.type!=="aborted"&&n.error(u)}},source:t.source,remoteAddr:e,timeline:{open:Date.now()},async close(a={}){let u=Date.now();if(a.signal==null){let l=AbortSignal.timeout(500);a={...a,signal:l}}let m=()=>{let{host:l,port:w}=i.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",l,w,Date.now()-u),this.abort(new we("Socket close timeout"))};a.signal?.addEventListener("abort",m);try{await t.close()}catch(l){n.error("error closing WebSocket gracefully",l),this.abort(l)}finally{a.signal?.removeEventListener("abort",m),i.timeline.close=Date.now()}},abort(a){let{host:u,port:m}=i.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",u,m,a),t.destroy(),i.timeline.close=Date.now(),o?.increment({[`${s}error`]:!0})}};return t.socket.addEventListener("close",()=>{o?.increment({[`${s}close`]:!0}),i.timeline.close==null&&(i.timeline.close=Date.now())},{once:!0}),i}var It=class{log;init;logger;metrics;components;constructor(e,r){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.components=e,this.init=r,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_websockets_dialer_events_total",{label:"event",help:"Total count of WebSockets dialer events by type"})})}[Ut]=!0;[Symbol.toStringTag]="@libp2p/websockets";[Nt]=["@libp2p/transport"];async dial(e,r){this.log("dialing %s",e),r=r??{};let n=await this._connect(e,r),o=Jr(n,e,{logger:this.logger,metrics:this.metrics?.dialerEvents});this.log("new outbound connection %s",o.remoteAddr);let s=await r.upgrader.upgradeOutbound(o,r);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,r){r?.signal?.throwIfAborted();let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=yt(),s=Ur(xr(e),this.init);s.socket.addEventListener("error",()=>{let i=new xe(`Could not connect to ${e.toString()}`);this.log.error("connection error:",i),this.metrics?.dialerEvents.increment({error:!0}),o.reject(i)});try{r.onProgress?.(new Ae("websockets:open-connection")),await Nr(Promise.race([s.connected(),o.promise]),r.signal)}catch(i){throw r.signal?.aborted===!0&&this.metrics?.dialerEvents.increment({abort:!0}),s.close().catch(a=>{this.log.error("error closing raw socket",a)}),i}return this.log("connected %s",e),this.metrics?.dialerEvents.increment({connect:!0}),s}createListener(e){return Hr({logger:this.logger,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Fr||Mr?Gr(e):Qr(e)}dialFilter(e){return this.listenFilter(e)}};function Yo(t={}){return e=>new It(e,t)}return tn(es);})();
2
+ "use strict";var Libp2PWebsockets=(()=>{var on=Object.create;var we=Object.defineProperty;var sn=Object.getOwnPropertyDescriptor;var an=Object.getOwnPropertyNames;var cn=Object.getPrototypeOf,pn=Object.prototype.hasOwnProperty;var ze=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),T=(t,e)=>{for(var r in e)we(t,r,{get:e[r],enumerable:!0})},Mt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of an(e))!pn.call(t,o)&&o!==r&&we(t,o,{get:()=>e[o],enumerable:!(n=sn(e,o))||n.enumerable});return t};var Ot=(t,e,r)=>(r=t!=null?on(cn(t)):{},Mt(e||!t||!t.__esModule?we(r,"default",{value:t,enumerable:!0}):r,t)),un=t=>Mt(we({},"__esModule",{value:!0}),t);var Nr=ze(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});var At=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let r={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(r)}else this.pushQueue.push(Promise.resolve(r)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let r of this.pullQueue)r.reject(e);this.pullQueue.length=0}else{let r=Promise.reject(e);r.catch(()=>{}),this.pushQueue.push(r)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let r=this.pushQueue.shift();return r?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),r):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},Ue=class{constructor(e,{highWaterMark:r=100,lowWaterMark:n=1}={}){let o=new At;o.highWaterMark=r,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};Ne.EventIterator=Ue;Ne.default=Ue});var Dr=ze(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});var Ct=Nr();de.EventIterator=Ct.EventIterator;function qo(t,e,r){return new Ct.EventIterator(({push:n})=>(this.addEventListener(t,n,e),()=>this.removeEventListener(t,n,e)),r)}de.subscribe=qo;de.default=Ct.EventIterator});var Rr=ze((vc,Br)=>{function Go(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}Br.exports=Go});var ss={};T(ss,{webSockets:()=>os});var Vt=Symbol.for("@libp2p/transport");var zt;(function(t){t[t.FATAL_ALL=0]="FATAL_ALL",t[t.NO_FATAL=1]="NO_FATAL"})(zt||(zt={}));var ge=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var be=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}};var Wt=Symbol.for("@libp2p/service-capabilities"),ps=Symbol.for("@libp2p/service-dependencies");var _e={};T(_e,{base58btc:()=>v,base58flickr:()=>xn});var $s=new Uint8Array(0);function Bt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function z(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function Rt(t){return new TextEncoder().encode(t)}function _t(t){return new TextDecoder().decode(t)}function ln(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(r[i]!==255)throw new TypeError(s+" is ambiguous");r[i]=o}var a=t.length,c=t.charAt(0),x=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function g(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var P=0,Q=0,D=0,$=f.length;D!==$&&f[D]===0;)D++,P++;for(var F=($-D)*u+1>>>0,N=new Uint8Array(F);D!==$;){for(var k=f[D],R=0,L=F-1;(k!==0||R<Q)&&L!==-1;L--,R++)k+=256*N[L]>>>0,N[L]=k%a>>>0,k=k/a>>>0;if(k!==0)throw new Error("Non-zero carry");Q=R,D++}for(var O=F-Q;O!==F&&N[O]===0;)O++;for(var xe=c.repeat(P);O<F;++O)xe+=t.charAt(N[O]);return xe}function I(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var P=0;if(f[P]!==" "){for(var Q=0,D=0;f[P]===c;)Q++,P++;for(var $=(f.length-P)*x+1>>>0,F=new Uint8Array($);f[P];){var N=r[f.charCodeAt(P)];if(N===255)return;for(var k=0,R=$-1;(N!==0||k<D)&&R!==-1;R--,k++)N+=a*F[R]>>>0,F[R]=N%256>>>0,N=N/256>>>0;if(N!==0)throw new Error("Non-zero carry");D=k,P++}if(f[P]!==" "){for(var L=$-D;L!==$&&F[L]===0;)L++;for(var O=new Uint8Array(Q+($-L)),xe=Q;L!==$;)O[xe++]=F[L++];return O}}}function U(f){var P=I(f);if(P)return P;throw new Error(`Non-${e} character`)}return{encode:g,decodeUnsafe:I,decode:U}}var dn=ln,fn=dn,Qt=fn;var Ve=class{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},We=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){this.name=e,this.prefix=r;let o=r.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return qt(this,e)}},Be=class{decoders;constructor(e){this.decoders=e}or(e){return qt(this,e)}decode(e){let r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function qt(t,e){return new Be({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}var Re=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Ve(e,r,n),this.decoder=new We(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function G({name:t,prefix:e,encode:r,decode:n}){return new Re(t,e,r,n)}function _({name:t,prefix:e,alphabet:r}){let{encode:n,decode:o}=Qt(r,t);return G({prefix:e,name:t,encode:n,decode:s=>z(o(s))})}function hn(t,e,r,n){let o={};for(let u=0;u<e.length;++u)o[e[u]]=u;let s=t.length;for(;t[s-1]==="=";)--s;let i=new Uint8Array(s*r/8|0),a=0,c=0,x=0;for(let u=0;u<s;++u){let g=o[t[u]];if(g===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<r|g,a+=r,a>=8&&(a-=8,i[x++]=255&c>>a)}if(a>=r||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function mn(t,e,r){let n=e[e.length-1]==="=",o=(1<<r)-1,s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<r-i]),n)for(;s.length*r&7;)s+="=";return s}function b({name:t,prefix:e,bitsPerChar:r,alphabet:n}){return G({prefix:e,name:t,encode(o){return mn(o,n,r)},decode(o){return hn(o,n,r,t)}})}var v=_({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),xn=_({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var je={};T(je,{base32:()=>V,base32hex:()=>yn,base32hexpad:()=>En,base32hexpadupper:()=>Sn,base32hexupper:()=>vn,base32pad:()=>gn,base32padupper:()=>bn,base32upper:()=>wn,base32z:()=>In});var V=b({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),wn=b({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),gn=b({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bn=b({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),yn=b({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),vn=b({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),En=b({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Sn=b({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),In=b({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Qe={};T(Qe,{base36:()=>se,base36upper:()=>Pn});var se=_({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Pn=_({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var An=Jt,Ht=128,Cn=127,Tn=~Cn,Un=Math.pow(2,31);function Jt(t,e,r){e=e||[],r=r||0;for(var n=r;t>=Un;)e[r++]=t&255|Ht,t/=128;for(;t&Tn;)e[r++]=t&255|Ht,t>>>=7;return e[r]=t|0,Jt.bytes=r-n+1,e}var Nn=qe,Dn=128,Gt=127;function qe(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw qe.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&Gt)<<o:(i&Gt)*Math.pow(2,o),o+=7}while(i>=Dn);return qe.bytes=s-n,r}var Ln=Math.pow(2,7),$n=Math.pow(2,14),Fn=Math.pow(2,21),kn=Math.pow(2,28),Mn=Math.pow(2,35),On=Math.pow(2,42),zn=Math.pow(2,49),Vn=Math.pow(2,56),Wn=Math.pow(2,63),Bn=function(t){return t<Ln?1:t<$n?2:t<Fn?3:t<kn?4:t<Mn?5:t<On?6:t<zn?7:t<Vn?8:t<Wn?9:10},Rn={encode:An,decode:Nn,encodingLength:Bn},_n=Rn,ie=_n;function ae(t,e=0){return[ie.decode(t,e),ie.decode.bytes]}function J(t,e,r=0){return ie.encode(t,e,r),e}function X(t){return ie.encodingLength(t)}function q(t,e){let r=e.byteLength,n=X(t),o=n+X(r),s=new Uint8Array(o+r);return J(t,s,0),J(r,s,n),s.set(e,o),new K(t,r,e,s)}function ve(t){let e=z(t),[r,n]=ae(e),[o,s]=ae(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new K(r,o,i,e)}function Xt(t,e){if(t===e)return!0;{let r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&Bt(t.bytes,r.bytes)}}var K=class{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}};function Kt(t,e){let{bytes:r,version:n}=t;switch(n){case 0:return Qn(r,He(t),e??v.encoder);default:return qn(r,He(t),e??V.encoder)}}var Zt=new WeakMap;function He(t){let e=Zt.get(t);if(e==null){let r=new Map;return Zt.set(t,r),r}return e}var j=class t{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:r}=this;if(e!==ce)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==Hn)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return t.createV0(r)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:r}=this.multihash,n=q(e,r);return t.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return t.equals(this,e)}static equals(e,r){let n=r;return n!=null&&e.code===n.code&&e.version===n.version&&Xt(e.multihash,n.multihash)}toString(e){return Kt(this,e)}toJSON(){return{"/":Kt(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let r=e;if(r instanceof t)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){let{version:n,code:o,multihash:s,bytes:i}=r;return new t(n,o,s,i??Yt(n,o,s.bytes))}else if(r[Gn]===!0){let{version:n,multihash:o,code:s}=r,i=ve(o);return t.create(n,s,i)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==ce)throw new Error(`Version 0 CID must use dag-pb (code: ${ce}) block encoding`);return new t(e,r,n,n.bytes)}case 1:{let o=Yt(e,r,n.bytes);return new t(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return t.create(0,ce,e)}static createV1(e,r){return t.create(1,e,r)}static decode(e){let[r,n]=t.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){let r=t.inspectBytes(e),n=r.size-r.multihashSize,o=z(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");let s=o.subarray(r.multihashSize-r.digestSize),i=new K(r.multihashCode,r.digestSize,s,o);return[r.version===0?t.createV0(i):t.createV1(r.codec,i),e.subarray(r.size)]}static inspectBytes(e){let r=0,n=()=>{let[g,I]=ae(e.subarray(r));return r+=I,g},o=n(),s=ce;if(o===18?(o=0,r=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=r,a=n(),c=n(),x=r+c,u=x-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:x}}static parse(e,r){let[n,o]=jn(e,r),s=t.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return He(s).set(n,e),s}};function jn(t,e){switch(t[0]){case"Q":{let r=e??v;return[v.prefix,r.decode(`${v.prefix}${t}`)]}case v.prefix:{let r=e??v;return[v.prefix,r.decode(t)]}case V.prefix:{let r=e??V;return[V.prefix,r.decode(t)]}case se.prefix:{let r=e??se;return[se.prefix,r.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function Qn(t,e,r){let{prefix:n}=r;if(n!==v.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);let o=e.get(n);if(o==null){let s=r.encode(t).slice(1);return e.set(n,s),s}else return o}function qn(t,e,r){let{prefix:n}=r,o=e.get(n);if(o==null){let s=r.encode(t);return e.set(n,s),s}else return o}var ce=112,Hn=18;function Yt(t,e,r){let n=X(t),o=n+X(e),s=new Uint8Array(o+r.byteLength);return J(t,s,0),J(e,s,n),s.set(r,o),s}var Gn=Symbol.for("@ipld/js-cid/CID");function er(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}var Ge={};T(Ge,{base10:()=>Jn});var Jn=_({prefix:"9",name:"base10",alphabet:"0123456789"});var Je={};T(Je,{base16:()=>Xn,base16upper:()=>Kn});var Xn=b({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Kn=b({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Xe={};T(Xe,{base2:()=>Zn});var Zn=b({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ke={};T(Ke,{base256emoji:()=>no});var tr=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Yn=tr.reduce((t,e,r)=>(t[r]=e,t),[]),eo=tr.reduce((t,e,r)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function to(t){return t.reduce((e,r)=>(e+=Yn[r],e),"")}function ro(t){let e=[];for(let r of t){let n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);let o=eo[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}var no=G({prefix:"\u{1F680}",name:"base256emoji",encode:to,decode:ro});var Ye={};T(Ye,{base64:()=>oo,base64pad:()=>so,base64url:()=>Ze,base64urlpad:()=>io});var oo=b({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),so=b({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ze=b({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),io=b({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var et={};T(et,{base8:()=>ao});var ao=b({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var tt={};T(tt,{identity:()=>co});var co=G({prefix:"\0",name:"identity",encode:t=>_t(t),decode:t=>Rt(t)});var si=new TextEncoder,ii=new TextDecoder;var rt={};T(rt,{identity:()=>ho});var rr=0,lo="identity",nr=z;function fo(t){return q(rr,nr(t))}var ho={code:rr,name:lo,encode:nr,digest:fo};var st={};T(st,{sha256:()=>mo,sha512:()=>xo});function ot({name:t,code:e,encode:r}){return new nt(t,e,r)}var nt=class{name;code;encode;constructor(e,r,n){this.name=e,this.code=r,this.encode=n}digest(e){if(e instanceof Uint8Array){let r=this.encode(e);return r instanceof Uint8Array?q(this.code,r):r.then(n=>q(this.code,n))}else throw Error("Unknown type, must be binary type")}};function sr(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}var mo=ot({name:"sha2-256",code:18,encode:sr("SHA-256")}),xo=ot({name:"sha2-512",code:19,encode:sr("SHA-512")});var pe={...tt,...Xe,...et,...Ge,...Je,...je,...Qe,..._e,...Ye,...Ke},bi={...st,...rt};function Y(t=0){return new Uint8Array(t)}function ar(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}var ir=ar("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),it=ar("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);let e=Y(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),wo={utf8:ir,"utf-8":ir,hex:pe.base16,latin1:it,ascii:it,binary:it,...pe},Ee=wo;function A(t,e="utf8"){let r=Ee[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}var go=Math.pow(2,7),bo=Math.pow(2,14),yo=Math.pow(2,21),at=Math.pow(2,28),ct=Math.pow(2,35),pt=Math.pow(2,42),ut=Math.pow(2,49),h=128,E=127;function M(t){if(t<go)return 1;if(t<bo)return 2;if(t<yo)return 3;if(t<at)return 4;if(t<ct)return 5;if(t<pt)return 6;if(t<ut)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function vo(t,e,r=0){switch(M(t)){case 8:e[r++]=t&255|h,t/=128;case 7:e[r++]=t&255|h,t/=128;case 6:e[r++]=t&255|h,t/=128;case 5:e[r++]=t&255|h,t/=128;case 4:e[r++]=t&255|h,t>>>=7;case 3:e[r++]=t&255|h,t>>>=7;case 2:e[r++]=t&255|h,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function Eo(t,e,r=0){switch(M(t)){case 8:e.set(r++,t&255|h),t/=128;case 7:e.set(r++,t&255|h),t/=128;case 6:e.set(r++,t&255|h),t/=128;case 5:e.set(r++,t&255|h),t/=128;case 4:e.set(r++,t&255|h),t>>>=7;case 3:e.set(r++,t&255|h),t>>>=7;case 2:e.set(r++,t&255|h),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function So(t,e){let r=t[e],n=0;if(n+=r&E,r<h||(r=t[e+1],n+=(r&E)<<7,r<h)||(r=t[e+2],n+=(r&E)<<14,r<h)||(r=t[e+3],n+=(r&E)<<21,r<h)||(r=t[e+4],n+=(r&E)*at,r<h)||(r=t[e+5],n+=(r&E)*ct,r<h)||(r=t[e+6],n+=(r&E)*pt,r<h)||(r=t[e+7],n+=(r&E)*ut,r<h))return n;throw new RangeError("Could not decode varint")}function Io(t,e){let r=t.get(e),n=0;if(n+=r&E,r<h||(r=t.get(e+1),n+=(r&E)<<7,r<h)||(r=t.get(e+2),n+=(r&E)<<14,r<h)||(r=t.get(e+3),n+=(r&E)<<21,r<h)||(r=t.get(e+4),n+=(r&E)*at,r<h)||(r=t.get(e+5),n+=(r&E)*ct,r<h)||(r=t.get(e+6),n+=(r&E)*pt,r<h)||(r=t.get(e+7),n+=(r&E)*ut,r<h))return n;throw new RangeError("Could not decode varint")}function ee(t,e,r=0){return e==null&&(e=Y(M(t))),e instanceof Uint8Array?vo(t,e,r):Eo(t,e,r)}function H(t,e=0){return t instanceof Uint8Array?So(t,e):Io(t,e)}function W(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));let r=Y(e),n=0;for(let o of t)r.set(o,n),n+=o.length;return r}var Se=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let r=this.index,n=e();return n===void 0&&(this.index=r),n}parseWith(e){let r=e();if(this.index===this.input.length)return r}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let r=this.readChar();if(r===e)return r})}readSeparator(e,r,n){return this.readAtomically(()=>{if(!(r>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,r,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",x=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let g=this.readChar();if(g===void 0)return;let I=Number.parseInt(g,e);if(!Number.isNaN(I))return I});if(u===void 0)break;if(s*=e,s+=u,s>x||(i+=1,r!==void 0&&i>r))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let r=0;r<e.length;r++){let n=this.readSeparator(".",r,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[r]=n}return e})}readIPv6Addr(){let e=r=>{for(let n=0;n<r.length/2;n++){let o=n*2;if(n<r.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return r[o]=i[0],r[o+1]=i[1],r[o+2]=i[2],r[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];r[o]=s>>8,r[o+1]=s&255}return[r.length,!1]};return this.readAtomically(()=>{let r=new Uint8Array(16),[n,o]=e(r);if(n===16)return r;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return r.set(s.subarray(0,a),16-a),r})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var pr=45,Po=15,te=new Se;function lt(t){if(!(t.length>Po))return te.new(t).parseWith(()=>te.readIPv4Addr())}function dt(t){if(t.includes("%")&&(t=t.split("%")[0]),!(t.length>pr))return te.new(t).parseWith(()=>te.readIPv6Addr())}function Ie(t){if(t.includes("%")&&(t=t.split("%")[0]),!(t.length>pr))return te.new(t).parseWith(()=>te.readIPAddr())}var Ri=parseInt("0xFFFF",16),_i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function ue(t,e="utf8"){let r=Ee[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function Pe(t){return!!lt(t)}function Ae(t){return!!dt(t)}function Ce(t){return!!Ie(t)}var dr=Pe,No=Ae,ft=function(t){let e=0;if(t=t.toString().trim(),dr(t)){let r=new Uint8Array(e+4);return t.split(/\./g).forEach(n=>{r[e++]=parseInt(n,10)&255}),r}if(No(t)){let r=t.split(":",8),n;for(n=0;n<r.length;n++){let s=dr(r[n]),i;s&&(i=ft(r[n]),r[n]=A(i.slice(0,2),"base16")),i!=null&&++n<8&&r.splice(n,0,A(i.slice(2,4),"base16"))}if(r[0]==="")for(;r.length<8;)r.unshift("0");else if(r[r.length-1]==="")for(;r.length<8;)r.push("0");else if(r.length<8){for(n=0;n<r.length&&r[n]!=="";n++);let s=[n,1];for(n=9-r.length;n>0;n--)s.push("0");r.splice.apply(r,s)}let o=new Uint8Array(e+16);for(n=0;n<r.length;n++){let s=parseInt(r[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},fr=function(t,e=0,r){e=~~e,r=r??t.length-e;let n=new DataView(t.buffer);if(r===4){let o=[];for(let s=0;s<r;s++)o.push(t[e+s]);return o.join(".")}if(r===16){let o=[];for(let s=0;s<r;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var re={},ht={},Lo=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Lo.forEach(t=>{let e=$o(...t);ht[e.code]=e,re[e.name]=e});function $o(t,e,r,n,o){return{code:t,size:e,name:r,resolvable:!!n,path:!!o}}function p(t){if(typeof t=="number"){if(ht[t]!=null)return ht[t];throw new Error(`no protocol with code: ${t}`)}else if(typeof t=="string"){if(re[t]!=null)return re[t];throw new Error(`no protocol with name: ${t}`)}throw new Error(`invalid protocol id type: ${typeof t}`)}var Ta=p("ip4"),Ua=p("ip6"),Na=p("ipcidr");function gt(t,e){switch(p(t).code){case 4:case 41:return ko(e);case 42:return wt(e);case 6:case 273:case 33:case 132:return xr(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return wt(e);case 421:return Vo(e);case 444:return mr(e);case 445:return mr(e);case 466:return zo(e);case 481:return globalThis.encodeURIComponent(wt(e));default:return A(e,"base16")}}function bt(t,e){switch(p(t).code){case 4:return hr(e);case 41:return hr(e);case 42:return xt(e);case 6:case 273:case 33:case 132:return yt(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return xt(e);case 421:return Mo(e);case 444:return Wo(e);case 445:return Bo(e);case 466:return Oo(e);case 481:return xt(globalThis.decodeURIComponent(e));default:return ue(e,"base16")}}var mt=Object.values(pe).map(t=>t.decoder),Fo=function(){let t=mt[0].or(mt[1]);return mt.slice(2).forEach(e=>t=t.or(e)),t}();function hr(t){if(!Ce(t))throw new Error("invalid ip address");return ft(t)}function ko(t){let e=fr(t,0,t.length);if(e==null)throw new Error("ipBuff is required");if(!Ce(e))throw new Error("invalid ip address");return e}function yt(t){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,t),new Uint8Array(e)}function xr(t){return new DataView(t.buffer).getUint16(t.byteOffset)}function xt(t){let e=ue(t),r=Uint8Array.from(ee(e.length));return W([r,e],r.length+e.length)}function wt(t){let e=H(t);if(t=t.slice(M(e)),t.length!==e)throw new Error("inconsistent lengths");return A(t)}function Mo(t){let e;t[0]==="Q"||t[0]==="1"?e=ve(v.decode(`z${t}`)).bytes:e=j.parse(t).multihash.bytes;let r=Uint8Array.from(ee(e.length));return W([r,e],r.length+e.length)}function Oo(t){let e=Fo.decode(t),r=Uint8Array.from(ee(e.length));return W([r,e],r.length+e.length)}function zo(t){let e=H(t),r=t.slice(M(e));if(r.length!==e)throw new Error("inconsistent lengths");return"u"+A(r,"base64url")}function Vo(t){let e=H(t),r=t.slice(M(e));if(r.length!==e)throw new Error("inconsistent lengths");return A(r,"base58btc")}function Wo(t){let e=t.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let r=V.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=yt(n);return W([r,o],r.length+o.length)}function Bo(t){let e=t.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let r=V.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=yt(n);return W([r,o],r.length+o.length)}function mr(t){let e=t.slice(0,t.length-2),r=t.slice(t.length-2),n=A(e,"base32"),o=xr(r);return`${n}:${o}`}function wr(t){t=vt(t);let e=[],r=[],n=null,o=t.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=p(i);if(a.size===0){e.push([a.code]),r.push([a.code]);continue}if(s++,s>=o.length)throw br("invalid address: "+t);if(a.path===!0){n=vt(o.slice(s).join("/")),e.push([a.code,bt(a.code,n)]),r.push([a.code,n]);break}let c=bt(a.code,o[s]);e.push([a.code,c]),r.push([a.code,gt(a.code,c)])}return{string:gr(r),bytes:St(e),tuples:e,stringTuples:r,path:n}}function Et(t){let e=[],r=[],n=null,o=0;for(;o<t.length;){let s=H(t,o),i=M(s),a=p(s),c=Ro(a,t.slice(o+i));if(c===0){e.push([s]),r.push([s]),o+=i;continue}let x=t.slice(o+i,o+i+c);if(o+=c+i,o>t.length)throw br("Invalid address Uint8Array: "+A(t,"base16"));e.push([s,x]);let u=gt(s,x);if(r.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(t),string:gr(r),tuples:e,stringTuples:r,path:n}}function gr(t){let e=[];return t.map(r=>{let n=p(r[0]);return e.push(n.name),r.length>1&&r[1]!=null&&e.push(r[1]),null}),vt(e.join("/"))}function St(t){return W(t.map(e=>{let r=p(e[0]),n=Uint8Array.from(ee(r.code));return e.length>1&&e[1]!=null&&(n=W([n,e[1]])),n}))}function Ro(t,e){if(t.size>0)return t.size/8;if(t.size===0)return 0;{let r=H(e instanceof Uint8Array?e:Uint8Array.from(e));return r+M(r)}}function vt(t){return"/"+t.trim().split("/").filter(e=>e).join("/")}function br(t){return new Error("Error parsing address: "+t)}var _o=Symbol.for("nodejs.util.inspect.custom"),Pt=Symbol.for("@multiformats/js-multiaddr/multiaddr"),jo=[p("dns").code,p("dns4").code,p("dns6").code,p("dnsaddr").code],It=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Te=class t{bytes;#t;#e;#r;#n;[Pt]=!0;constructor(e){e==null&&(e="");let r;if(e instanceof Uint8Array)r=Et(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);r=wr(e)}else if(vr(e))r=Et(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=r.bytes,this.#t=r.string,this.#e=r.tuples,this.#r=r.stringTuples,this.#n=r.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let e,r,n,o,s="",i=p("tcp"),a=p("udp"),c=p("ip4"),x=p("ip6"),u=p("dns6"),g=p("ip6zone");for(let[U,f]of this.stringTuples())U===g.code&&(s=`%${f??""}`),jo.includes(U)&&(r=i.name,o=443,n=`${f??""}${s}`,e=U===u.code?6:4),(U===i.code||U===a.code)&&(r=p(U).name,o=parseInt(f??"")),(U===c.code||U===x.code)&&(r=p(U).name,n=`${f??""}${s}`,e=U===x.code?6:4);if(e==null||r==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:r,port:o}}protos(){return this.#e.map(([e])=>Object.assign({},p(e)))}protoCodes(){return this.#e.map(([e])=>e)}protoNames(){return this.#e.map(([e])=>p(e).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(e){return e=new t(e),new t(this.toString()+e.toString())}decapsulate(e){let r=e.toString(),n=this.toString(),o=n.lastIndexOf(r);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new t(n.slice(0,o))}decapsulateCode(e){let r=this.tuples();for(let n=r.length-1;n>=0;n--)if(r[n][0]===e)return new t(St(r.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===re.p2p.code&&e.push([n,o]),n===re["p2p-circuit"].code&&(e=[])});let r=e.pop();if(r?.[1]!=null){let n=r[1];return n[0]==="Q"||n[0]==="1"?A(v.decode(`z${n}`),"base58btc"):A(j.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return er(this.bytes,e.bytes)}async resolve(e){let r=this.protos().find(s=>s.resolvable);if(r==null)return[this];let n=yr.get(r.name);if(n==null)throw new It(`no available resolver for ${r.name}`);return(await n(this,e)).map(s=>le(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let r=(e??this).protos();return!(r.length!==2||r[0].code!==4&&r[0].code!==41||r[1].code!==6&&r[1].code!==273)}[_o](){return`Multiaddr(${this.#t})`}};var yr=new Map;function vr(t){return!!t?.[Pt]}function le(t){return new Te(t)}var Qo=[p("tcp").code,p("dns").code,p("dnsaddr").code,p("dns4").code,p("dns6").code];function Er(t){return Pr("sni",t)?.[1]}function Sr(t){let e=Pr("tcp",t)?.[1];return e==null?"":`:${e}`}function Pr(t,e){let r;try{r=p(t).code}catch{return}for(let[n,o]of e)if(n===r&&o!=null)return[n,o]}function Ir(t){return t.some(([e,r])=>e===p("tls").code)}function C(t,e,r){let n=Ar[p(t).name];if(n==null)throw new Error(`Can't interpret protocol ${p(t).name}`);let o=n(e,r);return t===p("ip6").code?`[${o}]`:o}var Ar={ip4:(t,e)=>t,ip6:(t,e)=>e.length===0?t:`[${t}]`,tcp:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`tcp://${C(r[0],r[1]??"",e)}:${t}`},udp:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`udp://${C(r[0],r[1]??"",e)}:${t}`},dnsaddr:(t,e)=>t,dns4:(t,e)=>t,dns6:(t,e)=>t,dns:(t,e)=>t,ipfs:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/ipfs/${t}`},p2p:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p/${t}`},http:(t,e)=>{let r=Ir(e),n=Er(e),o=Sr(e);if(r&&n!=null)return`https://${n}${o}`;let s=r?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=C(i[0],i[1]??"",e);return a=a.replace("tcp://",""),`${s}${a}`},"http-path":(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");let n=C(r[0],r[1]??"",e),o=decodeURIComponent(t);return`${n}/${o}`},tls:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return C(r[0],r[1]??"",e)},sni:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return C(r[0],r[1]??"",e)},https:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");let n=C(r[0],r[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(t,e)=>{let r=Ir(e),n=Er(e),o=Sr(e);if(r&&n!=null)return`wss://${n}${o}`;let s=r?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=C(i[0],i[1]??"",e);return a=a.replace("tcp://",""),`${s}${a}`},wss:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");let n=C(r[0],r[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`${C(r[0],r[1]??"",e)}/p2p-webrtc-direct`}};function Cr(t,e){let n=le(t).stringTuples(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=p(o[0]),i=Ar[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&Qo.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://")||a.startsWith("ws://")||a.startsWith("wss://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var Tr=async t=>{if(t.readyState>=2)throw new Error("socket closed");t.readyState!==1&&await new Promise((e,r)=>{function n(){t.removeEventListener("open",o),t.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),r(i.error??new Error(`connect ECONNREFUSED ${t.url}`))}t.addEventListener("open",o),t.addEventListener("error",s)})};var Ur=(t,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await Tr(t)}catch(s){if(s.message==="socket closed")break;throw s}if(t.readyState===t.CLOSING||t.readyState===t.CLOSED)break;t.send(o)}e.closeOnEnd!=null&&t.readyState<=1&&await new Promise((o,s)=>{t.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{t.close()})})});var $r=Ot(Dr(),1);function Lr(t){return t instanceof ArrayBuffer||t?.constructor?.name==="ArrayBuffer"&&typeof t?.byteLength=="number"}var Fr=t=>{t.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=u=>{t.removeEventListener("open",c),t.removeEventListener("error",x),u()},c=()=>{a(s)},x=u=>{a(()=>{i(u.error??new Error(`connect ECONNREFUSED ${t.url}`))})};t.addEventListener("open",c),t.addEventListener("error",x)})},r=async function*(){let s=new $r.EventIterator(({push:i,stop:a,fail:c})=>{let x=g=>{let I=null;typeof g.data=="string"&&(I=ue(g.data)),Lr(g.data)&&(I=new Uint8Array(g.data)),g.data instanceof Uint8Array&&(I=g.data),I!=null&&i(I)},u=g=>{c(g.error??new Error("Socket error"))};return t.addEventListener("message",x),t.addEventListener("error",u),t.addEventListener("close",a),()=>{t.removeEventListener("message",x),t.removeEventListener("error",u),t.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield Lr(i)?new Uint8Array(i):i}(),n=t.readyState===1,o;return t.addEventListener("open",()=>{n=!0,o=null}),t.addEventListener("close",()=>{n=!1,o=null}),t.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${t.url}`))}),Object.assign(r,{connected:e})};var kr=(t,e)=>{e=e??{};let r=Fr(t),n=e.remoteAddress,o=e.remotePort;if(t.url!=null)try{let i=new URL(t.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:Ur(t,e),source:r,connected:async()=>{await r.connected()},close:async()=>{(t.readyState===t.CONNECTING||t.readyState===t.OPEN)&&await new Promise(i=>{t.addEventListener("close",()=>{i()}),t.close()})},destroy:()=>{t.terminate!=null?t.terminate():t.close()},remoteAddress:n,remotePort:o,socket:t}};var Mr=WebSocket;var Ho={"http:":"ws:","https:":"wss:"},Or="ws:",zr=(t,e)=>{if(t.startsWith("//")&&(t=`${e?.protocol??Or}${t}`),t.startsWith("/")&&e!=null){let n=e.protocol??Or,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";t=`${n}//${o}${s}${t}`}let r=new URL(t);for(let[n,o]of Object.entries(Ho))r.protocol===n&&(r.protocol=o);return r};function Vr(t,e){let r=typeof window>"u"?void 0:window.location;e=e??{};let n=zr(t,r),o=new Mr(n.toString(),e.websocket);return kr(o,e)}function Tt(){let t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}var De=class extends Event{type;detail;constructor(e,r){super(e),this.type=e,this.detail=r}};var Le=class extends Error{type;code;constructor(e,r,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=r??"ABORT_ERR"}};async function Wr(t,e,r){if(e==null)return t;if(e.aborted)return Promise.reject(new Le(r?.errorMessage,r?.errorCode,r?.errorName));let n,o=new Le(r?.errorMessage,r?.errorCode,r?.errorName);try{return await Promise.race([t,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var _r=Ot(Rr(),1),Jo=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,jr=(0,_r.default)(),Qr=Jo&&!jr;var Ec=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!jr,qr=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Sc=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",Ic=typeof navigator<"u"&&navigator.product==="ReactNative";var Xo=t=>t.toString().split("/").slice(1),ne=t=>({match:e=>e.length<1?!1:t(e[0])?e.slice(1):!1,pattern:"fn"}),l=t=>({match:e=>ne(r=>r===t).match(e),pattern:t}),oe=()=>({match:t=>ne(e=>typeof e=="string").match(t),pattern:"{string}"}),fe=()=>({match:t=>ne(e=>!isNaN(parseInt(e))).match(t),pattern:"{number}"}),w=()=>({match:t=>{if(t.length<2||t[0]!=="p2p"&&t[0]!=="ipfs")return!1;if(t[1].startsWith("Q")||t[1].startsWith("1"))try{v.decode(`z${t[1]}`)}catch{return!1}else return!1;return t.slice(2)},pattern:"/p2p/{peerid}"}),he=()=>({match:t=>{if(t.length<2||t[0]!=="certhash")return!1;try{Ze.decode(t[1])}catch{return!1}return t.slice(2)},pattern:"/certhash/{certhash}"}),m=t=>({match:e=>{let r=t.match(e);return r===!1?e:r},pattern:`optional(${t.pattern})`}),S=(...t)=>({match:e=>{let r;for(let n of t){let o=n.match(e);o!==!1&&(r==null||o.length<r.length)&&(r=o)}return r??!1},pattern:`or(${t.map(e=>e.pattern).join(", ")})`}),d=(...t)=>({match:e=>{for(let r of t){let n=r.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${t.map(e=>e.pattern).join(", ")})`});function y(...t){function e(o){let s=Xo(o);for(let i of t){let a=i.match(s);if(a===!1)return!1;s=a}return s}function r(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:t,matches:r,exactMatch:n}}var Fe=d(l("dns4"),oe()),ke=d(l("dns6"),oe()),Me=d(l("dnsaddr"),oe()),Nt=d(l("dns"),oe()),Dc=y(Fe,m(w())),Lc=y(ke,m(w())),$c=y(Me,m(w())),Ko=y(S(Nt,Me,Fe,ke),m(w())),Hr=d(l("ip4"),ne(Pe)),Gr=d(l("ip6"),ne(Ae)),Dt=S(Hr,Gr),B=S(Dt,Nt,Fe,ke,Me),Fc=y(S(Dt,d(S(Nt,Me,Fe,ke),m(w())))),kc=y(Hr),Mc=y(Gr),Oc=y(Dt),Lt=d(B,l("tcp"),fe()),me=d(B,l("udp"),fe()),zc=y(d(Lt,m(w()))),Vc=y(me),$t=d(me,l("quic")),Oe=d(me,l("quic-v1")),Zo=S($t,Oe),Wc=y($t),Bc=y(Oe),Ut=S(B,Lt,me,$t,Oe),Jr=S(d(Ut,l("ws"),m(w()))),Xr=y(Jr),Kr=S(d(Ut,l("wss"),m(w())),d(Ut,l("tls"),m(d(l("sni"),oe())),l("ws"),m(w()))),Ft=y(Kr),Zr=d(me,l("webrtc-direct"),m(he()),m(he()),m(w())),Rc=y(Zr),Yr=d(Oe,l("webtransport"),m(he()),m(he()),m(w())),_c=y(Yr),$e=S(Jr,Kr,d(Lt,m(w())),d(Zo,m(w())),d(B,m(w())),Zr,Yr,w()),jc=y($e),Yo=d($e,l("p2p-circuit"),w()),Qc=y(Yo),es=S(d($e,l("p2p-circuit"),l("webrtc"),m(w())),d($e,l("webrtc"),m(w())),l("webrtc")),qc=y(es),ts=S(d(B,l("tcp"),fe(),l("http"),m(w())),d(B,l("http"),m(w()))),Hc=y(ts),rs=S(d(B,l("tcp"),S(d(l("443"),l("http")),d(fe(),l("https"))),m(w())),d(B,l("tls"),l("http"),m(w())),d(B,l("https"),m(w()))),Gc=y(rs);function en(t){return t.filter(e=>Ft.exactMatch(e)||Xr.exactMatch(e))}function tn(t){return t.filter(e=>Ft.exactMatch(e))}function rn(){throw new Error("WebSocket Servers can not be created in the browser!")}function nn(t,e,r){let n=r.logger.forComponent("libp2p:websockets:maconn"),o=r.metrics,s=r.metricPrefix??"",i={log:n,async sink(a){try{await t.sink(async function*(){for await(let c of a)c instanceof Uint8Array?yield c:yield c.subarray()}())}catch(c){c.type!=="aborted"&&n.error(c)}},source:t.source,remoteAddr:e,timeline:{open:Date.now()},async close(a={}){let c=Date.now();if(a.signal==null){let u=AbortSignal.timeout(500);a={...a,signal:u}}let x=()=>{let{host:u,port:g}=i.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",u,g,Date.now()-c),this.abort(new ge("Socket close timeout"))};a.signal?.addEventListener("abort",x);try{await t.close()}catch(u){n.error("error closing WebSocket gracefully",u),this.abort(u)}finally{a.signal?.removeEventListener("abort",x),i.timeline.close=Date.now()}},abort(a){let{host:c,port:x}=i.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",c,x,a),t.destroy(),i.timeline.close=Date.now(),o?.increment({[`${s}error`]:!0})}};return t.socket.addEventListener("close",()=>{o?.increment({[`${s}close`]:!0}),i.timeline.close==null&&(i.timeline.close=Date.now())},{once:!0}),i}var kt=class{log;init;logger;metrics;components;constructor(e,r){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.components=e,this.init=r,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_websockets_dialer_events_total",{label:"event",help:"Total count of WebSockets dialer events by type"})})}[Vt]=!0;[Symbol.toStringTag]="@libp2p/websockets";[Wt]=["@libp2p/transport"];async dial(e,r){this.log("dialing %s",e),r=r??{};let n=await this._connect(e,r),o=nn(n,e,{logger:this.logger,metrics:this.metrics?.dialerEvents});this.log("new outbound connection %s",o.remoteAddr);let s=await r.upgrader.upgradeOutbound(o,r);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,r){r?.signal?.throwIfAborted();let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=Tt(),s=Vr(Cr(e),this.init);s.socket.addEventListener("error",()=>{let i=new be(`Could not connect to ${e.toString()}`);this.log.error("connection error:",i),this.metrics?.dialerEvents.increment({error:!0}),o.reject(i)});try{r.onProgress?.(new De("websockets:open-connection")),await Wr(Promise.race([s.connected(),o.promise]),r.signal)}catch(i){throw r.signal?.aborted===!0&&this.metrics?.dialerEvents.increment({abort:!0}),s.close().catch(a=>{this.log.error("error closing raw socket",a)}),i}return this.log("connected %s",e),this.metrics?.dialerEvents.increment({connect:!0}),s}createListener(e){return rn({logger:this.logger,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Qr||qr?tn(e):en(e)}dialFilter(e){return this.listenFilter(e)}};function os(t={}){return e=>new kt(e,t)}return un(ss);})();
3
3
  return Libp2PWebsockets}));
@@ -1,7 +1,2 @@
1
- export declare const CODE_P2P = 421;
2
- export declare const CODE_CIRCUIT = 290;
3
- export declare const CODE_TCP = 6;
4
- export declare const CODE_WS = 477;
5
- export declare const CODE_WSS = 478;
6
1
  export declare const CLOSE_TIMEOUT = 500;
7
2
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,MAAM,CAAA;AAC3B,eAAO,MAAM,YAAY,MAAM,CAAA;AAE/B,eAAO,MAAM,QAAQ,IAAI,CAAA;AACzB,eAAO,MAAM,OAAO,MAAM,CAAA;AAC1B,eAAO,MAAM,QAAQ,MAAM,CAAA;AAG3B,eAAO,MAAM,aAAa,MAAM,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,MAAM,CAAA"}
@@ -1,9 +1,3 @@
1
- // p2p multi-address code
2
- export const CODE_P2P = 421;
3
- export const CODE_CIRCUIT = 290;
4
- export const CODE_TCP = 6;
5
- export const CODE_WS = 477;
6
- export const CODE_WSS = 478;
7
1
  // Time to wait for a connection to close gracefully before destroying it manually
8
2
  export const CLOSE_TIMEOUT = 500;
9
3
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAA;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAA;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAE3B,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/filters.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,wBAAgB,GAAG,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAWzD;AAED,wBAAgB,GAAG,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAUzD;AAED,wBAAgB,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAW5D;AAED,wBAAgB,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAiBhE"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/filters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,wBAAgB,GAAG,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAIzD;AAED,wBAAgB,GAAG,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAIzD;AAED,wBAAgB,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAI5D;AAED,wBAAgB,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAIhE"}
@@ -1,47 +1,22 @@
1
- import * as mafmt from '@multiformats/mafmt';
2
- import { CODE_CIRCUIT, CODE_P2P, CODE_TCP, CODE_WS, CODE_WSS } from './constants.js';
1
+ import { WebSocketsSecure, WebSockets, DNS } from '@multiformats/multiaddr-matcher';
3
2
  export function all(multiaddrs) {
4
3
  return multiaddrs.filter((ma) => {
5
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
6
- return false;
7
- }
8
- const testMa = ma.decapsulateCode(CODE_P2P);
9
- return mafmt.WebSockets.matches(testMa) ||
10
- mafmt.WebSocketsSecure.matches(testMa);
4
+ return WebSocketsSecure.exactMatch(ma) || WebSockets.exactMatch(ma);
11
5
  });
12
6
  }
13
7
  export function wss(multiaddrs) {
14
8
  return multiaddrs.filter((ma) => {
15
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
16
- return false;
17
- }
18
- const testMa = ma.decapsulateCode(CODE_P2P);
19
- return mafmt.WebSocketsSecure.matches(testMa);
9
+ return WebSocketsSecure.exactMatch(ma);
20
10
  });
21
11
  }
22
12
  export function dnsWss(multiaddrs) {
23
13
  return multiaddrs.filter((ma) => {
24
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
25
- return false;
26
- }
27
- const testMa = ma.decapsulateCode(CODE_P2P);
28
- return mafmt.WebSocketsSecure.matches(testMa) &&
29
- mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS));
14
+ return DNS.matches(ma) && WebSocketsSecure.exactMatch(ma);
30
15
  });
31
16
  }
32
17
  export function dnsWsOrWss(multiaddrs) {
33
18
  return multiaddrs.filter((ma) => {
34
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
35
- return false;
36
- }
37
- const testMa = ma.decapsulateCode(CODE_P2P);
38
- // WS
39
- if (mafmt.WebSockets.matches(testMa)) {
40
- return mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WS));
41
- }
42
- // WSS
43
- return mafmt.WebSocketsSecure.matches(testMa) &&
44
- mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS));
19
+ return DNS.matches(ma) && (WebSocketsSecure.exactMatch(ma) || WebSockets.exactMatch(ma));
45
20
  });
46
21
  }
47
22
  //# sourceMappingURL=filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAGvB,MAAM,UAAU,GAAG,CAAE,UAAuB;IAC1C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAE,UAAuB;IAC1C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAO,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAE,UAAuB;IAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAO,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,UAAuB;IACjD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAE3C,KAAK;QACL,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;QACrF,CAAC;QAED,MAAM;QACN,OAAO,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAGnF,MAAM,UAAU,GAAG,CAAE,UAAuB;IAC1C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,OAAO,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAE,UAAuB;IAC1C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,OAAO,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAE,UAAuB;IAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,UAAuB;IACjD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1F,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/websockets",
3
- "version": "9.0.10",
3
+ "version": "9.0.11-ad5cfd66a",
4
4
  "description": "JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-websockets#readme",
@@ -74,10 +74,10 @@
74
74
  "test:electron-main": "aegir test -t electron-main -f ./dist/test/node.js --cov"
75
75
  },
76
76
  "dependencies": {
77
- "@libp2p/interface": "^2.2.0",
78
- "@libp2p/utils": "^6.1.3",
79
- "@multiformats/mafmt": "^12.1.6",
77
+ "@libp2p/interface": "2.2.0-ad5cfd66a",
78
+ "@libp2p/utils": "6.1.3-ad5cfd66a",
80
79
  "@multiformats/multiaddr": "^12.2.3",
80
+ "@multiformats/multiaddr-matcher": "^1.4.0",
81
81
  "@multiformats/multiaddr-to-uri": "^10.0.1",
82
82
  "@types/ws": "^8.5.10",
83
83
  "it-ws": "^6.1.1",
@@ -88,8 +88,8 @@
88
88
  "ws": "^8.17.0"
89
89
  },
90
90
  "devDependencies": {
91
- "@libp2p/interface-compliance-tests": "^6.1.8",
92
- "@libp2p/logger": "^5.1.3",
91
+ "@libp2p/interface-compliance-tests": "6.1.8-ad5cfd66a",
92
+ "@libp2p/logger": "5.1.3-ad5cfd66a",
93
93
  "aegir": "^44.0.1",
94
94
  "is-loopback-addr": "^2.0.2",
95
95
  "it-all": "^3.0.6",
package/src/constants.ts CHANGED
@@ -1,10 +1,2 @@
1
- // p2p multi-address code
2
- export const CODE_P2P = 421
3
- export const CODE_CIRCUIT = 290
4
-
5
- export const CODE_TCP = 6
6
- export const CODE_WS = 477
7
- export const CODE_WSS = 478
8
-
9
1
  // Time to wait for a connection to close gracefully before destroying it manually
10
2
  export const CLOSE_TIMEOUT = 500
package/src/filters.ts CHANGED
@@ -1,66 +1,26 @@
1
- import * as mafmt from '@multiformats/mafmt'
2
- import {
3
- CODE_CIRCUIT,
4
- CODE_P2P,
5
- CODE_TCP,
6
- CODE_WS,
7
- CODE_WSS
8
- } from './constants.js'
1
+ import { WebSocketsSecure, WebSockets, DNS } from '@multiformats/multiaddr-matcher'
9
2
  import type { Multiaddr } from '@multiformats/multiaddr'
10
3
 
11
4
  export function all (multiaddrs: Multiaddr[]): Multiaddr[] {
12
5
  return multiaddrs.filter((ma) => {
13
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
14
- return false
15
- }
16
-
17
- const testMa = ma.decapsulateCode(CODE_P2P)
18
-
19
- return mafmt.WebSockets.matches(testMa) ||
20
- mafmt.WebSocketsSecure.matches(testMa)
6
+ return WebSocketsSecure.exactMatch(ma) || WebSockets.exactMatch(ma)
21
7
  })
22
8
  }
23
9
 
24
10
  export function wss (multiaddrs: Multiaddr[]): Multiaddr[] {
25
11
  return multiaddrs.filter((ma) => {
26
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
27
- return false
28
- }
29
-
30
- const testMa = ma.decapsulateCode(CODE_P2P)
31
-
32
- return mafmt.WebSocketsSecure.matches(testMa)
12
+ return WebSocketsSecure.exactMatch(ma)
33
13
  })
34
14
  }
35
15
 
36
16
  export function dnsWss (multiaddrs: Multiaddr[]): Multiaddr[] {
37
17
  return multiaddrs.filter((ma) => {
38
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
39
- return false
40
- }
41
-
42
- const testMa = ma.decapsulateCode(CODE_P2P)
43
-
44
- return mafmt.WebSocketsSecure.matches(testMa) &&
45
- mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS))
18
+ return DNS.matches(ma) && WebSocketsSecure.exactMatch(ma)
46
19
  })
47
20
  }
48
21
 
49
22
  export function dnsWsOrWss (multiaddrs: Multiaddr[]): Multiaddr[] {
50
23
  return multiaddrs.filter((ma) => {
51
- if (ma.protoCodes().includes(CODE_CIRCUIT)) {
52
- return false
53
- }
54
-
55
- const testMa = ma.decapsulateCode(CODE_P2P)
56
-
57
- // WS
58
- if (mafmt.WebSockets.matches(testMa)) {
59
- return mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WS))
60
- }
61
-
62
- // WSS
63
- return mafmt.WebSocketsSecure.matches(testMa) &&
64
- mafmt.DNS.matches(testMa.decapsulateCode(CODE_TCP).decapsulateCode(CODE_WSS))
24
+ return DNS.matches(ma) && (WebSocketsSecure.exactMatch(ma) || WebSockets.exactMatch(ma))
65
25
  })
66
26
  }
@@ -1,20 +0,0 @@
1
- {
2
- "all": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.all.html",
3
- "./filters:all": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.all.html",
4
- "dnsWsOrWss": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.dnsWsOrWss.html",
5
- "./filters:dnsWsOrWss": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.dnsWsOrWss.html",
6
- "dnsWss": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.dnsWss.html",
7
- "./filters:dnsWss": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.dnsWss.html",
8
- "wss": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.wss.html",
9
- "./filters:wss": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.filters.wss.html",
10
- "WebSocketsComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_websockets.index.WebSocketsComponents.html",
11
- ".:WebSocketsComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_websockets.index.WebSocketsComponents.html",
12
- "WebSocketsInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_websockets.index.WebSocketsInit.html",
13
- ".:WebSocketsInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_websockets.index.WebSocketsInit.html",
14
- "WebSocketsMetrics": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_websockets.index.WebSocketsMetrics.html",
15
- ".:WebSocketsMetrics": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_websockets.index.WebSocketsMetrics.html",
16
- "WebSocketsDialEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_websockets.index.WebSocketsDialEvents.html",
17
- ".:WebSocketsDialEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_websockets.index.WebSocketsDialEvents.html",
18
- "webSockets": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.index.webSockets.html",
19
- ".:webSockets": "https://libp2p.github.io/js-libp2p/functions/_libp2p_websockets.index.webSockets.html"
20
- }