libp2p 0.46.3-9c0353cf → 0.46.3-a31b420f
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 -1
- package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
- package/dist/src/connection-manager/dial-queue.js +14 -2
- package/dist/src/connection-manager/dial-queue.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +21 -21
- package/src/connection-manager/dial-queue.ts +16 -2
- package/src/version.ts +1 -1
package/dist/index.min.js
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
(?:${qe}:){1}(?:(?::${qe}){0,4}:${Gt}|(?::${qe}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
|
|
46
46
|
(?::(?:(?::${qe}){0,5}:${Gt}|(?::${qe}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
|
|
47
47
|
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
|
|
48
|
-
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),h_=new RegExp(`(?:^${Gt}$)|(?:^${ua}$)`),d_=new RegExp(`^${Gt}$`),p_=new RegExp(`^${ua}$`),vl=t=>t&&t.exact?h_:new RegExp(`(?:${Xr(t)}${Gt}${Xr(t)})|(?:${Xr(t)}${ua}${Xr(t)})`,"g");vl.v4=t=>t&&t.exact?d_:new RegExp(`${Xr(t)}${Gt}${Xr(t)}`,"g");vl.v6=t=>t&&t.exact?p_:new RegExp(`${Xr(t)}${ua}${Xr(t)}`,"g");var Gm=vl;var Zm=J(Wm(),1),{isValid:m_,parse:y_}=Zm.default,g_=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],x_=g_.map(t=>new Xm.Netmask(t));function b_(t){for(let e of x_)if(e.contains(t))return!0;return!1}function Qm(t){return/^::$/.test(t)||/^::1$/.test(t)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(t)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(t)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(t)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(t)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(t)||/^ff([0-9a-fA-F]{2,2}):/i.test(t)}var jm=t=>{if(m_(t)){let e=y_(t);if(e.kind()==="ipv4")return b_(e.toNormalizedString());if(e.kind()==="ipv6")return Qm(t)}else if(bi(t)&&Gm.v6().test(t))return Qm(t)};var fa=jm;function Jm(t={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let r=e.stringTuples();return r[0][0]===4||r[0][0]===41?!!fa(`${r[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...t}}var t6=Symbol.for("@libp2p/transport");var Zr;(function(t){t[t.FATAL_ALL=0]="FATAL_ALL",t[t.NO_FATAL=1]="NO_FATAL"})(Zr||(Zr={}));function _l(t){try{let{address:e}=t.nodeAddress();return!!fa(e)}catch{return!0}}function Ii(t,e){let r=_l(t.multiaddr),n=_l(e.multiaddr);return r&&!n?1:!r&&n||t.isCertified&&!e.isCertified?-1:!t.isCertified&&e.isCertified?1:0}var Sl=J(Ru(),1),Il=J(ry(),1);var ny=globalThis.fetch,iy=globalThis.Headers,c6=globalThis.Request,u6=globalThis.Response;function ha(t,e,r){return`${t}?name=${e}&type=${r}`}async function oy(t,e){return await(await ny(t,{headers:new iy({accept:"application/dns-json"}),signal:e})).json()}function kn(t,e){return`${e}_${t}`}var Al=Object.assign((0,Sl.default)("dns-over-http-resolver"),{error:(0,Sl.default)("dns-over-http-resolver:error")}),Rl=class{constructor(e={}){this._cache=new Il.default({max:e?.maxCache??100}),this._TXTcache=new Il.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??oy,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>e.abort())}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let r=e.length-1;r>0;r--){let n=Math.floor(Math.random()*r),i=e[r];e[r]=e[n],e[n]=i}return e}setServers(e){this._servers=e}async resolve(e,r="A"){switch(r){case"A":return await this.resolve4(e);case"AAAA":return await this.resolve6(e);case"TXT":return await this.resolveTxt(e);default:throw new Error(`${r} is not supported`)}}async resolve4(e){let r="A",n=this._cache.get(kn(e,r));if(n!=null)return n;let i=!1;for(let o of this._getShuffledServers()){let s=new AbortController;this._abortControllers.push(s);try{let a=await this._request(ha(o,e,r),s.signal),c=a.Answer.map(l=>l.data),u=Math.min(...a.Answer.map(l=>l.TTL));return this._cache.set(kn(e,r),c,{ttl:u}),c}catch{s.signal.aborted&&(i=!0),Al.error(`${o} could not resolve ${e} record ${r}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==s)}}throw i?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${r}`)}async resolve6(e){let r="AAAA",n=this._cache.get(kn(e,r));if(n!=null)return n;let i=!1;for(let o of this._getShuffledServers()){let s=new AbortController;this._abortControllers.push(s);try{let a=await this._request(ha(o,e,r),s.signal),c=a.Answer.map(l=>l.data),u=Math.min(...a.Answer.map(l=>l.TTL));return this._cache.set(kn(e,r),c,{ttl:u}),c}catch{s.signal.aborted&&(i=!0),Al.error(`${o} could not resolve ${e} record ${r}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==s)}}throw i?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${r}`)}async resolveTxt(e){let r="TXT",n=this._TXTcache.get(kn(e,r));if(n!=null)return n;let i=!1;for(let o of this._getShuffledServers()){let s=new AbortController;this._abortControllers.push(s);try{let a=await this._request(ha(o,e,r),s.signal),c=a.Answer.map(l=>[l.data.replace(/['"]+/g,"")]),u=Math.min(...a.Answer.map(l=>l.TTL));return this._TXTcache.set(kn(e,r),c,{ttl:u}),c}catch{s.signal.aborted&&(i=!0),Al.error(`${o} could not resolve ${e} record ${r}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==s)}}throw i?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${r}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},sy=Rl;var ay=sy;var{code:A_}=we("dnsaddr");async function Ri(t,e={}){let r=new ay;e.signal!=null&&e.signal.addEventListener("abort",()=>{r.cancel()});let n=t.getPeerId(),[,i]=t.stringTuples().find(([a])=>a===A_)??[];if(i==null)throw new Error("No hostname found in multiaddr");let s=(await r.resolveTxt(`_dnsaddr.${i}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(s=s.filter(a=>a.includes(n))),s}var ur;(function(t){t.NOT_STARTED_YET="The libp2p node is not started yet",t.DHT_DISABLED="DHT is not available",t.PUBSUB_DISABLED="PubSub is not available",t.CONN_ENCRYPTION_REQUIRED="At least one connection encryption module is required",t.ERR_TRANSPORTS_REQUIRED="At least one transport module is required",t.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",t.NOT_FOUND="Not found"})(ur||(ur={}));var F;(function(t){t.DHT_DISABLED="ERR_DHT_DISABLED",t.ERR_PUBSUB_DISABLED="ERR_PUBSUB_DISABLED",t.PUBSUB_NOT_STARTED="ERR_PUBSUB_NOT_STARTED",t.DHT_NOT_STARTED="ERR_DHT_NOT_STARTED",t.CONN_ENCRYPTION_REQUIRED="ERR_CONN_ENCRYPTION_REQUIRED",t.ERR_TRANSPORTS_REQUIRED="ERR_TRANSPORTS_REQUIRED",t.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",t.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",t.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",t.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",t.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",t.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",t.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",t.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",t.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",t.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",t.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",t.ERR_DIALED_SELF="ERR_DIALED_SELF",t.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",t.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",t.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",t.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",t.ERR_INVALID_KEY="ERR_INVALID_KEY",t.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",t.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",t.ERR_INVALID_PEER="ERR_INVALID_PEER",t.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",t.ERR_NOT_FOUND="ERR_NOT_FOUND",t.ERR_TIMEOUT="ERR_TIMEOUT",t.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",t.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",t.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",t.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",t.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",t.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",t.ERR_FIND_SELF="ERR_FIND_SELF",t.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",t.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",t.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",t.ERR_KEYCHAIN_REQUIRED="ERR_KEYCHAIN_REQUIRED",t.ERR_INVALID_CMS="ERR_INVALID_CMS",t.ERR_MISSING_KEYS="ERR_MISSING_KEYS",t.ERR_NO_KEY="ERR_NO_KEY",t.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",t.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",t.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",t.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",t.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",t.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",t.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",t.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",t.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",t.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",t.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",t.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",t.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",t.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",t.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",t.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",t.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",t.ERR_INVALID_RECORD="ERR_INVALID_RECORD",t.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",t.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",t.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",t.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",t.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",t.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(F||(F={}));var S_={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:t=>t},connectionManager:{resolvers:{dnsaddr:Ri},addressSorter:Ii},transportManager:{faultTolerance:Zr.FATAL_ALL}};function cy(t){let e=zr(S_,t);if(e.transports==null||e.transports.length<1)throw new E(ur.ERR_TRANSPORTS_REQUIRED,F.ERR_TRANSPORTS_REQUIRED);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new E(ur.ERR_PROTECTOR_REQUIRED,F.ERR_PROTECTOR_REQUIRED);return e}var uy="keep-alive";var cg=J(ig(),1);var aA=ie("libp2p:get-peer");function pa(t){if(Ds(t))return{peerId:t,multiaddrs:[]};Array.isArray(t)||(t=[t]);let e;if(t.length>0){let r=t[0].getPeerId();e=r==null?void 0:pe(r),t.forEach(n=>{if(!Ln(n))throw aA.error("multiaddr %s was invalid",n),new E("Invalid Multiaddr",F.ERR_INVALID_MULTIADDR);let i=n.getPeerId();if(i==null){if(e!=null)throw new E("Multiaddrs must all have the same peer id or have no peer id",F.ERR_INVALID_PARAMETERS)}else{let o=pe(i);if(e==null||!e.equals(o))throw new E("Multiaddrs must all have the same peer id or have no peer id",F.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:t}}function cA(t,e,r){let n=0,i=t.length;for(;i>0;){let o=Math.trunc(i/2),s=n+o;r(t[s],e)<=0?(n=++s,i-=o+1):i=o}return n}var Vl=class{#e=[];enqueue(e,r){let n=r?.peerId,i=r?.priority??0;if(n==null)throw new E("missing peer id",F.ERR_INVALID_PARAMETERS);let o={priority:i,peerId:n,run:e};if(this.size>0&&this.#e[this.size-1].priority>=i){this.#e.push(o);return}let s=cA(this.#e,o,(a,c)=>c.priority-a.priority);this.#e.splice(s,0,o)}dequeue(){return this.#e.shift()?.run}filter(e){if(e.peerId!=null){let r=e.peerId;return this.#e.filter(n=>r.equals(n.peerId)).map(n=>n.run)}return this.#e.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this.#e.length}},ma=class extends zt{constructor(e={}){super({...e,queueClass:Vl})}hasJob(e){return this.sizeBy({peerId:e})>0}};var ot=ie("libp2p:connection-manager:auto-dial"),Io={minConnections:50,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3},ya=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialInterval;started;running;constructor(e,r){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=r.minConnections??Io.minConnections,this.autoDialPriority=r.autoDialPriority??Io.autoDialPriority,this.autoDialIntervalMs=r.autoDialInterval??Io.autoDialInterval,this.autoDialMaxQueueLength=r.maxQueueLength??Io.maxQueueLength,this.started=!1,this.running=!1,this.queue=new ma({concurrency:r.autoDialConcurrency??Io.autoDialConcurrency}),this.queue.addListener("error",n=>{ot.error("error during auto-dial",n)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(n=>{ot.error(n)})})}isStarted(){return this.started}start(){this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{ot.error("error while autodialing",e)})},this.autoDialIntervalMs),this.started=!0}afterStart(){this.autoDial().catch(e=>{ot.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started)return;let e=this.connectionManager.getConnectionsMap(),r=e.size;if(r>=this.minConnections){this.minConnections>0&&ot.trace("have enough connections %d/%d",r,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){ot("not enough connections %d/%d but auto dial queue is full",r,this.minConnections);return}if(this.running){ot("not enough connections %d/%d - but skipping autodial as it is already running",r,this.minConnections);return}this.running=!0,ot("not enough connections %d/%d - will dial peers to increase the number of connections",r,this.minConnections);let n=new Bn(this.connectionManager.getDialQueue().map(c=>c.peerId).filter(Boolean)),i=await this.peerStore.all({filters:[c=>c.addresses.length===0?(ot.trace("not autodialing %p because they have no addresses"),!1):e.has(c.id)?(ot.trace("not autodialing %p because they are already connected"),!1):n.has(c.id)?(ot.trace("not autodialing %p because they are already being dialed"),!1):this.queue.hasJob(c.id)?(ot.trace("not autodialing %p because they are already being autodialed"),!1):!0]}),o=i.sort(()=>Math.random()>.5?1:-1),s=new qt;for(let c of o)s.has(c.id)||s.set(c.id,[...c.tags.values()].reduce((u,l)=>u+l.value,0));let a=o.sort((c,u)=>{let l=s.get(c.id)??0,f=s.get(u.id)??0;return l>f?-1:l<f?1:0});ot("selected %d/%d peers to dial",a.length,i.length);for(let c of a)this.queue.add(async()=>{let u=this.connectionManager.getConnectionsMap().size;if(u>=this.minConnections){ot("got enough connections now %d/%d",u,this.minConnections),this.queue.clear();return}ot("connecting to a peerStore stored peer %p",c.id),await this.connectionManager.openConnection(c.id,{priority:this.autoDialPriority})},{peerId:c.id}).catch(u=>{ot.error("could not connect to peerStore stored peer",u)});this.running=!1,this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(c=>{ot.error("error while autodialing",c)})},this.autoDialIntervalMs))}};var Pi=ie("libp2p:connection-manager:connection-pruner"),og={maxConnections:300,allow:[]},ga=class{maxConnections;connectionManager;peerStore;allow;events;constructor(e,r={}){this.maxConnections=r.maxConnections??og.maxConnections,this.allow=r.allow??og.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{Pi.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),r=e.length,n=Math.max(r-this.maxConnections,0);if(Pi("checking max connections limit %d/%d",r,this.maxConnections),r<=this.maxConnections)return;Pi("max connections limit exceeded %d/%d, pruning %d connection(s)",r,this.maxConnections,n);let i=new qt;for(let a of e){let c=a.remotePeer;if(!i.has(c)){i.set(c,0);try{let u=await this.peerStore.get(c);i.set(c,[...u.tags.values()].reduce((l,f)=>l+f.value,0))}catch(u){u.code!=="ERR_NOT_FOUND"&&Pi.error("error loading peer tags",u)}}}let o=e.sort((a,c)=>{let u=i.get(a.remotePeer)??0,l=i.get(c.remotePeer)??0;if(u>l)return 1;if(u<l)return-1;let f=a.timeline.open,h=c.timeline.open;return f<h?1:f>h?-1:0}),s=[];for(let a of o)if(Pi("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(u=>a.remoteAddr.toString().startsWith(u.toString()))||s.push(a),s.length===n)break;await Promise.all(s.map(async a=>{try{await a.close()}catch(c){Pi.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:s})}};var Xl=J($n(),1);function Di(t){let e=new globalThis.AbortController;function r(){e.abort();for(let o of t)o?.removeEventListener!=null&&o.removeEventListener("abort",r)}for(let o of t){if(o?.aborted===!0){r();break}o?.addEventListener!=null&&o.addEventListener("abort",r)}function n(){for(let o of t)o?.removeEventListener!=null&&o.removeEventListener("abort",r)}let i=e.signal;return i.clear=n,i}function Jr(){let t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}var Wl=J($n(),1);var sg=ie("libp2p:connection-manager:utils");async function Ql(t,e){if(!t.protoNames().includes("dnsaddr"))return[t];let n=await lA(t,e),s=(await Promise.all(n.map(async a=>Ql(a,e)))).flat().reduce((a,c)=>(a.find(u=>u.equals(c))==null&&a.push(c),a),[]);return sg("resolved %s to",t,s.map(a=>a.toString())),s}async function lA(t,e){try{return t=ze(t.toString()),await t.resolve(e)}catch(r){return sg.error(`multiaddr ${t.toString()} could not be resolved`,r),[]}}function ag(...t){let e=[];for(let n of t)if(n!=null){try{(0,Wl.setMaxListeners)?.(1/0,n)}catch{}e.push(n)}let r=Di(e);try{(0,Wl.setMaxListeners)?.(1/0,r)}catch{}return r}var ct=ie("libp2p:connection-manager:dial-queue"),Ro={addressSorter:Ii,maxParallelDials:100,maxPeerAddrsToDial:25,maxParallelDialsPerPeer:10,dialTimeout:3e4,resolvers:{dnsaddr:Ri}},xa=class{pendingDials;queue;peerId;peerStore;connectionGater;transportManager;addressSorter;maxPeerAddrsToDial;maxParallelDialsPerPeer;dialTimeout;inProgressDialCount;pendingDialCount;shutDownController;constructor(e,r={}){this.addressSorter=r.addressSorter??Ro.addressSorter,this.maxPeerAddrsToDial=r.maxPeerAddrsToDial??Ro.maxPeerAddrsToDial,this.maxParallelDialsPerPeer=r.maxParallelDialsPerPeer??Ro.maxParallelDialsPerPeer,this.dialTimeout=r.dialTimeout??Ro.dialTimeout,this.peerId=e.peerId,this.peerStore=e.peerStore,this.connectionGater=e.connectionGater,this.transportManager=e.transportManager,this.shutDownController=new AbortController;try{(0,Xl.setMaxListeners)?.(1/0,this.shutDownController.signal)}catch{}this.pendingDialCount=e.metrics?.registerMetric("libp2p_dialler_pending_dials"),this.inProgressDialCount=e.metrics?.registerMetric("libp2p_dialler_in_progress_dials"),this.pendingDials=[];for(let[n,i]of Object.entries(r.resolvers??{}))Xu.set(n,i);this.queue=new zt({concurrency:r.maxParallelDials??Ro.maxParallelDials}),this.queue.on("add",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("active",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("completed",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("error",n=>{ct.error("error in dial queue",n),this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("empty",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("idle",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)})}stop(){this.shutDownController.abort()}async dial(e,r={}){let{peerId:n,multiaddrs:i}=pa(e),o=i.map(l=>({multiaddr:l,isCertified:!1})),s=this.createDialAbortControllers(r.signal),a;try{a=await this.calculateMultiaddrs(n,o,{...r,signal:s})}catch(l){throw s.clear(),l}let c=this.pendingDials.find(l=>!!(l.peerId!=null&&n!=null&&l.peerId.equals(n)||a.map(({multiaddr:f})=>f.toString()).join()===l.multiaddrs.map(f=>f.toString()).join()));if(c!=null)return ct("joining existing dial target for %p",n),s.clear(),c.promise;ct("creating dial target for",a.map(({multiaddr:l})=>l.toString()));let u={id:hA(),status:"queued",peerId:n,multiaddrs:a.map(({multiaddr:l})=>l)};return u.promise=this.performDial(u,{...r,signal:s}).finally(()=>{this.pendingDials=this.pendingDials.filter(l=>l.id!==u.id),s.clear()}).catch(l=>{throw ct.error("dial failed to %s",u.multiaddrs.map(f=>f.toString()).join(", "),l),s.aborted?new E(l.message,F.ERR_TIMEOUT):l}),this.pendingDials.push(u),u.promise}createDialAbortControllers(e){let r=Di([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);try{(0,Xl.setMaxListeners)?.(1/0,r)}catch{}return r}async calculateMultiaddrs(e,r=[],n={}){if(e!=null){if(this.peerId.equals(e))throw new E("Tried to dial self",F.ERR_DIALED_SELF);if(await this.connectionGater.denyDialPeer?.(e)===!0)throw new E("The dial request is blocked by gater.allowDialPeer",F.ERR_PEER_DIAL_INTERCEPTED);if(r.length===0){ct("loading multiaddrs for %p",e);try{let l=await this.peerStore.get(e);r.push(...l.addresses),ct("loaded multiaddrs for %p",e,r.map(({multiaddr:f})=>f.toString()))}catch(l){if(l.code!==F.ERR_NOT_FOUND)throw l}}}let i=(await Promise.all(r.map(async l=>{let f=await Ql(l.multiaddr,n);return f.length===1&&f[0].equals(l.multiaddr)?l:f.map(h=>({multiaddr:h,isCertified:!1}))}))).flat(),o=i.filter(l=>!!this.transportManager.transportForMultiaddr(l.multiaddr)),s=new Map;for(let l of o){let f=l.multiaddr.toString(),h=s.get(f);if(h!=null){h.isCertified=h.isCertified||l.isCertified||!1;continue}s.set(f,l)}let a=[...s.values()];if((a.length===0||a.length>this.maxPeerAddrsToDial)&&(ct("addresses for %p before filtering",e??"unknown peer",i.map(({multiaddr:l})=>l.toString())),ct("addresses for %p after filtering",e??"unknown peer",a.map(({multiaddr:l})=>l.toString()))),a.length===0)throw new E("The dial request has no valid addresses",F.ERR_NO_VALID_ADDRESSES);if(a.length>this.maxPeerAddrsToDial)throw new E("dial with more addresses than allowed",F.ERR_TOO_MANY_ADDRESSES);if(e!=null){let l=`/p2p/${e.toString()}`;a=a.map(f=>{let h=f.multiaddr.getPeerId();return f.multiaddr.protos().pop()?.path===!0?f:h!==e.toString()?{multiaddr:f.multiaddr.encapsulate(l),isCertified:f.isCertified}:f})}let c=[];for(let l of a)this.connectionGater.denyDialMultiaddr!=null&&await this.connectionGater.denyDialMultiaddr(l.multiaddr)||c.push(l);let u=c.sort(this.addressSorter);if(u.length===0)throw new E("The connection gater denied all addresses in the dial request",F.ERR_NO_VALID_ADDRESSES);return u}async performDial(e,r={}){let n=e.multiaddrs.map(()=>new AbortController);try{let i=new zt({concurrency:this.maxParallelDialsPerPeer});i.on("error",s=>{ct.error("error dialling",s)});let o=await Promise.any(e.multiaddrs.map(async(s,a)=>{let c=n[a];if(c==null)throw new E("dialAction did not come with an AbortController",F.ERR_INVALID_PARAMETERS);let u=ag(c.signal,r.signal);u.addEventListener("abort",()=>{ct("dial to %a aborted",s)});let l=Jr();return await i.add(async()=>{if(u.aborted){ct("dial to %a was aborted before reaching the head of the peer dial queue",s),l.reject(new Wn);return}await this.queue.add(async()=>{try{if(u.aborted){ct("dial to %a was aborted before reaching the head of the dial queue",s),l.reject(new Wn);return}e.status="active";let f=await this.transportManager.dial(s,{...r,signal:u});if(c.signal.aborted){ct("multiple dials succeeded, closing superfluous connection"),f.close().catch(h=>{ct.error("error closing superfluous connection",h)}),l.reject(new Wn);return}n[a]=void 0,n.forEach(h=>{h!==void 0&&h.abort()}),ct("dial to %a succeeded",s),l.resolve(f)}catch(f){ct.error("error during dial of %a",s,f),l.reject(f)}},{...r,signal:u}).catch(f=>{l.reject(f)})},{signal:u}).catch(f=>{l.reject(f)}).finally(()=>{u.clear()}),l.promise}));if(o==null)throw new E("successful dial led to empty object returned from peer dial queue",F.ERR_TRANSPORT_DIAL_FAILED);return e.status="success",o}catch(i){throw e.status="error",e.multiaddrs.length===1&&i.name==="AggregateError"?i.errors[0]:i}}};function hA(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var _t=ie("libp2p:connection-manager"),mA=50,On={minConnections:50,maxConnections:300,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},ba=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;constructor(e,r={}){this.maxConnections=r.maxConnections??On.maxConnections;let n=r.minConnections??On.minConnections;if(this.maxConnections<n)throw new E("Connection Manager maxConnections must be greater than minConnections",F.ERR_INVALID_PARAMETERS);this.connections=new qt,this.started=!1,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(r.allow??[]).map(i=>ze(i)),this.deny=(r.deny??[]).map(i=>ze(i)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=r.maxIncomingPendingConnections??On.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new cg.RateLimiterMemory({points:r.inboundConnectionThreshold??On.inboundConnectionThreshold,duration:1}),this.autoDial=new ya({connectionManager:this,peerStore:e.peerStore,events:e.events},{minConnections:n,autoDialConcurrency:r.autoDialConcurrency??On.autoDialConcurrency,autoDialPriority:r.autoDialPriority??On.autoDialPriority,maxQueueLength:r.autoDialMaxQueueLength??On.autoDialMaxQueueLength}),this.connectionPruner=new ga({connectionManager:this,peerStore:e.peerStore,events:e.events},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new xa({peerId:e.peerId,metrics:e.metrics,peerStore:e.peerStore,transportManager:e.transportManager,connectionGater:e.connectionGater},{addressSorter:r.addressSorter??Ii,maxParallelDials:r.maxParallelDials??100,maxPeerAddrsToDial:r.maxPeerAddrsToDial??25,dialTimeout:r.dialTimeout??3e4,resolvers:r.resolvers??{dnsaddr:Ri}})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let r of this.connections.values())for(let n of r)n.direction==="inbound"?e.inbound++:e.outbound++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let r of this.connections.values())for(let n of r)for(let i of n.streams){let o=`${i.direction} ${i.protocol??"unnegotiated"}`;e[o]=(e[o]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let i of n){let o={};for(let s of i.streams){let a=`${s.direction} ${s.protocol??"unnegotiated"}`;o[a]=(o[a]??0)+1}for(let[s,a]of Object.entries(o))e[s]=e[s]??[],e[s].push(a)}let r={};for(let[n,i]of Object.entries(e)){i=i.sort((s,a)=>s-a);let o=Math.floor(i.length*.9);r[n]=i[o]}return r}}),this.autoDial.start(),this.started=!0,_t("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[r=>r.tags.has(uy)]});await Promise.all(e.map(async r=>{await this.openConnection(r.id).catch(n=>{_t.error(n)})}))}).catch(e=>{_t.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let r of this.connections.values())for(let n of r)e.push((async()=>{try{await n.close()}catch(i){_t.error(i)}})());_t("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),_t("stopped")}onConnect(e){this._onConnect(e).catch(r=>{_t.error(r)})}async _onConnect(e){let{detail:r}=e;if(!this.started){await r.close();return}let n=r.remotePeer,i=this.connections.get(n),o=!1;i!=null?i.push(r):(o=!0,this.connections.set(n,[r])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:r.remotePeer})}onDisconnect(e){let{detail:r}=e;if(!this.started)return;let n=r.remotePeer,i=this.connections.get(n);i!=null&&i.length>1?(i=i.filter(o=>o.id!==r.id),this.connections.set(n,i)):i!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:r.remotePeer}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let r=[];for(let n of this.connections.values())r=r.concat(n);return r}getConnectionsMap(){return this.connections}async openConnection(e,r={}){if(!this.isStarted())throw new E("Not started",F.ERR_NODE_NOT_STARTED);r.signal?.throwIfAborted();let{peerId:n}=pa(e);if(n!=null){_t("dial %p",n);let a=this.getConnections(n);if(a.length>0)return _t("had an existing connection to %p",n),a[0]}let i=await this.dialQueue.dial(e,{...r,priority:r.priority??mA}),o=this.connections.get(i.remotePeer);o==null&&(o=[],this.connections.set(i.remotePeer,o));let s=!1;for(let a of o)a.id===i.id&&(s=!0);return s||o.push(i),i}async closeConnections(e,r={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async i=>{try{await i.close(r)}catch(o){i.abort(o)}}))}async acceptIncomingConnection(e){if(this.deny.some(i=>e.remoteAddr.toString().startsWith(i.toString())))return _t("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(i=>e.remoteAddr.toString().startsWith(i.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return _t("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let i=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(i,1)}catch{return _t("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,i),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(_t("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){return this.dialQueue.pendingDials}};var wa=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Ni=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new wa(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let r=this.head;this.head=r.next=new wa(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let r=this.tail.next;this.tail.next=null,this.tail=r,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var ef=class extends Error{type;code;constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}};function Mn(t={}){return yA(r=>{let n=r.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},t)}function yA(t,e){e=e??{};let r=e.onEnd,n=new Ni,i,o,s,a=Jr(),c=async()=>{try{return n.isEmpty()?s?{done:!0}:await new Promise((y,g)=>{o=x=>{o=null,n.push(x);try{y(t(n))}catch(w){g(w)}return i}}):t(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Jr()})}},u=y=>o!=null?o(y):(n.push(y),i),l=y=>(n=new Ni,o!=null?o({error:y}):(n.push({error:y}),i)),f=y=>{if(s)return i;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:y})},h=y=>s?i:(s=!0,y!=null?l(y):u({done:!0})),p=()=>(n=new Ni,h(),{done:!0}),d=y=>(h(y),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:p,throw:d,push:f,end:h,get readableLength(){return n.size},onEmpty:async y=>{let g=y?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let x,w;g!=null&&(x=new Promise((C,_)=>{w=()=>{_(new ef)},g.addEventListener("abort",w)}));try{await Promise.race([a.promise,x])}finally{w!=null&&g!=null&&g?.removeEventListener("abort",w)}}},r==null)return i;let m=i;return i={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),r!=null&&(r(y),r=void 0),{done:!0}},return(){return m.return(),r!=null&&(r(),r=void 0),{done:!0}},push:f,end(y){return m.end(y),r!=null&&(r(y),r=void 0),i},get readableLength(){return m.readableLength}},i}function gA(t){return t[Symbol.asyncIterator]!=null}function xA(...t){let e=[];for(let r of t)gA(r)||e.push(r);return e.length===t.length?function*(){for(let r of e)yield*r}():async function*(){let r=Mn({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(t.map(async n=>{for await(let i of n)r.push(i)})),r.end()}catch(n){r.end(n)}}),yield*r}()}var en=xA;function Un(t,...e){if(t==null)throw new Error("Empty pipeline");if(tf(t)){let n=t;t=()=>n.source}else if(lg(t)||ug(t)){let n=t;t=()=>n}let r=[t,...e];if(r.length>1&&tf(r[r.length-1])&&(r[r.length-1]=r[r.length-1].sink),r.length>2)for(let n=1;n<r.length-1;n++)tf(r[n])&&(r[n]=wA(r[n]));return bA(...r)}var bA=(...t)=>{let e;for(;t.length>0;)e=t.shift()(e);return e},ug=t=>t?.[Symbol.asyncIterator]!=null,lg=t=>t?.[Symbol.iterator]!=null,tf=t=>t==null?!1:t.sink!=null&&t.source!=null,wA=t=>e=>{let r=t.sink(e);if(r?.then!=null){let n=Mn({objectMode:!0});r.then(()=>{n.end()},s=>{n.end(s)});let i,o=t.source;if(ug(o))i=async function*(){yield*o,n.end()};else if(lg(o))i=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return en(n,i())}return t.source};function EA(t){return t[Symbol.asyncIterator]!=null}function vA(t,e){if(EA(t))return async function*(){for await(let a of t)yield e(a)}();let r=oa(t),{value:n,done:i}=r.next();if(i===!0)return function*(){}();let o=e(n);if(typeof o.then=="function")return async function*(){yield await o;for await(let a of r)yield e(a)}();let s=e;return function*(){yield o;for(let a of r)yield s(a)}()}var fg=vA;async function*Co(t,e){yield*fg(t,async r=>(await e.merge(r.id,{multiaddrs:r.multiaddrs}),r))}function Ea(t){let e=new Set;return Ht(t,r=>e.has(r.id.toString())?!1:(e.add(r.id.toString()),!0))}async function*va(t,e=1){let r=0;for await(let n of t)r++,yield n;if(r<e)throw new E(`more peers required, seen: ${r} min: ${e}`,"NOT_FOUND")}var _a=class{routers;started;components;constructor(e,r){this.routers=r.routers??[],this.started=!1,this.components=e}isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,r={}){if(this.routers.length===0)throw new E("No content routers available",F.ERR_NO_ROUTERS_AVAILABLE);yield*Un(en(...this.routers.map(n=>n.findProviders(e,r))),n=>Co(n,this.components.peerStore),n=>Ea(n),n=>va(n))}async provide(e,r={}){if(this.routers.length===0)throw new E("No content routers available",F.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,r)}))}async put(e,r,n){if(!this.isStarted())throw new E(ur.NOT_STARTED_YET,F.DHT_NOT_STARTED);await Promise.all(this.routers.map(async i=>{await i.put(e,r,n)}))}async get(e,r){if(!this.isStarted())throw new E(ur.NOT_STARTED_YET,F.DHT_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,r)))}};function _A(t){return t[Symbol.asyncIterator]!=null}function AA(t){if(_A(t))return(async()=>{for await(let e of t)return e})();for(let e of t)return e}var Aa=AA;var SA=ie("libp2p:peer-routing"),Sa=class{components;routers;constructor(e,r){this.components=e,this.routers=r.routers??[]}async findPeer(e,r){if(this.routers.length===0)throw new E("No peer routers available",F.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.components.peerId.toString())throw new E("Should not try to find self",F.ERR_FIND_SELF);let n=await Un(en(...this.routers.map(i=>async function*(){try{yield await i.findPeer(e,r)}catch(o){SA.error(o)}}())),i=>Ht(i,Boolean),i=>Co(i,this.components.peerStore),async i=>Aa(i));if(n!=null)return n;throw new E(ur.NOT_FOUND,F.ERR_NOT_FOUND)}async*getClosestPeers(e,r){if(this.routers.length===0)throw new E("No peer routers available",F.ERR_NO_ROUTERS_AVAILABLE);yield*Un(en(...this.routers.map(n=>n.getClosestPeers(e,r))),n=>Co(n,this.components.peerStore),n=>Ea(n),n=>va(n))}};var rf=ie("libp2p:registrar"),nf=32,of=64,Ia=class{topologies;handlers;components;constructor(e){this.topologies=new Map,this.handlers=new Map,this.components=e,this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onConnect=this._onConnect.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:connect",this._onConnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let r=this.handlers.get(e);if(r==null)throw new E(`No handler registered for protocol ${e}`,F.ERR_NO_HANDLER_FOR_PROTOCOL);return r}getTopologies(e){let r=this.topologies.get(e);return r==null?[]:[...r.values()]}async handle(e,r,n){if(this.handlers.has(e))throw new E(`Handler already registered for protocol ${e}`,F.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let i=zr.bind({ignoreUndefined:!0})({maxInboundStreams:nf,maxOutboundStreams:of},n);this.handlers.set(e,{handler:r,options:i}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){let r=Array.isArray(e)?e:[e];r.forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:r})}async register(e,r){if(r==null)throw new E("invalid topology",F.ERR_INVALID_PARAMETERS);let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,i=this.topologies.get(e);return i==null&&(i=new Map,this.topologies.set(e,i)),i.set(n,r),n}unregister(e){for(let[r,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(r))}_onDisconnect(e){let r=e.detail;this.components.peerStore.get(r).then(n=>{for(let i of n.protocols){let o=this.topologies.get(i);if(o!=null)for(let s of o.values())s.onDisconnect?.(r)}}).catch(n=>{n.code!==F.ERR_NOT_FOUND&&rf.error("could not inform topologies of disconnecting peer %p",r,n)})}_onConnect(e){let r=e.detail;this.components.peerStore.get(r).then(n=>{let i=this.components.connectionManager.getConnections(n.id)[0];if(i==null){rf("peer %p connected but the connection manager did not have a connection",n);return}for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let a of s.values())a.onConnect?.(r,i)}}).catch(n=>{n.code!==F.ERR_NOT_FOUND&&rf.error("could not inform topologies of connecting peer %p",r,n)})}_onPeerUpdate(e){let{peer:r,previous:n}=e.detail,i=(n?.protocols??[]).filter(s=>!r.protocols.includes(s)),o=r.protocols.filter(s=>!(n?.protocols??[]).includes(s));for(let s of i){let a=this.topologies.get(s);if(a!=null)for(let c of a.values())c.onDisconnect?.(r.id)}for(let s of o){let a=this.topologies.get(s);if(a!=null)for(let c of a.values()){let u=this.components.connectionManager.getConnections(r.id)[0];u!=null&&c.onConnect?.(r.id,u)}}}};var sf=class extends Map{metric;constructor(e){super();let{name:r,metrics:n}=e;this.metric=n.registerMetric(r),this.updateComponentMetric()}set(e,r){return super.set(e,r),this.updateComponentMetric(),this}delete(e){let r=super.delete(e);return this.updateComponentMetric(),r}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function hg(t){let{name:e,metrics:r}=t,n;return r!=null?n=new sf({name:e,metrics:r}):n=new Map,n}var Kn=ie("libp2p:transports"),Ra=class{components;transports;listeners;faultTolerance;started;constructor(e,r={}){this.components=e,this.started=!1,this.transports=new Map,this.listeners=hg({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=r.faultTolerance??Zr.FATAL_ALL}add(e){let r=e[Symbol.toStringTag];if(r==null)throw new E("Transport must have a valid tag",F.ERR_INVALID_KEY);if(this.transports.has(r))throw new E(`There is already a transport with the tag ${r}`,F.ERR_DUPLICATE_TRANSPORT);Kn("adding transport %s",r),this.transports.set(r,e),this.listeners.has(r)||this.listeners.set(r,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[r,n]of this.listeners)for(Kn("closing listeners for %s",r);n.length>0;){let i=n.pop();i!=null&&e.push(i.close())}await Promise.all(e),Kn("all listeners closed");for(let r of this.listeners.keys())this.listeners.set(r,[]);this.started=!1}async dial(e,r){let n=this.transportForMultiaddr(e);if(n==null)throw new E(`No transport available for address ${String(e)}`,F.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...r,upgrader:this.components.upgrader})}catch(i){throw i.code==null&&(i.code=F.ERR_TRANSPORT_DIAL_FAILED),i}}getAddrs(){let e=[];for(let r of this.listeners.values())for(let n of r)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}transportForMultiaddr(e){for(let r of this.transports.values())if(r.filter([e]).length>0)return r}async listen(e){if(!this.isStarted())throw new E("Not started",F.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){Kn("no addresses were provided for listening, this node is dial only");return}let r=[];for(let[n,i]of this.transports.entries()){let o=i.filter(e),s=[];for(let u of o){Kn("creating listener for %s on %a",n,u);let l=i.createListener({upgrader:this.components.upgrader}),f=this.listeners.get(n)??[];f==null&&(f=[],this.listeners.set(n,f)),f.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let h=f.findIndex(p=>p===l);f.splice(h,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),s.push(l.listen(u))}if(s.length===0){r.push(n);continue}if((await Promise.allSettled(s)).find(u=>u.status==="fulfilled")==null&&this.faultTolerance!==Zr.NO_FATAL)throw new E(`Transport (${n}) could not listen on any available address`,F.ERR_NO_VALID_ADDRESSES)}if(r.length===this.transports.size){let n=`no valid addresses were provided for transports [${r.join(", ")}]`;if(this.faultTolerance===Zr.FATAL_ALL)throw new E(n,F.ERR_NO_VALID_ADDRESSES);Kn(`libp2p in dial mode only: ${n}`)}}async remove(e){Kn("removing %s",e);for(let r of this.listeners.get(e)??[])await r.close();this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let r of this.transports.keys())e.push(this.remove(r));await Promise.all(e)}};var lf=J($n(),1);var Cr="/multistream/1.0.0";function af(t){let e=async function*(){let r=yield,n=new Xe;for await(let i of t){if(r==null){n.append(i),r=yield n,n=new Xe;continue}for(n.append(i);n.length>=r;){let o=n.sublist(0,r);if(n.consume(r),r=yield o,r==null){n.length>0&&(r=yield n,n=new Xe);break}}}if(r!=null)throw Object.assign(new Error(`stream ended before ${r} bytes became available`),{code:"ERR_UNDER_READ",buffer:n})}();return e.next(),e}function Ca(t){let e=Mn(),r=af(t.source),n=Jr(),i,o=t.sink(async function*(){yield*e,yield*await n.promise}());return o.catch(a=>{i=a}),{reader:r,writer:e,stream:{sink:async a=>{if(i!=null){await Promise.reject(i);return}n.resolve(a),await o},source:r},rest:()=>e.end(),write:e.push,read:async()=>{let a=await r.next();if(a.value!=null)return a.value}}}var To=class extends Error{constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}};function dg(t){if(t!=null){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")}function Ta(t,e,r){let n=r??{},i=dg(t);async function*o(){let s,a=()=>{s?.()};for(e.addEventListener("abort",a);;){let c;try{if(e.aborted){let{abortMessage:l,abortCode:f}=n;throw new To(l,f)}let u=new Promise((l,f)=>{s=()=>{let{abortMessage:h,abortCode:p}=n;f(new To(h,p))}});c=await Promise.race([u,i.next()]),s=null}catch(u){e.removeEventListener("abort",a);let l=u.type==="aborted"&&e.aborted;if(l&&n.onAbort!=null&&n.onAbort(t),typeof i.return=="function")try{let f=i.return();f instanceof Promise&&f.catch(h=>{n.onReturnError!=null&&n.onReturnError(h)})}catch(f){n.onReturnError!=null&&n.onReturnError(f)}if(l&&n.returnOnAbort===!0)return;throw u}if(c.done===!0)break;yield c.value}e.removeEventListener("abort",a)}return o()}function IA(t,e,r){return n=>t(Ta(n,e,r))}function pg(t,e,r){return{sink:IA(t.sink,e,{...r,onAbort:void 0}),source:Ta(t.source,e,r)}}function Ba(t){return t[Symbol.asyncIterator]!=null}var La=t=>{let e=Vt.encodingLength(t),r=Dt(e);return Vt.encode(t,r),La.bytes=e,r};La.bytes=0;function Pa(t,e){e=e??{};let r=e.lengthEncoder??La;function*n(i){let o=r(i.byteLength);o instanceof Uint8Array?yield o:yield*o,i instanceof Uint8Array?yield i:yield*i}return Ba(t)?async function*(){for await(let i of t)yield*n(i)}():function*(){for(let i of t)yield*n(i)}()}Pa.single=(t,e)=>{e=e??{};let r=e.lengthEncoder??La;return new Xe(r(t.byteLength),t)};var ki=J(bl(),1);var RA=8,CA=1024*1024*4,Fn;(function(t){t[t.LENGTH=0]="LENGTH",t[t.DATA=1]="DATA"})(Fn||(Fn={}));var cf=t=>{let e=Vt.decode(t);return cf.bytes=Vt.encodingLength(e),e};cf.bytes=0;function Bo(t,e){let r=new Xe,n=Fn.LENGTH,i=-1,o=e?.lengthDecoder??cf,s=e?.maxLengthLength??RA,a=e?.maxDataLength??CA;function*c(){for(;r.byteLength>0;){if(n===Fn.LENGTH)try{if(i=o(r),i<0)throw(0,ki.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(i>a)throw(0,ki.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let u=o.bytes;r.consume(u),e?.onLength!=null&&e.onLength(i),n=Fn.DATA}catch(u){if(u instanceof RangeError){if(r.byteLength>s)throw(0,ki.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw u}if(n===Fn.DATA){if(r.byteLength<i)break;let u=r.sublist(0,i);r.consume(i),e?.onData!=null&&e.onData(u),yield u,n=Fn.LENGTH}}}return Ba(t)?async function*(){for await(let u of t)r.append(u),yield*c();if(r.byteLength>0)throw(0,ki.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let u of t)r.append(u),yield*c();if(r.byteLength>0)throw(0,ki.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Bo.fromReader=(t,e)=>{let r=1,n=async function*(){for(;;)try{let{done:o,value:s}=await t.next(r);if(o===!0)return;s!=null&&(yield s)}catch(o){if(o.code==="ERR_UNDER_READ")return{done:!0,value:null};throw o}finally{r=1}}();return Bo(n,{...e??{},onLength:o=>{r=o}})};var LA=ie("libp2p:mss"),mg=Y(`
|
|
48
|
+
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),h_=new RegExp(`(?:^${Gt}$)|(?:^${ua}$)`),d_=new RegExp(`^${Gt}$`),p_=new RegExp(`^${ua}$`),vl=t=>t&&t.exact?h_:new RegExp(`(?:${Xr(t)}${Gt}${Xr(t)})|(?:${Xr(t)}${ua}${Xr(t)})`,"g");vl.v4=t=>t&&t.exact?d_:new RegExp(`${Xr(t)}${Gt}${Xr(t)}`,"g");vl.v6=t=>t&&t.exact?p_:new RegExp(`${Xr(t)}${ua}${Xr(t)}`,"g");var Gm=vl;var Zm=J(Wm(),1),{isValid:m_,parse:y_}=Zm.default,g_=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],x_=g_.map(t=>new Xm.Netmask(t));function b_(t){for(let e of x_)if(e.contains(t))return!0;return!1}function Qm(t){return/^::$/.test(t)||/^::1$/.test(t)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(t)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(t)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(t)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(t)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(t)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(t)||/^ff([0-9a-fA-F]{2,2}):/i.test(t)}var jm=t=>{if(m_(t)){let e=y_(t);if(e.kind()==="ipv4")return b_(e.toNormalizedString());if(e.kind()==="ipv6")return Qm(t)}else if(bi(t)&&Gm.v6().test(t))return Qm(t)};var fa=jm;function Jm(t={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let r=e.stringTuples();return r[0][0]===4||r[0][0]===41?!!fa(`${r[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...t}}var t6=Symbol.for("@libp2p/transport");var Zr;(function(t){t[t.FATAL_ALL=0]="FATAL_ALL",t[t.NO_FATAL=1]="NO_FATAL"})(Zr||(Zr={}));function _l(t){try{let{address:e}=t.nodeAddress();return!!fa(e)}catch{return!0}}function Ii(t,e){let r=_l(t.multiaddr),n=_l(e.multiaddr);return r&&!n?1:!r&&n||t.isCertified&&!e.isCertified?-1:!t.isCertified&&e.isCertified?1:0}var Sl=J(Ru(),1),Il=J(ry(),1);var ny=globalThis.fetch,iy=globalThis.Headers,c6=globalThis.Request,u6=globalThis.Response;function ha(t,e,r){return`${t}?name=${e}&type=${r}`}async function oy(t,e){return await(await ny(t,{headers:new iy({accept:"application/dns-json"}),signal:e})).json()}function kn(t,e){return`${e}_${t}`}var Al=Object.assign((0,Sl.default)("dns-over-http-resolver"),{error:(0,Sl.default)("dns-over-http-resolver:error")}),Rl=class{constructor(e={}){this._cache=new Il.default({max:e?.maxCache??100}),this._TXTcache=new Il.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??oy,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>e.abort())}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let r=e.length-1;r>0;r--){let n=Math.floor(Math.random()*r),i=e[r];e[r]=e[n],e[n]=i}return e}setServers(e){this._servers=e}async resolve(e,r="A"){switch(r){case"A":return await this.resolve4(e);case"AAAA":return await this.resolve6(e);case"TXT":return await this.resolveTxt(e);default:throw new Error(`${r} is not supported`)}}async resolve4(e){let r="A",n=this._cache.get(kn(e,r));if(n!=null)return n;let i=!1;for(let o of this._getShuffledServers()){let s=new AbortController;this._abortControllers.push(s);try{let a=await this._request(ha(o,e,r),s.signal),c=a.Answer.map(l=>l.data),u=Math.min(...a.Answer.map(l=>l.TTL));return this._cache.set(kn(e,r),c,{ttl:u}),c}catch{s.signal.aborted&&(i=!0),Al.error(`${o} could not resolve ${e} record ${r}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==s)}}throw i?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${r}`)}async resolve6(e){let r="AAAA",n=this._cache.get(kn(e,r));if(n!=null)return n;let i=!1;for(let o of this._getShuffledServers()){let s=new AbortController;this._abortControllers.push(s);try{let a=await this._request(ha(o,e,r),s.signal),c=a.Answer.map(l=>l.data),u=Math.min(...a.Answer.map(l=>l.TTL));return this._cache.set(kn(e,r),c,{ttl:u}),c}catch{s.signal.aborted&&(i=!0),Al.error(`${o} could not resolve ${e} record ${r}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==s)}}throw i?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${r}`)}async resolveTxt(e){let r="TXT",n=this._TXTcache.get(kn(e,r));if(n!=null)return n;let i=!1;for(let o of this._getShuffledServers()){let s=new AbortController;this._abortControllers.push(s);try{let a=await this._request(ha(o,e,r),s.signal),c=a.Answer.map(l=>[l.data.replace(/['"]+/g,"")]),u=Math.min(...a.Answer.map(l=>l.TTL));return this._TXTcache.set(kn(e,r),c,{ttl:u}),c}catch{s.signal.aborted&&(i=!0),Al.error(`${o} could not resolve ${e} record ${r}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==s)}}throw i?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${r}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},sy=Rl;var ay=sy;var{code:A_}=we("dnsaddr");async function Ri(t,e={}){let r=new ay;e.signal!=null&&e.signal.addEventListener("abort",()=>{r.cancel()});let n=t.getPeerId(),[,i]=t.stringTuples().find(([a])=>a===A_)??[];if(i==null)throw new Error("No hostname found in multiaddr");let s=(await r.resolveTxt(`_dnsaddr.${i}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(s=s.filter(a=>a.includes(n))),s}var ur;(function(t){t.NOT_STARTED_YET="The libp2p node is not started yet",t.DHT_DISABLED="DHT is not available",t.PUBSUB_DISABLED="PubSub is not available",t.CONN_ENCRYPTION_REQUIRED="At least one connection encryption module is required",t.ERR_TRANSPORTS_REQUIRED="At least one transport module is required",t.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",t.NOT_FOUND="Not found"})(ur||(ur={}));var F;(function(t){t.DHT_DISABLED="ERR_DHT_DISABLED",t.ERR_PUBSUB_DISABLED="ERR_PUBSUB_DISABLED",t.PUBSUB_NOT_STARTED="ERR_PUBSUB_NOT_STARTED",t.DHT_NOT_STARTED="ERR_DHT_NOT_STARTED",t.CONN_ENCRYPTION_REQUIRED="ERR_CONN_ENCRYPTION_REQUIRED",t.ERR_TRANSPORTS_REQUIRED="ERR_TRANSPORTS_REQUIRED",t.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",t.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",t.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",t.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",t.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",t.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",t.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",t.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",t.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",t.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",t.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",t.ERR_DIALED_SELF="ERR_DIALED_SELF",t.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",t.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",t.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",t.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",t.ERR_INVALID_KEY="ERR_INVALID_KEY",t.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",t.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",t.ERR_INVALID_PEER="ERR_INVALID_PEER",t.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",t.ERR_NOT_FOUND="ERR_NOT_FOUND",t.ERR_TIMEOUT="ERR_TIMEOUT",t.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",t.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",t.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",t.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",t.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",t.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",t.ERR_FIND_SELF="ERR_FIND_SELF",t.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",t.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",t.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",t.ERR_KEYCHAIN_REQUIRED="ERR_KEYCHAIN_REQUIRED",t.ERR_INVALID_CMS="ERR_INVALID_CMS",t.ERR_MISSING_KEYS="ERR_MISSING_KEYS",t.ERR_NO_KEY="ERR_NO_KEY",t.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",t.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",t.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",t.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",t.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",t.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",t.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",t.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",t.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",t.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",t.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",t.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",t.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",t.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",t.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",t.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",t.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",t.ERR_INVALID_RECORD="ERR_INVALID_RECORD",t.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",t.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",t.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",t.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",t.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",t.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(F||(F={}));var S_={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:t=>t},connectionManager:{resolvers:{dnsaddr:Ri},addressSorter:Ii},transportManager:{faultTolerance:Zr.FATAL_ALL}};function cy(t){let e=zr(S_,t);if(e.transports==null||e.transports.length<1)throw new E(ur.ERR_TRANSPORTS_REQUIRED,F.ERR_TRANSPORTS_REQUIRED);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new E(ur.ERR_PROTECTOR_REQUIRED,F.ERR_PROTECTOR_REQUIRED);return e}var uy="keep-alive";var cg=J(ig(),1);var aA=ie("libp2p:get-peer");function pa(t){if(Ds(t))return{peerId:t,multiaddrs:[]};Array.isArray(t)||(t=[t]);let e;if(t.length>0){let r=t[0].getPeerId();e=r==null?void 0:pe(r),t.forEach(n=>{if(!Ln(n))throw aA.error("multiaddr %s was invalid",n),new E("Invalid Multiaddr",F.ERR_INVALID_MULTIADDR);let i=n.getPeerId();if(i==null){if(e!=null)throw new E("Multiaddrs must all have the same peer id or have no peer id",F.ERR_INVALID_PARAMETERS)}else{let o=pe(i);if(e==null||!e.equals(o))throw new E("Multiaddrs must all have the same peer id or have no peer id",F.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:t}}function cA(t,e,r){let n=0,i=t.length;for(;i>0;){let o=Math.trunc(i/2),s=n+o;r(t[s],e)<=0?(n=++s,i-=o+1):i=o}return n}var Vl=class{#e=[];enqueue(e,r){let n=r?.peerId,i=r?.priority??0;if(n==null)throw new E("missing peer id",F.ERR_INVALID_PARAMETERS);let o={priority:i,peerId:n,run:e};if(this.size>0&&this.#e[this.size-1].priority>=i){this.#e.push(o);return}let s=cA(this.#e,o,(a,c)=>c.priority-a.priority);this.#e.splice(s,0,o)}dequeue(){return this.#e.shift()?.run}filter(e){if(e.peerId!=null){let r=e.peerId;return this.#e.filter(n=>r.equals(n.peerId)).map(n=>n.run)}return this.#e.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this.#e.length}},ma=class extends zt{constructor(e={}){super({...e,queueClass:Vl})}hasJob(e){return this.sizeBy({peerId:e})>0}};var ot=ie("libp2p:connection-manager:auto-dial"),Io={minConnections:50,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3},ya=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialInterval;started;running;constructor(e,r){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=r.minConnections??Io.minConnections,this.autoDialPriority=r.autoDialPriority??Io.autoDialPriority,this.autoDialIntervalMs=r.autoDialInterval??Io.autoDialInterval,this.autoDialMaxQueueLength=r.maxQueueLength??Io.maxQueueLength,this.started=!1,this.running=!1,this.queue=new ma({concurrency:r.autoDialConcurrency??Io.autoDialConcurrency}),this.queue.addListener("error",n=>{ot.error("error during auto-dial",n)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(n=>{ot.error(n)})})}isStarted(){return this.started}start(){this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{ot.error("error while autodialing",e)})},this.autoDialIntervalMs),this.started=!0}afterStart(){this.autoDial().catch(e=>{ot.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started)return;let e=this.connectionManager.getConnectionsMap(),r=e.size;if(r>=this.minConnections){this.minConnections>0&&ot.trace("have enough connections %d/%d",r,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){ot("not enough connections %d/%d but auto dial queue is full",r,this.minConnections);return}if(this.running){ot("not enough connections %d/%d - but skipping autodial as it is already running",r,this.minConnections);return}this.running=!0,ot("not enough connections %d/%d - will dial peers to increase the number of connections",r,this.minConnections);let n=new Bn(this.connectionManager.getDialQueue().map(c=>c.peerId).filter(Boolean)),i=await this.peerStore.all({filters:[c=>c.addresses.length===0?(ot.trace("not autodialing %p because they have no addresses"),!1):e.has(c.id)?(ot.trace("not autodialing %p because they are already connected"),!1):n.has(c.id)?(ot.trace("not autodialing %p because they are already being dialed"),!1):this.queue.hasJob(c.id)?(ot.trace("not autodialing %p because they are already being autodialed"),!1):!0]}),o=i.sort(()=>Math.random()>.5?1:-1),s=new qt;for(let c of o)s.has(c.id)||s.set(c.id,[...c.tags.values()].reduce((u,l)=>u+l.value,0));let a=o.sort((c,u)=>{let l=s.get(c.id)??0,f=s.get(u.id)??0;return l>f?-1:l<f?1:0});ot("selected %d/%d peers to dial",a.length,i.length);for(let c of a)this.queue.add(async()=>{let u=this.connectionManager.getConnectionsMap().size;if(u>=this.minConnections){ot("got enough connections now %d/%d",u,this.minConnections),this.queue.clear();return}ot("connecting to a peerStore stored peer %p",c.id),await this.connectionManager.openConnection(c.id,{priority:this.autoDialPriority})},{peerId:c.id}).catch(u=>{ot.error("could not connect to peerStore stored peer",u)});this.running=!1,this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(c=>{ot.error("error while autodialing",c)})},this.autoDialIntervalMs))}};var Pi=ie("libp2p:connection-manager:connection-pruner"),og={maxConnections:300,allow:[]},ga=class{maxConnections;connectionManager;peerStore;allow;events;constructor(e,r={}){this.maxConnections=r.maxConnections??og.maxConnections,this.allow=r.allow??og.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{Pi.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),r=e.length,n=Math.max(r-this.maxConnections,0);if(Pi("checking max connections limit %d/%d",r,this.maxConnections),r<=this.maxConnections)return;Pi("max connections limit exceeded %d/%d, pruning %d connection(s)",r,this.maxConnections,n);let i=new qt;for(let a of e){let c=a.remotePeer;if(!i.has(c)){i.set(c,0);try{let u=await this.peerStore.get(c);i.set(c,[...u.tags.values()].reduce((l,f)=>l+f.value,0))}catch(u){u.code!=="ERR_NOT_FOUND"&&Pi.error("error loading peer tags",u)}}}let o=e.sort((a,c)=>{let u=i.get(a.remotePeer)??0,l=i.get(c.remotePeer)??0;if(u>l)return 1;if(u<l)return-1;let f=a.timeline.open,h=c.timeline.open;return f<h?1:f>h?-1:0}),s=[];for(let a of o)if(Pi("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(u=>a.remoteAddr.toString().startsWith(u.toString()))||s.push(a),s.length===n)break;await Promise.all(s.map(async a=>{try{await a.close()}catch(c){Pi.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:s})}};var Xl=J($n(),1);function Di(t){let e=new globalThis.AbortController;function r(){e.abort();for(let o of t)o?.removeEventListener!=null&&o.removeEventListener("abort",r)}for(let o of t){if(o?.aborted===!0){r();break}o?.addEventListener!=null&&o.addEventListener("abort",r)}function n(){for(let o of t)o?.removeEventListener!=null&&o.removeEventListener("abort",r)}let i=e.signal;return i.clear=n,i}function Jr(){let t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}var Wl=J($n(),1);var sg=ie("libp2p:connection-manager:utils");async function Ql(t,e){if(!t.protoNames().includes("dnsaddr"))return[t];let n=await lA(t,e),s=(await Promise.all(n.map(async a=>Ql(a,e)))).flat().reduce((a,c)=>(a.find(u=>u.equals(c))==null&&a.push(c),a),[]);return sg("resolved %s to",t,s.map(a=>a.toString())),s}async function lA(t,e){try{return t=ze(t.toString()),await t.resolve(e)}catch(r){return sg.error(`multiaddr ${t.toString()} could not be resolved`,r),[]}}function ag(...t){let e=[];for(let n of t)if(n!=null){try{(0,Wl.setMaxListeners)?.(1/0,n)}catch{}e.push(n)}let r=Di(e);try{(0,Wl.setMaxListeners)?.(1/0,r)}catch{}return r}var ct=ie("libp2p:connection-manager:dial-queue"),Ro={addressSorter:Ii,maxParallelDials:100,maxPeerAddrsToDial:25,maxParallelDialsPerPeer:10,dialTimeout:3e4,resolvers:{dnsaddr:Ri}},xa=class{pendingDials;queue;peerId;peerStore;connectionGater;transportManager;addressSorter;maxPeerAddrsToDial;maxParallelDialsPerPeer;dialTimeout;inProgressDialCount;pendingDialCount;shutDownController;constructor(e,r={}){this.addressSorter=r.addressSorter??Ro.addressSorter,this.maxPeerAddrsToDial=r.maxPeerAddrsToDial??Ro.maxPeerAddrsToDial,this.maxParallelDialsPerPeer=r.maxParallelDialsPerPeer??Ro.maxParallelDialsPerPeer,this.dialTimeout=r.dialTimeout??Ro.dialTimeout,this.peerId=e.peerId,this.peerStore=e.peerStore,this.connectionGater=e.connectionGater,this.transportManager=e.transportManager,this.shutDownController=new AbortController;try{(0,Xl.setMaxListeners)?.(1/0,this.shutDownController.signal)}catch{}this.pendingDialCount=e.metrics?.registerMetric("libp2p_dialler_pending_dials"),this.inProgressDialCount=e.metrics?.registerMetric("libp2p_dialler_in_progress_dials"),this.pendingDials=[];for(let[n,i]of Object.entries(r.resolvers??{}))Xu.set(n,i);this.queue=new zt({concurrency:r.maxParallelDials??Ro.maxParallelDials}),this.queue.on("add",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("active",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("completed",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("error",n=>{ct.error("error in dial queue",n),this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("empty",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)}),this.queue.on("idle",()=>{this.pendingDialCount?.update(this.queue.size),this.inProgressDialCount?.update(this.queue.pending)})}stop(){this.shutDownController.abort()}async dial(e,r={}){let{peerId:n,multiaddrs:i}=pa(e),o=i.map(l=>({multiaddr:l,isCertified:!1})),s=this.createDialAbortControllers(r.signal),a;try{a=await this.calculateMultiaddrs(n,o,{...r,signal:s})}catch(l){throw s.clear(),l}let c=this.pendingDials.find(l=>!!(l.peerId!=null&&n!=null&&l.peerId.equals(n)||a.map(({multiaddr:f})=>f.toString()).join()===l.multiaddrs.map(f=>f.toString()).join()));if(c!=null)return ct("joining existing dial target for %p",n),s.clear(),c.promise;ct("creating dial target for",a.map(({multiaddr:l})=>l.toString()));let u={id:hA(),status:"queued",peerId:n,multiaddrs:a.map(({multiaddr:l})=>l)};return u.promise=this.performDial(u,{...r,signal:s}).finally(()=>{this.pendingDials=this.pendingDials.filter(l=>l.id!==u.id),s.clear()}).catch(l=>{throw ct.error("dial failed to %s",u.multiaddrs.map(f=>f.toString()).join(", "),l),s.aborted?new E(l.message,F.ERR_TIMEOUT):l}),this.pendingDials.push(u),u.promise}createDialAbortControllers(e){let r=Di([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);try{(0,Xl.setMaxListeners)?.(1/0,r)}catch{}return r}async calculateMultiaddrs(e,r=[],n={}){if(e!=null){if(this.peerId.equals(e))throw new E("Tried to dial self",F.ERR_DIALED_SELF);if(await this.connectionGater.denyDialPeer?.(e)===!0)throw new E("The dial request is blocked by gater.allowDialPeer",F.ERR_PEER_DIAL_INTERCEPTED);if(r.length===0){ct("loading multiaddrs for %p",e);try{let l=await this.peerStore.get(e);r.push(...l.addresses),ct("loaded multiaddrs for %p",e,r.map(({multiaddr:f})=>f.toString()))}catch(l){if(l.code!==F.ERR_NOT_FOUND)throw l}}}let i=(await Promise.all(r.map(async l=>{let f=await Ql(l.multiaddr,n);return f.length===1&&f[0].equals(l.multiaddr)?l:f.map(h=>({multiaddr:h,isCertified:!1}))}))).flat(),o=i.filter(l=>{if(this.transportManager.transportForMultiaddr(l.multiaddr)==null)return!1;let f=l.multiaddr.getPeerId();return e!=null&&f!=null?e.equals(f):!0}),s=new Map;for(let l of o){let f=l.multiaddr.toString(),h=s.get(f);if(h!=null){h.isCertified=h.isCertified||l.isCertified||!1;continue}s.set(f,l)}let a=[...s.values()];if((a.length===0||a.length>this.maxPeerAddrsToDial)&&(ct("addresses for %p before filtering",e??"unknown peer",i.map(({multiaddr:l})=>l.toString())),ct("addresses for %p after filtering",e??"unknown peer",a.map(({multiaddr:l})=>l.toString()))),a.length===0)throw new E("The dial request has no valid addresses",F.ERR_NO_VALID_ADDRESSES);if(a.length>this.maxPeerAddrsToDial)throw new E("dial with more addresses than allowed",F.ERR_TOO_MANY_ADDRESSES);if(e!=null){let l=`/p2p/${e.toString()}`;a=a.map(f=>{let h=f.multiaddr.getPeerId();return f.multiaddr.protos().pop()?.path===!0?f:h!==e.toString()?{multiaddr:f.multiaddr.encapsulate(l),isCertified:f.isCertified}:f})}let c=[];for(let l of a)this.connectionGater.denyDialMultiaddr!=null&&await this.connectionGater.denyDialMultiaddr(l.multiaddr)||c.push(l);let u=c.sort(this.addressSorter);if(u.length===0)throw new E("The connection gater denied all addresses in the dial request",F.ERR_NO_VALID_ADDRESSES);return u}async performDial(e,r={}){let n=e.multiaddrs.map(()=>new AbortController);try{let i=new zt({concurrency:this.maxParallelDialsPerPeer});i.on("error",s=>{ct.error("error dialling",s)});let o=await Promise.any(e.multiaddrs.map(async(s,a)=>{let c=n[a];if(c==null)throw new E("dialAction did not come with an AbortController",F.ERR_INVALID_PARAMETERS);let u=ag(c.signal,r.signal);u.addEventListener("abort",()=>{ct("dial to %a aborted",s)});let l=Jr();return await i.add(async()=>{if(u.aborted){ct("dial to %a was aborted before reaching the head of the peer dial queue",s),l.reject(new Wn);return}await this.queue.add(async()=>{try{if(u.aborted){ct("dial to %a was aborted before reaching the head of the dial queue",s),l.reject(new Wn);return}e.status="active";let f=await this.transportManager.dial(s,{...r,signal:u});if(c.signal.aborted){ct("multiple dials succeeded, closing superfluous connection"),f.close().catch(h=>{ct.error("error closing superfluous connection",h)}),l.reject(new Wn);return}n[a]=void 0,n.forEach(h=>{h!==void 0&&h.abort()}),ct("dial to %a succeeded",s),l.resolve(f)}catch(f){ct.error("error during dial of %a",s,f),l.reject(f)}},{...r,signal:u}).catch(f=>{l.reject(f)})},{signal:u}).catch(f=>{l.reject(f)}).finally(()=>{u.clear()}),l.promise}));if(o==null)throw new E("successful dial led to empty object returned from peer dial queue",F.ERR_TRANSPORT_DIAL_FAILED);return e.status="success",o}catch(i){throw e.status="error",e.multiaddrs.length===1&&i.name==="AggregateError"?i.errors[0]:i}}};function hA(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var _t=ie("libp2p:connection-manager"),mA=50,On={minConnections:50,maxConnections:300,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},ba=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;constructor(e,r={}){this.maxConnections=r.maxConnections??On.maxConnections;let n=r.minConnections??On.minConnections;if(this.maxConnections<n)throw new E("Connection Manager maxConnections must be greater than minConnections",F.ERR_INVALID_PARAMETERS);this.connections=new qt,this.started=!1,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(r.allow??[]).map(i=>ze(i)),this.deny=(r.deny??[]).map(i=>ze(i)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=r.maxIncomingPendingConnections??On.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new cg.RateLimiterMemory({points:r.inboundConnectionThreshold??On.inboundConnectionThreshold,duration:1}),this.autoDial=new ya({connectionManager:this,peerStore:e.peerStore,events:e.events},{minConnections:n,autoDialConcurrency:r.autoDialConcurrency??On.autoDialConcurrency,autoDialPriority:r.autoDialPriority??On.autoDialPriority,maxQueueLength:r.autoDialMaxQueueLength??On.autoDialMaxQueueLength}),this.connectionPruner=new ga({connectionManager:this,peerStore:e.peerStore,events:e.events},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new xa({peerId:e.peerId,metrics:e.metrics,peerStore:e.peerStore,transportManager:e.transportManager,connectionGater:e.connectionGater},{addressSorter:r.addressSorter??Ii,maxParallelDials:r.maxParallelDials??100,maxPeerAddrsToDial:r.maxPeerAddrsToDial??25,dialTimeout:r.dialTimeout??3e4,resolvers:r.resolvers??{dnsaddr:Ri}})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let r of this.connections.values())for(let n of r)n.direction==="inbound"?e.inbound++:e.outbound++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let r of this.connections.values())for(let n of r)for(let i of n.streams){let o=`${i.direction} ${i.protocol??"unnegotiated"}`;e[o]=(e[o]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let i of n){let o={};for(let s of i.streams){let a=`${s.direction} ${s.protocol??"unnegotiated"}`;o[a]=(o[a]??0)+1}for(let[s,a]of Object.entries(o))e[s]=e[s]??[],e[s].push(a)}let r={};for(let[n,i]of Object.entries(e)){i=i.sort((s,a)=>s-a);let o=Math.floor(i.length*.9);r[n]=i[o]}return r}}),this.autoDial.start(),this.started=!0,_t("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[r=>r.tags.has(uy)]});await Promise.all(e.map(async r=>{await this.openConnection(r.id).catch(n=>{_t.error(n)})}))}).catch(e=>{_t.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let r of this.connections.values())for(let n of r)e.push((async()=>{try{await n.close()}catch(i){_t.error(i)}})());_t("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),_t("stopped")}onConnect(e){this._onConnect(e).catch(r=>{_t.error(r)})}async _onConnect(e){let{detail:r}=e;if(!this.started){await r.close();return}let n=r.remotePeer,i=this.connections.get(n),o=!1;i!=null?i.push(r):(o=!0,this.connections.set(n,[r])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:r.remotePeer})}onDisconnect(e){let{detail:r}=e;if(!this.started)return;let n=r.remotePeer,i=this.connections.get(n);i!=null&&i.length>1?(i=i.filter(o=>o.id!==r.id),this.connections.set(n,i)):i!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:r.remotePeer}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let r=[];for(let n of this.connections.values())r=r.concat(n);return r}getConnectionsMap(){return this.connections}async openConnection(e,r={}){if(!this.isStarted())throw new E("Not started",F.ERR_NODE_NOT_STARTED);r.signal?.throwIfAborted();let{peerId:n}=pa(e);if(n!=null){_t("dial %p",n);let a=this.getConnections(n);if(a.length>0)return _t("had an existing connection to %p",n),a[0]}let i=await this.dialQueue.dial(e,{...r,priority:r.priority??mA}),o=this.connections.get(i.remotePeer);o==null&&(o=[],this.connections.set(i.remotePeer,o));let s=!1;for(let a of o)a.id===i.id&&(s=!0);return s||o.push(i),i}async closeConnections(e,r={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async i=>{try{await i.close(r)}catch(o){i.abort(o)}}))}async acceptIncomingConnection(e){if(this.deny.some(i=>e.remoteAddr.toString().startsWith(i.toString())))return _t("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(i=>e.remoteAddr.toString().startsWith(i.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return _t("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let i=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(i,1)}catch{return _t("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,i),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(_t("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){return this.dialQueue.pendingDials}};var wa=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Ni=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new wa(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let r=this.head;this.head=r.next=new wa(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let r=this.tail.next;this.tail.next=null,this.tail=r,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var ef=class extends Error{type;code;constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}};function Mn(t={}){return yA(r=>{let n=r.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},t)}function yA(t,e){e=e??{};let r=e.onEnd,n=new Ni,i,o,s,a=Jr(),c=async()=>{try{return n.isEmpty()?s?{done:!0}:await new Promise((y,g)=>{o=x=>{o=null,n.push(x);try{y(t(n))}catch(w){g(w)}return i}}):t(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Jr()})}},u=y=>o!=null?o(y):(n.push(y),i),l=y=>(n=new Ni,o!=null?o({error:y}):(n.push({error:y}),i)),f=y=>{if(s)return i;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:y})},h=y=>s?i:(s=!0,y!=null?l(y):u({done:!0})),p=()=>(n=new Ni,h(),{done:!0}),d=y=>(h(y),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:p,throw:d,push:f,end:h,get readableLength(){return n.size},onEmpty:async y=>{let g=y?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let x,w;g!=null&&(x=new Promise((C,_)=>{w=()=>{_(new ef)},g.addEventListener("abort",w)}));try{await Promise.race([a.promise,x])}finally{w!=null&&g!=null&&g?.removeEventListener("abort",w)}}},r==null)return i;let m=i;return i={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),r!=null&&(r(y),r=void 0),{done:!0}},return(){return m.return(),r!=null&&(r(),r=void 0),{done:!0}},push:f,end(y){return m.end(y),r!=null&&(r(y),r=void 0),i},get readableLength(){return m.readableLength}},i}function gA(t){return t[Symbol.asyncIterator]!=null}function xA(...t){let e=[];for(let r of t)gA(r)||e.push(r);return e.length===t.length?function*(){for(let r of e)yield*r}():async function*(){let r=Mn({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(t.map(async n=>{for await(let i of n)r.push(i)})),r.end()}catch(n){r.end(n)}}),yield*r}()}var en=xA;function Un(t,...e){if(t==null)throw new Error("Empty pipeline");if(tf(t)){let n=t;t=()=>n.source}else if(lg(t)||ug(t)){let n=t;t=()=>n}let r=[t,...e];if(r.length>1&&tf(r[r.length-1])&&(r[r.length-1]=r[r.length-1].sink),r.length>2)for(let n=1;n<r.length-1;n++)tf(r[n])&&(r[n]=wA(r[n]));return bA(...r)}var bA=(...t)=>{let e;for(;t.length>0;)e=t.shift()(e);return e},ug=t=>t?.[Symbol.asyncIterator]!=null,lg=t=>t?.[Symbol.iterator]!=null,tf=t=>t==null?!1:t.sink!=null&&t.source!=null,wA=t=>e=>{let r=t.sink(e);if(r?.then!=null){let n=Mn({objectMode:!0});r.then(()=>{n.end()},s=>{n.end(s)});let i,o=t.source;if(ug(o))i=async function*(){yield*o,n.end()};else if(lg(o))i=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return en(n,i())}return t.source};function EA(t){return t[Symbol.asyncIterator]!=null}function vA(t,e){if(EA(t))return async function*(){for await(let a of t)yield e(a)}();let r=oa(t),{value:n,done:i}=r.next();if(i===!0)return function*(){}();let o=e(n);if(typeof o.then=="function")return async function*(){yield await o;for await(let a of r)yield e(a)}();let s=e;return function*(){yield o;for(let a of r)yield s(a)}()}var fg=vA;async function*Co(t,e){yield*fg(t,async r=>(await e.merge(r.id,{multiaddrs:r.multiaddrs}),r))}function Ea(t){let e=new Set;return Ht(t,r=>e.has(r.id.toString())?!1:(e.add(r.id.toString()),!0))}async function*va(t,e=1){let r=0;for await(let n of t)r++,yield n;if(r<e)throw new E(`more peers required, seen: ${r} min: ${e}`,"NOT_FOUND")}var _a=class{routers;started;components;constructor(e,r){this.routers=r.routers??[],this.started=!1,this.components=e}isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,r={}){if(this.routers.length===0)throw new E("No content routers available",F.ERR_NO_ROUTERS_AVAILABLE);yield*Un(en(...this.routers.map(n=>n.findProviders(e,r))),n=>Co(n,this.components.peerStore),n=>Ea(n),n=>va(n))}async provide(e,r={}){if(this.routers.length===0)throw new E("No content routers available",F.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,r)}))}async put(e,r,n){if(!this.isStarted())throw new E(ur.NOT_STARTED_YET,F.DHT_NOT_STARTED);await Promise.all(this.routers.map(async i=>{await i.put(e,r,n)}))}async get(e,r){if(!this.isStarted())throw new E(ur.NOT_STARTED_YET,F.DHT_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,r)))}};function _A(t){return t[Symbol.asyncIterator]!=null}function AA(t){if(_A(t))return(async()=>{for await(let e of t)return e})();for(let e of t)return e}var Aa=AA;var SA=ie("libp2p:peer-routing"),Sa=class{components;routers;constructor(e,r){this.components=e,this.routers=r.routers??[]}async findPeer(e,r){if(this.routers.length===0)throw new E("No peer routers available",F.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.components.peerId.toString())throw new E("Should not try to find self",F.ERR_FIND_SELF);let n=await Un(en(...this.routers.map(i=>async function*(){try{yield await i.findPeer(e,r)}catch(o){SA.error(o)}}())),i=>Ht(i,Boolean),i=>Co(i,this.components.peerStore),async i=>Aa(i));if(n!=null)return n;throw new E(ur.NOT_FOUND,F.ERR_NOT_FOUND)}async*getClosestPeers(e,r){if(this.routers.length===0)throw new E("No peer routers available",F.ERR_NO_ROUTERS_AVAILABLE);yield*Un(en(...this.routers.map(n=>n.getClosestPeers(e,r))),n=>Co(n,this.components.peerStore),n=>Ea(n),n=>va(n))}};var rf=ie("libp2p:registrar"),nf=32,of=64,Ia=class{topologies;handlers;components;constructor(e){this.topologies=new Map,this.handlers=new Map,this.components=e,this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onConnect=this._onConnect.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:connect",this._onConnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let r=this.handlers.get(e);if(r==null)throw new E(`No handler registered for protocol ${e}`,F.ERR_NO_HANDLER_FOR_PROTOCOL);return r}getTopologies(e){let r=this.topologies.get(e);return r==null?[]:[...r.values()]}async handle(e,r,n){if(this.handlers.has(e))throw new E(`Handler already registered for protocol ${e}`,F.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let i=zr.bind({ignoreUndefined:!0})({maxInboundStreams:nf,maxOutboundStreams:of},n);this.handlers.set(e,{handler:r,options:i}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){let r=Array.isArray(e)?e:[e];r.forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:r})}async register(e,r){if(r==null)throw new E("invalid topology",F.ERR_INVALID_PARAMETERS);let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,i=this.topologies.get(e);return i==null&&(i=new Map,this.topologies.set(e,i)),i.set(n,r),n}unregister(e){for(let[r,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(r))}_onDisconnect(e){let r=e.detail;this.components.peerStore.get(r).then(n=>{for(let i of n.protocols){let o=this.topologies.get(i);if(o!=null)for(let s of o.values())s.onDisconnect?.(r)}}).catch(n=>{n.code!==F.ERR_NOT_FOUND&&rf.error("could not inform topologies of disconnecting peer %p",r,n)})}_onConnect(e){let r=e.detail;this.components.peerStore.get(r).then(n=>{let i=this.components.connectionManager.getConnections(n.id)[0];if(i==null){rf("peer %p connected but the connection manager did not have a connection",n);return}for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let a of s.values())a.onConnect?.(r,i)}}).catch(n=>{n.code!==F.ERR_NOT_FOUND&&rf.error("could not inform topologies of connecting peer %p",r,n)})}_onPeerUpdate(e){let{peer:r,previous:n}=e.detail,i=(n?.protocols??[]).filter(s=>!r.protocols.includes(s)),o=r.protocols.filter(s=>!(n?.protocols??[]).includes(s));for(let s of i){let a=this.topologies.get(s);if(a!=null)for(let c of a.values())c.onDisconnect?.(r.id)}for(let s of o){let a=this.topologies.get(s);if(a!=null)for(let c of a.values()){let u=this.components.connectionManager.getConnections(r.id)[0];u!=null&&c.onConnect?.(r.id,u)}}}};var sf=class extends Map{metric;constructor(e){super();let{name:r,metrics:n}=e;this.metric=n.registerMetric(r),this.updateComponentMetric()}set(e,r){return super.set(e,r),this.updateComponentMetric(),this}delete(e){let r=super.delete(e);return this.updateComponentMetric(),r}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function hg(t){let{name:e,metrics:r}=t,n;return r!=null?n=new sf({name:e,metrics:r}):n=new Map,n}var Kn=ie("libp2p:transports"),Ra=class{components;transports;listeners;faultTolerance;started;constructor(e,r={}){this.components=e,this.started=!1,this.transports=new Map,this.listeners=hg({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=r.faultTolerance??Zr.FATAL_ALL}add(e){let r=e[Symbol.toStringTag];if(r==null)throw new E("Transport must have a valid tag",F.ERR_INVALID_KEY);if(this.transports.has(r))throw new E(`There is already a transport with the tag ${r}`,F.ERR_DUPLICATE_TRANSPORT);Kn("adding transport %s",r),this.transports.set(r,e),this.listeners.has(r)||this.listeners.set(r,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[r,n]of this.listeners)for(Kn("closing listeners for %s",r);n.length>0;){let i=n.pop();i!=null&&e.push(i.close())}await Promise.all(e),Kn("all listeners closed");for(let r of this.listeners.keys())this.listeners.set(r,[]);this.started=!1}async dial(e,r){let n=this.transportForMultiaddr(e);if(n==null)throw new E(`No transport available for address ${String(e)}`,F.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...r,upgrader:this.components.upgrader})}catch(i){throw i.code==null&&(i.code=F.ERR_TRANSPORT_DIAL_FAILED),i}}getAddrs(){let e=[];for(let r of this.listeners.values())for(let n of r)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}transportForMultiaddr(e){for(let r of this.transports.values())if(r.filter([e]).length>0)return r}async listen(e){if(!this.isStarted())throw new E("Not started",F.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){Kn("no addresses were provided for listening, this node is dial only");return}let r=[];for(let[n,i]of this.transports.entries()){let o=i.filter(e),s=[];for(let u of o){Kn("creating listener for %s on %a",n,u);let l=i.createListener({upgrader:this.components.upgrader}),f=this.listeners.get(n)??[];f==null&&(f=[],this.listeners.set(n,f)),f.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let h=f.findIndex(p=>p===l);f.splice(h,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),s.push(l.listen(u))}if(s.length===0){r.push(n);continue}if((await Promise.allSettled(s)).find(u=>u.status==="fulfilled")==null&&this.faultTolerance!==Zr.NO_FATAL)throw new E(`Transport (${n}) could not listen on any available address`,F.ERR_NO_VALID_ADDRESSES)}if(r.length===this.transports.size){let n=`no valid addresses were provided for transports [${r.join(", ")}]`;if(this.faultTolerance===Zr.FATAL_ALL)throw new E(n,F.ERR_NO_VALID_ADDRESSES);Kn(`libp2p in dial mode only: ${n}`)}}async remove(e){Kn("removing %s",e);for(let r of this.listeners.get(e)??[])await r.close();this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let r of this.transports.keys())e.push(this.remove(r));await Promise.all(e)}};var lf=J($n(),1);var Cr="/multistream/1.0.0";function af(t){let e=async function*(){let r=yield,n=new Xe;for await(let i of t){if(r==null){n.append(i),r=yield n,n=new Xe;continue}for(n.append(i);n.length>=r;){let o=n.sublist(0,r);if(n.consume(r),r=yield o,r==null){n.length>0&&(r=yield n,n=new Xe);break}}}if(r!=null)throw Object.assign(new Error(`stream ended before ${r} bytes became available`),{code:"ERR_UNDER_READ",buffer:n})}();return e.next(),e}function Ca(t){let e=Mn(),r=af(t.source),n=Jr(),i,o=t.sink(async function*(){yield*e,yield*await n.promise}());return o.catch(a=>{i=a}),{reader:r,writer:e,stream:{sink:async a=>{if(i!=null){await Promise.reject(i);return}n.resolve(a),await o},source:r},rest:()=>e.end(),write:e.push,read:async()=>{let a=await r.next();if(a.value!=null)return a.value}}}var To=class extends Error{constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}};function dg(t){if(t!=null){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")}function Ta(t,e,r){let n=r??{},i=dg(t);async function*o(){let s,a=()=>{s?.()};for(e.addEventListener("abort",a);;){let c;try{if(e.aborted){let{abortMessage:l,abortCode:f}=n;throw new To(l,f)}let u=new Promise((l,f)=>{s=()=>{let{abortMessage:h,abortCode:p}=n;f(new To(h,p))}});c=await Promise.race([u,i.next()]),s=null}catch(u){e.removeEventListener("abort",a);let l=u.type==="aborted"&&e.aborted;if(l&&n.onAbort!=null&&n.onAbort(t),typeof i.return=="function")try{let f=i.return();f instanceof Promise&&f.catch(h=>{n.onReturnError!=null&&n.onReturnError(h)})}catch(f){n.onReturnError!=null&&n.onReturnError(f)}if(l&&n.returnOnAbort===!0)return;throw u}if(c.done===!0)break;yield c.value}e.removeEventListener("abort",a)}return o()}function IA(t,e,r){return n=>t(Ta(n,e,r))}function pg(t,e,r){return{sink:IA(t.sink,e,{...r,onAbort:void 0}),source:Ta(t.source,e,r)}}function Ba(t){return t[Symbol.asyncIterator]!=null}var La=t=>{let e=Vt.encodingLength(t),r=Dt(e);return Vt.encode(t,r),La.bytes=e,r};La.bytes=0;function Pa(t,e){e=e??{};let r=e.lengthEncoder??La;function*n(i){let o=r(i.byteLength);o instanceof Uint8Array?yield o:yield*o,i instanceof Uint8Array?yield i:yield*i}return Ba(t)?async function*(){for await(let i of t)yield*n(i)}():function*(){for(let i of t)yield*n(i)}()}Pa.single=(t,e)=>{e=e??{};let r=e.lengthEncoder??La;return new Xe(r(t.byteLength),t)};var ki=J(bl(),1);var RA=8,CA=1024*1024*4,Fn;(function(t){t[t.LENGTH=0]="LENGTH",t[t.DATA=1]="DATA"})(Fn||(Fn={}));var cf=t=>{let e=Vt.decode(t);return cf.bytes=Vt.encodingLength(e),e};cf.bytes=0;function Bo(t,e){let r=new Xe,n=Fn.LENGTH,i=-1,o=e?.lengthDecoder??cf,s=e?.maxLengthLength??RA,a=e?.maxDataLength??CA;function*c(){for(;r.byteLength>0;){if(n===Fn.LENGTH)try{if(i=o(r),i<0)throw(0,ki.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(i>a)throw(0,ki.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let u=o.bytes;r.consume(u),e?.onLength!=null&&e.onLength(i),n=Fn.DATA}catch(u){if(u instanceof RangeError){if(r.byteLength>s)throw(0,ki.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw u}if(n===Fn.DATA){if(r.byteLength<i)break;let u=r.sublist(0,i);r.consume(i),e?.onData!=null&&e.onData(u),yield u,n=Fn.LENGTH}}}return Ba(t)?async function*(){for await(let u of t)r.append(u),yield*c();if(r.byteLength>0)throw(0,ki.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let u of t)r.append(u),yield*c();if(r.byteLength>0)throw(0,ki.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Bo.fromReader=(t,e)=>{let r=1,n=async function*(){for(;;)try{let{done:o,value:s}=await t.next(r);if(o===!0)return;s!=null&&(yield s)}catch(o){if(o.code==="ERR_UNDER_READ")return{done:!0,value:null};throw o}finally{r=1}}();return Bo(n,{...e??{},onLength:o=>{r=o}})};var LA=ie("libp2p:mss"),mg=Y(`
|
|
49
49
|
`);function Lo(t){let e=new Xe(t,mg);return Pa.single(e)}function qn(t,e,r={}){let n=Lo(e);r.writeBytes===!0?t.push(n.subarray()):t.push(n)}function yg(t,e,r={}){let n=new Xe;for(let i of e)n.append(Lo(i));r.writeBytes===!0?t.push(n.subarray()):t.push(n)}async function PA(t,e){let r=1,n={[Symbol.asyncIterator]:()=>n,next:async()=>t.next(r)},i=n;e?.signal!=null&&(i=Ta(n,e.signal));let o=a=>{r=a},s=await Un(i,a=>Bo(a,{onLength:o,maxDataLength:1024}),async a=>Aa(a));if(s==null||s.length===0)throw new E("no buffer returned","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");if(s.get(s.byteLength-1)!==mg[0])throw LA.error("Invalid mss message - missing newline - %s",s.subarray()),new E("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return s.sublist(0,-1)}async function Oi(t,e){let r=await PA(t,e);return ee(r.subarray())}var Po=ie("libp2p:mss:select");async function Do(t,e,r={}){e=Array.isArray(e)?[...e]:[e];let{reader:n,writer:i,rest:o,stream:s}=Ca(t),a=e.shift();if(a==null)throw new Error("At least one protocol must be specified");Po.trace('select: write ["%s", "%s"]',Cr,a);let c=Y(Cr),u=Y(a);yg(i,[c,u],r);let l=await Oi(n,r);if(Po.trace('select: read "%s"',l),l===Cr&&(l=await Oi(n,r),Po.trace('select: read "%s"',l)),l===a)return o(),{stream:s,protocol:a};for(let f of e){Po.trace('select: write "%s"',f),qn(i,Y(f),r);let h=await Oi(n,r);if(Po.trace('select: read "%s" for "%s"',h,f),h===f)return o(),{stream:s,protocol:f}}throw o(),new E("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}var No=ie("libp2p:mss:handle");async function ko(t,e,r){e=Array.isArray(e)?e:[e];let{writer:n,reader:i,rest:o,stream:s}=Ca(t);for(;;){let a=await Oi(i,r);if(No.trace('read "%s"',a),a===Cr){No.trace('respond with "%s" for "%s"',Cr,a),qn(n,Y(Cr),r);continue}if(e.includes(a))return qn(n,Y(a),r),No.trace('respond with "%s" for "%s"',a,a),o(),{stream:s,protocol:a};if(a==="ls"){qn(n,new Xe(...e.map(c=>Lo(Y(c)))),r),No.trace('respond with "%s" for %s',e,a);continue}qn(n,Y("na"),r),No('respond with "na" for "%s"',a)}}var bg=J($n(),1);var xg=Symbol.for("@libp2p/connection");var Da=ie("libp2p:connection"),NA=500,uf=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:r,remotePeer:n,newStream:i,close:o,abort:s,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=r,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this._newStream=i,this._close=o,this._abort=s,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[xg]=!0;get streams(){return this._getStreams()}async newStream(e,r){if(this.status==="closing")throw new E("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new E("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&r?.runOnTransientConnection!==!0)throw new E("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,r);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){Da("closing connection to %a",this.remoteAddr),this.status="closing",e.signal=e?.signal??AbortSignal.timeout(NA);try{(0,bg.setMaxListeners)?.(1/0,e.signal)}catch{}try{await Promise.all(this.streams.map(async r=>r.close(e))),await this._close(e),this.timeline.close=Date.now(),this.status="closed"}catch(r){Da.error("error encountered during graceful close of connection to %a",this.remoteAddr,r),this.abort(r)}}}abort(e){Da.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(r=>{r.abort(e)}),Da.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function wg(t){return new uf(t)}var Be=ie("libp2p:upgrader");function OA(t,e){try{let{options:r}=e.getHandler(t);return r.maxInboundStreams}catch(r){if(r.code!==F.ERR_NO_HANDLER_FOR_PROTOCOL)throw r}return nf}function MA(t,e,r={}){try{let{options:n}=e.getHandler(t);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==F.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return r.maxOutboundStreams??of}function Eg(t,e,r){let n=0;return r.streams.forEach(i=>{i.direction===e&&i.protocol===t&&n++}),n}var Na=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,r){this.components=e,this.connectionEncryption=new Map,r.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,r.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=r.inboundUpgradeTimeout??3e4,this.events=e.events}async shouldBlockConnection(e,r,n){let i=this.components.connectionGater[n];if(i!==void 0&&await i(e,r))throw new E(`The multiaddr connection is blocked by gater.${n}`,F.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,r){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new E("connection denied",F.ERR_CONNECTION_DENIED);let i,o,s,a,c,u=Di([AbortSignal.timeout(this.inboundUpgradeTimeout)]);try{(0,lf.setMaxListeners)?.(1/0,u)}catch{}try{let l=pg(e,u);if(e.source=l.source,e.sink=l.sink,await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new E("The multiaddr connection is blocked by gater.acceptConnection",F.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),Be("starting the inbound connection upgrade");let f=e;if(r?.skipProtection!==!0){let h=this.components.connectionProtector;h!=null&&(Be("protecting the inbound connection"),f=await h.protect(e))}try{if(i=f,r?.skipEncryption!==!0){({conn:i,remotePeer:o,protocol:c}=await this._encryptInbound(f));let h={...f,...i};await this.shouldBlockConnection(o,h,"denyInboundEncryptedConnection")}else{let h=e.remoteAddr.getPeerId();if(h==null)throw new E("inbound connection that skipped encryption must have a peer id",F.ERR_INVALID_MULTIADDR);let p=pe(h);c="native",o=p}if(s=i,r?.muxerFactory!=null)a=r.muxerFactory;else if(this.muxers.size>0){let h=await this._multiplexInbound({...f,...i},this.muxers);a=h.muxerFactory,s=h.stream}}catch(h){throw Be.error("Failed to upgrade inbound connection",h),h}return await this.shouldBlockConnection(o,e,"denyInboundUpgradedConnection"),Be("Successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:s,muxerFactory:a,remotePeer:o,transient:r?.transient})}finally{this.components.connectionManager.afterUpgradeInbound(),u.clear()}}async upgradeOutbound(e,r){let n=e.remoteAddr.getPeerId(),i;n!=null&&(i=pe(n),await this.shouldBlockConnection(i,e,"denyOutboundConnection"));let o,s,a,c,u;this.components.metrics?.trackMultiaddrConnection(e),Be("Starting the outbound connection upgrade");let l=e;if(r?.skipProtection!==!0){let f=this.components.connectionProtector;f!=null&&(l=await f.protect(e))}try{if(o=l,r?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptOutbound(l,i));let f={...l,...o};await this.shouldBlockConnection(s,f,"denyOutboundEncryptedConnection")}else{if(i==null)throw new E("Encryption was skipped but no peer id was passed",F.ERR_INVALID_PEER);c="native",s=i}if(a=o,r?.muxerFactory!=null)u=r.muxerFactory;else if(this.muxers.size>0){let f=await this._multiplexOutbound({...l,...o},this.muxers);u=f.muxerFactory,a=f.stream}}catch(f){throw Be.error("Failed to upgrade outbound connection",f),await e.close(f),f}return await this.shouldBlockConnection(s,e,"denyOutboundUpgradedConnection"),Be("Successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:u,remotePeer:s,transient:r?.transient})}_createConnection(e){let{cryptoProtocol:r,direction:n,maConn:i,upgradedConn:o,remotePeer:s,muxerFactory:a,transient:c}=e,u,l,f;a!=null&&(u=a.createStreamMuxer({direction:n,onIncomingStream:d=>{f!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),{stream:y,protocol:g}=await ko(d,m);if(Be("%s: incoming stream opened on %s",n,g),f==null)return;let x=OA(g,this.components.registrar);if(Eg(g,"inbound",f)===x){let C=new E(`Too many inbound protocol streams for protocol "${g}" - limit ${x}`,F.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw d.abort(C),C}d.source=y.source,d.sink=y.sink,d.protocol=g,await this.components.peerStore.merge(s,{protocols:[g]}),this.components.metrics?.trackProtocolStream(d,f),this._onStream({connection:f,stream:d,protocol:g})}).catch(async m=>{Be.error(m),d.timeline.close==null&&await d.close()})}}),l=async(d,m={})=>{if(u==null)throw new E("Stream is not multiplexed",F.ERR_MUXER_UNAVAILABLE);Be("%s: starting new stream on %s",n,d);let y=await u.newStream();try{if(m.signal==null){Be("No abort signal was passed while trying to negotiate protocols %s falling back to default timeout",d),m.signal=AbortSignal.timeout(3e4);try{(0,lf.setMaxListeners)?.(1/0,m.signal)}catch{}}let{stream:g,protocol:x}=await Do(y,d,m),w=MA(x,this.components.registrar,m);if(Eg(x,"outbound",f)>=w){let _=new E(`Too many outbound protocol streams for protocol "${x}" - limit ${w}`,F.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(_),_}return await this.components.peerStore.merge(s,{protocols:[x]}),y.source=g.source,y.sink=g.sink,y.protocol=x,this.components.metrics?.trackProtocolStream(y,f),y}catch(g){throw Be.error("could not create new stream",g),y.timeline.close==null&&y.abort(g),g.code!=null?g:new E(String(g),F.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([u.sink(o.source),o.sink(u.source)]).catch(d=>{Be.error(d)}));let h=i.timeline;i.timeline=new Proxy(h,{set:(...d)=>(f!=null&&d[1]==="close"&&d[2]!=null&&h.close==null&&(async()=>{try{f.status==="open"&&await f.close()}catch(m){Be.error(m)}finally{this.events.safeDispatchEvent("connection:close",{detail:f})}})().catch(m=>{Be.error(m)}),Reflect.set(...d))}),i.timeline.upgraded=Date.now();let p=()=>{throw new E("connection is not multiplexed",F.ERR_CONNECTION_NOT_MULTIPLEXED)};return f=wg({remoteAddr:i.remoteAddr,remotePeer:s,status:"open",direction:n,timeline:i.timeline,multiplexer:u?.protocol,encryption:r,transient:c,newStream:l??p,getStreams:()=>u!=null?u.streams:[],close:async d=>{await i.close(d),u!=null&&await u.close(d)},abort:d=>{i.abort(d),u?.abort(d)}}),this.events.safeDispatchEvent("connection:open",{detail:f}),f}_onStream(e){let{connection:r,stream:n,protocol:i}=e,{handler:o,options:s}=this.components.registrar.getHandler(i);if(r.transient&&s.runOnTransientConnection!==!0)throw new E("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");o({connection:r,stream:n})}async _encryptInbound(e){let r=Array.from(this.connectionEncryption.keys());Be("handling inbound crypto protocol selection",r);try{let{stream:n,protocol:i}=await ko(e,r,{writeBytes:!0}),o=this.connectionEncryption.get(i);if(o==null)throw new Error(`no crypto module found for ${i}`);return Be("encrypting inbound connection..."),{...await o.secureInbound(this.components.peerId,n),protocol:i}}catch(n){throw new E(String(n),F.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,r){let n=Array.from(this.connectionEncryption.keys());Be("selecting outbound crypto protocol",n);try{let{stream:i,protocol:o}=await Do(e,n,{writeBytes:!0}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return Be("encrypting outbound connection to %p",r),{...await s.secureOutbound(this.components.peerId,i,r),protocol:o}}catch(i){throw new E(String(i),F.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,r){let n=Array.from(r.keys());Be("outbound selecting muxer %s",n);try{let{stream:i,protocol:o}=await Do(e,n,{writeBytes:!0});Be("%s selected as muxer protocol",o);let s=r.get(o);return{stream:i,muxerFactory:s}}catch(i){throw Be.error("error multiplexing outbound stream",i),new E(String(i),F.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,r){let n=Array.from(r.keys());Be("inbound handling muxers %s",n);try{let{stream:i,protocol:o}=await ko(e,n,{writeBytes:!0}),s=r.get(o);return{stream:i,muxerFactory:s}}catch(i){throw Be.error("error multiplexing inbound stream",i),new E(String(i),F.ERR_MUXER_UNAVAILABLE)}}};var pt=ie("libp2p"),ff=class extends co{peerId;peerStore;contentRouting;peerRouting;keychain;metrics;services;components;#e;constructor(e){super();let r=new co,n=r.dispatchEvent.bind(r);r.dispatchEvent=c=>{let u=n(c),l=this.dispatchEvent(new _u(c.type,{detail:c.detail}));return u||l};try{(0,vg.setMaxListeners)?.(1/0,r)}catch{}this.#e=!1,this.peerId=e.peerId,this.services={};let i=this.components=$m({peerId:e.peerId,events:r,datastore:e.datastore??new aa,connectionGater:Jm(e.connectionGater)});this.peerStore=this.configureComponent("peerStore",new ia(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),i.events.addEventListener("peer:update",c=>{if(c.detail.previous==null){let u={id:c.detail.peer.id,multiaddrs:c.detail.peer.addresses.map(l=>l.multiaddr),protocols:c.detail.peer.protocols};this.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new Na(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((c,u)=>this.configureComponent(`connection-encryption-${u}`,c(this.components))),muxers:(e.streamMuxers??[]).map((c,u)=>this.configureComponent(`stream-muxers-${u}`,c(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new Ra(this.components,e.transportManager)),this.configureComponent("connectionManager",new ba(this.components,e.connectionManager)),this.configureComponent("registrar",new Ia(this.components)),this.configureComponent("addressManager",new ca(this.components,e.addresses));let o=Tn.generateOptions();this.keychain=this.configureComponent("keyChain",new Tn(this.components,{...o,...e.keychain}));let s=(e.peerRouters??[]).map((c,u)=>this.configureComponent(`peer-router-${u}`,c(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Sa(this.components,{routers:s}));let a=(e.contentRouters??[]).map((c,u)=>this.configureComponent(`content-router-${u}`,c(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new _a(this.components,{routers:a})),(e.peerDiscovery??[]).forEach((c,u)=>{this.configureComponent(`peer-discovery-${u}`,c(this.components)).addEventListener("peer",f=>{this.#t(f)})}),e.transports.forEach((c,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,c(this.components)))}),e.services!=null)for(let c of Object.keys(e.services)){let u=e.services[c],l=u(this.components);if(l==null){pt.error("service factory %s returned null or undefined instance",c);continue}this.services[c]=l,this.configureComponent(c,l),l[Eu]!=null&&(pt("registering service %s for content routing",c),a.push(l[Eu])),l[Su]!=null&&(pt("registering service %s for peer routing",c),s.push(l[Su])),l[Au]!=null&&(pt("registering service %s for peer discovery",c),l[Au].addEventListener("peer",f=>{this.#t(f)}))}}configureComponent(e,r){return r==null&&pt.error("component %s was null or undefined",e),this.components[e]=r,r}async start(){if(this.#e)return;this.#e=!0,pt("libp2p is starting"),(await this.keychain.listKeys()).find(r=>r.name==="self")==null&&(pt("importing self key into keychain"),await this.keychain.importPeer("self",this.components.peerId));try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.safeDispatchEvent("start",{detail:this}),pt("libp2p has started")}catch(r){throw pt.error("An error occurred starting libp2p",r),await this.stop(),r}}async stop(){this.#e&&(pt("libp2p is stopping"),this.#e=!1,await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.safeDispatchEvent("stop",{detail:this}),pt("libp2p has stopped"))}isStarted(){return this.#e}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new Bn;for(let r of this.components.connectionManager.getConnections())e.add(r.remotePeer);return Array.from(e)}async dial(e,r={}){return this.components.connectionManager.openConnection(e,r)}async dialProtocol(e,r,n={}){if(r==null)throw new E("no protocols were provided to open a stream",F.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(r=Array.isArray(r)?r:[r],r.length===0)throw new E("no protocols were provided to open a stream",F.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(r,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,r={}){Ln(e)&&(e=pe(e.getPeerId()??"")),await this.components.connectionManager.closeConnections(e,r)}async getPublicKey(e,r={}){if(pt("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;let n=await this.peerStore.get(e);if(n.id.publicKey!=null)return n.id.publicKey;let i=Me([Y("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(i,r);return so(o),await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,r,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async i=>{await this.components.registrar.handle(i,r,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async r=>{await this.components.registrar.unhandle(r)}))}async register(e,r){return this.components.registrar.register(e,r)}unregister(e){this.components.registrar.unregister(e)}#t(e){let{detail:r}=e;if(r.id.toString()===this.peerId.toString()){pt.error(new Error(F.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(r.id,{multiaddrs:r.multiaddrs,protocols:r.protocols}).catch(n=>{pt.error(n)})}};async function _g(t){if(t.peerId==null){let e=t.datastore;if(e!=null)try{let r=new Tn({datastore:e},zr(Tn.generateOptions(),t.keychain));t.peerId=await r.exportPeerId("self")}catch(r){if(r.code!=="ERR_NOT_FOUND")throw r}}return t.peerId==null&&(t.peerId=await Mp()),new ff(cy(t))}async function UA(t){let e=await _g(t);return t.start!==!1&&await e.start(),e}return Mg(KA);})();
|
|
50
50
|
/*! Bundled license information:
|
|
51
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dial-queue.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/dial-queue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAa,MAAM,yBAAyB,CAAA;AAIlF,OAAO,MAAM,MAAM,SAAS,CAAA;AAU5B,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAIpF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,mBAAoB,SAAQ,WAAW;IAC/C,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7B;AAED,UAAU,UAAU;IAClB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CACrC;AAaD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,qBAAa,SAAS;IACb,YAAY,EAAE,mBAAmB,EAAE,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,mBAAmB,EAAE,IAAI,GAAE,UAAe;IA+DnE;;OAEG;IACH,IAAI,IAAK,IAAI;IAIb;;;;;;;;;;;OAWG;IACG,IAAI,CAAE,iBAAiB,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAoFhH,OAAO,CAAC,0BAA0B;YAkBpB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"dial-queue.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/dial-queue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAa,MAAM,yBAAyB,CAAA;AAIlF,OAAO,MAAM,MAAM,SAAS,CAAA;AAU5B,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAIpF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,mBAAoB,SAAQ,WAAW;IAC/C,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7B;AAED,UAAU,UAAU;IAClB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CACrC;AAaD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,qBAAa,SAAS;IACb,YAAY,EAAE,mBAAmB,EAAE,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,mBAAmB,EAAE,IAAI,GAAE,UAAe;IA+DnE;;OAEG;IACH,IAAI,IAAK,IAAI;IAIb;;;;;;;;;;;OAWG;IACG,IAAI,CAAE,iBAAiB,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAoFhH,OAAO,CAAC,0BAA0B;YAkBpB,mBAAmB;YAwInB,WAAW;CAwH1B"}
|
|
@@ -231,8 +231,20 @@ export class DialQueue {
|
|
|
231
231
|
}));
|
|
232
232
|
})))
|
|
233
233
|
.flat();
|
|
234
|
-
|
|
235
|
-
|
|
234
|
+
const filteredAddrs = resolvedAddresses.filter(addr => {
|
|
235
|
+
// filter out any multiaddrs that we do not have transports for
|
|
236
|
+
if (this.transportManager.transportForMultiaddr(addr.multiaddr) == null) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
// if the resolved multiaddr has a PeerID but it's the wrong one, ignore it
|
|
240
|
+
// - this can happen with addresses like bootstrap.libp2p.io that resolve
|
|
241
|
+
// to multiple different peers
|
|
242
|
+
const addrPeerId = addr.multiaddr.getPeerId();
|
|
243
|
+
if (peerId != null && addrPeerId != null) {
|
|
244
|
+
return peerId.equals(addrPeerId);
|
|
245
|
+
}
|
|
246
|
+
return true;
|
|
247
|
+
});
|
|
236
248
|
// deduplicate addresses
|
|
237
249
|
const dedupedAddrs = new Map();
|
|
238
250
|
for (const addr of filteredAddrs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dial-queue.js","sourceRoot":"","sources":["../../../src/connection-manager/dial-queue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dial-queue.js","sourceRoot":"","sources":["../../../src/connection-manager/dial-queue.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
package/dist/src/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libp2p",
|
|
3
|
-
"version": "0.46.3-
|
|
3
|
+
"version": "0.46.3-a31b420f",
|
|
4
4
|
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/libp2p#readme",
|
|
@@ -115,18 +115,18 @@
|
|
|
115
115
|
},
|
|
116
116
|
"dependencies": {
|
|
117
117
|
"@achingbrain/nat-port-mapper": "^1.0.9",
|
|
118
|
-
"@libp2p/crypto": "2.0.2-
|
|
119
|
-
"@libp2p/interface": "0.1.1-
|
|
120
|
-
"@libp2p/interface-internal": "0.1.2-
|
|
121
|
-
"@libp2p/keychain": "3.0.2-
|
|
122
|
-
"@libp2p/logger": "3.0.1-
|
|
123
|
-
"@libp2p/multistream-select": "4.0.1-
|
|
124
|
-
"@libp2p/peer-collections": "4.0.2-
|
|
125
|
-
"@libp2p/peer-id": "3.0.1-
|
|
126
|
-
"@libp2p/peer-id-factory": "3.0.2-
|
|
127
|
-
"@libp2p/peer-record": "6.0.2-
|
|
128
|
-
"@libp2p/peer-store": "9.0.2-
|
|
129
|
-
"@libp2p/utils": "4.0.1-
|
|
118
|
+
"@libp2p/crypto": "2.0.2-a31b420f",
|
|
119
|
+
"@libp2p/interface": "0.1.1-a31b420f",
|
|
120
|
+
"@libp2p/interface-internal": "0.1.2-a31b420f",
|
|
121
|
+
"@libp2p/keychain": "3.0.2-a31b420f",
|
|
122
|
+
"@libp2p/logger": "3.0.1-a31b420f",
|
|
123
|
+
"@libp2p/multistream-select": "4.0.1-a31b420f",
|
|
124
|
+
"@libp2p/peer-collections": "4.0.2-a31b420f",
|
|
125
|
+
"@libp2p/peer-id": "3.0.1-a31b420f",
|
|
126
|
+
"@libp2p/peer-id-factory": "3.0.2-a31b420f",
|
|
127
|
+
"@libp2p/peer-record": "6.0.2-a31b420f",
|
|
128
|
+
"@libp2p/peer-store": "9.0.2-a31b420f",
|
|
129
|
+
"@libp2p/utils": "4.0.1-a31b420f",
|
|
130
130
|
"@multiformats/mafmt": "^12.1.2",
|
|
131
131
|
"@multiformats/multiaddr": "^12.1.5",
|
|
132
132
|
"abortable-iterator": "^5.0.1",
|
|
@@ -163,17 +163,17 @@
|
|
|
163
163
|
"@chainsafe/libp2p-gossipsub": "^10.0.0",
|
|
164
164
|
"@chainsafe/libp2p-noise": "^13.0.0",
|
|
165
165
|
"@chainsafe/libp2p-yamux": "^5.0.0",
|
|
166
|
-
"@libp2p/bootstrap": "9.0.2-
|
|
166
|
+
"@libp2p/bootstrap": "9.0.2-a31b420f",
|
|
167
167
|
"@libp2p/daemon-client": "^7.0.0",
|
|
168
168
|
"@libp2p/daemon-server": "^6.0.0",
|
|
169
|
-
"@libp2p/floodsub": "8.0.3-
|
|
170
|
-
"@libp2p/interface-compliance-tests": "4.0.2-
|
|
169
|
+
"@libp2p/floodsub": "8.0.3-a31b420f",
|
|
170
|
+
"@libp2p/interface-compliance-tests": "4.0.2-a31b420f",
|
|
171
171
|
"@libp2p/interop": "^9.0.0",
|
|
172
|
-
"@libp2p/kad-dht": "10.0.2-
|
|
173
|
-
"@libp2p/mdns": "9.0.2-
|
|
174
|
-
"@libp2p/mplex": "9.0.2-
|
|
175
|
-
"@libp2p/tcp": "8.0.2-
|
|
176
|
-
"@libp2p/websockets": "7.0.2-
|
|
172
|
+
"@libp2p/kad-dht": "10.0.2-a31b420f",
|
|
173
|
+
"@libp2p/mdns": "9.0.2-a31b420f",
|
|
174
|
+
"@libp2p/mplex": "9.0.2-a31b420f",
|
|
175
|
+
"@libp2p/tcp": "8.0.2-a31b420f",
|
|
176
|
+
"@libp2p/websockets": "7.0.2-a31b420f",
|
|
177
177
|
"@types/varint": "^6.0.0",
|
|
178
178
|
"@types/xsalsa20": "^1.1.0",
|
|
179
179
|
"aegir": "^40.0.8",
|
|
@@ -309,8 +309,22 @@ export class DialQueue {
|
|
|
309
309
|
))
|
|
310
310
|
.flat()
|
|
311
311
|
|
|
312
|
-
|
|
313
|
-
|
|
312
|
+
const filteredAddrs = resolvedAddresses.filter(addr => {
|
|
313
|
+
// filter out any multiaddrs that we do not have transports for
|
|
314
|
+
if (this.transportManager.transportForMultiaddr(addr.multiaddr) == null) {
|
|
315
|
+
return false
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// if the resolved multiaddr has a PeerID but it's the wrong one, ignore it
|
|
319
|
+
// - this can happen with addresses like bootstrap.libp2p.io that resolve
|
|
320
|
+
// to multiple different peers
|
|
321
|
+
const addrPeerId = addr.multiaddr.getPeerId()
|
|
322
|
+
if (peerId != null && addrPeerId != null) {
|
|
323
|
+
return peerId.equals(addrPeerId)
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
return true
|
|
327
|
+
})
|
|
314
328
|
|
|
315
329
|
// deduplicate addresses
|
|
316
330
|
const dedupedAddrs = new Map<string, Address>()
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '0.46.3-
|
|
1
|
+
export const version = '0.46.3-a31b420f'
|
|
2
2
|
export const name = 'libp2p'
|