@libp2p/websockets
Version:
JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec
5 lines (4 loc) • 47.6 kB
JavaScript
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PWebsockets = factory()}(typeof self !== 'undefined' ? self : this, function () {
;var Libp2PWebsockets=(()=>{var Xr=Object.create;var we=Object.defineProperty;var Kr=Object.getOwnPropertyDescriptor;var Zr=Object.getOwnPropertyNames;var Yr=Object.getPrototypeOf,en=Object.prototype.hasOwnProperty;var Mt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),C=(t,e)=>{for(var r in e)we(t,r,{get:e[r],enumerable:!0})},Ot=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Zr(e))!en.call(t,o)&&o!==r&&we(t,o,{get:()=>e[o],enumerable:!(n=Kr(e,o))||n.enumerable});return t};var tn=(t,e,r)=>(r=t!=null?Xr(Yr(t)):{},Ot(e||!t||!t.__esModule?we(r,"default",{value:t,enumerable:!0}):r,t)),rn=t=>Ot(we({},"__esModule",{value:!0}),t);var Tr=Mt(Le=>{"use strict";Object.defineProperty(Le,"__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}))}}},De=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)}};Le.EventIterator=De;Le.default=De});var Ur=Mt(fe=>{"use strict";Object.defineProperty(fe,"__esModule",{value:!0});var Ct=Tr();fe.EventIterator=Ct.EventIterator;function _o(t,e,r){return new Ct.EventIterator(({push:n})=>(this.addEventListener(t,n,e),()=>this.removeEventListener(t,n,e)),r)}fe.subscribe=_o;fe.default=Ct.EventIterator});var Yo={};C(Yo,{webSockets:()=>Zo});var zt=Symbol.for("@libp2p/transport");var kt;(function(t){t[t.FATAL_ALL=0]="FATAL_ALL",t[t.NO_FATAL=1]="NO_FATAL"})(kt||(kt={}));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 Vt=Symbol.for("@libp2p/service-capabilities"),ns=Symbol.for("@libp2p/service-dependencies");function J(t=0){return new Uint8Array(t)}var nn=Math.pow(2,7),on=Math.pow(2,14),sn=Math.pow(2,21),_e=Math.pow(2,28),Be=Math.pow(2,35),Re=Math.pow(2,42),We=Math.pow(2,49),h=128,E=127;function O(t){if(t<nn)return 1;if(t<on)return 2;if(t<sn)return 3;if(t<_e)return 4;if(t<Be)return 5;if(t<Re)return 6;if(t<We)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function an(t,e,r=0){switch(O(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 cn(t,e,r=0){switch(O(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 un(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)*_e,r<h)||(r=t[e+5],n+=(r&E)*Be,r<h)||(r=t[e+6],n+=(r&E)*Re,r<h)||(r=t[e+7],n+=(r&E)*We,r<h))return n;throw new RangeError("Could not decode varint")}function ln(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)*_e,r<h)||(r=t.get(e+5),n+=(r&E)*Be,r<h)||(r=t.get(e+6),n+=(r&E)*Re,r<h)||(r=t.get(e+7),n+=(r&E)*We,r<h))return n;throw new RangeError("Could not decode varint")}function X(t,e,r=0){return e==null&&(e=J(O(t))),e instanceof Uint8Array?an(t,e,r):cn(t,e,r)}function q(t,e=0){return t instanceof Uint8Array?un(t,e):ln(t,e)}function z(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));let r=J(e),n=0;for(let o of t)r.set(o,n),n+=o.length;return r}var Ge={};C(Ge,{base10:()=>wn});var Ls=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 V(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 Wt(t){return new TextDecoder().decode(t)}function pn(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),w=Math.log(a)/Math.log(256),x=Math.log(256)/Math.log(a);function y(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 A=0,Q=0,N=0,$=f.length;N!==$&&f[N]===0;)N++,A++;for(var F=($-N)*x+1>>>0,U=new Uint8Array(F);N!==$;){for(var M=f[N],R=0,D=F-1;(M!==0||R<Q)&&D!==-1;D--,R++)M+=256*U[D]>>>0,U[D]=M%a>>>0,M=M/a>>>0;if(M!==0)throw new Error("Non-zero carry");Q=R,N++}for(var k=F-Q;k!==F&&U[k]===0;)k++;for(var xe=u.repeat(A);k<F;++k)xe+=t.charAt(U[k]);return xe}function P(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var A=0;if(f[A]!==" "){for(var Q=0,N=0;f[A]===u;)Q++,A++;for(var $=(f.length-A)*w+1>>>0,F=new Uint8Array($);f[A];){var U=r[f.charCodeAt(A)];if(U===255)return;for(var M=0,R=$-1;(U!==0||M<N)&&R!==-1;R--,M++)U+=a*F[R]>>>0,F[R]=U%256>>>0,U=U/256>>>0;if(U!==0)throw new Error("Non-zero carry");N=M,A++}if(f[A]!==" "){for(var D=$-N;D!==$&&F[D]===0;)D++;for(var k=new Uint8Array(Q+($-D)),xe=Q;D!==$;)k[xe++]=F[D++];return k}}}function T(f){var A=P(f);if(A)return A;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:P,decode:T}}var dn=pn,fn=dn,Qt=fn;var je=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")}},Qe=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)}},qe=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 qe({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}var He=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 je(e,r,n),this.decoder=new Qe(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function K({name:t,prefix:e,encode:r,decode:n}){return new He(t,e,r,n)}function W({name:t,prefix:e,alphabet:r}){let{encode:n,decode:o}=Qt(r,t);return K({prefix:e,name:t,encode:n,decode:s=>V(o(s))})}function hn(t,e,r,n){let o=t.length;for(;t[o-1]==="=";)--o;let s=new Uint8Array(o*r/8|0),i=0,a=0,u=0;for(let w=0;w<o;++w){let x=e[t[w]];if(x===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<r|x,i+=r,i>=8&&(i-=8,s[u++]=255&a>>i)}if(i>=r||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function mn(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)!==0;)s+="=";return s}function xn(t){let e={};for(let r=0;r<t.length;++r)e[t[r]]=r;return e}function b({name:t,prefix:e,bitsPerChar:r,alphabet:n}){let o=xn(n);return K({prefix:e,name:t,encode(s){return mn(s,n,r)},decode(s){return hn(s,o,r,t)}})}var wn=W({prefix:"9",name:"base10",alphabet:"0123456789"});var Je={};C(Je,{base16:()=>gn,base16upper:()=>bn});var gn=b({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),bn=b({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Xe={};C(Xe,{base2:()=>yn});var yn=b({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ke={};C(Ke,{base256emoji:()=>Pn});var Ht=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}"),En=Ht.reduce((t,e,r)=>(t[r]=e,t),[]),vn=Ht.reduce((t,e,r)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function Sn(t){return t.reduce((e,r)=>(e+=En[r],e),"")}function In(t){let e=[];for(let r of t){let n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);let o=vn[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}var Pn=K({prefix:"\u{1F680}",name:"base256emoji",encode:Sn,decode:In});var Ze={};C(Ze,{base32:()=>_,base32hex:()=>Un,base32hexpad:()=>Dn,base32hexpadupper:()=>Ln,base32hexupper:()=>Nn,base32pad:()=>Cn,base32padupper:()=>Tn,base32upper:()=>An,base32z:()=>$n});var _=b({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),An=b({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Cn=b({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Tn=b({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Un=b({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Nn=b({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Dn=b({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ln=b({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),$n=b({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ye={};C(Ye,{base36:()=>ae,base36upper:()=>Fn});var ae=W({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Fn=W({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var et={};C(et,{base58btc:()=>v,base58flickr:()=>Mn});var v=W({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Mn=W({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var rt={};C(rt,{base64:()=>On,base64pad:()=>kn,base64url:()=>tt,base64urlpad:()=>zn});var On=b({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),kn=b({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),tt=b({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),zn=b({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var nt={};C(nt,{base8:()=>Vn});var Vn=b({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ot={};C(ot,{identity:()=>_n});var _n=K({prefix:"\0",name:"identity",encode:t=>Wt(t),decode:t=>Rt(t)});var Gs=new TextEncoder,Js=new TextDecoder;var it={};C(it,{identity:()=>uo});var Wn=Xt,Gt=128,jn=127,Qn=~jn,qn=Math.pow(2,31);function Xt(t,e,r){e=e||[],r=r||0;for(var n=r;t>=qn;)e[r++]=t&255|Gt,t/=128;for(;t&Qn;)e[r++]=t&255|Gt,t>>>=7;return e[r]=t|0,Xt.bytes=r-n+1,e}var Hn=st,Gn=128,Jt=127;function st(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw st.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&Jt)<<o:(i&Jt)*Math.pow(2,o),o+=7}while(i>=Gn);return st.bytes=s-n,r}var Jn=Math.pow(2,7),Xn=Math.pow(2,14),Kn=Math.pow(2,21),Zn=Math.pow(2,28),Yn=Math.pow(2,35),eo=Math.pow(2,42),to=Math.pow(2,49),ro=Math.pow(2,56),no=Math.pow(2,63),oo=function(t){return t<Jn?1:t<Xn?2:t<Kn?3:t<Zn?4:t<Yn?5:t<eo?6:t<to?7:t<ro?8:t<no?9:10},so={encode:Wn,decode:Hn,encodingLength:oo},io=so,ce=io;function ue(t,e=0){return[ce.decode(t,e),ce.decode.bytes]}function Z(t,e,r=0){return ce.encode(t,e,r),e}function Y(t){return ce.encodingLength(t)}function H(t,e){let r=e.byteLength,n=Y(t),o=n+Y(r),s=new Uint8Array(o+r);return Z(t,s,0),Z(r,s,n),s.set(e,o),new ee(t,r,e,s)}function Ee(t){let e=V(t),[r,n]=ue(e),[o,s]=ue(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ee(r,o,i,e)}function Kt(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 ee=class{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}};var Zt=0,ao="identity",Yt=V;function co(t){return H(Zt,Yt(t))}var uo={code:Zt,name:ao,encode:Yt,digest:co};var ut={};C(ut,{sha256:()=>lo,sha512:()=>po});function ct({name:t,code:e,encode:r}){return new at(t,e,r)}var at=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?H(this.code,r):r.then(n=>H(this.code,n))}else throw Error("Unknown type, must be binary type")}};function tr(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}var lo=ct({name:"sha2-256",code:18,encode:tr("SHA-256")}),po=ct({name:"sha2-512",code:19,encode:tr("SHA-512")});function rr(t,e){let{bytes:r,version:n}=t;switch(n){case 0:return ho(r,lt(t),e??v.encoder);default:return mo(r,lt(t),e??_.encoder)}}var nr=new WeakMap;function lt(t){let e=nr.get(t);if(e==null){let r=new Map;return nr.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!==le)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==xo)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=H(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&&Kt(e.multihash,n.multihash)}toString(e){return rr(this,e)}toJSON(){return{"/":rr(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??or(n,o,s.bytes))}else if(r[wo]===!0){let{version:n,multihash:o,code:s}=r,i=Ee(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!==le)throw new Error(`Version 0 CID must use dag-pb (code: ${le}) block encoding`);return new t(e,r,n,n.bytes)}case 1:{let o=or(e,r,n.bytes);return new t(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return t.create(0,le,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=V(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 ee(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[y,P]=ue(e.subarray(r));return r+=P,y},o=n(),s=le;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(),w=r+u,x=w-i;return{version:o,codec:s,multihashCode:a,digestSize:u,multihashSize:x,size:w}}static parse(e,r){let[n,o]=fo(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 lt(s).set(n,e),s}};function fo(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 _.prefix:{let r=e??_;return[_.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 ho(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 mo(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 le=112,xo=18;function or(t,e,r){let n=Y(t),o=n+Y(e),s=new Uint8Array(o+r.byteLength);return Z(t,s,0),Z(e,s,n),s.set(r,o),s}var wo=Symbol.for("@ipld/js-cid/CID");var pe={...ot,...Xe,...nt,...Ge,...Je,...Ze,...Ye,...et,...rt,...Ke},wi={...ut,...it};function ir(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}var sr=ir("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),pt=ir("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=J(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),go={utf8:sr,"utf-8":sr,hex:pe.base16,latin1:pt,ascii:pt,binary:pt,...pe},ve=go;function I(t,e="utf8"){let r=ve[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}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 u=a==="0",w=2**(8*o)-1;for(;;){let x=this.readAtomically(()=>{let y=this.readChar();if(y===void 0)return;let P=Number.parseInt(y,e);if(!Number.isNaN(P))return P});if(x===void 0)break;if(s*=e,s+=x,s>w||(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 ar=45,bo=15,re=new Se;function dt(t){if(!(t.length>bo))return re.new(t).parseWith(()=>re.readIPv4Addr())}function ft(t){if(t.includes("%")&&(t=t.split("%")[0]),!(t.length>ar))return re.new(t).parseWith(()=>re.readIPv6Addr())}function Ie(t,e=!1){if(t.includes("%")&&(t=t.split("%")[0]),t.length>ar)return;let r=re.new(t).parseWith(()=>re.readIPAddr());if(r)return e&&r.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,r[0],r[1],r[2],r[3]]):r}var $i=parseInt("0xFFFF",16),Fi=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function ne(t,e="utf8"){let r=ve[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function Pe(t){return!!dt(t)}function Ae(t){return!!ft(t)}function Ce(t){return!!Ie(t)}var lr=Pe,Io=Ae,ht=function(t){let e=0;if(t=t.toString().trim(),lr(t)){let r=new Uint8Array(e+4);return t.split(/\./g).forEach(n=>{r[e++]=parseInt(n,10)&255}),r}if(Io(t)){let r=t.split(":",8),n;for(n=0;n<r.length;n++){let s=lr(r[n]),i;s&&(i=ht(r[n]),r[n]=I(i.slice(0,2),"base16")),i!=null&&++n<8&&r.splice(n,0,I(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")},pr=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={},mt={},Ao=[[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"]];Ao.forEach(t=>{let e=Co(...t);mt[e.code]=e,oe[e.name]=e});function Co(t,e,r,n,o){return{code:t,size:e,name:r,resolvable:!!n,path:!!o}}function c(t){if(typeof t=="number"){if(mt[t]!=null)return mt[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 ba=c("ip4"),ya=c("ip6"),Ea=c("ipcidr");function bt(t,e){switch(c(t).code){case 4:case 41:return Uo(e);case 42:return gt(e);case 43:return I(e,"base10");case 6:case 273:case 33:case 132:return hr(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return gt(e);case 421:return $o(e);case 444:return fr(e);case 445:return fr(e);case 466:return Lo(e);case 481:return globalThis.encodeURIComponent(gt(e));default:return I(e,"base16")}}function yt(t,e){switch(c(t).code){case 4:return dr(e);case 41:return dr(e);case 42:return wt(e);case 43:return ne(e,"base10");case 6:case 273:case 33:case 132:return Et(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return wt(e);case 421:return No(e);case 444:return Fo(e);case 445:return Mo(e);case 466:return Do(e);case 481:return wt(globalThis.decodeURIComponent(e));default:return ne(e,"base16")}}var xt=Object.values(pe).map(t=>t.decoder),To=function(){let t=xt[0].or(xt[1]);return xt.slice(2).forEach(e=>t=t.or(e)),t}();function dr(t){if(!Ce(t))throw new Error("invalid ip address");return ht(t)}function Uo(t){let e=pr(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 Et(t){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,t),new Uint8Array(e)}function hr(t){return new DataView(t.buffer).getUint16(t.byteOffset)}function wt(t){let e=ne(t),r=Uint8Array.from(X(e.length));return z([r,e],r.length+e.length)}function gt(t){let e=q(t);if(t=t.slice(O(e)),t.length!==e)throw new Error("inconsistent lengths");return I(t)}function No(t){let e;t[0]==="Q"||t[0]==="1"?e=Ee(v.decode(`z${t}`)).bytes:e=j.parse(t).multihash.bytes;let r=Uint8Array.from(X(e.length));return z([r,e],r.length+e.length)}function Do(t){let e=To.decode(t),r=Uint8Array.from(X(e.length));return z([r,e],r.length+e.length)}function Lo(t){let e=q(t),r=t.slice(O(e));if(r.length!==e)throw new Error("inconsistent lengths");return"u"+I(r,"base64url")}function $o(t){let e=q(t),r=t.slice(O(e));if(r.length!==e)throw new Error("inconsistent lengths");return I(r,"base58btc")}function Fo(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=_.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=Et(n);return z([r,o],r.length+o.length)}function Mo(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=_.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=Et(n);return z([r,o],r.length+o.length)}function fr(t){let e=t.slice(0,t.length-2),r=t.slice(t.length-2),n=I(e,"base32"),o=hr(r);return`${n}:${o}`}function mr(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=c(i);if(a.size===0){e.push([a.code]),r.push([a.code]);continue}if(s++,s>=o.length)throw new Te("invalid address: "+t);if(a.path===!0){n=vt(o.slice(s).join("/")),e.push([a.code,yt(a.code,n)]),r.push([a.code,n]);break}let u=yt(a.code,o[s]);e.push([a.code,u]),r.push([a.code,bt(a.code,u)])}return{string:xr(r),bytes:Ue(e),tuples:e,stringTuples:r,path:n}}function St(t){let e=[],r=[],n=null,o=0;for(;o<t.length;){let s=q(t,o),i=O(s),a=c(s),u=Oo(a,t.slice(o+i));if(u===0){e.push([s]),r.push([s]),o+=i;continue}let w=t.slice(o+i,o+i+u);if(o+=u+i,o>t.length)throw new Te("Invalid address Uint8Array: "+I(t,"base16"));e.push([s,w]);let x=bt(s,w);if(r.push([s,x]),a.path===!0){n=x;break}}return{bytes:Uint8Array.from(t),string:xr(r),tuples:e,stringTuples:r,path:n}}function xr(t){let e=[];return t.map(r=>{let n=c(r[0]);return e.push(n.name),r.length>1&&r[1]!=null&&e.push(r[1]),null}),vt(e.join("/"))}function Ue(t){return z(t.map(e=>{let r=c(e[0]),n=Uint8Array.from(X(r.code));return e.length>1&&e[1]!=null&&(n=z([n,e[1]])),n}))}function Oo(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+O(r)}}function vt(t){return"/"+t.trim().split("/").filter(e=>e).join("/")}var Te=class extends Error{static name="ParseError";name="ParseError";constructor(e){super(`Error parsing address: ${e}`)}};function wr(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 ko=Symbol.for("nodejs.util.inspect.custom"),Pt=Symbol.for("@multiformats/js-multiaddr/multiaddr"),zo=[c("dns").code,c("dns4").code,c("dns6").code,c("dnsaddr").code],It=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Ne=class t{bytes;#t;#e;#r;#n;[Pt]=!0;constructor(e){e==null&&(e="");let r;if(e instanceof Uint8Array)r=St(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);r=mr(e)}else if(br(e))r=St(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=c("tcp"),a=c("udp"),u=c("ip4"),w=c("ip6"),x=c("dns6"),y=c("ip6zone");for(let[T,f]of this.stringTuples())T===y.code&&(s=`%${f??""}`),zo.includes(T)&&(r=i.name==="tcp"?"tcp":"udp",o=443,n=`${f??""}${s}`,e=T===x.code?6:4),(T===i.code||T===a.code)&&(r=c(T).name==="tcp"?"tcp":"udp",o=parseInt(f??"")),(T===u.code||T===w.code)&&(r=c(T).name==="tcp"?"tcp":"udp",n=`${f??""}${s}`,e=T===w.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({},c(e)))}protoCodes(){return this.#e.map(([e])=>e)}protoNames(){return this.#e.map(([e])=>c(e).name)}tuples(){return this.#e.map(([e,r])=>r==null?[e]:[e,r])}stringTuples(){return this.#r.map(([e,r])=>r==null?[e]:[e,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(Ue(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"?I(v.decode(`z${n}`),"base58btc"):I(j.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return wr(this.bytes,e.bytes)}async resolve(e){let r=this.protos().find(s=>s.resolvable);if(r==null)return[this];let n=gr.get(r.name);if(n==null)throw new It(`no available resolver for ${r.name}`);return(await n(this,e)).map(s=>de(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)}[ko](){return`Multiaddr(${this.#t})`}};var gr=new Map;function br(t){return!!t?.[Pt]}function de(t){return new Ne(t)}var Vo=[c("tcp").code,c("dns").code,c("dnsaddr").code,c("dns4").code,c("dns6").code];function yr(t){return Sr("sni",t)?.[1]}function Er(t){let e=Sr("tcp",t)?.[1];return e==null?"":`:${e}`}function Sr(t,e){let r;try{r=c(t).code}catch{return}for(let[n,o]of e)if(n===r&&o!=null)return[n,o]}function vr(t){return t.some(([e,r])=>e===c("tls").code)}function L(t,e,r){let n=Ir[c(t).name];if(n==null)throw new Error(`Can't interpret protocol ${c(t).name}`);let o=n(e,r);return t===c("ip6").code?`[${o}]`:o}var Ir={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://${L(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://${L(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`${L(r[0],r[1]??"",e)}`},p2p:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return`${L(r[0],r[1]??"",e)}`},http:(t,e)=>{let r=vr(e),n=yr(e),o=Er(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=L(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=L(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 L(r[0],r[1]??"",e)},sni:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");return L(r[0],r[1]??"",e)},https:(t,e)=>{let r=e.pop();if(r==null)throw new Error("Unexpected end of multiaddr");let n=L(r[0],r[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(t,e)=>{let r=vr(e),n=yr(e),o=Er(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=L(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=L(r[0],r[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`}};function Pr(t,e){let n=de(t).stringTuples(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=c(o[0]),i=Ir[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&Vo.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 Ar=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 Cr=(t,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await Ar(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 Dr=tn(Ur(),1);function Nr(t){return t instanceof ArrayBuffer||t?.constructor?.name==="ArrayBuffer"&&typeof t?.byteLength=="number"}var Lr=t=>{t.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=x=>{t.removeEventListener("open",u),t.removeEventListener("error",w),x()},u=()=>{a(s)},w=x=>{a(()=>{i(x.error??new Error(`connect ECONNREFUSED ${t.url}`))})};t.addEventListener("open",u),t.addEventListener("error",w)})},r=async function*(){let s=new Dr.EventIterator(({push:i,stop:a,fail:u})=>{let w=y=>{let P=null;typeof y.data=="string"&&(P=ne(y.data)),Nr(y.data)&&(P=new Uint8Array(y.data)),y.data instanceof Uint8Array&&(P=y.data),P!=null&&i(P)},x=y=>{u(y.error??new Error("Socket error"))};return t.addEventListener("message",w),t.addEventListener("error",x),t.addEventListener("close",a),()=>{t.removeEventListener("message",w),t.removeEventListener("error",x),t.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield Nr(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 $r=(t,e)=>{e=e??{};let r=Lr(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:Cr(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 Fr=WebSocket;var Bo={"http:":"ws:","https:":"wss:"},Mr="ws:",Or=(t,e)=>{if(t.startsWith("//")&&(t=`${e?.protocol??Mr}${t}`),t.startsWith("/")&&e!=null){let n=e.protocol??Mr,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(Bo))r.protocol===n&&(r.protocol=o);return r};function kr(t,e){let r=typeof window>"u"?void 0:window.location;e=e??{};let n=Or(t,r),o=new Fr(n.toString(),e.websocket);return $r(o,e)}function Tt(){let t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}var $e=class extends Event{type;detail;constructor(e,r){super(e),this.type=e,this.detail=r}};var Fe=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 zr(t,e,r){if(e==null)return t;if(e.aborted)return t.catch(()=>{}),Promise.reject(new Fe(r?.errorMessage,r?.errorCode,r?.errorName));let n,o=new Fe(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 Ro=t=>t.toString().split("/").slice(1),se=t=>({match:e=>e.length<1?!1:t(e[0])?e.slice(1):!1,pattern:"fn"}),l=t=>({match:e=>se(r=>r===t).match(e),pattern:t}),G=()=>({match:t=>se(e=>typeof e=="string").match(t),pattern:"{string}"}),ie=()=>({match:t=>se(e=>!isNaN(parseInt(e))).match(t),pattern:"{number}"}),m=()=>({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{tt.decode(t[1])}catch{return!1}return t.slice(2)},pattern:"/certhash/{certhash}"}),d=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(", ")})`}),p=(...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 g(...t){function e(o){let s=Ro(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 Wo=m(),yc=g(Wo),Oe=p(l("dns4"),G()),ke=p(l("dns6"),G()),ze=p(l("dnsaddr"),G()),Nt=p(l("dns"),G()),Ec=g(Oe,d(m())),vc=g(ke,d(m())),Sc=g(ze,d(m())),jo=g(S(Nt,ze,Oe,ke),d(m())),Vr=p(l("ip4"),se(Pe)),_r=p(l("ip6"),se(Ae)),Dt=S(Vr,_r),B=S(Dt,Nt,Oe,ke,ze),Ic=g(S(Dt,p(S(Nt,ze,Oe,ke),d(m())))),Pc=g(Vr),Ac=g(_r),Cc=g(Dt),Lt=p(B,l("tcp"),ie()),me=p(B,l("udp"),ie()),Tc=g(p(Lt,d(m()))),Uc=g(me),$t=p(me,l("quic"),d(m())),Ve=p(me,l("quic-v1"),d(m())),Qo=S($t,Ve),Nc=g($t),Dc=g(Ve),Ut=S(B,Lt,me,$t,Ve),Br=S(p(Ut,l("ws"),d(m()))),Rr=g(Br),Wr=S(p(Ut,l("wss"),d(m())),p(Ut,l("tls"),d(p(l("sni"),G())),l("ws"),d(m()))),jr=g(Wr),Qr=p(me,l("webrtc-direct"),d(he()),d(he()),d(m())),Lc=g(Qr),qr=p(Ve,l("webtransport"),d(he()),d(he()),d(m())),$c=g(qr),Me=S(Br,Wr,p(Lt,d(m())),p(Qo,d(m())),p(B,d(m())),Qr,qr,m()),Fc=g(Me),qo=p(Me,l("p2p-circuit"),m()),Mc=g(qo),Ho=S(p(Me,l("p2p-circuit"),l("webrtc"),d(m())),p(Me,l("webrtc"),d(m())),p(l("webrtc"),d(m()))),Oc=g(Ho),Go=S(p(B,l("tcp"),ie(),l("http"),d(m())),p(B,l("http"),d(m()))),kc=g(Go),Jo=S(p(B,l("tcp"),S(p(l("443"),l("http")),p(ie(),l("https")),p(ie(),l("tls"),l("http"))),d(m())),p(B,l("tls"),l("http"),d(m())),p(B,l("https"),d(m()))),zc=g(Jo),Xo=S(p(l("memory"),G(),d(m()))),Vc=g(Xo);function Hr(t){return t.filter(e=>jr.exactMatch(e)||Rr.exactMatch(e))}function Gr(){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 x=AbortSignal.timeout(500);a={...a,signal:x}}let w=()=>{let{host:x,port:y}=i.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",x,y,Date.now()-u),this.abort(new ge("Socket close timeout"))};a.signal?.addEventListener("abort",w);try{await t.close()}catch(x){n.error("error closing WebSocket gracefully",x),this.abort(x)}finally{a.signal?.removeEventListener("abort",w),i.timeline.close=Date.now()}},abort(a){let{host:u,port:w}=i.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",u,w,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 Ft=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"})})}[zt]=!0;[Symbol.toStringTag]="@libp2p/websockets";[Vt]=["@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=Tt(),s=kr(Pr(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 $e("websockets:open-connection")),await zr(Promise.race([s.connected(),o.promise]),r.signal)}catch(i){throw r.signal?.aborted&&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 Gr({logger:this.logger,events:this.components.events,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Hr(e)}dialFilter(e){return this.listenFilter(e)}};function Zo(t={}){return e=>new Ft(e,t)}return rn(Yo);})();
return Libp2PWebsockets}));
//# sourceMappingURL=index.min.js.map