@libp2p/tcp 8.0.12 → 8.0.13-05b52d69c
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 +1 -5
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -17
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.d.ts +3 -0
- package/dist/src/listener.d.ts.map +1 -1
- package/dist/src/listener.js +29 -22
- package/dist/src/listener.js.map +1 -1
- package/dist/src/socket-to-conn.d.ts +2 -0
- package/dist/src/socket-to-conn.d.ts.map +1 -1
- package/dist/src/socket-to-conn.js +8 -3
- package/dist/src/socket-to-conn.js.map +1 -1
- package/package.json +9 -9
- package/src/index.ts +22 -19
- package/src/listener.ts +31 -23
- package/src/socket-to-conn.ts +11 -4
- package/dist/typedoc-urls.json +0 -16
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),_=(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(l=>{r[l]=t[l]}),r.names=[],r.skips=[],r.formatters={};function e(l){let u=0;for(let f=0;f<l.length;f++)u=(u<<5)-u+l.charCodeAt(f),u|=0;return r.colors[Math.abs(u)%r.colors.length]}r.selectColor=e;function r(l){let u,f=null,g,h;function w(...C){if(!w.enabled)return;let m=w,A=Number(new Date),$=A-(u||A);m.diff=$,m.prev=u,m.curr=A,u=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=l,w.useColors=r.useColors(),w.color=r.selectColor(l),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(l)),h),set:C=>{f=C}}),typeof r.init=="function"&&r.init(w),w}function n(l,u){let f=r(this.namespace+(typeof u>"u"?":":u)+l);return f.log=this.log,f}function o(l){r.save(l),r.namespaces=l,r.names=[],r.skips=[];let u,f=(typeof l=="string"?l:"").split(/[\s,]+/),g=f.length;for(u=0;u<g;u++)f[u]&&(l=f[u].replace(/\*/g,".*?"),l[0]==="-"?r.skips.push(new RegExp("^"+l.slice(1)+"$")):r.names.push(new RegExp("^"+l+"$")))}function s(){let l=[...r.names.map(a),...r.skips.map(a).map(u=>"-"+u)].join(",");return r.enable(""),l}function i(l){if(l[l.length-1]==="*")return!0;let u,f;for(u=0,f=r.skips.length;u<f;u++)if(r.skips[u].test(l))return!1;for(u=0,f=r.names.length;u<f;u++)if(r.names[u].test(l))return!0;return!1}function a(l){return l.toString().substring(2,l.toString().length-2).replace(/\.\*\?$/,"*")}function p(l){return l instanceof Error?l.stack||l.message:l}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((U,De)=>{U.formatArgs=Fn;U.save=Rn;U.load=On;U.useColors=Pn;U.storage=Mn();U.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`."))}})();U.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)}U.log=console.debug||console.log||(()=>{});function Rn(t){try{t?U.storage.setItem("debug",t):U.storage.removeItem("debug")}catch{}}function On(){let t;try{t=U.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()(U);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 _n(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=_n(t);return Dn(e)}cr.exports={supportsColor:Ze,stdout:Ze(process.stdout),stderr:Ze(process.stderr)}});var ur=D((P,Ue)=>{var Un=H("tty"),_e=H("util");P.init=jn;P.log=Bn;P.formatArgs=$n;P.save=zn;P.load=qn;P.useColors=Ln;P.destroy=_e.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 Ln(){return"colors"in P.inspectOpts?!!P.inspectOpts.colors:Un.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+"+Ue.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(_e.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]]}Ue.exports=Ke()(P);var{formatters:lr}=Ue.exports;lr.o=function(t){return this.inspectOpts.colors=this.useColors,_e.inspect(t,this.inspectOpts).split(`
|
|
6
|
-
`).map(e=>e.trim()).join(" ")};lr.O=function(t){return this.inspectOpts.colors=this.useColors,_e.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=ur()});var He=D(($a,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((Va,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((Ba,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,l=!1,u=()=>{l=!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||l||n)return m();y=i=m,o=A})),C=()=>{t.removeListener("error",s),t.removeListener("close",p),t.removeListener("finish",u),t.removeListener("drain",g)};t.once("error",s),t.once("close",p),t.once("finish",u);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((za,an)=>{var _s=Gt(),Us=He();an.exports=t=>({sink:_s(t),source:Us(t)})});var un=D((qa,ln)=>{var Ls=Wt();ln.exports=t=>async function*(e){let r=Ls(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=un();Te.exports.duplex=Wt()});var Xs={};_(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 L=oe(dr(),1);var st={};_(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),l=Math.log(256)/Math.log(a);function u(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)*l+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:u,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 l=0;l<e.length;++l)o[e[l]]=l;let s=t.length;for(;t[s-1]==="=";)--s;let i=new Uint8Array(s*r/8|0),a=0,p=0,y=0;for(let l=0;l<s;++l){let u=o[t[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);p=p<<r|u,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={};_(it,{base58btc:()=>R,base58flickr:()=>oo});var R=Z({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),oo=Z({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var at={};_(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});L.default.formatters.b=t=>t==null?"undefined":R.baseEncode(t);L.default.formatters.t=t=>t==null?"undefined":W.baseEncode(t);L.default.formatters.m=t=>t==null?"undefined":ct.baseEncode(t);L.default.formatters.p=t=>t==null?"undefined":t.toString();L.default.formatters.c=t=>t==null?"undefined":t.toString();L.default.formatters.k=t=>t==null?"undefined":t.toString();L.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 L.default.enabled(`${t}:trace`)&&L.default.names.map(r=>r.toString()).find(r=>r.includes(":trace"))!=null&&(e=(0,L.default)(`${t}:trace`)),Object.assign((0,L.default)(t),{error:(0,L.default)(`${t}:error`),trace:e})}var lo=yr,br=128,uo=127,po=~uo,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=lt,mo=128,xr=127;function lt(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw lt.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 lt.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:lo,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,ut(t),e||R.encoder);default:return Ro(r,ut(t),e||W.encoder)}};var Er=new WeakMap,ut=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[u,f]=Re(e.subarray(r));return r+=f,u},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,l=y-i;return{version:o,codec:s,multihashCode:a,digestSize:p,multihashSize:l,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 ut(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={};_(dt,{base10:()=>No});var No=Z({prefix:"9",name:"base10",alphabet:"0123456789"});var pt={};_(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={};_(ft,{base2:()=>_o});var _o=v({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ht={};_(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}"),Uo=Sr.reduce((t,e,r)=>(t[r]=e,t),[]),Lo=Sr.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function $o(t){return t.reduce((e,r)=>(e+=Uo[r],e),"")}function Vo(t){let e=[];for(let r of t){let n=Lo[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={};_(mt,{base36:()=>zo,base36upper:()=>qo});var zo=Z({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),qo=Z({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var gt={};_(gt,{base8:()=>jo});var jo=v({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var wt={};_(wt,{identity:()=>Go});var Go=we({prefix:"\0",name:"identity",encode:t=>mr(t),decode:t=>hr(t)});var Mi=new TextEncoder,Ni=new TextDecoder;var bt={};_(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={};_(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},zi={...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 l=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(l===void 0)break;if(s*=e,s+=l,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 oc=new Be;var pc=parseInt("0xFFFF",16),fc=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")},_r=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 ea=x("ip4"),ta=x("ip6"),ra=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 Ur(e);case 41:return Ur(e);case 42:return Lr(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 Lr(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 Ur(t){if(!ze(t))throw new Error("invalid ip address");return Ft(t)}function ws(t){let e=_r(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 Lr(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:Ut(e),tuples:e,stringTuples:r,path:n}}function _t(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 l=Mt(s,y);if(r.push([s,l]),a.path===!0){n=l;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 Ut(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"),Lt=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;[Lt]=!0;constructor(e){e==null&&(e="");let r;if(e instanceof Uint8Array)r=_t(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=_t(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"),l=x("dns6"),u=x("ip6zone");for(let[g,h]of this.stringTuples())g===u.code&&(s=`%${h??""}`),Ss.includes(g)&&(r=i.name,o=443,n=`${h??""}${s}`,e=g===l.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(Ut(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?.[Lt]}function Y(t){return new qe(t)}var Ts=c("dns4"),Ps=c("dns6"),Fs=c("dnsaddr"),le=E(c("dns"),Fs,Ts,Ps),We=E(c("ip4"),c("ip6")),ne=E(d(We,c("tcp")),d(le,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(le,c("ws"))),je=E(d($t,c("p2p")),$t),Vt=E(d(ne,c("wss")),d(le,c("wss")),d(ne,c("tls"),c("ws")),d(le,c("tls"),c("ws"))),Ge=E(d(Vt,c("p2p")),Vt),Bt=E(d(ne,c("http")),d(We,c("http")),d(le,c("http"))),zt=E(d(ne,c("https")),d(We,c("https")),d(le,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"))),Pa=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"))),ue=E($t,Vt,Bt,zt,Kr,Zr,ne,Rs,Os,le,Qr,Yr),Fa=E(d(ue,c("p2p-stardust"),c("p2p")),d(ue,c("p2p-stardust"))),re=E(d(ue,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(ue,c("p2p-circuit")),d(c("p2p-circuit"),ue),c("p2p-circuit")),en=()=>E(d(Hr,en),Hr),ae=en(),Ra=E(d(ae,re,ae),d(re,ae),d(ae,re),ae,re);var Oa=E(d(ae,c("webrtc"),c("p2p")),d(ae,c("webrtc")),d(ue,c("webrtc"),c("p2p")),d(ue,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:l}=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}),u.timeline.close==null&&(u.timeline.close=Date.now())}),t.once("end",()=>{X("%s socket end",p),r?.increment({[`${n}end`]:!0})});let u={async sink(f){try{await y(f)}catch(g){g.type!=="aborted"&&X(g)}t.end()},source:l,remoteAddr:i,timeline:{open:Date.now()},async close(f={}){if(t.destroyed){X("%s socket was already destroyed when trying to close",p);return}f.signal=f.signal??AbortSignal.timeout(s);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),u.timeline.close==null&&(u.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 u};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)},l=()=>{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)},u=()=>{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",l),p.removeListener("connect",u),r.signal!=null&&r.signal.removeEventListener("abort",f),h!=null){o(h);return}n(p)};p.on("error",y),p.on("timeout",l),p.on("connect",u),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}));
|
package/dist/src/index.d.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()
|
|
@@ -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
|
|
110
|
+
export declare function tcp(init?: TCPOptions): (components: TCPComponents) => Transport;
|
|
109
111
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAgD,MAAM,EAAiC,MAAM,6BAA6B,CAAA;AACjI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAgD,MAAM,EAAiC,MAAM,6BAA6B,CAAA;AACjI,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAwC,WAAW,EAAE,MAAM,eAAe,CAAA;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAqEjD,MAAM,GAAG;IACU,IAAI,CAAY;IAChB,OAAO,CAAa;IACpB,UAAU,CAAe;IACzB,GAAG,CAAQ;IAE5B,YAAa,UAAyB,EAAE,UAAsB,EAAE;QAC9D,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,gCAAgC,EAAE;oBACtF,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,0CAA0C;iBACjD,CAAC;aACH,CAAA;SACF;IACH,CAAC;IAEQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAEf,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,aAAa,CAAA;IAE7C,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAuB;QAChD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAA;QAE7C,4DAA4D;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAE/C,uDAAuD;QACvD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE;YAC3C,UAAU,EAAE,EAAE;YACd,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,+BAA+B;YAClE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY;YACnC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SAC/B,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QACD,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAElE,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAE9D,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAErD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;YAEF,MAAM,IAAI,UAAU,EAAE,CAAA;SACvB;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,EAAa,EAAE,OAAuB;QACpD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;YACpC,MAAM,IAAI,UAAU,EAAE,CAAA;SACvB;QAED,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACxB,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,CAAkD,CAAA;YACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;YAElE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAEpC,MAAM,OAAO,GAAG,CAAC,GAAU,EAAQ,EAAE;gBACnC,GAAG,CAAC,OAAO,GAAG,oBAAoB,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAA;gBAC5D,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAErD,IAAI,CAAC,GAAG,CAAC,CAAA;YACX,CAAC,CAAA;YAED,MAAM,SAAS,GAAG,GAAS,EAAE;gBAC3B,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAA;gBAC3C,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;gBAEvD,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,4BAA4B,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,qBAAqB,CAAC,CAAA;gBACpG,mDAAmD;gBACnD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YAC9B,CAAC,CAAA;YAED,MAAM,SAAS,GAAG,GAAS,EAAE;gBAC3B,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;gBACvC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;gBACvD,IAAI,EAAE,CAAA;YACR,CAAC,CAAA;YAED,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;gBACxC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBACrD,SAAS,CAAC,OAAO,EAAE,CAAA;gBACnB,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA;YACxB,CAAC,CAAA;YAED,MAAM,IAAI,GAAG,CAAC,GAAS,EAAQ,EAAE;gBAC/B,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC1C,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAC9C,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAE9C,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;oBAC1B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;iBACrD;gBAED,IAAI,GAAG,IAAI,IAAI,EAAE;oBACf,MAAM,CAAC,GAAG,CAAC,CAAC;oBAAC,OAAM;iBACpB;gBAED,OAAO,CAAC,SAAS,CAAC,CAAA;YACpB,CAAC,CAAA;YAED,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC9B,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAClC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAElC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC1B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;aAClD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAE,OAAiC;QAC/C,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,OAAO;YACV,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,2BAA2B,EAAE,IAAI,CAAC,IAAI,CAAC,2BAA2B;YAClE,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAChD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;YAChC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAE,UAAuB;QAC7B,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAElE,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC1C,OAAO,KAAK,CAAA;aACb;YAED,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAA;aACZ;YAED,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,UAAU,GAAG,CAAE,OAAmB,EAAE;IACxC,OAAO,CAAC,UAAyB,EAAE,EAAE;QACnC,OAAO,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC,CAAA;AACH,CAAC"}
|
package/dist/src/listener.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|