@libp2p/tcp 8.0.13-0f5c305af → 8.0.13-9ad8f8686

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,7 +1,3 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PTcp = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PTcp=(()=>{var gn=Object.create;var Ne=Object.defineProperty;var wn=Object.getOwnPropertyDescriptor;var bn=Object.getOwnPropertyNames;var xn=Object.getPrototypeOf,yn=Object.prototype.hasOwnProperty;var H=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var D=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),L=(t,e)=>{for(var r in e)Ne(t,r,{get:e[r],enumerable:!0})},Kt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of bn(e))!yn.call(t,o)&&o!==r&&Ne(t,o,{get:()=>e[o],enumerable:!(n=wn(e,o))||n.enumerable});return t};var oe=(t,e,r)=>(r=t!=null?gn(xn(t)):{},Kt(e||!t||!t.__esModule?Ne(r,"default",{value:t,enumerable:!0}):r,t)),Cn=t=>Kt(Ne({},"__esModule",{value:!0}),t);var rr=D((Ks,tr)=>{var fe=1e3,he=fe*60,me=he*60,se=me*24,vn=se*7,En=se*365.25;tr.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return An(t);if(r==="number"&&isFinite(t))return e.long?Sn(t):In(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function An(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*En;case"weeks":case"week":case"w":return r*vn;case"days":case"day":case"d":return r*se;case"hours":case"hour":case"hrs":case"hr":case"h":return r*me;case"minutes":case"minute":case"mins":case"min":case"m":return r*he;case"seconds":case"second":case"secs":case"sec":case"s":return r*fe;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function In(t){var e=Math.abs(t);return e>=se?Math.round(t/se)+"d":e>=me?Math.round(t/me)+"h":e>=he?Math.round(t/he)+"m":e>=fe?Math.round(t/fe)+"s":t+"ms"}function Sn(t){var e=Math.abs(t);return e>=se?ke(t,e,se,"day"):e>=me?ke(t,e,me,"hour"):e>=he?ke(t,e,he,"minute"):e>=fe?ke(t,e,fe,"second"):t+" ms"}function ke(t,e,r,n){var o=e>=r*1.5;return Math.round(t/r)+" "+n+(o?"s":"")}});var Ke=D((Zs,nr)=>{function Tn(t){r.debug=r,r.default=r,r.coerce=p,r.disable=s,r.enable=o,r.enabled=i,r.humanize=rr(),r.destroy=y,Object.keys(t).forEach(u=>{r[u]=t[u]}),r.names=[],r.skips=[],r.formatters={};function e(u){let l=0;for(let f=0;f<u.length;f++)l=(l<<5)-l+u.charCodeAt(f),l|=0;return r.colors[Math.abs(l)%r.colors.length]}r.selectColor=e;function r(u){let l,f=null,g,h;function w(...C){if(!w.enabled)return;let m=w,A=Number(new Date),$=A-(l||A);m.diff=$,m.prev=l,m.curr=A,l=A,C[0]=r.coerce(C[0]),typeof C[0]!="string"&&C.unshift("%O");let S=0;C[0]=C[0].replace(/%([a-zA-Z%])/g,(V,k)=>{if(V==="%%")return"%";S++;let B=r.formatters[k];if(typeof B=="function"){let de=C[S];V=B.call(m,de),C.splice(S,1),S--}return V}),r.formatArgs.call(m,C),(m.log||r.log).apply(m,C)}return w.namespace=u,w.useColors=r.useColors(),w.color=r.selectColor(u),w.extend=n,w.destroy=r.destroy,Object.defineProperty(w,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(g!==r.namespaces&&(g=r.namespaces,h=r.enabled(u)),h),set:C=>{f=C}}),typeof r.init=="function"&&r.init(w),w}function n(u,l){let f=r(this.namespace+(typeof l>"u"?":":l)+u);return f.log=this.log,f}function o(u){r.save(u),r.namespaces=u,r.names=[],r.skips=[];let l,f=(typeof u=="string"?u:"").split(/[\s,]+/),g=f.length;for(l=0;l<g;l++)f[l]&&(u=f[l].replace(/\*/g,".*?"),u[0]==="-"?r.skips.push(new RegExp("^"+u.slice(1)+"$")):r.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...r.names.map(a),...r.skips.map(a).map(l=>"-"+l)].join(",");return r.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let l,f;for(l=0,f=r.skips.length;l<f;l++)if(r.skips[l].test(u))return!1;for(l=0,f=r.names.length;l<f;l++)if(r.names[l].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function p(u){return u instanceof Error?u.stack||u.message:u}function y(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}nr.exports=Tn});var or=D((_,De)=>{_.formatArgs=Fn;_.save=Rn;_.load=On;_.useColors=Pn;_.storage=Mn();_.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();_.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Pn(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Fn(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+De.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(r++,o==="%c"&&(n=r))}),t.splice(n,0,e)}_.log=console.debug||console.log||(()=>{});function Rn(t){try{t?_.storage.setItem("debug",t):_.storage.removeItem("debug")}catch{}}function On(){let t;try{t=_.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function Mn(){try{return localStorage}catch{}}De.exports=Ke()(_);var{formatters:Nn}=De.exports;Nn.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var ir=D((ei,sr)=>{"use strict";sr.exports=(t,e)=>{e=e||process.argv;let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),o=e.indexOf("--");return n!==-1&&(o===-1?!0:n<o)}});var ar=D((ti,cr)=>{"use strict";var kn=H("os"),G=ir(),F=process.env,ge;G("no-color")||G("no-colors")||G("color=false")?ge=!1:(G("color")||G("colors")||G("color=true")||G("color=always"))&&(ge=!0);"FORCE_COLOR"in F&&(ge=F.FORCE_COLOR.length===0||parseInt(F.FORCE_COLOR,10)!==0);function Dn(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ln(t){if(ge===!1)return 0;if(G("color=16m")||G("color=full")||G("color=truecolor"))return 3;if(G("color=256"))return 2;if(t&&!t.isTTY&&ge!==!0)return 0;let e=ge?1:0;if(process.platform==="win32"){let r=kn.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in F)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(r=>r in F)||F.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in F)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(F.TEAMCITY_VERSION)?1:0;if(F.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in F){let r=parseInt((F.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(F.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(F.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(F.TERM)||"COLORTERM"in F?1:(F.TERM==="dumb",e)}function Ze(t){let e=Ln(t);return Dn(e)}cr.exports={supportsColor:Ze,stdout:Ze(process.stdout),stderr:Ze(process.stderr)}});var lr=D((P,_e)=>{var _n=H("tty"),Le=H("util");P.init=jn;P.log=Bn;P.formatArgs=$n;P.save=zn;P.load=qn;P.useColors=Un;P.destroy=Le.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");P.colors=[6,2,3,4,5,1];try{let t=ar();t&&(t.stderr||t).level>=2&&(P.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}P.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});function Un(){return"colors"in P.inspectOpts?!!P.inspectOpts.colors:_n.isatty(process.stderr.fd)}function $n(t){let{namespace:e,useColors:r}=this;if(r){let n=this.color,o="\x1B[3"+(n<8?n:"8;5;"+n),s=` ${o};1m${e} \x1B[0m`;t[0]=s+t[0].split(`
3
- `).join(`
4
- `+s),t.push(o+"m+"+_e.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=Vn()+e+" "+t[0]}function Vn(){return P.inspectOpts.hideDate?"":new Date().toISOString()+" "}function Bn(...t){return process.stderr.write(Le.format(...t)+`
5
- `)}function zn(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function qn(){return process.env.DEBUG}function jn(t){t.inspectOpts={};let e=Object.keys(P.inspectOpts);for(let r=0;r<e.length;r++)t.inspectOpts[e[r]]=P.inspectOpts[e[r]]}_e.exports=Ke()(P);var{formatters:ur}=_e.exports;ur.o=function(t){return this.inspectOpts.colors=this.useColors,Le.inspect(t,this.inspectOpts).split(`
6
- `).map(e=>e.trim()).join(" ")};ur.O=function(t){return this.inspectOpts.colors=this.useColors,Le.inspect(t,this.inspectOpts)}});var dr=D((ri,et)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?et.exports=or():et.exports=lr()});var He=D((za,nn)=>{nn.exports=t=>{if(t[Symbol.asyncIterator])return t;if(t.getReader)return async function*(){let e=t.getReader();try{for(;;){let{done:r,value:n}=await e.read();if(r)return;yield n}}finally{e.releaseLock()}}();throw new Error("unknown stream")}});var sn=D((qa,on)=>{on.exports=function(e){if(e){if(typeof e[Symbol.iterator]=="function")return e[Symbol.iterator]();if(typeof e[Symbol.asyncIterator]=="function")return e[Symbol.asyncIterator]();if(typeof e.next=="function")return e}throw new Error("argument is not an iterator or iterable")}});var Gt=D((ja,cn)=>{var Ds=sn();cn.exports=t=>async e=>{e=Ds(e);let r=m=>{typeof m.return=="function"&&m.return()},n=null,o=null,s=m=>{n=m,o&&o(m),r(e)},i=null,a=!1,p=()=>{a=!0,i&&i()},y=null,u=!1,l=()=>{u=!0,y&&y()},f=null,g=()=>{f&&f()},h=()=>new Promise((m,A)=>{i=f=m,o=A,t.once("drain",g)}),w=()=>(r(e),new Promise((m,A)=>{if(a||u||n)return m();y=i=m,o=A})),C=()=>{t.removeListener("error",s),t.removeListener("close",p),t.removeListener("finish",l),t.removeListener("drain",g)};t.once("error",s),t.once("close",p),t.once("finish",l);try{for await(let m of e){if(!t.writable||t.destroyed||n)break;t.write(m)===!1&&await h()}}catch(m){n||t.destroy(),n=m}try{if(t.writable&&t.end(),await w(),n)throw n}finally{C()}}});var Wt=D((Ga,an)=>{var Ls=Gt(),_s=He();an.exports=t=>({sink:Ls(t),source:_s(t)})});var ln=D((Wa,un)=>{var Us=Wt();un.exports=t=>async function*(e){let r=Us(t),n;if(r.sink(e).catch(o=>{n=o}),yield*r.source,n)throw n}});var dn=D((Ja,Te)=>{Te.exports=He();Te.exports.source=He();Te.exports.sink=Gt();Te.exports.transform=ln();Te.exports.duplex=Wt()});var Xs={};L(Xs,{tcp:()=>Js});var mn=oe(H("net"),1);var pe=class t extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.code=t.code,this.type=t.type}static code="ABORT_ERR";static type="aborted"},T=class extends Error{code;props;constructor(e,r,n){super(e),this.code=r,this.name=n?.name??"CodeError",this.props=n??{}}};var er=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 U=oe(dr(),1);var st={};L(st,{base32:()=>W,base32hex:()=>Zn,base32hexpad:()=>to,base32hexpadupper:()=>ro,base32hexupper:()=>eo,base32pad:()=>Yn,base32padupper:()=>Kn,base32upper:()=>Qn,base32z:()=>no});function Gn(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,p=t.charAt(0),y=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function l(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var w=0,C=0,m=0,A=h.length;m!==A&&h[m]===0;)m++,w++;for(var $=(A-m)*u+1>>>0,S=new Uint8Array($);m!==A;){for(var j=h[m],V=0,k=$-1;(j!==0||V<C)&&k!==-1;k--,V++)j+=256*S[k]>>>0,S[k]=j%a>>>0,j=j/a>>>0;if(j!==0)throw new Error("Non-zero carry");C=V,m++}for(var B=$-C;B!==$&&S[B]===0;)B++;for(var de=p.repeat(w);B<$;++B)de+=t.charAt(S[B]);return de}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var w=0;if(h[w]!==" "){for(var C=0,m=0;h[w]===p;)C++,w++;for(var A=(h.length-w)*y+1>>>0,$=new Uint8Array(A);h[w];){var S=r[h.charCodeAt(w)];if(S===255)return;for(var j=0,V=A-1;(S!==0||j<m)&&V!==-1;V--,j++)S+=a*$[V]>>>0,$[V]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");m=j,w++}if(h[w]!==" "){for(var k=A-m;k!==A&&$[k]===0;)k++;for(var B=new Uint8Array(C+(A-k)),de=C;k!==A;)B[de++]=$[k++];return B}}}function g(h){var w=f(h);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:f,decode:g}}var Wn=Gn,Jn=Wn,pr=Jn;var oi=new Uint8Array(0);var fr=(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},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")};var hr=t=>new TextEncoder().encode(t),mr=t=>new TextDecoder().decode(t);var tt=class{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")}},rt=class{constructor(e,r,n){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),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 wr(this,e)}},nt=class{constructor(e){this.decoders=e}or(e){return wr(this,e)}decode(e){let r=e[0],n=this.decoders[r];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},wr=(t,e)=>new nt({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}}),ot=class{constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new tt(e,r,n),this.decoder=new rt(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},we=({name:t,prefix:e,encode:r,decode:n})=>new ot(t,e,r,n),Z=({prefix:t,name:e,alphabet:r})=>{let{encode:n,decode:o}=pr(r,e);return we({prefix:t,name:e,encode:n,decode:s=>z(o(s))})},Xn=(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,p=0,y=0;for(let u=0;u<s;++u){let l=o[t[u]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);p=p<<r|l,a+=r,a>=8&&(a-=8,i[y++]=255&p>>a)}if(a>=r||255&p<<8-a)throw new SyntaxError("Unexpected end of data");return i},Hn=(t,e,r)=>{let n=e[e.length-1]==="=",o=(1<<r)-1,s="",i=0,a=0;for(let p=0;p<t.length;++p)for(a=a<<8|t[p],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i&&(s+=e[o&a<<r-i]),n)for(;s.length*r&7;)s+="=";return s},v=({name:t,prefix:e,bitsPerChar:r,alphabet:n})=>we({prefix:e,name:t,encode(o){return Hn(o,n,r)},decode(o){return Xn(o,n,r,t)}});var W=v({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Qn=v({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Yn=v({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Kn=v({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Zn=v({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),eo=v({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),to=v({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ro=v({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),no=v({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var it={};L(it,{base58btc:()=>R,base58flickr:()=>oo});var R=Z({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),oo=Z({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var at={};L(at,{base64:()=>ct,base64pad:()=>so,base64url:()=>io,base64urlpad:()=>co});var ct=v({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),so=v({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),io=v({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),co=v({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});U.default.formatters.b=t=>t==null?"undefined":R.baseEncode(t);U.default.formatters.t=t=>t==null?"undefined":W.baseEncode(t);U.default.formatters.m=t=>t==null?"undefined":ct.baseEncode(t);U.default.formatters.p=t=>t==null?"undefined":t.toString();U.default.formatters.c=t=>t==null?"undefined":t.toString();U.default.formatters.k=t=>t==null?"undefined":t.toString();U.default.formatters.a=t=>t==null?"undefined":t.toString();function ao(t){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=t,e.destroy=()=>!0,e.extend=()=>e,e}function ee(t){let e=ao(`${t}:trace`);return U.default.enabled(`${t}:trace`)&&U.default.names.map(r=>r.toString()).find(r=>r.includes(":trace"))!=null&&(e=(0,U.default)(`${t}:trace`)),Object.assign((0,U.default)(t),{error:(0,U.default)(`${t}:error`),trace:e})}var uo=yr,br=128,lo=127,po=~lo,fo=Math.pow(2,31);function yr(t,e,r){e=e||[],r=r||0;for(var n=r;t>=fo;)e[r++]=t&255|br,t/=128;for(;t&po;)e[r++]=t&255|br,t>>>=7;return e[r]=t|0,yr.bytes=r-n+1,e}var ho=ut,mo=128,xr=127;function ut(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw ut.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&xr)<<o:(i&xr)*Math.pow(2,o),o+=7}while(i>=mo);return ut.bytes=s-n,r}var go=Math.pow(2,7),wo=Math.pow(2,14),bo=Math.pow(2,21),xo=Math.pow(2,28),yo=Math.pow(2,35),Co=Math.pow(2,42),vo=Math.pow(2,49),Eo=Math.pow(2,56),Ao=Math.pow(2,63),Io=function(t){return t<go?1:t<wo?2:t<bo?3:t<xo?4:t<yo?5:t<Co?6:t<vo?7:t<Eo?8:t<Ao?9:10},So={encode:uo,decode:ho,encodingLength:Io},To=So,Fe=To;var Re=(t,e=0)=>[Fe.decode(t,e),Fe.decode.bytes],be=(t,e,r=0)=>(Fe.encode(t,e,r),e),xe=t=>Fe.encodingLength(t);var ie=(t,e)=>{let r=e.byteLength,n=xe(t),o=n+xe(r),s=new Uint8Array(o+r);return be(t,s,0),be(r,s,n),s.set(e,o),new ye(t,r,e,s)},$e=t=>{let e=z(t),[r,n]=Re(e),[o,s]=Re(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ye(r,o,i,e)},Cr=(t,e)=>{if(t===e)return!0;{let r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&fr(t.bytes,r.bytes)}},ye=class{constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}};var vr=(t,e)=>{let{bytes:r,version:n}=t;switch(n){case 0:return Fo(r,lt(t),e||R.encoder);default:return Ro(r,lt(t),e||W.encoder)}};var Er=new WeakMap,lt=t=>{let e=Er.get(t);if(e==null){let r=new Map;return Er.set(t,r),r}return e},te=class t{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!==Oe)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==Oo)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=ie(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&&e.code===n.code&&e.version===n.version&&Cr(e.multihash,n.multihash)}toString(e){return vr(this,e)}toJSON(){return{"/":vr(this)}}link(){return this}get[Symbol.toStringTag](){return"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||Ar(n,o,s.bytes))}else if(r[Mo]===!0){let{version:n,multihash:o,code:s}=r,i=$e(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!==Oe)throw new Error(`Version 0 CID must use dag-pb (code: ${Oe}) block encoding`);return new t(e,r,n,n.bytes)}case 1:{let o=Ar(e,r,n.bytes);return new t(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return t.create(0,Oe,e)}static createV1(e,r){return t.create(1,e,r)}static decode(e){let[r,n]=t.decodeFirst(e);if(n.length)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 ye(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[l,f]=Re(e.subarray(r));return r+=f,l},o=n(),s=Oe;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(),p=n(),y=r+p,u=y-i;return{version:o,codec:s,multihashCode:a,digestSize:p,multihashSize:u,size:y}}static parse(e,r){let[n,o]=Po(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}},Po=(t,e)=>{switch(t[0]){case"Q":{let r=e||R;return[R.prefix,r.decode(`${R.prefix}${t}`)]}case R.prefix:{let r=e||R;return[R.prefix,r.decode(t)]}case W.prefix:{let r=e||W;return[W.prefix,r.decode(t)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}},Fo=(t,e,r)=>{let{prefix:n}=r;if(n!==R.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},Ro=(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},Oe=112,Oo=18,Ar=(t,e,r)=>{let n=xe(t),o=n+xe(e),s=new Uint8Array(o+r.byteLength);return be(t,s,0),be(e,s,n),s.set(r,o),s},Mo=Symbol.for("@ipld/js-cid/CID");function Ir(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 dt={};L(dt,{base10:()=>No});var No=Z({prefix:"9",name:"base10",alphabet:"0123456789"});var pt={};L(pt,{base16:()=>ko,base16upper:()=>Do});var ko=v({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Do=v({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ft={};L(ft,{base2:()=>Lo});var Lo=v({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ht={};L(ht,{base256emoji:()=>Bo});var Sr=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}"),_o=Sr.reduce((t,e,r)=>(t[r]=e,t),[]),Uo=Sr.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function $o(t){return t.reduce((e,r)=>(e+=_o[r],e),"")}function Vo(t){let e=[];for(let r of t){let n=Uo[r.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(n)}return new Uint8Array(e)}var Bo=we({prefix:"\u{1F680}",name:"base256emoji",encode:$o,decode:Vo});var mt={};L(mt,{base36:()=>zo,base36upper:()=>qo});var zo=Z({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),qo=Z({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var gt={};L(gt,{base8:()=>jo});var jo=v({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var wt={};L(wt,{identity:()=>Go});var Go=we({prefix:"\0",name:"identity",encode:t=>mr(t),decode:t=>hr(t)});var Di=new TextEncoder,Li=new TextDecoder;var bt={};L(bt,{identity:()=>Qo});var Tr=0,Xo="identity",Pr=z,Ho=t=>ie(Tr,Pr(t)),Qo={code:Tr,name:Xo,encode:Pr,digest:Ho};var vt={};L(vt,{sha256:()=>Yo,sha512:()=>Ko});var Ct=oe(H("crypto"),1);var yt=({name:t,code:e,encode:r})=>new xt(t,e,r),xt=class{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?ie(this.code,r):r.then(n=>ie(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Yo=yt({name:"sha2-256",code:18,encode:t=>z(Ct.default.createHash("sha256").update(t).digest())}),Ko=yt({name:"sha2-512",code:19,encode:t=>z(Ct.default.createHash("sha512").update(t).digest())});var Me={...wt,...ft,...gt,...dt,...pt,...st,...mt,...it,...at,...ht},Gi={...vt,...bt};function ve(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function Ee(t=0){return globalThis.Buffer?.allocUnsafe!=null?ve(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function Or(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}var Rr=Or("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Et=Or("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=Ee(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),Zo={utf8:Rr,"utf-8":Rr,hex:Me.base16,latin1:Et,ascii:Et,binary:Et,...Me},Ve=Zo;function N(t,e="utf8"){let r=Ve[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("utf8"):r.encoder.encode(t).substring(1)}var es=Math.pow(2,7),ts=Math.pow(2,14),rs=Math.pow(2,21),At=Math.pow(2,28),It=Math.pow(2,35),St=Math.pow(2,42),Tt=Math.pow(2,49),b=128,O=127;function J(t){if(t<es)return 1;if(t<ts)return 2;if(t<rs)return 3;if(t<At)return 4;if(t<It)return 5;if(t<St)return 6;if(t<Tt)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function ns(t,e,r=0){switch(J(t)){case 8:e[r++]=t&255|b,t/=128;case 7:e[r++]=t&255|b,t/=128;case 6:e[r++]=t&255|b,t/=128;case 5:e[r++]=t&255|b,t/=128;case 4:e[r++]=t&255|b,t>>>=7;case 3:e[r++]=t&255|b,t>>>=7;case 2:e[r++]=t&255|b,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function os(t,e,r=0){switch(J(t)){case 8:e.set(r++,t&255|b),t/=128;case 7:e.set(r++,t&255|b),t/=128;case 6:e.set(r++,t&255|b),t/=128;case 5:e.set(r++,t&255|b),t/=128;case 4:e.set(r++,t&255|b),t>>>=7;case 3:e.set(r++,t&255|b),t>>>=7;case 2:e.set(r++,t&255|b),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function ss(t,e){let r=t[e],n=0;if(n+=r&O,r<b||(r=t[e+1],n+=(r&O)<<7,r<b)||(r=t[e+2],n+=(r&O)<<14,r<b)||(r=t[e+3],n+=(r&O)<<21,r<b)||(r=t[e+4],n+=(r&O)*At,r<b)||(r=t[e+5],n+=(r&O)*It,r<b)||(r=t[e+6],n+=(r&O)*St,r<b)||(r=t[e+7],n+=(r&O)*Tt,r<b))return n;throw new RangeError("Could not decode varint")}function is(t,e){let r=t.get(e),n=0;if(n+=r&O,r<b||(r=t.get(e+1),n+=(r&O)<<7,r<b)||(r=t.get(e+2),n+=(r&O)<<14,r<b)||(r=t.get(e+3),n+=(r&O)<<21,r<b)||(r=t.get(e+4),n+=(r&O)*At,r<b)||(r=t.get(e+5),n+=(r&O)*It,r<b)||(r=t.get(e+6),n+=(r&O)*St,r<b)||(r=t.get(e+7),n+=(r&O)*Tt,r<b))return n;throw new RangeError("Could not decode varint")}function Ae(t,e,r=0){return e==null&&(e=Ee(J(t))),e instanceof Uint8Array?ns(t,e,r):os(t,e,r)}function ce(t,e=0){return t instanceof Uint8Array?ss(t,e):is(t,e)}function Q(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));let r=Ee(e),n=0;for(let o of t)r.set(o,n),n+=o.length;return ve(r)}var Be=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 p=a==="0",y=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let f=Number.parseInt(l,e);if(!Number.isNaN(f))return f});if(u===void 0)break;if(s*=e,s+=u,s>y||(i+=1,r!==void 0&&i>r))return}if(i!==0)return!n&&p&&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 cc=new Be;var mc=parseInt("0xFFFF",16),gc=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Pt(t,e="utf8"){let r=Ve[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?ve(globalThis.Buffer.from(t,"utf-8")):r.decoder.decode(`${r.prefix}${t}`)}var q=H("node:net");function ze(t){return!!(0,q.isIP)(t)}var Dr=q.isIPv4,ps=q.isIPv6,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(ps(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]=N(i.slice(0,2),"base16")),i!=null&&++n<8&&r.splice(n,0,N(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")},Lr=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 Ie={},Rt={},hs=[[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"],[777,-1,"memory"]];hs.forEach(t=>{let e=ms(...t);Rt[e.code]=e,Ie[e.name]=e});function ms(t,e,r,n,o){return{code:t,size:e,name:r,resolvable:!!n,path:!!o}}function x(t){if(typeof t=="number"){if(Rt[t]!=null)return Rt[t];throw new Error(`no protocol with code: ${t}`)}else if(typeof t=="string"){if(Ie[t]!=null)return Ie[t];throw new Error(`no protocol with name: ${t}`)}throw new Error(`invalid protocol id type: ${typeof t}`)}var na=x("ip4"),oa=x("ip6"),sa=x("ipcidr");function Mt(t,e){switch(x(t).code){case 4:case 41:return ws(e);case 42:return $r(e);case 6:case 273:case 33:case 132:return Br(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return $r(e);case 421:return Cs(e);case 444:return Vr(e);case 445:return Vr(e);case 466:return ys(e);default:return N(e,"base16")}}function Nt(t,e){switch(x(t).code){case 4:return _r(e);case 41:return _r(e);case 42:return Ur(e);case 6:case 273:case 33:case 132:return kt(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Ur(e);case 421:return bs(e);case 444:return vs(e);case 445:return Es(e);case 466:return xs(e);default:return Pt(e,"base16")}}var Ot=Object.values(Me).map(t=>t.decoder),gs=function(){let t=Ot[0].or(Ot[1]);return Ot.slice(2).forEach(e=>t=t.or(e)),t}();function _r(t){if(!ze(t))throw new Error("invalid ip address");return Ft(t)}function ws(t){let e=Lr(t,0,t.length);if(e==null)throw new Error("ipBuff is required");if(!ze(e))throw new Error("invalid ip address");return e}function kt(t){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,t),new Uint8Array(e)}function Br(t){return new DataView(t.buffer).getUint16(t.byteOffset)}function Ur(t){let e=Pt(t),r=Uint8Array.from(Ae(e.length));return Q([r,e],r.length+e.length)}function $r(t){let e=ce(t);if(t=t.slice(J(e)),t.length!==e)throw new Error("inconsistent lengths");return N(t)}function bs(t){let e;t[0]==="Q"||t[0]==="1"?e=$e(R.decode(`z${t}`)).bytes:e=te.parse(t).multihash.bytes;let r=Uint8Array.from(Ae(e.length));return Q([r,e],r.length+e.length)}function xs(t){let e=gs.decode(t),r=Uint8Array.from(Ae(e.length));return Q([r,e],r.length+e.length)}function ys(t){let e=ce(t),r=t.slice(J(e));if(r.length!==e)throw new Error("inconsistent lengths");return"u"+N(r,"base64url")}function Cs(t){let e=ce(t),r=t.slice(J(e));if(r.length!==e)throw new Error("inconsistent lengths");return N(r,"base58btc")}function vs(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=W.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=kt(n);return Q([r,o],r.length+o.length)}function Es(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=W.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=kt(n);return Q([r,o],r.length+o.length)}function Vr(t){let e=t.slice(0,t.length-2),r=t.slice(t.length-2),n=N(e,"base32"),o=Br(r);return`${n}:${o}`}function zr(t){t=Dt(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=x(i);if(a.size===0){e.push([a.code]),r.push([a.code]);continue}if(s++,s>=o.length)throw jr("invalid address: "+t);if(a.path===!0){n=Dt(o.slice(s).join("/")),e.push([a.code,Nt(a.code,n)]),r.push([a.code,n]);break}let p=Nt(a.code,o[s]);e.push([a.code,p]),r.push([a.code,Mt(a.code,p)])}return{string:qr(r),bytes:_t(e),tuples:e,stringTuples:r,path:n}}function Lt(t){let e=[],r=[],n=null,o=0;for(;o<t.length;){let s=ce(t,o),i=J(s),a=x(s),p=As(a,t.slice(o+i));if(p===0){e.push([s]),r.push([s]),o+=i;continue}let y=t.slice(o+i,o+i+p);if(o+=p+i,o>t.length)throw jr("Invalid address Uint8Array: "+N(t,"base16"));e.push([s,y]);let u=Mt(s,y);if(r.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(t),string:qr(r),tuples:e,stringTuples:r,path:n}}function qr(t){let e=[];return t.map(r=>{let n=x(r[0]);return e.push(n.name),r.length>1&&r[1]!=null&&e.push(r[1]),null}),Dt(e.join("/"))}function _t(t){return Q(t.map(e=>{let r=x(e[0]),n=Uint8Array.from(Ae(r.code));return e.length>1&&e[1]!=null&&(n=Q([n,e[1]])),n}))}function As(t,e){if(t.size>0)return t.size/8;if(t.size===0)return 0;{let r=ce(e instanceof Uint8Array?e:Uint8Array.from(e));return r+J(r)}}function Dt(t){return"/"+t.trim().split("/").filter(e=>e).join("/")}function jr(t){return new Error("Error parsing address: "+t)}var Is=Symbol.for("nodejs.util.inspect.custom"),Ut=Symbol.for("@multiformats/js-multiaddr/multiaddr"),Ss=[x("dns").code,x("dns4").code,x("dns6").code,x("dnsaddr").code],qe=class t{bytes;#e;#t;#r;#n;[Ut]=!0;constructor(e){e==null&&(e="");let r;if(e instanceof Uint8Array)r=Lt(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);r=zr(e)}else if(Wr(e))r=Lt(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=r.bytes,this.#e=r.string,this.#t=r.tuples,this.#r=r.stringTuples,this.#n=r.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,r,n,o,s="",i=x("tcp"),a=x("udp"),p=x("ip4"),y=x("ip6"),u=x("dns6"),l=x("ip6zone");for(let[g,h]of this.stringTuples())g===l.code&&(s=`%${h??""}`),Ss.includes(g)&&(r=i.name,o=443,n=`${h??""}${s}`,e=g===u.code?6:4),(g===i.code||g===a.code)&&(r=x(g).name,o=parseInt(h??"")),(g===p.code||g===y.code)&&(r=x(g).name,n=`${h??""}${s}`,e=g===y.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.#t.map(([e])=>Object.assign({},x(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>x(e).name)}tuples(){return this.#t}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(_t(r.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Ie.p2p.code&&e.push([n,o]),n===Ie["p2p-circuit"].code&&(e=[])});let r=e.pop();if(r?.[1]!=null){let n=r[1];return n[0]==="Q"||n[0]==="1"?N(R.decode(`z${n}`),"base58btc"):N(te.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return Ir(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 T(`no available resolver for ${r.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>new t(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)}[Is](){return`Multiaddr(${this.#e})`}};var Gr=new Map;function Wr(t){return!!t?.[Ut]}function Y(t){return new qe(t)}var Ts=c("dns4"),Ps=c("dns6"),Fs=c("dnsaddr"),ue=E(c("dns"),Fs,Ts,Ps),We=E(c("ip4"),c("ip6")),ne=E(d(We,c("tcp")),d(ue,c("tcp"))),Je=d(We,c("udp")),Rs=d(Je,c("utp")),Os=d(Je,c("quic")),Ms=d(Je,c("quic-v1")),$t=E(d(ne,c("ws")),d(ue,c("ws"))),je=E(d($t,c("p2p")),$t),Vt=E(d(ne,c("wss")),d(ue,c("wss")),d(ne,c("tls"),c("ws")),d(ue,c("tls"),c("ws"))),Ge=E(d(Vt,c("p2p")),Vt),Bt=E(d(ne,c("http")),d(We,c("http")),d(ue,c("http"))),zt=E(d(ne,c("https")),d(We,c("https")),d(ue,c("https"))),Jr=d(Je,c("webrtc-direct"),c("certhash")),Qr=E(d(Jr,c("p2p")),Jr),Xr=d(Ms,c("webtransport"),c("certhash"),c("certhash")),Yr=E(d(Xr,c("p2p")),Xr),Kr=E(d(je,c("p2p-webrtc-star"),c("p2p")),d(Ge,c("p2p-webrtc-star"),c("p2p")),d(je,c("p2p-webrtc-star")),d(Ge,c("p2p-webrtc-star"))),Oa=E(d(je,c("p2p-websocket-star"),c("p2p")),d(Ge,c("p2p-websocket-star"),c("p2p")),d(je,c("p2p-websocket-star")),d(Ge,c("p2p-websocket-star"))),Zr=E(d(Bt,c("p2p-webrtc-direct"),c("p2p")),d(zt,c("p2p-webrtc-direct"),c("p2p")),d(Bt,c("p2p-webrtc-direct")),d(zt,c("p2p-webrtc-direct"))),le=E($t,Vt,Bt,zt,Kr,Zr,ne,Rs,Os,ue,Qr,Yr),Ma=E(d(le,c("p2p-stardust"),c("p2p")),d(le,c("p2p-stardust"))),re=E(d(le,c("p2p")),Kr,Zr,Qr,Yr,c("p2p")),Hr=E(d(re,c("p2p-circuit"),re),d(re,c("p2p-circuit")),d(c("p2p-circuit"),re),d(le,c("p2p-circuit")),d(c("p2p-circuit"),le),c("p2p-circuit")),en=()=>E(d(Hr,en),Hr),ae=en(),Na=E(d(ae,re,ae),d(re,ae),d(ae,re),ae,re);var ka=E(d(ae,c("webrtc"),c("p2p")),d(ae,c("webrtc")),d(le,c("webrtc"),c("p2p")),d(le,c("webrtc")),c("webrtc"));function tn(t){function e(r){let n;try{n=Y(r)}catch{return!1}let o=t(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function d(...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:tn(e),partialMatch:e}}function E(...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:tn(e),partialMatch:e}}function c(t){let e=t;function r(o){let s;try{s=Y(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}}var hn=oe(H("net"),1);var Xe=class extends EventTarget{#e=new Map;listenerCount(e){let r=this.#e.get(e);return r==null?0:r.length}addEventListener(e,r,n){super.addEventListener(e,r,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:r,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,r,n){super.removeEventListener(e.toString(),r??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==r),this.#e.set(e,o))}dispatchEvent(e){let r=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),r}safeDispatchEvent(e,r){return this.dispatchEvent(new Se(e,r))}},qt=class extends Event{detail;constructor(e,r){super(e,r),this.detail=r?.detail}},Se=globalThis.CustomEvent??qt;var ks=ee("libp2p:ip-port-to-multiaddr"),jt={ERR_INVALID_IP_PARAMETER:"ERR_INVALID_IP_PARAMETER",ERR_INVALID_PORT_PARAMETER:"ERR_INVALID_PORT_PARAMETER",ERR_INVALID_IP:"ERR_INVALID_IP"};function rn(t,e){if(typeof t!="string")throw new T(`invalid ip provided: ${t}`,jt.ERR_INVALID_IP_PARAMETER);if(typeof e=="string"&&(e=parseInt(e)),isNaN(e))throw new T(`invalid port provided: ${e}`,jt.ERR_INVALID_PORT_PARAMETER);if((0,q.isIPv4)(t))return Y(`/ip4/${t}/tcp/${e}`);if((0,q.isIPv6)(t))return Y(`/ip6/${t}/tcp/${e}`);let r=`invalid ip:port for creating a multiaddr: ${t}:${e}`;throw ks.error(r),new T(r,jt.ERR_INVALID_IP)}var fn=oe(dn(),1);var Jt=oe(H("os"),1),pn=oe(H("path"),1);var $s={ip4:"IPv4",ip6:"IPv6"};function Pe(t,e={}){let r=t.getPath();return r!=null?Jt.default.platform()==="win32"?{path:pn.default.join("\\\\.\\pipe\\",r)}:{path:r}:{...t.toOptions(),...e}}function Xt(t,e,r){let n=o=>Y(`/${t}/${o}/tcp/${r}`);return(Vs(e)?zs($s[t]):[e]).map(n)}function Vs(t){return["0.0.0.0","::"].includes(t)}var Bs=Jt.default.networkInterfaces();function zs(t){let e=[];for(let[,r]of Object.entries(Bs))if(r!=null)for(let n of r)n.family===t&&e.push(n.address);return e}var X=ee("libp2p:tcp:socket"),Qe=(t,e)=>{let r=e.metrics,n=e.metricPrefix??"",o=e.socketInactivityTimeout??3e5,s=e.socketCloseTimeout??500;e.listeningAddr?.getPath()!=null&&(e.remoteAddr=e.listeningAddr),e.remoteAddr?.getPath()!=null&&(e.localAddr=e.remoteAddr);let i;if(e.remoteAddr!=null)i=e.remoteAddr;else{if(t.remoteAddress==null||t.remotePort==null)throw new T("Could not determine remote address or port","ERR_NO_REMOTE_ADDRESS");i=rn(t.remoteAddress,t.remotePort)}let a=Pe(i),p=a.path??`${a.host??""}:${a.port??""}`,{sink:y,source:u}=fn.default.duplex(t);t.setTimeout(o,()=>{X("%s socket read timeout",p),r?.increment({[`${n}timeout`]:!0});let f;t.readable&&(f=new T("Socket read timeout","ERR_SOCKET_READ_TIMEOUT")),t.destroy(f)}),t.once("close",()=>{X("%s socket close",p),r?.increment({[`${n}close`]:!0}),l.timeline.close==null&&(l.timeline.close=Date.now())}),t.once("end",()=>{X("%s socket end",p),r?.increment({[`${n}end`]:!0})});let l={async sink(f){try{await y(f)}catch(g){g.type!=="aborted"&&X(g)}t.end()},source:u,remoteAddr:i,timeline:{open:Date.now()},async close(f={}){if(t.destroyed){X("%s socket was already destroyed when trying to close",p);return}if(f.signal==null){let g=AbortSignal.timeout(s);f={...f,signal:g}}try{X("%s closing socket",p),await new Promise((g,h)=>{t.once("close",()=>{X("%s socket closed",p),g()}),t.once("error",w=>{X("%s socket error",p,w),l.timeline.close==null&&(l.timeline.close=Date.now()),h(w)}),t.setTimeout(s),t.end(),t.writableLength>0?t.once("drain",()=>{X("%s socket drained",p),t.destroy()}):t.destroy()})}catch(g){this.abort(g)}},abort:f=>{X("%s socket abort due to error",p,f),t.destroy(f)}};return l};var M=ee("libp2p:tcp:listener");async function Ht(t){try{await t.close()}catch(e){M.error("an error occurred closing the connection",e)}}var I;(function(t){t[t.INACTIVE=0]="INACTIVE",t[t.ACTIVE=1]="ACTIVE",t[t.PAUSED=2]="PAUSED"})(I||(I={}));var Ye=class extends Xe{context;server;connections=new Set;status={code:I.INACTIVE};metrics;addr;constructor(e){if(super(),this.context=e,e.keepAlive=e.keepAlive??!0,this.addr="unknown",this.server=hn.default.createServer(e,this.onSocket.bind(this)),e.maxConnections!==void 0&&(this.server.maxConnections=e.maxConnections),e.closeServerOnMaxConnections!=null&&e.closeServerOnMaxConnections.closeAbove<e.closeServerOnMaxConnections.listenBelow)throw new T("closeAbove must be >= listenBelow","ERROR_CONNECTION_LIMITS");this.server.on("listening",()=>{if(e.metrics!=null){let r=this.server.address();r==null?this.addr="unknown":typeof r=="string"?this.addr=r:this.addr=`${r.address}:${r.port}`,e.metrics?.registerMetricGroup("libp2p_tcp_inbound_connections_total",{label:"address",help:"Current active connections in TCP listener",calculate:()=>({[this.addr]:this.connections.size})}),this.metrics={status:e.metrics.registerMetricGroup("libp2p_tcp_listener_status_info",{label:"address",help:"Current status of the TCP listener socket"}),errors:e.metrics.registerMetricGroup("libp2p_tcp_listener_errors_total",{label:"address",help:"Total count of TCP listener errors by type"}),events:e.metrics.registerMetricGroup("libp2p_tcp_listener_events_total",{label:"address",help:"Total count of TCP listener events by type"})},this.metrics?.status.update({[this.addr]:I.ACTIVE})}this.dispatchEvent(new Se("listening"))}).on("error",r=>{this.metrics?.errors.increment({[`${this.addr} listen_error`]:!0}),this.dispatchEvent(new Se("error",{detail:r}))}).on("close",()=>{this.metrics?.status.update({[this.addr]:this.status.code}),this.status.code!==I.PAUSED&&this.dispatchEvent(new Se("close"))})}onSocket(e){if(this.status.code!==I.ACTIVE)throw new T("Server is is not listening yet","ERR_SERVER_NOT_RUNNING");e.on("error",n=>{M("socket error",n),this.metrics?.events.increment({[`${this.addr} error`]:!0})});let r;try{r=Qe(e,{listeningAddr:this.status.listeningAddr,socketInactivityTimeout:this.context.socketInactivityTimeout,socketCloseTimeout:this.context.socketCloseTimeout,metrics:this.metrics?.events,metricPrefix:`${this.addr} `})}catch(n){M.error("inbound connection failed",n),this.metrics?.errors.increment({[`${this.addr} inbound_to_connection`]:!0});return}M("new inbound connection %s",r.remoteAddr);try{this.context.upgrader.upgradeInbound(r).then(n=>{M("inbound connection upgraded %s",r.remoteAddr),this.connections.add(r),e.once("close",()=>{this.connections.delete(r),this.context.closeServerOnMaxConnections!=null&&this.connections.size<this.context.closeServerOnMaxConnections.listenBelow&&this.resume().catch(o=>{M.error("error attempting to listen server once connection count under limit",o),this.context.closeServerOnMaxConnections?.onListenError?.(o)})}),this.context.handler!=null&&this.context.handler(n),this.context.closeServerOnMaxConnections!=null&&this.connections.size>=this.context.closeServerOnMaxConnections.closeAbove&&this.pause(!1).catch(o=>{M.error("error attempting to close server once connection count over limit",o)}),this.dispatchEvent(new Se("connection",{detail:n}))}).catch(async n=>{M.error("inbound connection failed",n),this.metrics?.errors.increment({[`${this.addr} inbound_upgrade`]:!0}),await Ht(r)}).catch(n=>{M.error("closing inbound connection failed",n)})}catch(n){M.error("inbound connection failed",n),Ht(r).catch(o=>{M.error("closing inbound connection failed",o),this.metrics?.errors.increment({[`${this.addr} inbound_closing_failed`]:!0})})}}getAddrs(){if(this.status.code===I.INACTIVE)return[];let e=[],r=this.server.address(),{listeningAddr:n,peerId:o}=this.status;if(r==null)return[];if(typeof r=="string")e=[n];else try{n.toString().startsWith("/ip4")?e=e.concat(Xt("ip4",r.address,r.port)):r.family==="IPv6"&&(e=e.concat(Xt("ip6",r.address,r.port)))}catch(s){M.error("could not turn %s:%s into multiaddr",r.address,r.port,s)}return e.map(s=>o!=null?s.encapsulate(`/p2p/${o}`):s)}async listen(e){if(this.status.code===I.ACTIVE||this.status.code===I.PAUSED)throw new T("server is already listening","ERR_SERVER_ALREADY_LISTENING");let r=e.getPeerId(),n=r==null?e.decapsulateCode(421):e,{backlog:o}=this.context;try{this.status={code:I.ACTIVE,listeningAddr:n,peerId:r,netConfig:Pe(n,{backlog:o})},await this.resume()}catch(s){throw this.status={code:I.INACTIVE},s}}async close(){await Promise.all([Promise.all(Array.from(this.connections.values()).map(async e=>Ht(e))),this.pause(!0).catch(e=>{M.error("error attempting to close server once connection count over limit",e)})])}async resume(){if(this.server.listening||this.status.code===I.INACTIVE)return;let e=this.status.netConfig;await new Promise((r,n)=>{this.server.once("error",n),this.server.listen(e,r)}),this.status={...this.status,code:I.ACTIVE},M("Listening on %s",this.server.address())}async pause(e){if(!this.server.listening&&this.status.code===I.PAUSED&&e){this.status={code:I.INACTIVE};return}!this.server.listening||this.status.code!==I.ACTIVE||(M("Closing server on %s",this.server.address()),this.status=e?{code:I.INACTIVE}:{...this.status,code:I.PAUSED},await new Promise((r,n)=>{this.server.close(o=>{o!=null?n(o):r()})}))}};var K=ee("libp2p:tcp"),Yt=class{opts;metrics;components;constructor(e,r={}){this.opts=r,this.components=e,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_tcp_dialer_events_total",{label:"event",help:"Total count of TCP dialer events by type"})})}[er]=!0;[Symbol.toStringTag]="@libp2p/tcp";async dial(e,r){r.keepAlive=r.keepAlive??!0;let n=await this._connect(e,r);n.on("error",a=>{K("socket error",a)});let o=Qe(n,{remoteAddr:e,socketInactivityTimeout:this.opts.outboundSocketInactivityTimeout,socketCloseTimeout:this.opts.socketCloseTimeout,metrics:this.metrics?.dialerEvents}),s=()=>{o.close().catch(a=>{K.error("Error closing maConn after abort",a)})};r.signal?.addEventListener("abort",s,{once:!0}),K("new outbound connection %s",o.remoteAddr);let i=await r.upgrader.upgradeOutbound(o);if(K("outbound connection %s upgraded",o.remoteAddr),r.signal?.removeEventListener("abort",s),r.signal?.aborted===!0)throw i.close().catch(a=>{K.error("Error closing conn after abort",a)}),new pe;return i}async _connect(e,r){if(r.signal?.aborted===!0)throw new pe;return new Promise((n,o)=>{let s=Date.now(),i=Pe(e),a=i.path??`${i.host??""}:${i.port}`;K("dialing %j",i);let p=mn.default.connect(i),y=h=>{h.message=`connection error ${a}: ${h.message}`,this.metrics?.dialerEvents.increment({error:!0}),g(h)},u=()=>{K("connection timeout %s",a),this.metrics?.dialerEvents.increment({timeout:!0});let h=new T(`connection timeout after ${Date.now()-s}ms`,"ERR_CONNECT_TIMEOUT");p.emit("error",h)},l=()=>{K("connection opened %j",i),this.metrics?.dialerEvents.increment({connect:!0}),g()},f=()=>{K("connection aborted %j",i),this.metrics?.dialerEvents.increment({abort:!0}),p.destroy(),g(new pe)},g=h=>{if(p.removeListener("error",y),p.removeListener("timeout",u),p.removeListener("connect",l),r.signal!=null&&r.signal.removeEventListener("abort",f),h!=null){o(h);return}n(p)};p.on("error",y),p.on("timeout",u),p.on("connect",l),r.signal!=null&&r.signal.addEventListener("abort",f)})}createListener(e){return new Ye({...e,maxConnections:this.opts.maxConnections,backlog:this.opts.backlog,closeServerOnMaxConnections:this.opts.closeServerOnMaxConnections,socketInactivityTimeout:this.opts.inboundSocketInactivityTimeout,socketCloseTimeout:this.opts.socketCloseTimeout,metrics:this.components.metrics})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(r=>r.protoCodes().includes(290)?!1:r.protoCodes().includes(400)?!0:ne.matches(r.decapsulateCode(421)))}};function Js(t={}){return(e={})=>new Yt(e,t)}return Cn(Xs);})();
2
+ "use strict";var Libp2PTcp=(()=>{var Lr=Object.create;var bt=Object.defineProperty;var Or=Object.getOwnPropertyDescriptor;var Vr=Object.getOwnPropertyNames;var Fr=Object.getPrototypeOf,$r=Object.prototype.hasOwnProperty;var Y=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var Z=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),R=(r,t)=>{for(var e in t)bt(r,e,{get:t[e],enumerable:!0})},Ne=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Vr(t))!$r.call(r,o)&&o!==e&&bt(r,o,{get:()=>t[o],enumerable:!(n=Or(t,o))||n.enumerable});return r};var tt=(r,t,e)=>(e=r!=null?Lr(Fr(r)):{},Ne(t||!r||!r.__esModule?bt(e,"default",{value:r,enumerable:!0}):e,r)),zr=r=>Ne(bt({},"__esModule",{value:!0}),r);var Mt=Z((Sc,Ir)=>{Ir.exports=r=>{if(r[Symbol.asyncIterator])return r;if(r.getReader)return async function*(){let t=r.getReader();try{for(;;){let{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}}();throw new Error("unknown stream")}});var Sr=Z((Tc,Cr)=>{Cr.exports=function(t){if(t){if(typeof t[Symbol.iterator]=="function")return t[Symbol.iterator]();if(typeof t[Symbol.asyncIterator]=="function")return t[Symbol.asyncIterator]();if(typeof t.next=="function")return t}throw new Error("argument is not an iterator or iterable")}});var Ae=Z((Pc,Tr)=>{var Do=Sr();Tr.exports=r=>async t=>{t=Do(t);let e=w=>{typeof w.return=="function"&&w.return()},n=null,o=null,s=w=>{n=w,o&&o(w),e(t)},i=null,a=!1,u=()=>{a=!0,i&&i()},p=null,m=!1,v=()=>{m=!0,p&&p()},b=null,f=()=>{b&&b()},d=()=>new Promise((w,S)=>{i=b=w,o=S,r.once("drain",f)}),E=()=>(e(t),new Promise((w,S)=>{if(a||m||n)return w();p=i=w,o=S})),N=()=>{r.removeListener("error",s),r.removeListener("close",u),r.removeListener("finish",v),r.removeListener("drain",f)};r.once("error",s),r.once("close",u),r.once("finish",v);try{for await(let w of t){if(!r.writable||r.destroyed||n)break;r.write(w)===!1&&await d()}}catch(w){n||r.destroy(),n=w}try{if(r.writable&&r.end(),await E(),n)throw n}finally{N()}}});var Ie=Z((Rc,Pr)=>{var Uo=Ae(),_o=Mt();Pr.exports=r=>({sink:Uo(r),source:_o(r)})});var Nr=Z((Nc,Rr)=>{var ko=Ie();Rr.exports=r=>async function*(t){let e=ko(r),n;if(e.sink(t).catch(o=>{n=o}),yield*e.source,n)throw n}});var Mr=Z((Mc,pt)=>{pt.exports=Mt();pt.exports.source=Mt();pt.exports.sink=Ae();pt.exports.transform=Nr();pt.exports.duplex=Ie()});var Go={};R(Go,{tcp:()=>jo});var kr=tt(Y("net"),1);var et=class r extends Error{code;type;constructor(t="The operation was aborted"){super(t),this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},I=class extends Error{code;props;constructor(t,e,n){super(t),this.code=e,this.name=n?.name??"CodeError",this.props=n??{}}};var De=Symbol.for("@libp2p/transport");var Me;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Me||(Me={}));var Vt={};R(Vt,{base58btc:()=>T,base58flickr:()=>Xr});function Br(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,u=r.charAt(0),p=Math.log(a)/Math.log(256),m=Math.log(256)/Math.log(a);function v(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";for(var E=0,N=0,w=0,S=d.length;w!==S&&d[w]===0;)w++,E++;for(var k=(S-w)*m+1>>>0,M=new Uint8Array(k);w!==S;){for(var L=d[w],B=0,_=k-1;(L!==0||B<N)&&_!==-1;_--,B++)L+=256*M[_]>>>0,M[_]=L%a>>>0,L=L/a>>>0;if(L!==0)throw new Error("Non-zero carry");N=B,w++}for(var V=k-N;V!==k&&M[V]===0;)V++;for(var xt=u.repeat(E);V<k;++V)xt+=r.charAt(M[V]);return xt}function b(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;var E=0;if(d[E]!==" "){for(var N=0,w=0;d[E]===u;)N++,E++;for(var S=(d.length-E)*p+1>>>0,k=new Uint8Array(S);d[E];){var M=e[d.charCodeAt(E)];if(M===255)return;for(var L=0,B=S-1;(M!==0||L<w)&&B!==-1;B--,L++)M+=a*k[B]>>>0,k[B]=M%256>>>0,M=M/256>>>0;if(M!==0)throw new Error("Non-zero carry");w=L,E++}if(d[E]!==" "){for(var _=S-w;_!==S&&k[_]===0;)_++;for(var V=new Uint8Array(N+(S-_)),xt=N;_!==S;)V[xt++]=k[_++];return V}}}function f(d){var E=b(d);if(E)return E;throw new Error(`Non-${t} character`)}return{encode:v,decodeUnsafe:b,decode:f}}var qr=Br,jr=qr,Ue=jr;var Qo=new Uint8Array(0);var _e=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},D=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var ke=r=>new TextEncoder().encode(r),Le=r=>new TextDecoder().decode(r);var _t=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},kt=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Ve(this,t)}},Lt=class{constructor(t){this.decoders=t}or(t){return Ve(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ve=(r,t)=>new Lt({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),Ot=class{constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new _t(t,e,n),this.decoder=new kt(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},rt=({name:r,prefix:t,encode:e,decode:n})=>new Ot(r,t,e,n),q=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:o}=Ue(e,t);return rt({prefix:r,name:t,encode:n,decode:s=>D(o(s))})},Gr=(r,t,e,n)=>{let o={};for(let m=0;m<t.length;++m)o[t[m]]=m;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*e/8|0),a=0,u=0,p=0;for(let m=0;m<s;++m){let v=o[r[m]];if(v===void 0)throw new SyntaxError(`Non-${n} character`);u=u<<e|v,a+=e,a>=8&&(a-=8,i[p++]=255&u>>a)}if(a>=e||255&u<<8-a)throw new SyntaxError("Unexpected end of data");return i},Wr=(r,t,e)=>{let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let u=0;u<r.length;++u)for(a=a<<8|r[u],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i&&(s+=t[o&a<<e-i]),n)for(;s.length*e&7;)s+="=";return s},x=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>rt({prefix:t,name:r,encode(o){return Wr(o,n,e)},decode(o){return Gr(o,n,e,r)}});var T=q({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Xr=q({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ft={};R(Ft,{base32:()=>F,base32hex:()=>Kr,base32hexpad:()=>Zr,base32hexpadupper:()=>tn,base32hexupper:()=>Yr,base32pad:()=>Jr,base32padupper:()=>Qr,base32upper:()=>Hr,base32z:()=>en});var F=x({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Hr=x({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Jr=x({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Qr=x({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Kr=x({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Yr=x({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Zr=x({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),tn=x({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),en=x({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var rn=ze,Fe=128,nn=127,on=~nn,sn=Math.pow(2,31);function ze(r,t,e){t=t||[],e=e||0;for(var n=e;r>=sn;)t[e++]=r&255|Fe,r/=128;for(;r&on;)t[e++]=r&255|Fe,r>>>=7;return t[e]=r|0,ze.bytes=e-n+1,t}var cn=$t,an=128,$e=127;function $t(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw $t.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&$e)<<o:(i&$e)*Math.pow(2,o),o+=7}while(i>=an);return $t.bytes=s-n,e}var ln=Math.pow(2,7),dn=Math.pow(2,14),un=Math.pow(2,21),pn=Math.pow(2,28),fn=Math.pow(2,35),hn=Math.pow(2,42),mn=Math.pow(2,49),gn=Math.pow(2,56),wn=Math.pow(2,63),xn=function(r){return r<ln?1:r<dn?2:r<un?3:r<pn?4:r<fn?5:r<hn?6:r<mn?7:r<gn?8:r<wn?9:10},bn={encode:rn,decode:cn,encodingLength:xn},yn=bn,ht=yn;var mt=(r,t=0)=>[ht.decode(r,t),ht.decode.bytes],nt=(r,t,e=0)=>(ht.encode(r,t,e),t),ot=r=>ht.encodingLength(r);var X=(r,t)=>{let e=t.byteLength,n=ot(r),o=n+ot(e),s=new Uint8Array(o+e);return nt(r,s,0),nt(e,s,n),s.set(t,o),new st(r,e,t,s)},vt=r=>{let t=D(r),[e,n]=mt(t),[o,s]=mt(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new st(e,o,i,t)},Be=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&_e(r.bytes,e.bytes)}},st=class{constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};var qe=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return En(e,zt(r),t||T.encoder);default:return An(e,zt(r),t||F.encoder)}};var je=new WeakMap,zt=r=>{let t=je.get(r);if(t==null){let e=new Map;return je.set(r,e),e}return t},j=class r{constructor(t,e,n,o){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==gt)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==In)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}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:t,digest:e}=this.multihash,n=X(t,e);return r.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(t){return r.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&Be(t.multihash,n.multihash)}toString(t){return qe(this,t)}toJSON(){return{"/":qe(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i||Ge(n,o,s.bytes))}else if(e[Cn]===!0){let{version:n,multihash:o,code:s}=e,i=vt(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==gt)throw new Error(`Version 0 CID must use dag-pb (code: ${gt}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Ge(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,gt,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=D(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new st(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[v,b]=mt(t.subarray(e));return e+=b,v},o=n(),s=gt;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),u=n(),p=e+u,m=p-i;return{version:o,codec:s,multihashCode:a,digestSize:u,multihashSize:m,size:p}}static parse(t,e){let[n,o]=vn(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return zt(s).set(n,t),s}},vn=(r,t)=>{switch(r[0]){case"Q":{let e=t||T;return[T.prefix,e.decode(`${T.prefix}${r}`)]}case T.prefix:{let e=t||T;return[T.prefix,e.decode(r)]}case F.prefix:{let e=t||F;return[F.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},En=(r,t,e)=>{let{prefix:n}=e;if(n!==T.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o},An=(r,t,e)=>{let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o},gt=112,In=18,Ge=(r,t,e)=>{let n=ot(r),o=n+ot(t),s=new Uint8Array(o+e.byteLength);return nt(r,s,0),nt(t,s,n),s.set(e,o),s},Cn=Symbol.for("@ipld/js-cid/CID");function We(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var Bt={};R(Bt,{base10:()=>Sn});var Sn=q({prefix:"9",name:"base10",alphabet:"0123456789"});var qt={};R(qt,{base16:()=>Tn,base16upper:()=>Pn});var Tn=x({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Pn=x({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var jt={};R(jt,{base2:()=>Rn});var Rn=x({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Gt={};R(Gt,{base256emoji:()=>_n});var Xe=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}"),Nn=Xe.reduce((r,t,e)=>(r[e]=t,r),[]),Mn=Xe.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function Dn(r){return r.reduce((t,e)=>(t+=Nn[e],t),"")}function Un(r){let t=[];for(let e of r){let n=Mn[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var _n=rt({prefix:"\u{1F680}",name:"base256emoji",encode:Dn,decode:Un});var Wt={};R(Wt,{base36:()=>kn,base36upper:()=>Ln});var kn=q({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ln=q({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Xt={};R(Xt,{base64:()=>On,base64pad:()=>Vn,base64url:()=>Fn,base64urlpad:()=>$n});var On=x({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Vn=x({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Fn=x({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),$n=x({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ht={};R(Ht,{base8:()=>zn});var zn=x({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Jt={};R(Jt,{identity:()=>Bn});var Bn=rt({prefix:"\0",name:"identity",encode:r=>Le(r),decode:r=>ke(r)});var ys=new TextEncoder,vs=new TextDecoder;var Qt={};R(Qt,{identity:()=>Xn});var He=0,Gn="identity",Je=D,Wn=r=>X(He,Je(r)),Xn={code:He,name:Gn,encode:Je,digest:Wn};var te={};R(te,{sha256:()=>Hn,sha512:()=>Jn});var Zt=tt(Y("crypto"),1);var Yt=({name:r,code:t,encode:e})=>new Kt(r,t,e),Kt=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?X(this.code,e):e.then(n=>X(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Hn=Yt({name:"sha2-256",code:18,encode:r=>D(Zt.default.createHash("sha256").update(r).digest())}),Jn=Yt({name:"sha2-512",code:19,encode:r=>D(Zt.default.createHash("sha512").update(r).digest())});var wt={...Jt,...jt,...Ht,...Bt,...qt,...Ft,...Wt,...Vt,...Xt,...Gt},Ns={...te,...Qt};function ct(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function at(r=0){return globalThis.Buffer?.allocUnsafe!=null?ct(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function Ye(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Ke=Ye("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ee=Ye("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=at(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Qn={utf8:Ke,"utf-8":Ke,hex:wt.base16,latin1:ee,ascii:ee,binary:ee,...wt},Et=Qn;function P(r,t="utf8"){let e=Et[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var Kn=Math.pow(2,7),Yn=Math.pow(2,14),Zn=Math.pow(2,21),re=Math.pow(2,28),ne=Math.pow(2,35),oe=Math.pow(2,42),se=Math.pow(2,49),h=128,C=127;function O(r){if(r<Kn)return 1;if(r<Yn)return 2;if(r<Zn)return 3;if(r<re)return 4;if(r<ne)return 5;if(r<oe)return 6;if(r<se)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function to(r,t,e=0){switch(O(r)){case 8:t[e++]=r&255|h,r/=128;case 7:t[e++]=r&255|h,r/=128;case 6:t[e++]=r&255|h,r/=128;case 5:t[e++]=r&255|h,r/=128;case 4:t[e++]=r&255|h,r>>>=7;case 3:t[e++]=r&255|h,r>>>=7;case 2:t[e++]=r&255|h,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function eo(r,t,e=0){switch(O(r)){case 8:t.set(e++,r&255|h),r/=128;case 7:t.set(e++,r&255|h),r/=128;case 6:t.set(e++,r&255|h),r/=128;case 5:t.set(e++,r&255|h),r/=128;case 4:t.set(e++,r&255|h),r>>>=7;case 3:t.set(e++,r&255|h),r>>>=7;case 2:t.set(e++,r&255|h),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function ro(r,t){let e=r[t],n=0;if(n+=e&C,e<h||(e=r[t+1],n+=(e&C)<<7,e<h)||(e=r[t+2],n+=(e&C)<<14,e<h)||(e=r[t+3],n+=(e&C)<<21,e<h)||(e=r[t+4],n+=(e&C)*re,e<h)||(e=r[t+5],n+=(e&C)*ne,e<h)||(e=r[t+6],n+=(e&C)*oe,e<h)||(e=r[t+7],n+=(e&C)*se,e<h))return n;throw new RangeError("Could not decode varint")}function no(r,t){let e=r.get(t),n=0;if(n+=e&C,e<h||(e=r.get(t+1),n+=(e&C)<<7,e<h)||(e=r.get(t+2),n+=(e&C)<<14,e<h)||(e=r.get(t+3),n+=(e&C)<<21,e<h)||(e=r.get(t+4),n+=(e&C)*re,e<h)||(e=r.get(t+5),n+=(e&C)*ne,e<h)||(e=r.get(t+6),n+=(e&C)*oe,e<h)||(e=r.get(t+7),n+=(e&C)*se,e<h))return n;throw new RangeError("Could not decode varint")}function lt(r,t,e=0){return t==null&&(t=at(O(r))),t instanceof Uint8Array?to(r,t,e):eo(r,t,e)}function H(r,t=0){return r instanceof Uint8Array?ro(r,t):no(r,t)}function $(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=at(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return ct(e)}var At=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let u=a==="0",p=2**(8*o)-1;for(;;){let m=this.readAtomically(()=>{let v=this.readChar();if(v===void 0)return;let b=Number.parseInt(v,t);if(!Number.isNaN(b))return b});if(m===void 0)break;if(s*=t,s+=m,s>p||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&u&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[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];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Ws=new At;var ti=parseInt("0xFFFF",16),ei=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function ie(r,t="utf8"){let e=Et[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?ct(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}var U=Y("node:net");function It(r){return!!(0,U.isIP)(r)}var rr=U.isIPv4,lo=U.isIPv6,ce=function(r){let t=0;if(r=r.toString().trim(),rr(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(lo(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=rr(e[n]),i;s&&(i=ce(e[n]),e[n]=P(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,P(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},nr=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var dt={},ae={},po=[[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"],[777,-1,"memory"]];po.forEach(r=>{let t=fo(...r);ae[t.code]=t,dt[t.name]=t});function fo(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function g(r){if(typeof r=="number"){if(ae[r]!=null)return ae[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(dt[r]!=null)return dt[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Bi=g("ip4"),qi=g("ip6"),ji=g("ipcidr");function de(r,t){switch(g(r).code){case 4:case 41:return mo(t);case 42:return ir(t);case 6:case 273:case 33:case 132:return ar(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return ir(t);case 421:return bo(t);case 444:return cr(t);case 445:return cr(t);case 466:return xo(t);default:return P(t,"base16")}}function ue(r,t){switch(g(r).code){case 4:return or(t);case 41:return or(t);case 42:return sr(t);case 6:case 273:case 33:case 132:return pe(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return sr(t);case 421:return go(t);case 444:return yo(t);case 445:return vo(t);case 466:return wo(t);default:return ie(t,"base16")}}var le=Object.values(wt).map(r=>r.decoder),ho=function(){let r=le[0].or(le[1]);return le.slice(2).forEach(t=>r=r.or(t)),r}();function or(r){if(!It(r))throw new Error("invalid ip address");return ce(r)}function mo(r){let t=nr(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!It(t))throw new Error("invalid ip address");return t}function pe(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function ar(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function sr(r){let t=ie(r),e=Uint8Array.from(lt(t.length));return $([e,t],e.length+t.length)}function ir(r){let t=H(r);if(r=r.slice(O(t)),r.length!==t)throw new Error("inconsistent lengths");return P(r)}function go(r){let t;r[0]==="Q"||r[0]==="1"?t=vt(T.decode(`z${r}`)).bytes:t=j.parse(r).multihash.bytes;let e=Uint8Array.from(lt(t.length));return $([e,t],e.length+t.length)}function wo(r){let t=ho.decode(r),e=Uint8Array.from(lt(t.length));return $([e,t],e.length+t.length)}function xo(r){let t=H(r),e=r.slice(O(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+P(e,"base64url")}function bo(r){let t=H(r),e=r.slice(O(t));if(e.length!==t)throw new Error("inconsistent lengths");return P(e,"base58btc")}function yo(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=F.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=pe(n);return $([e,o],e.length+o.length)}function vo(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=F.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=pe(n);return $([e,o],e.length+o.length)}function cr(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=P(t,"base32"),o=ar(e);return`${n}:${o}`}function lr(r){r=fe(r);let t=[],e=[],n=null,o=r.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=g(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw ur("invalid address: "+r);if(a.path===!0){n=fe(o.slice(s).join("/")),t.push([a.code,ue(a.code,n)]),e.push([a.code,n]);break}let u=ue(a.code,o[s]);t.push([a.code,u]),e.push([a.code,de(a.code,u)])}return{string:dr(e),bytes:me(t),tuples:t,stringTuples:e,path:n}}function he(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=H(r,o),i=O(s),a=g(s),u=Eo(a,r.slice(o+i));if(u===0){t.push([s]),e.push([s]),o+=i;continue}let p=r.slice(o+i,o+i+u);if(o+=u+i,o>r.length)throw ur("Invalid address Uint8Array: "+P(r,"base16"));t.push([s,p]);let m=de(s,p);if(e.push([s,m]),a.path===!0){n=m;break}}return{bytes:Uint8Array.from(r),string:dr(e),tuples:t,stringTuples:e,path:n}}function dr(r){let t=[];return r.map(e=>{let n=g(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),fe(t.join("/"))}function me(r){return $(r.map(t=>{let e=g(t[0]),n=Uint8Array.from(lt(e.code));return t.length>1&&t[1]!=null&&(n=$([n,t[1]])),n}))}function Eo(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=H(t instanceof Uint8Array?t:Uint8Array.from(t));return e+O(e)}}function fe(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function ur(r){return new Error("Error parsing address: "+r)}var Ao=Symbol.for("nodejs.util.inspect.custom"),ge=Symbol.for("@multiformats/js-multiaddr/multiaddr"),Io=[g("dns").code,g("dns4").code,g("dns6").code,g("dnsaddr").code],Ct=class r{bytes;#t;#e;#r;#n;[ge]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=he(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=lr(t)}else if(fr(t))e=he(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=g("tcp"),a=g("udp"),u=g("ip4"),p=g("ip6"),m=g("dns6"),v=g("ip6zone");for(let[f,d]of this.stringTuples())f===v.code&&(s=`%${d??""}`),Io.includes(f)&&(e=i.name,o=443,n=`${d??""}${s}`,t=f===m.code?6:4),(f===i.code||f===a.code)&&(e=g(f).name,o=parseInt(d??"")),(f===u.code||f===p.code)&&(e=g(f).name,n=`${d??""}${s}`,t=f===p.code?6:4);if(t==null||e==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:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},g(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>g(t).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(me(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===dt.p2p.code&&t.push([n,o]),n===dt["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?P(T.decode(`z${n}`),"base58btc"):P(j.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return We(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=pr.get(e.name);if(n==null)throw new I(`no available resolver for ${e.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,t)).map(s=>new r(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[Ao](){return`Multiaddr(${this.#t})`}};var pr=new Map;function fr(r){return!!r?.[ge]}function z(r){return new Ct(r)}var Co=c("dns4"),So=c("dns6"),To=c("dnsaddr"),Q=y(c("dns"),To,Co,So),Pt=y(c("ip4"),c("ip6")),W=y(l(Pt,c("tcp")),l(Q,c("tcp"))),Rt=l(Pt,c("udp")),Po=l(Rt,c("utp")),Ro=l(Rt,c("quic")),No=l(Rt,c("quic-v1")),we=y(l(W,c("ws")),l(Q,c("ws"))),St=y(l(we,c("p2p")),we),xe=y(l(W,c("wss")),l(Q,c("wss")),l(W,c("tls"),c("ws")),l(Q,c("tls"),c("ws"))),Tt=y(l(xe,c("p2p")),xe),be=y(l(W,c("http")),l(Pt,c("http")),l(Q,c("http"))),ye=y(l(W,c("https")),l(Pt,c("https")),l(Q,c("https"))),hr=l(Rt,c("webrtc-direct"),c("certhash")),wr=y(l(hr,c("p2p")),hr),mr=l(No,c("webtransport"),c("certhash"),c("certhash")),xr=y(l(mr,c("p2p")),mr),br=y(l(St,c("p2p-webrtc-star"),c("p2p")),l(Tt,c("p2p-webrtc-star"),c("p2p")),l(St,c("p2p-webrtc-star")),l(Tt,c("p2p-webrtc-star"))),gc=y(l(St,c("p2p-websocket-star"),c("p2p")),l(Tt,c("p2p-websocket-star"),c("p2p")),l(St,c("p2p-websocket-star")),l(Tt,c("p2p-websocket-star"))),yr=y(l(be,c("p2p-webrtc-direct"),c("p2p")),l(ye,c("p2p-webrtc-direct"),c("p2p")),l(be,c("p2p-webrtc-direct")),l(ye,c("p2p-webrtc-direct"))),K=y(we,xe,be,ye,br,yr,W,Po,Ro,Q,wr,xr),wc=y(l(K,c("p2p-stardust"),c("p2p")),l(K,c("p2p-stardust"))),G=y(l(K,c("p2p")),br,yr,wr,xr,c("p2p")),gr=y(l(G,c("p2p-circuit"),G),l(G,c("p2p-circuit")),l(c("p2p-circuit"),G),l(K,c("p2p-circuit")),l(c("p2p-circuit"),K),c("p2p-circuit")),vr=()=>y(l(gr,vr),gr),J=vr(),xc=y(l(J,G,J),l(G,J),l(J,G),J,G);var bc=y(l(J,c("webrtc"),c("p2p")),l(J,c("webrtc")),l(K,c("webrtc"),c("p2p")),l(K,c("webrtc")),c("webrtc"));function Er(r){function t(e){let n;try{n=z(e)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return t}function l(...r){function t(e){if(e.length<r.length)return null;let n=e;return r.some(o=>(n=typeof o=="function"?o().partialMatch(e):o.partialMatch(e),Array.isArray(n)&&(e=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Er(t),partialMatch:t}}function y(...r){function t(n){let o=null;return r.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"{ "+r.join(" ")+" }"},input:r,matches:Er(t),partialMatch:t}}function c(r){let t=r;function e(o){let s;try{s=z(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===t}function n(o){return o.length===0?null:o[0]===t?o.slice(1):null}return{toString:function(){return t},matches:e,partialMatch:n}}var _r=tt(Y("net"),1);var Nt=class extends EventTarget{#t=new Map;listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e){return this.dispatchEvent(new ut(t,e))}},ve=class extends Event{detail;constructor(t,e){super(t,e),this.detail=e?.detail}},ut=globalThis.CustomEvent??ve;var Ee={ERR_INVALID_IP_PARAMETER:"ERR_INVALID_IP_PARAMETER",ERR_INVALID_PORT_PARAMETER:"ERR_INVALID_PORT_PARAMETER",ERR_INVALID_IP:"ERR_INVALID_IP"};function Ar(r,t){if(typeof r!="string")throw new I(`invalid ip provided: ${r}`,Ee.ERR_INVALID_IP_PARAMETER);if(typeof t=="string"&&(t=parseInt(t)),isNaN(t))throw new I(`invalid port provided: ${t}`,Ee.ERR_INVALID_PORT_PARAMETER);if((0,U.isIPv4)(r))return z(`/ip4/${r}/tcp/${t}`);if((0,U.isIPv6)(r))return z(`/ip6/${r}/tcp/${t}`);throw new I(`invalid ip:port for creating a multiaddr: ${r}:${t}`,Ee.ERR_INVALID_IP)}var Ur=tt(Mr(),1);var Ce=tt(Y("os"),1),Dr=tt(Y("path"),1);var Lo={ip4:"IPv4",ip6:"IPv6"};function ft(r,t={}){let e=r.getPath();return e!=null?Ce.default.platform()==="win32"?{path:Dr.default.join("\\\\.\\pipe\\",e)}:{path:e}:{...r.toOptions(),...t}}function Se(r,t,e){let n=o=>z(`/${r}/${o}/tcp/${e}`);return(Oo(t)?Fo(Lo[r]):[t]).map(n)}function Oo(r){return["0.0.0.0","::"].includes(r)}var Vo=Ce.default.networkInterfaces();function Fo(r){let t=[];for(let[,e]of Object.entries(Vo))if(e!=null)for(let n of e)n.family===r&&t.push(n.address);return t}var Dt=(r,t)=>{let e=t.logger.forComponent("libp2p:tcp:socket"),n=t.metrics,o=t.metricPrefix??"",s=t.socketInactivityTimeout??3e5,i=t.socketCloseTimeout??500;t.listeningAddr?.getPath()!=null&&(t.remoteAddr=t.listeningAddr),t.remoteAddr?.getPath()!=null&&(t.localAddr=t.remoteAddr);let a;if(t.remoteAddr!=null)a=t.remoteAddr;else{if(r.remoteAddress==null||r.remotePort==null)throw new I("Could not determine remote address or port","ERR_NO_REMOTE_ADDRESS");a=Ar(r.remoteAddress,r.remotePort)}let u=ft(a),p=u.path??`${u.host??""}:${u.port??""}`,{sink:m,source:v}=Ur.default.duplex(r);r.setTimeout(s,()=>{e("%s socket read timeout",p),n?.increment({[`${o}timeout`]:!0});let f;r.readable&&(f=new I("Socket read timeout","ERR_SOCKET_READ_TIMEOUT")),r.destroy(f)}),r.once("close",()=>{e("%s socket close",p),n?.increment({[`${o}close`]:!0}),b.timeline.close==null&&(b.timeline.close=Date.now())}),r.once("end",()=>{e("%s socket end",p),n?.increment({[`${o}end`]:!0})});let b={async sink(f){try{await m(f)}catch(d){d.type!=="aborted"&&e(d)}r.end()},source:v,remoteAddr:a,timeline:{open:Date.now()},async close(f={}){if(r.destroyed){e("%s socket was already destroyed when trying to close",p);return}if(f.signal==null){let d=AbortSignal.timeout(i);f={...f,signal:d}}try{e("%s closing socket",p),await new Promise((d,E)=>{r.once("close",()=>{e("%s socket closed",p),d()}),r.once("error",N=>{e("%s socket error",p,N),b.timeline.close==null&&(b.timeline.close=Date.now()),E(N)}),r.setTimeout(i),r.end(),r.writableLength>0?r.once("drain",()=>{e("%s socket drained",p),r.destroy()}):r.destroy()})}catch(d){this.abort(d)}},abort:f=>{e("%s socket abort due to error",p,f),r.destroy(f)}};return b};async function Te(r,t){try{await r.close()}catch(e){t.log.error("an error occurred closing the connection",e)}}var A;(function(r){r[r.INACTIVE=0]="INACTIVE",r[r.ACTIVE=1]="ACTIVE",r[r.PAUSED=2]="PAUSED"})(A||(A={}));var Ut=class extends Nt{context;server;connections=new Set;status={code:A.INACTIVE};metrics;addr;log;constructor(t){if(super(),this.context=t,t.keepAlive=t.keepAlive??!0,this.log=t.logger.forComponent("libp2p:tcp:listener"),this.addr="unknown",this.server=_r.default.createServer(t,this.onSocket.bind(this)),t.maxConnections!==void 0&&(this.server.maxConnections=t.maxConnections),t.closeServerOnMaxConnections!=null&&t.closeServerOnMaxConnections.closeAbove<t.closeServerOnMaxConnections.listenBelow)throw new I("closeAbove must be >= listenBelow","ERROR_CONNECTION_LIMITS");this.server.on("listening",()=>{if(t.metrics!=null){let e=this.server.address();e==null?this.addr="unknown":typeof e=="string"?this.addr=e:this.addr=`${e.address}:${e.port}`,t.metrics?.registerMetricGroup("libp2p_tcp_inbound_connections_total",{label:"address",help:"Current active connections in TCP listener",calculate:()=>({[this.addr]:this.connections.size})}),this.metrics={status:t.metrics.registerMetricGroup("libp2p_tcp_listener_status_info",{label:"address",help:"Current status of the TCP listener socket"}),errors:t.metrics.registerMetricGroup("libp2p_tcp_listener_errors_total",{label:"address",help:"Total count of TCP listener errors by type"}),events:t.metrics.registerMetricGroup("libp2p_tcp_listener_events_total",{label:"address",help:"Total count of TCP listener events by type"})},this.metrics?.status.update({[this.addr]:A.ACTIVE})}this.dispatchEvent(new ut("listening"))}).on("error",e=>{this.metrics?.errors.increment({[`${this.addr} listen_error`]:!0}),this.dispatchEvent(new ut("error",{detail:e}))}).on("close",()=>{this.metrics?.status.update({[this.addr]:this.status.code}),this.status.code!==A.PAUSED&&this.dispatchEvent(new ut("close"))})}onSocket(t){if(this.status.code!==A.ACTIVE)throw new I("Server is is not listening yet","ERR_SERVER_NOT_RUNNING");t.on("error",n=>{this.log("socket error",n),this.metrics?.events.increment({[`${this.addr} error`]:!0})});let e;try{e=Dt(t,{listeningAddr:this.status.listeningAddr,socketInactivityTimeout:this.context.socketInactivityTimeout,socketCloseTimeout:this.context.socketCloseTimeout,metrics:this.metrics?.events,metricPrefix:`${this.addr} `,logger:this.context.logger})}catch(n){this.log.error("inbound connection failed",n),this.metrics?.errors.increment({[`${this.addr} inbound_to_connection`]:!0});return}this.log("new inbound connection %s",e.remoteAddr);try{this.context.upgrader.upgradeInbound(e).then(n=>{this.log("inbound connection upgraded %s",e.remoteAddr),this.connections.add(e),t.once("close",()=>{this.connections.delete(e),this.context.closeServerOnMaxConnections!=null&&this.connections.size<this.context.closeServerOnMaxConnections.listenBelow&&this.resume().catch(o=>{this.log.error("error attempting to listen server once connection count under limit",o),this.context.closeServerOnMaxConnections?.onListenError?.(o)})}),this.context.handler!=null&&this.context.handler(n),this.context.closeServerOnMaxConnections!=null&&this.connections.size>=this.context.closeServerOnMaxConnections.closeAbove&&this.pause(!1).catch(o=>{this.log.error("error attempting to close server once connection count over limit",o)}),this.dispatchEvent(new ut("connection",{detail:n}))}).catch(async n=>{this.log.error("inbound connection failed",n),this.metrics?.errors.increment({[`${this.addr} inbound_upgrade`]:!0}),await Te(e,{log:this.log})}).catch(n=>{this.log.error("closing inbound connection failed",n)})}catch(n){this.log.error("inbound connection failed",n),Te(e,{log:this.log}).catch(o=>{this.log.error("closing inbound connection failed",o),this.metrics?.errors.increment({[`${this.addr} inbound_closing_failed`]:!0})})}}getAddrs(){if(this.status.code===A.INACTIVE)return[];let t=[],e=this.server.address(),{listeningAddr:n,peerId:o}=this.status;if(e==null)return[];if(typeof e=="string")t=[n];else try{n.toString().startsWith("/ip4")?t=t.concat(Se("ip4",e.address,e.port)):e.family==="IPv6"&&(t=t.concat(Se("ip6",e.address,e.port)))}catch(s){this.log.error("could not turn %s:%s into multiaddr",e.address,e.port,s)}return t.map(s=>o!=null?s.encapsulate(`/p2p/${o}`):s)}async listen(t){if(this.status.code===A.ACTIVE||this.status.code===A.PAUSED)throw new I("server is already listening","ERR_SERVER_ALREADY_LISTENING");let e=t.getPeerId(),n=e==null?t.decapsulateCode(421):t,{backlog:o}=this.context;try{this.status={code:A.ACTIVE,listeningAddr:n,peerId:e,netConfig:ft(n,{backlog:o})},await this.resume()}catch(s){throw this.status={code:A.INACTIVE},s}}async close(){await Promise.all([Promise.all(Array.from(this.connections.values()).map(async t=>Te(t,{log:this.log}))),this.pause(!0).catch(t=>{this.log.error("error attempting to close server once connection count over limit",t)})])}async resume(){if(this.server.listening||this.status.code===A.INACTIVE)return;let t=this.status.netConfig;await new Promise((e,n)=>{this.server.once("error",n),this.server.listen(t,e)}),this.status={...this.status,code:A.ACTIVE},this.log("Listening on %s",this.server.address())}async pause(t){if(!this.server.listening&&this.status.code===A.PAUSED&&t){this.status={code:A.INACTIVE};return}!this.server.listening||this.status.code!==A.ACTIVE||(this.log("Closing server on %s",this.server.address()),this.status=t?{code:A.INACTIVE}:{...this.status,code:A.PAUSED},await new Promise((e,n)=>{this.server.close(o=>{o!=null?n(o):e()})}))}};var Re=class{opts;metrics;components;log;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:tcp"),this.opts=e,this.components=t,t.metrics!=null&&(this.metrics={dialerEvents:t.metrics.registerCounterGroup("libp2p_tcp_dialer_events_total",{label:"event",help:"Total count of TCP dialer events by type"})})}[De]=!0;[Symbol.toStringTag]="@libp2p/tcp";async dial(t,e){e.keepAlive=e.keepAlive??!0;let n=await this._connect(t,e);n.on("error",a=>{this.log("socket error",a)});let o=Dt(n,{remoteAddr:t,socketInactivityTimeout:this.opts.outboundSocketInactivityTimeout,socketCloseTimeout:this.opts.socketCloseTimeout,metrics:this.metrics?.dialerEvents,logger:this.components.logger}),s=()=>{o.close().catch(a=>{this.log.error("Error closing maConn after abort",a)})};e.signal?.addEventListener("abort",s,{once:!0}),this.log("new outbound connection %s",o.remoteAddr);let i=await e.upgrader.upgradeOutbound(o);if(this.log("outbound connection %s upgraded",o.remoteAddr),e.signal?.removeEventListener("abort",s),e.signal?.aborted===!0)throw i.close().catch(a=>{this.log.error("Error closing conn after abort",a)}),new et;return i}async _connect(t,e){if(e.signal?.aborted===!0)throw new et;return new Promise((n,o)=>{let s=Date.now(),i=ft(t),a=i.path??`${i.host??""}:${i.port}`;this.log("dialing %j",i);let u=kr.default.connect(i),p=d=>{d.message=`connection error ${a}: ${d.message}`,this.metrics?.dialerEvents.increment({error:!0}),f(d)},m=()=>{this.log("connection timeout %s",a),this.metrics?.dialerEvents.increment({timeout:!0});let d=new I(`connection timeout after ${Date.now()-s}ms`,"ERR_CONNECT_TIMEOUT");u.emit("error",d)},v=()=>{this.log("connection opened %j",i),this.metrics?.dialerEvents.increment({connect:!0}),f()},b=()=>{this.log("connection aborted %j",i),this.metrics?.dialerEvents.increment({abort:!0}),u.destroy(),f(new et)},f=d=>{if(u.removeListener("error",p),u.removeListener("timeout",m),u.removeListener("connect",v),e.signal!=null&&e.signal.removeEventListener("abort",b),d!=null){o(d);return}n(u)};u.on("error",p),u.on("timeout",m),u.on("connect",v),e.signal!=null&&e.signal.addEventListener("abort",b)})}createListener(t){return new Ut({...t,maxConnections:this.opts.maxConnections,backlog:this.opts.backlog,closeServerOnMaxConnections:this.opts.closeServerOnMaxConnections,socketInactivityTimeout:this.opts.inboundSocketInactivityTimeout,socketCloseTimeout:this.opts.socketCloseTimeout,metrics:this.components.metrics,logger:this.components.logger})}filter(t){return t=Array.isArray(t)?t:[t],t.filter(e=>e.protoCodes().includes(290)?!1:e.protoCodes().includes(400)?!0:W.matches(e.decapsulateCode(421)))}};function jo(r={}){return t=>new Re(t,r)}return zr(Go);})();
7
3
  return Libp2PTcp}));
@@ -22,7 +22,7 @@
22
22
  * const listener = transport.createListener({
23
23
  * upgrader,
24
24
  * handler: (socket) => {
25
- * console.log('new connection opened')
25
+ * console.this.log('new connection opened')
26
26
  * pipe(
27
27
  * ['hello', ' ', 'World!'],
28
28
  * socket
@@ -32,14 +32,14 @@
32
32
  *
33
33
  * const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
34
34
  * await listener.listen(addr)
35
- * console.log('listening')
35
+ * console.this.log('listening')
36
36
  *
37
37
  * const socket = await transport.dial(addr, { upgrader })
38
38
  * const values = await pipe(
39
39
  * socket,
40
40
  * all
41
41
  * )
42
- * console.log(`Value: ${values.toString()}`)
42
+ * console.this.log(`Value: ${values.toString()}`)
43
43
  *
44
44
  * // Close connection after reading
45
45
  * await listener.close()
@@ -55,6 +55,7 @@
55
55
  */
56
56
  import { type CreateListenerOptions, type DialOptions, type Transport } from '@libp2p/interface/transport';
57
57
  import { type CloseServerOnMaxConnectionsOpts } from './listener.js';
58
+ import type { ComponentLogger } from '@libp2p/interface';
58
59
  import type { CounterGroup, Metrics } from '@libp2p/interface/metrics';
59
60
  import type { AbortOptions } from '@multiformats/multiaddr';
60
61
  export interface TCPOptions {
@@ -101,9 +102,10 @@ export interface TCPCreateListenerOptions extends CreateListenerOptions, TCPSock
101
102
  }
102
103
  export interface TCPComponents {
103
104
  metrics?: Metrics;
105
+ logger: ComponentLogger;
104
106
  }
105
107
  export interface TCPMetrics {
106
108
  dialerEvents: CounterGroup;
107
109
  }
108
- export declare function tcp(init?: TCPOptions): (components?: TCPComponents) => Transport;
110
+ export declare function tcp(init?: TCPOptions): (components: TCPComponents) => Transport;
109
111
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAIH,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAU,KAAK,SAAS,EAAiB,MAAM,6BAA6B,CAAA;AAIjI,OAAO,EAAE,KAAK,+BAA+B,EAAe,MAAM,eAAe,CAAA;AAIjF,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAKtE,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,+BAA+B,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,gBAAgB;CAEpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,YAAY,CAAA;CAC3B;AA4KD,wBAAgB,GAAG,CAAE,IAAI,GAAE,UAAe,GAAG,CAAC,UAAU,CAAC,EAAE,aAAa,KAAK,SAAS,CAIrF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAIH,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAU,KAAK,SAAS,EAAiB,MAAM,6BAA6B,CAAA;AAGjI,OAAO,EAAE,KAAK,+BAA+B,EAAe,MAAM,eAAe,CAAA;AAGjF,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,mBAAmB,CAAA;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAGtE,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,+BAA+B,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,gBAAgB;CAEpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,YAAY,CAAA;CAC3B;AAgLD,wBAAgB,GAAG,CAAE,IAAI,GAAE,UAAe,GAAG,CAAC,UAAU,EAAE,aAAa,KAAK,SAAS,CAIpF"}
package/dist/src/index.js CHANGED
@@ -22,7 +22,7 @@
22
22
  * const listener = transport.createListener({
23
23
  * upgrader,
24
24
  * handler: (socket) => {
25
- * console.log('new connection opened')
25
+ * console.this.log('new connection opened')
26
26
  * pipe(
27
27
  * ['hello', ' ', 'World!'],
28
28
  * socket
@@ -32,14 +32,14 @@
32
32
  *
33
33
  * const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
34
34
  * await listener.listen(addr)
35
- * console.log('listening')
35
+ * console.this.log('listening')
36
36
  *
37
37
  * const socket = await transport.dial(addr, { upgrader })
38
38
  * const values = await pipe(
39
39
  * socket,
40
40
  * all
41
41
  * )
42
- * console.log(`Value: ${values.toString()}`)
42
+ * console.this.log(`Value: ${values.toString()}`)
43
43
  *
44
44
  * // Close connection after reading
45
45
  * await listener.close()
@@ -56,18 +56,18 @@
56
56
  import net from 'net';
57
57
  import { AbortError, CodeError } from '@libp2p/interface/errors';
58
58
  import { symbol } from '@libp2p/interface/transport';
59
- import { logger } from '@libp2p/logger';
60
59
  import * as mafmt from '@multiformats/mafmt';
61
60
  import { CODE_CIRCUIT, CODE_P2P, CODE_UNIX } from './constants.js';
62
61
  import { TCPListener } from './listener.js';
63
62
  import { toMultiaddrConnection } from './socket-to-conn.js';
64
63
  import { multiaddrToNetConfig } from './utils.js';
65
- const log = logger('libp2p:tcp');
66
64
  class TCP {
67
65
  opts;
68
66
  metrics;
69
67
  components;
68
+ log;
70
69
  constructor(components, options = {}) {
70
+ this.log = components.logger.forComponent('libp2p:tcp');
71
71
  this.opts = options;
72
72
  this.components = components;
73
73
  if (components.metrics != null) {
@@ -87,27 +87,28 @@ class TCP {
87
87
  const socket = await this._connect(ma, options);
88
88
  // Avoid uncaught errors caused by unstable connections
89
89
  socket.on('error', err => {
90
- log('socket error', err);
90
+ this.log('socket error', err);
91
91
  });
92
92
  const maConn = toMultiaddrConnection(socket, {
93
93
  remoteAddr: ma,
94
94
  socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
95
95
  socketCloseTimeout: this.opts.socketCloseTimeout,
96
- metrics: this.metrics?.dialerEvents
96
+ metrics: this.metrics?.dialerEvents,
97
+ logger: this.components.logger
97
98
  });
98
99
  const onAbort = () => {
99
100
  maConn.close().catch(err => {
100
- log.error('Error closing maConn after abort', err);
101
+ this.log.error('Error closing maConn after abort', err);
101
102
  });
102
103
  };
103
104
  options.signal?.addEventListener('abort', onAbort, { once: true });
104
- log('new outbound connection %s', maConn.remoteAddr);
105
+ this.log('new outbound connection %s', maConn.remoteAddr);
105
106
  const conn = await options.upgrader.upgradeOutbound(maConn);
106
- log('outbound connection %s upgraded', maConn.remoteAddr);
107
+ this.log('outbound connection %s upgraded', maConn.remoteAddr);
107
108
  options.signal?.removeEventListener('abort', onAbort);
108
109
  if (options.signal?.aborted === true) {
109
110
  conn.close().catch(err => {
110
- log.error('Error closing conn after abort', err);
111
+ this.log.error('Error closing conn after abort', err);
111
112
  });
112
113
  throw new AbortError();
113
114
  }
@@ -121,7 +122,7 @@ class TCP {
121
122
  const start = Date.now();
122
123
  const cOpts = multiaddrToNetConfig(ma);
123
124
  const cOptsStr = cOpts.path ?? `${cOpts.host ?? ''}:${cOpts.port}`;
124
- log('dialing %j', cOpts);
125
+ this.log('dialing %j', cOpts);
125
126
  const rawSocket = net.connect(cOpts);
126
127
  const onError = (err) => {
127
128
  err.message = `connection error ${cOptsStr}: ${err.message}`;
@@ -129,19 +130,19 @@ class TCP {
129
130
  done(err);
130
131
  };
131
132
  const onTimeout = () => {
132
- log('connection timeout %s', cOptsStr);
133
+ this.log('connection timeout %s', cOptsStr);
133
134
  this.metrics?.dialerEvents.increment({ timeout: true });
134
135
  const err = new CodeError(`connection timeout after ${Date.now() - start}ms`, 'ERR_CONNECT_TIMEOUT');
135
136
  // Note: this will result in onError() being called
136
137
  rawSocket.emit('error', err);
137
138
  };
138
139
  const onConnect = () => {
139
- log('connection opened %j', cOpts);
140
+ this.log('connection opened %j', cOpts);
140
141
  this.metrics?.dialerEvents.increment({ connect: true });
141
142
  done();
142
143
  };
143
144
  const onAbort = () => {
144
- log('connection aborted %j', cOpts);
145
+ this.log('connection aborted %j', cOpts);
145
146
  this.metrics?.dialerEvents.increment({ abort: true });
146
147
  rawSocket.destroy();
147
148
  done(new AbortError());
@@ -180,7 +181,8 @@ class TCP {
180
181
  closeServerOnMaxConnections: this.opts.closeServerOnMaxConnections,
181
182
  socketInactivityTimeout: this.opts.inboundSocketInactivityTimeout,
182
183
  socketCloseTimeout: this.opts.socketCloseTimeout,
183
- metrics: this.components.metrics
184
+ metrics: this.components.metrics,
185
+ logger: this.components.logger
184
186
  });
185
187
  }
186
188
  /**
@@ -200,7 +202,7 @@ class TCP {
200
202
  }
201
203
  }
202
204
  export function tcp(init = {}) {
203
- return (components = {}) => {
205
+ return (components) => {
204
206
  return new TCP(components, init);
205
207
  };
206
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { TypedEventEmitter } from '@libp2p/interface/events';
2
2
  import type { TCPCreateListenerOptions } from './index.js';
3
+ import type { ComponentLogger } from '@libp2p/interface';
3
4
  import type { Connection } from '@libp2p/interface/connection';
4
5
  import type { CounterGroup, MetricGroup, Metrics } from '@libp2p/interface/metrics';
5
6
  import type { Listener, ListenerEvents, Upgrader } from '@libp2p/interface/transport';
@@ -20,6 +21,7 @@ interface Context extends TCPCreateListenerOptions {
20
21
  backlog?: number;
21
22
  metrics?: Metrics;
22
23
  closeServerOnMaxConnections?: CloseServerOnMaxConnectionsOpts;
24
+ logger: ComponentLogger;
23
25
  }
24
26
  export interface TCPListenerMetrics {
25
27
  status: MetricGroup;
@@ -34,6 +36,7 @@ export declare class TCPListener extends TypedEventEmitter<ListenerEvents> imple
34
36
  private status;
35
37
  private metrics?;
36
38
  private addr;
39
+ private readonly log;
37
40
  constructor(context: Context);
38
41
  private onSocket;
39
42
  getAddrs(): Multiaddr[];
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAA;AASzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAexD,MAAM,WAAW,+BAA+B;IAC9C,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAA;IACnB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CACjC;AAED,UAAU,OAAQ,SAAQ,wBAAwB;IAChD,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2BAA2B,CAAC,EAAE,+BAA+B,CAAA;CAC9D;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;CACrB;AAoBD,qBAAa,WAAY,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAQvE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAC7D,OAAO,CAAC,MAAM,CAAmD;IACjE,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,IAAI,CAAQ;gBAEU,OAAO,EAAE,OAAO;IAuF9C,OAAO,CAAC,QAAQ;IAqFhB,QAAQ,IAAK,SAAS,EAAE;IAgClB,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAU7B;;OAEG;YACW,MAAM;YAiBN,KAAK;CAgCpB"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAA;AAQzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAA;AAC/E,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAaxD,MAAM,WAAW,+BAA+B;IAC9C,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAA;IACnB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CACjC;AAED,UAAU,OAAQ,SAAQ,wBAAwB;IAChD,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2BAA2B,CAAC,EAAE,+BAA+B,CAAA;IAC7D,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;CACrB;AAoBD,qBAAa,WAAY,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IASvE,OAAO,CAAC,QAAQ,CAAC,OAAO;IARrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAC7D,OAAO,CAAC,MAAM,CAAmD;IACjE,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEE,OAAO,EAAE,OAAO;IAwF9C,OAAO,CAAC,QAAQ;IA0FhB,QAAQ,IAAK,SAAS,EAAE;IAgClB,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAY7B;;OAEG;YACW,MAAM;YAiBN,KAAK;CAgCpB"}
@@ -1,20 +1,18 @@
1
1
  import net from 'net';
2
2
  import { CodeError } from '@libp2p/interface/errors';
3
3
  import { TypedEventEmitter, CustomEvent } from '@libp2p/interface/events';
4
- import { logger } from '@libp2p/logger';
5
4
  import { CODE_P2P } from './constants.js';
6
5
  import { toMultiaddrConnection } from './socket-to-conn.js';
7
6
  import { getMultiaddrs, multiaddrToNetConfig } from './utils.js';
8
- const log = logger('libp2p:tcp:listener');
9
7
  /**
10
8
  * Attempts to close the given maConn. If a failure occurs, it will be logged
11
9
  */
12
- async function attemptClose(maConn) {
10
+ async function attemptClose(maConn, options) {
13
11
  try {
14
12
  await maConn.close();
15
13
  }
16
14
  catch (err) {
17
- log.error('an error occurred closing the connection', err);
15
+ options.log.error('an error occurred closing the connection', err);
18
16
  }
19
17
  }
20
18
  var TCPListenerStatusCode;
@@ -36,10 +34,12 @@ export class TCPListener extends TypedEventEmitter {
36
34
  status = { code: TCPListenerStatusCode.INACTIVE };
37
35
  metrics;
38
36
  addr;
37
+ log;
39
38
  constructor(context) {
40
39
  super();
41
40
  this.context = context;
42
41
  context.keepAlive = context.keepAlive ?? true;
42
+ this.log = context.logger.forComponent('libp2p:tcp:listener');
43
43
  this.addr = 'unknown';
44
44
  this.server = net.createServer(context, this.onSocket.bind(this));
45
45
  // https://nodejs.org/api/net.html#servermaxconnections
@@ -120,7 +120,7 @@ export class TCPListener extends TypedEventEmitter {
120
120
  }
121
121
  // Avoid uncaught errors caused by unstable connections
122
122
  socket.on('error', err => {
123
- log('socket error', err);
123
+ this.log('socket error', err);
124
124
  this.metrics?.events.increment({ [`${this.addr} error`]: true });
125
125
  });
126
126
  let maConn;
@@ -130,19 +130,20 @@ export class TCPListener extends TypedEventEmitter {
130
130
  socketInactivityTimeout: this.context.socketInactivityTimeout,
131
131
  socketCloseTimeout: this.context.socketCloseTimeout,
132
132
  metrics: this.metrics?.events,
133
- metricPrefix: `${this.addr} `
133
+ metricPrefix: `${this.addr} `,
134
+ logger: this.context.logger
134
135
  });
135
136
  }
136
137
  catch (err) {
137
- log.error('inbound connection failed', err);
138
+ this.log.error('inbound connection failed', err);
138
139
  this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true });
139
140
  return;
140
141
  }
141
- log('new inbound connection %s', maConn.remoteAddr);
142
+ this.log('new inbound connection %s', maConn.remoteAddr);
142
143
  try {
143
144
  this.context.upgrader.upgradeInbound(maConn)
144
145
  .then((conn) => {
145
- log('inbound connection upgraded %s', maConn.remoteAddr);
146
+ this.log('inbound connection upgraded %s', maConn.remoteAddr);
146
147
  this.connections.add(maConn);
147
148
  socket.once('close', () => {
148
149
  this.connections.delete(maConn);
@@ -153,7 +154,7 @@ export class TCPListener extends TypedEventEmitter {
153
154
  // we can do. resume() will be called again every time a connection is dropped, which
154
155
  // acts as an eventual retry mechanism. onListenError allows the consumer act on this.
155
156
  this.resume().catch(e => {
156
- log.error('error attempting to listen server once connection count under limit', e);
157
+ this.log.error('error attempting to listen server once connection count under limit', e);
157
158
  this.context.closeServerOnMaxConnections?.onListenError?.(e);
158
159
  });
159
160
  }
@@ -164,25 +165,29 @@ export class TCPListener extends TypedEventEmitter {
164
165
  if (this.context.closeServerOnMaxConnections != null &&
165
166
  this.connections.size >= this.context.closeServerOnMaxConnections.closeAbove) {
166
167
  this.pause(false).catch(e => {
167
- log.error('error attempting to close server once connection count over limit', e);
168
+ this.log.error('error attempting to close server once connection count over limit', e);
168
169
  });
169
170
  }
170
171
  this.dispatchEvent(new CustomEvent('connection', { detail: conn }));
171
172
  })
172
173
  .catch(async (err) => {
173
- log.error('inbound connection failed', err);
174
+ this.log.error('inbound connection failed', err);
174
175
  this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true });
175
- await attemptClose(maConn);
176
+ await attemptClose(maConn, {
177
+ log: this.log
178
+ });
176
179
  })
177
180
  .catch(err => {
178
- log.error('closing inbound connection failed', err);
181
+ this.log.error('closing inbound connection failed', err);
179
182
  });
180
183
  }
181
184
  catch (err) {
182
- log.error('inbound connection failed', err);
183
- attemptClose(maConn)
185
+ this.log.error('inbound connection failed', err);
186
+ attemptClose(maConn, {
187
+ log: this.log
188
+ })
184
189
  .catch(err => {
185
- log.error('closing inbound connection failed', err);
190
+ this.log.error('closing inbound connection failed', err);
186
191
  this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true });
187
192
  });
188
193
  }
@@ -212,7 +217,7 @@ export class TCPListener extends TypedEventEmitter {
212
217
  }
213
218
  }
214
219
  catch (err) {
215
- log.error('could not turn %s:%s into multiaddr', address.address, address.port, err);
220
+ this.log.error('could not turn %s:%s into multiaddr', address.address, address.port, err);
216
221
  }
217
222
  }
218
223
  return addrs.map(ma => peerId != null ? ma.encapsulate(`/p2p/${peerId}`) : ma);
@@ -241,9 +246,11 @@ export class TCPListener extends TypedEventEmitter {
241
246
  async close() {
242
247
  // Close connections and server the same time to avoid any race condition
243
248
  await Promise.all([
244
- Promise.all(Array.from(this.connections.values()).map(async (maConn) => attemptClose(maConn))),
249
+ Promise.all(Array.from(this.connections.values()).map(async (maConn) => attemptClose(maConn, {
250
+ log: this.log
251
+ }))),
245
252
  this.pause(true).catch(e => {
246
- log.error('error attempting to close server once connection count over limit', e);
253
+ this.log.error('error attempting to close server once connection count over limit', e);
247
254
  })
248
255
  ]);
249
256
  }
@@ -261,7 +268,7 @@ export class TCPListener extends TypedEventEmitter {
261
268
  this.server.listen(netConfig, resolve);
262
269
  });
263
270
  this.status = { ...this.status, code: TCPListenerStatusCode.ACTIVE };
264
- log('Listening on %s', this.server.address());
271
+ this.log('Listening on %s', this.server.address());
265
272
  }
266
273
  async pause(permanent) {
267
274
  if (!this.server.listening && this.status.code === TCPListenerStatusCode.PAUSED && permanent) {
@@ -271,7 +278,7 @@ export class TCPListener extends TypedEventEmitter {
271
278
  if (!this.server.listening || this.status.code !== TCPListenerStatusCode.ACTIVE) {
272
279
  return;
273
280
  }
274
- log('Closing server on %s', this.server.address());
281
+ this.log('Closing server on %s', this.server.address());
275
282
  // NodeJS implementation tracks listening status with `this._handle` property.
276
283
  // - Server.close() sets this._handle to null immediately. If this._handle is null, ERR_SERVER_NOT_RUNNING is thrown
277
284
  // - Server.listening returns `this._handle !== null` https://github.com/nodejs/node/blob/386d761943bb1b217fba27d6b80b658c23009e60/lib/net.js#L1675
@@ -1 +1 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ComponentLogger } from '@libp2p/interface';
1
2
  import type { MultiaddrConnection } from '@libp2p/interface/connection';
2
3
  import type { CounterGroup } from '@libp2p/interface/metrics';
3
4
  import type { Multiaddr } from '@multiformats/multiaddr';
@@ -10,6 +11,7 @@ interface ToConnectionOptions {
10
11
  socketCloseTimeout?: number;
11
12
  metrics?: CounterGroup;
12
13
  metricPrefix?: string;
14
+ logger: ComponentLogger;
13
15
  }
14
16
  /**
15
17
  * Convert a socket into a MultiaddrConnection
@@ -1 +1 @@
1
- {"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAIjC,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,WAAW,mBAAmB,KAAG,mBAgKpF,CAAA"}
1
+ {"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAEjC,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,WAAW,mBAAmB,KAAG,mBAiKpF,CAAA"}
@@ -1,16 +1,15 @@
1
1
  import { CodeError } from '@libp2p/interface/errors';
2
- import { logger } from '@libp2p/logger';
3
2
  import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multiaddr';
4
3
  // @ts-expect-error no types
5
4
  import toIterable from 'stream-to-it';
6
5
  import { CLOSE_TIMEOUT, SOCKET_TIMEOUT } from './constants.js';
7
6
  import { multiaddrToNetConfig } from './utils.js';
8
- const log = logger('libp2p:tcp:socket');
9
7
  /**
10
8
  * Convert a socket into a MultiaddrConnection
11
9
  * https://github.com/libp2p/interface-transport#multiaddrconnection
12
10
  */
13
11
  export const toMultiaddrConnection = (socket, options) => {
12
+ const log = options.logger.forComponent('libp2p:tcp:socket');
14
13
  const metrics = options.metrics;
15
14
  const metricPrefix = options.metricPrefix ?? '';
16
15
  const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT;
@@ -1 +1 @@
1
- {"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACrF,4BAA4B;AAC5B,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAkBjD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,OAA4B,EAAuB,EAAE;IACzG,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAA;IAC/C,MAAM,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,IAAI,cAAc,CAAA;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,IAAI,aAAa,CAAA;IAEhE,2CAA2C;IAC3C,IAAI,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;QAC5C,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAA;KAC3C;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;QACzC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAA;KACvC;IAED,IAAI,UAAqB,CAAA;IAEzB,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;QAC9B,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;KAChC;SAAM;QACL,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;YAC7D,6FAA6F;YAC7F,6EAA6E;YAC7E,MAAM,IAAI,SAAS,CAAC,4CAA4C,EAAE,uBAAuB,CAAC,CAAA;SAC3F;QAED,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;KAClE;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;IACxE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAElD,iCAAiC;IACjC,0FAA0F;IAC1F,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACxC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAA;QACvC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAExD,wEAAwE;QACxE,IAAI,GAAsB,CAAA;QAC1B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,GAAG,GAAG,IAAI,SAAS,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAA;SACtE;QAED,kFAAkF;QAClF,uEAAuE;QACvE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACxB,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;QAChC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAEtD,wDAAwD;QACxD,kEAAkE;QAClE,WAAW;QACX,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE;YACjC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;SACnC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QACtB,qEAAqE;QACrE,mEAAmE;QACnE,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;QAC9B,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAwB;QAClC,KAAK,CAAC,IAAI,CAAE,MAAM;YAChB,IAAI;gBACF,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;aACnB;YAAC,OAAO,GAAQ,EAAE;gBACjB,kCAAkC;gBAClC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC1B,uEAAuE;oBACvE,gEAAgE;oBAChE,uEAAuE;oBACvE,GAAG,CAAC,GAAG,CAAC,CAAA;iBACT;aACF;YAED,iDAAiD;YACjD,MAAM,CAAC,GAAG,EAAE,CAAA;QACd,CAAC;QAED,MAAM;QAEN,kFAAkF;QAClF,UAAU;QAEV,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;QAE9B,KAAK,CAAC,KAAK,CAAE,UAAwB,EAAE;YACrC,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,GAAG,CAAC,sDAAsD,EAAE,QAAQ,CAAC,CAAA;gBACrE,OAAM;aACP;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAEhD,OAAO,GAAG;oBACR,GAAG,OAAO;oBACV,MAAM;iBACP,CAAA;aACF;YAED,IAAI;gBACF,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;gBAClC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;wBACxB,2BAA2B;wBAC3B,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;wBACjC,OAAO,EAAE,CAAA;oBACX,CAAC,CAAC,CAAA;oBACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;wBAClC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;wBAErC,uBAAuB;wBACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE;4BACjC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;yBACnC;wBAED,MAAM,CAAC,GAAG,CAAC,CAAA;oBACb,CAAC,CAAC,CAAA;oBAEF,6BAA6B;oBAC7B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;oBAE/B,mCAAmC;oBACnC,MAAM,CAAC,GAAG,EAAE,CAAA;oBAEZ,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE;wBAC7B,8CAA8C;wBAC9C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;4BACxB,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;4BAElC,gFAAgF;4BAChF,MAAM,CAAC,OAAO,EAAE,CAAA;wBAClB,CAAC,CAAC,CAAA;qBACH;yBAAM;wBACL,gEAAgE;wBAChE,MAAM,CAAC,OAAO,EAAE,CAAA;qBACjB;gBACH,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aAChB;QACH,CAAC;QAED,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE;YACpB,GAAG,CAAC,8BAA8B,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;YAElD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;KACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/tcp",
3
- "version": "8.0.13-0f5c305af",
3
+ "version": "8.0.13-9ad8f8686",
4
4
  "description": "A TCP transport for libp2p",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/transport-tcp#readme",
@@ -51,21 +51,21 @@
51
51
  "test:electron-main": "aegir test -t electron-main"
52
52
  },
53
53
  "dependencies": {
54
- "@libp2p/interface": "0.1.6-0f5c305af",
55
- "@libp2p/logger": "3.1.0-0f5c305af",
56
- "@libp2p/utils": "4.0.7-0f5c305af",
57
- "@multiformats/mafmt": "^12.1.2",
58
- "@multiformats/multiaddr": "^12.1.5",
54
+ "@libp2p/interface": "0.1.6-9ad8f8686",
55
+ "@libp2p/utils": "4.0.7-9ad8f8686",
56
+ "@multiformats/mafmt": "^12.1.6",
57
+ "@multiformats/multiaddr": "^12.1.10",
59
58
  "@types/sinon": "^17.0.0",
60
59
  "stream-to-it": "^0.2.2"
61
60
  },
62
61
  "devDependencies": {
63
- "@libp2p/interface-compliance-tests": "4.1.5-0f5c305af",
62
+ "@libp2p/interface-compliance-tests": "4.1.5-9ad8f8686",
63
+ "@libp2p/logger": "3.1.0-9ad8f8686",
64
64
  "aegir": "^41.0.2",
65
- "it-all": "^3.0.1",
65
+ "it-all": "^3.0.3",
66
66
  "it-pipe": "^3.0.1",
67
67
  "p-defer": "^4.0.0",
68
68
  "sinon": "^17.0.0",
69
- "uint8arrays": "^4.0.4"
69
+ "uint8arrays": "^4.0.6"
70
70
  }
71
71
  }
package/src/index.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  * const listener = transport.createListener({
23
23
  * upgrader,
24
24
  * handler: (socket) => {
25
- * console.log('new connection opened')
25
+ * console.this.log('new connection opened')
26
26
  * pipe(
27
27
  * ['hello', ' ', 'World!'],
28
28
  * socket
@@ -32,14 +32,14 @@
32
32
  *
33
33
  * const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
34
34
  * await listener.listen(addr)
35
- * console.log('listening')
35
+ * console.this.log('listening')
36
36
  *
37
37
  * const socket = await transport.dial(addr, { upgrader })
38
38
  * const values = await pipe(
39
39
  * socket,
40
40
  * all
41
41
  * )
42
- * console.log(`Value: ${values.toString()}`)
42
+ * console.this.log(`Value: ${values.toString()}`)
43
43
  *
44
44
  * // Close connection after reading
45
45
  * await listener.close()
@@ -57,19 +57,17 @@
57
57
  import net from 'net'
58
58
  import { AbortError, CodeError } from '@libp2p/interface/errors'
59
59
  import { type CreateListenerOptions, type DialOptions, symbol, type Transport, type Listener } from '@libp2p/interface/transport'
60
- import { logger } from '@libp2p/logger'
61
60
  import * as mafmt from '@multiformats/mafmt'
62
61
  import { CODE_CIRCUIT, CODE_P2P, CODE_UNIX } from './constants.js'
63
62
  import { type CloseServerOnMaxConnectionsOpts, TCPListener } from './listener.js'
64
63
  import { toMultiaddrConnection } from './socket-to-conn.js'
65
64
  import { multiaddrToNetConfig } from './utils.js'
65
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
66
66
  import type { Connection } from '@libp2p/interface/connection'
67
67
  import type { CounterGroup, Metrics } from '@libp2p/interface/metrics'
68
68
  import type { AbortOptions, Multiaddr } from '@multiformats/multiaddr'
69
69
  import type { Socket, IpcSocketConnectOpts, TcpSocketConnectOpts } from 'net'
70
70
 
71
- const log = logger('libp2p:tcp')
72
-
73
71
  export interface TCPOptions {
74
72
  /**
75
73
  * An optional number in ms that is used as an inactivity timeout after which the socket will be closed
@@ -125,6 +123,7 @@ export interface TCPCreateListenerOptions extends CreateListenerOptions, TCPSock
125
123
 
126
124
  export interface TCPComponents {
127
125
  metrics?: Metrics
126
+ logger: ComponentLogger
128
127
  }
129
128
 
130
129
  export interface TCPMetrics {
@@ -135,8 +134,10 @@ class TCP implements Transport {
135
134
  private readonly opts: TCPOptions
136
135
  private readonly metrics?: TCPMetrics
137
136
  private readonly components: TCPComponents
137
+ private readonly log: Logger
138
138
 
139
139
  constructor (components: TCPComponents, options: TCPOptions = {}) {
140
+ this.log = components.logger.forComponent('libp2p:tcp')
140
141
  this.opts = options
141
142
  this.components = components
142
143
 
@@ -162,32 +163,33 @@ class TCP implements Transport {
162
163
 
163
164
  // Avoid uncaught errors caused by unstable connections
164
165
  socket.on('error', err => {
165
- log('socket error', err)
166
+ this.log('socket error', err)
166
167
  })
167
168
 
168
169
  const maConn = toMultiaddrConnection(socket, {
169
170
  remoteAddr: ma,
170
171
  socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
171
172
  socketCloseTimeout: this.opts.socketCloseTimeout,
172
- metrics: this.metrics?.dialerEvents
173
+ metrics: this.metrics?.dialerEvents,
174
+ logger: this.components.logger
173
175
  })
174
176
 
175
177
  const onAbort = (): void => {
176
178
  maConn.close().catch(err => {
177
- log.error('Error closing maConn after abort', err)
179
+ this.log.error('Error closing maConn after abort', err)
178
180
  })
179
181
  }
180
182
  options.signal?.addEventListener('abort', onAbort, { once: true })
181
183
 
182
- log('new outbound connection %s', maConn.remoteAddr)
184
+ this.log('new outbound connection %s', maConn.remoteAddr)
183
185
  const conn = await options.upgrader.upgradeOutbound(maConn)
184
- log('outbound connection %s upgraded', maConn.remoteAddr)
186
+ this.log('outbound connection %s upgraded', maConn.remoteAddr)
185
187
 
186
188
  options.signal?.removeEventListener('abort', onAbort)
187
189
 
188
190
  if (options.signal?.aborted === true) {
189
191
  conn.close().catch(err => {
190
- log.error('Error closing conn after abort', err)
192
+ this.log.error('Error closing conn after abort', err)
191
193
  })
192
194
 
193
195
  throw new AbortError()
@@ -206,7 +208,7 @@ class TCP implements Transport {
206
208
  const cOpts = multiaddrToNetConfig(ma) as (IpcSocketConnectOpts & TcpSocketConnectOpts)
207
209
  const cOptsStr = cOpts.path ?? `${cOpts.host ?? ''}:${cOpts.port}`
208
210
 
209
- log('dialing %j', cOpts)
211
+ this.log('dialing %j', cOpts)
210
212
  const rawSocket = net.connect(cOpts)
211
213
 
212
214
  const onError = (err: Error): void => {
@@ -217,7 +219,7 @@ class TCP implements Transport {
217
219
  }
218
220
 
219
221
  const onTimeout = (): void => {
220
- log('connection timeout %s', cOptsStr)
222
+ this.log('connection timeout %s', cOptsStr)
221
223
  this.metrics?.dialerEvents.increment({ timeout: true })
222
224
 
223
225
  const err = new CodeError(`connection timeout after ${Date.now() - start}ms`, 'ERR_CONNECT_TIMEOUT')
@@ -226,13 +228,13 @@ class TCP implements Transport {
226
228
  }
227
229
 
228
230
  const onConnect = (): void => {
229
- log('connection opened %j', cOpts)
231
+ this.log('connection opened %j', cOpts)
230
232
  this.metrics?.dialerEvents.increment({ connect: true })
231
233
  done()
232
234
  }
233
235
 
234
236
  const onAbort = (): void => {
235
- log('connection aborted %j', cOpts)
237
+ this.log('connection aborted %j', cOpts)
236
238
  this.metrics?.dialerEvents.increment({ abort: true })
237
239
  rawSocket.destroy()
238
240
  done(new AbortError())
@@ -277,7 +279,8 @@ class TCP implements Transport {
277
279
  closeServerOnMaxConnections: this.opts.closeServerOnMaxConnections,
278
280
  socketInactivityTimeout: this.opts.inboundSocketInactivityTimeout,
279
281
  socketCloseTimeout: this.opts.socketCloseTimeout,
280
- metrics: this.components.metrics
282
+ metrics: this.components.metrics,
283
+ logger: this.components.logger
281
284
  })
282
285
  }
283
286
 
@@ -301,8 +304,8 @@ class TCP implements Transport {
301
304
  }
302
305
  }
303
306
 
304
- export function tcp (init: TCPOptions = {}): (components?: TCPComponents) => Transport {
305
- return (components: TCPComponents = {}) => {
307
+ export function tcp (init: TCPOptions = {}): (components: TCPComponents) => Transport {
308
+ return (components: TCPComponents) => {
306
309
  return new TCP(components, init)
307
310
  }
308
311
  }
package/src/listener.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import net from 'net'
2
2
  import { CodeError } from '@libp2p/interface/errors'
3
3
  import { TypedEventEmitter, CustomEvent } from '@libp2p/interface/events'
4
- import { logger } from '@libp2p/logger'
5
4
  import { CODE_P2P } from './constants.js'
6
5
  import { toMultiaddrConnection } from './socket-to-conn.js'
7
6
  import {
@@ -10,21 +9,20 @@ import {
10
9
  type NetConfig
11
10
  } from './utils.js'
12
11
  import type { TCPCreateListenerOptions } from './index.js'
12
+ import type { ComponentLogger, Logger, LoggerOptions } from '@libp2p/interface'
13
13
  import type { MultiaddrConnection, Connection } from '@libp2p/interface/connection'
14
14
  import type { CounterGroup, MetricGroup, Metrics } from '@libp2p/interface/metrics'
15
15
  import type { Listener, ListenerEvents, Upgrader } from '@libp2p/interface/transport'
16
16
  import type { Multiaddr } from '@multiformats/multiaddr'
17
17
 
18
- const log = logger('libp2p:tcp:listener')
19
-
20
18
  /**
21
19
  * Attempts to close the given maConn. If a failure occurs, it will be logged
22
20
  */
23
- async function attemptClose (maConn: MultiaddrConnection): Promise<void> {
21
+ async function attemptClose (maConn: MultiaddrConnection, options: LoggerOptions): Promise<void> {
24
22
  try {
25
23
  await maConn.close()
26
24
  } catch (err) {
27
- log.error('an error occurred closing the connection', err)
25
+ options.log.error('an error occurred closing the connection', err)
28
26
  }
29
27
  }
30
28
 
@@ -45,6 +43,7 @@ interface Context extends TCPCreateListenerOptions {
45
43
  backlog?: number
46
44
  metrics?: Metrics
47
45
  closeServerOnMaxConnections?: CloseServerOnMaxConnectionsOpts
46
+ logger: ComponentLogger
48
47
  }
49
48
 
50
49
  export interface TCPListenerMetrics {
@@ -78,12 +77,14 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
78
77
  private status: Status = { code: TCPListenerStatusCode.INACTIVE }
79
78
  private metrics?: TCPListenerMetrics
80
79
  private addr: string
80
+ private readonly log: Logger
81
81
 
82
82
  constructor (private readonly context: Context) {
83
83
  super()
84
84
 
85
85
  context.keepAlive = context.keepAlive ?? true
86
86
 
87
+ this.log = context.logger.forComponent('libp2p:tcp:listener')
87
88
  this.addr = 'unknown'
88
89
  this.server = net.createServer(context, this.onSocket.bind(this))
89
90
 
@@ -172,7 +173,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
172
173
  }
173
174
  // Avoid uncaught errors caused by unstable connections
174
175
  socket.on('error', err => {
175
- log('socket error', err)
176
+ this.log('socket error', err)
176
177
  this.metrics?.events.increment({ [`${this.addr} error`]: true })
177
178
  })
178
179
 
@@ -183,19 +184,20 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
183
184
  socketInactivityTimeout: this.context.socketInactivityTimeout,
184
185
  socketCloseTimeout: this.context.socketCloseTimeout,
185
186
  metrics: this.metrics?.events,
186
- metricPrefix: `${this.addr} `
187
+ metricPrefix: `${this.addr} `,
188
+ logger: this.context.logger
187
189
  })
188
190
  } catch (err) {
189
- log.error('inbound connection failed', err)
191
+ this.log.error('inbound connection failed', err)
190
192
  this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true })
191
193
  return
192
194
  }
193
195
 
194
- log('new inbound connection %s', maConn.remoteAddr)
196
+ this.log('new inbound connection %s', maConn.remoteAddr)
195
197
  try {
196
198
  this.context.upgrader.upgradeInbound(maConn)
197
199
  .then((conn) => {
198
- log('inbound connection upgraded %s', maConn.remoteAddr)
200
+ this.log('inbound connection upgraded %s', maConn.remoteAddr)
199
201
  this.connections.add(maConn)
200
202
 
201
203
  socket.once('close', () => {
@@ -210,7 +212,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
210
212
  // we can do. resume() will be called again every time a connection is dropped, which
211
213
  // acts as an eventual retry mechanism. onListenError allows the consumer act on this.
212
214
  this.resume().catch(e => {
213
- log.error('error attempting to listen server once connection count under limit', e)
215
+ this.log.error('error attempting to listen server once connection count under limit', e)
214
216
  this.context.closeServerOnMaxConnections?.onListenError?.(e as Error)
215
217
  })
216
218
  }
@@ -225,27 +227,31 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
225
227
  this.connections.size >= this.context.closeServerOnMaxConnections.closeAbove
226
228
  ) {
227
229
  this.pause(false).catch(e => {
228
- log.error('error attempting to close server once connection count over limit', e)
230
+ this.log.error('error attempting to close server once connection count over limit', e)
229
231
  })
230
232
  }
231
233
 
232
234
  this.dispatchEvent(new CustomEvent<Connection>('connection', { detail: conn }))
233
235
  })
234
236
  .catch(async err => {
235
- log.error('inbound connection failed', err)
237
+ this.log.error('inbound connection failed', err)
236
238
  this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true })
237
239
 
238
- await attemptClose(maConn)
240
+ await attemptClose(maConn, {
241
+ log: this.log
242
+ })
239
243
  })
240
244
  .catch(err => {
241
- log.error('closing inbound connection failed', err)
245
+ this.log.error('closing inbound connection failed', err)
242
246
  })
243
247
  } catch (err) {
244
- log.error('inbound connection failed', err)
248
+ this.log.error('inbound connection failed', err)
245
249
 
246
- attemptClose(maConn)
250
+ attemptClose(maConn, {
251
+ log: this.log
252
+ })
247
253
  .catch(err => {
248
- log.error('closing inbound connection failed', err)
254
+ this.log.error('closing inbound connection failed', err)
249
255
  this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true })
250
256
  })
251
257
  }
@@ -276,7 +282,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
276
282
  addrs = addrs.concat(getMultiaddrs('ip6', address.address, address.port))
277
283
  }
278
284
  } catch (err) {
279
- log.error('could not turn %s:%s into multiaddr', address.address, address.port, err)
285
+ this.log.error('could not turn %s:%s into multiaddr', address.address, address.port, err)
280
286
  }
281
287
  }
282
288
 
@@ -310,9 +316,11 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
310
316
  async close (): Promise<void> {
311
317
  // Close connections and server the same time to avoid any race condition
312
318
  await Promise.all([
313
- Promise.all(Array.from(this.connections.values()).map(async maConn => attemptClose(maConn))),
319
+ Promise.all(Array.from(this.connections.values()).map(async maConn => attemptClose(maConn, {
320
+ log: this.log
321
+ }))),
314
322
  this.pause(true).catch(e => {
315
- log.error('error attempting to close server once connection count over limit', e)
323
+ this.log.error('error attempting to close server once connection count over limit', e)
316
324
  })
317
325
  ])
318
326
  }
@@ -334,7 +342,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
334
342
  })
335
343
 
336
344
  this.status = { ...this.status, code: TCPListenerStatusCode.ACTIVE }
337
- log('Listening on %s', this.server.address())
345
+ this.log('Listening on %s', this.server.address())
338
346
  }
339
347
 
340
348
  private async pause (permanent: boolean): Promise<void> {
@@ -347,7 +355,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
347
355
  return
348
356
  }
349
357
 
350
- log('Closing server on %s', this.server.address())
358
+ this.log('Closing server on %s', this.server.address())
351
359
 
352
360
  // NodeJS implementation tracks listening status with `this._handle` property.
353
361
  // - Server.close() sets this._handle to null immediately. If this._handle is null, ERR_SERVER_NOT_RUNNING is thrown
@@ -1,17 +1,15 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
3
2
  import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multiaddr'
4
3
  // @ts-expect-error no types
5
4
  import toIterable from 'stream-to-it'
6
5
  import { CLOSE_TIMEOUT, SOCKET_TIMEOUT } from './constants.js'
7
6
  import { multiaddrToNetConfig } from './utils.js'
7
+ import type { ComponentLogger } from '@libp2p/interface'
8
8
  import type { MultiaddrConnection } from '@libp2p/interface/connection'
9
9
  import type { CounterGroup } from '@libp2p/interface/metrics'
10
10
  import type { AbortOptions, Multiaddr } from '@multiformats/multiaddr'
11
11
  import type { Socket } from 'net'
12
12
 
13
- const log = logger('libp2p:tcp:socket')
14
-
15
13
  interface ToConnectionOptions {
16
14
  listeningAddr?: Multiaddr
17
15
  remoteAddr?: Multiaddr
@@ -20,6 +18,7 @@ interface ToConnectionOptions {
20
18
  socketCloseTimeout?: number
21
19
  metrics?: CounterGroup
22
20
  metricPrefix?: string
21
+ logger: ComponentLogger
23
22
  }
24
23
 
25
24
  /**
@@ -27,6 +26,7 @@ interface ToConnectionOptions {
27
26
  * https://github.com/libp2p/interface-transport#multiaddrconnection
28
27
  */
29
28
  export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptions): MultiaddrConnection => {
29
+ const log = options.logger.forComponent('libp2p:tcp:socket')
30
30
  const metrics = options.metrics
31
31
  const metricPrefix = options.metricPrefix ?? ''
32
32
  const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT