@libp2p/peer-collections 5.0.0 → 5.1.0

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/README.md CHANGED
@@ -11,6 +11,8 @@ We can't use PeerIds as collection keys because collection keys are compared usi
11
11
 
12
12
  PeerIds cache stringified versions of themselves so this should be a cheap operation.
13
13
 
14
+ Tracked versions are also available which report their current size to the libp2p Metrics collector.
15
+
14
16
  ## Example - Peer lists
15
17
 
16
18
  ```JavaScript
@@ -20,6 +22,21 @@ const list = peerList()
20
22
  list.push(peerId)
21
23
  ```
22
24
 
25
+ ## Example - Tracked peer lists
26
+
27
+ - ```Typescript
28
+ ```
29
+
30
+ import { trackedPeerList } from '@libp2p/peer-collections'
31
+ import { createLibp2p } from 'libp2p'
32
+
33
+ const libp2p = await createLibp2p()
34
+
35
+ const list = trackedPeerList({ name: 'my\_metric\_name', metrics: libp2p.metrics })
36
+ list.push(peerId)
37
+
38
+ ````
39
+
23
40
  ## Example - Peer maps
24
41
 
25
42
  ```JavaScript
@@ -27,7 +44,22 @@ import { peerMap } from '@libp2p/peer-collections'
27
44
 
28
45
  const map = peerMap<string>()
29
46
  map.set(peerId, 'value')
30
- ```
47
+ ````
48
+
49
+ ## Example - Tracked peer maps
50
+
51
+ - ```Typescript
52
+ ```
53
+
54
+ import { trackedPeerMap } from '@libp2p/peer-collections'
55
+ import { createLibp2p } from 'libp2p'
56
+
57
+ const libp2p = await createLibp2p()
58
+
59
+ const list = trackedPeerMap({ name: 'my\_metric\_name', metrics: libp2p.metrics })
60
+ map.set(peerId, 'value')
61
+
62
+ ````
31
63
 
32
64
  ## Example - Peer sets
33
65
 
@@ -36,6 +68,22 @@ import { peerSet } from '@libp2p/peer-collections'
36
68
 
37
69
  const set = peerSet()
38
70
  set.add(peerId)
71
+ ````
72
+
73
+ ## Example - Tracked peer sets
74
+
75
+ - ```Typescript
76
+ ```
77
+
78
+ import { trackedPeerSet } from '@libp2p/peer-collections'
79
+ import { createLibp2p } from 'libp2p'
80
+
81
+ const libp2p = await createLibp2p()
82
+
83
+ const list = trackedPeerSet({ name: 'my\_metric\_name', metrics: libp2p.metrics })
84
+ map.add(peerId)
85
+
86
+ ```
39
87
  ```
40
88
 
41
89
  # Install
package/dist/index.min.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PPeerCollections = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PPeerCollections=(()=>{var ee=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var We=Object.prototype.hasOwnProperty;var d=(r,e)=>{for(var t in e)ee(r,t,{get:e[t],enumerable:!0})},Ze=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ye(e))!We.call(r,n)&&n!==t&&ee(r,n,{get:()=>e[n],enumerable:!(o=Qe(e,n))||o.enumerable});return r};var et=r=>Ze(ee({},"__esModule",{value:!0}),r);var pr={};d(pr,{PeerList:()=>Z,PeerMap:()=>Y,PeerSet:()=>W});var fr=Symbol.for("@libp2p/connection");var dr=Symbol.for("@libp2p/content-routing");var xr=Symbol.for("@libp2p/peer-discovery");var Ae=Symbol.for("@libp2p/peer-id");var gr=Symbol.for("@libp2p/peer-routing");var Ie;(function(r){r.Accept="accept",r.Ignore="ignore",r.Reject="reject"})(Ie||(Ie={}));var Er=Symbol.for("@libp2p/transport");var De;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(De||(De={}));var te=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},Lr=globalThis.CustomEvent??te;var ie={};d(ie,{base58btc:()=>l,base58flickr:()=>it});function tt(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o<t.length;o++)t[o]=255;for(var n=0;n<r.length;n++){var s=r.charAt(n),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=n}var c=r.length,f=r.charAt(0),N=Math.log(c)/Math.log(256),m=Math.log(256)/Math.log(c);function U(a){if(a instanceof Uint8Array||(ArrayBuffer.isView(a)?a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength):Array.isArray(a)&&(a=Uint8Array.from(a))),!(a instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(a.length===0)return"";for(var u=0,R=0,b=0,g=a.length;b!==g&&a[b]===0;)b++,u++;for(var w=(g-b)*m+1>>>0,x=new Uint8Array(w);b!==g;){for(var S=a[b],I=0,y=w-1;(S!==0||I<R)&&y!==-1;y--,I++)S+=256*x[y]>>>0,x[y]=S%c>>>0,S=S/c>>>0;if(S!==0)throw new Error("Non-zero carry");R=I,b++}for(var v=w-R;v!==w&&x[v]===0;)v++;for(var G=f.repeat(u);v<w;++v)G+=r.charAt(x[v]);return G}function J(a){if(typeof a!="string")throw new TypeError("Expected String");if(a.length===0)return new Uint8Array;var u=0;if(a[u]!==" "){for(var R=0,b=0;a[u]===f;)R++,u++;for(var g=(a.length-u)*N+1>>>0,w=new Uint8Array(g);a[u];){var x=t[a.charCodeAt(u)];if(x===255)return;for(var S=0,I=g-1;(x!==0||S<b)&&I!==-1;I--,S++)x+=c*w[I]>>>0,w[I]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");b=S,u++}if(a[u]!==" "){for(var y=g-b;y!==g&&w[y]===0;)y++;for(var v=new Uint8Array(R+(g-y)),G=R;y!==g;)v[G++]=w[y++];return v}}}function He(a){var u=J(a);if(u)return u;throw new Error(`Non-${e} character`)}return{encode:U,decodeUnsafe:J,decode:He}}var rt=tt,ot=rt,Ce=ot;var to=new Uint8Array(0);var Re=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0},E=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var Le=r=>new TextEncoder().encode(r),Ne=r=>new TextDecoder().decode(r);var re=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},oe=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Te(this,e)}},ne=class{constructor(e){this.decoders=e}or(e){return Te(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Te=(r,e)=>new ne({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),se=class{constructor(e,t,o,n){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=n,this.encoder=new re(e,t,o),this.decoder=new oe(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new se(r,e,t,o),D=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:n}=Ce(t,e);return T({prefix:r,name:e,encode:o,decode:s=>E(n(s))})},nt=(r,e,t,o)=>{let n={};for(let m=0;m<e.length;++m)n[e[m]]=m;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),c=0,f=0,N=0;for(let m=0;m<s;++m){let U=n[r[m]];if(U===void 0)throw new SyntaxError(`Non-${o} character`);f=f<<t|U,c+=t,c>=8&&(c-=8,i[N++]=255&f>>c)}if(c>=t||255&f<<8-c)throw new SyntaxError("Unexpected end of data");return i},st=(r,e,t)=>{let o=e[e.length-1]==="=",n=(1<<t)-1,s="",i=0,c=0;for(let f=0;f<r.length;++f)for(c=c<<8|r[f],i+=8;i>t;)i-=t,s+=e[n&c>>i];if(i&&(s+=e[n&c<<t-i]),o)for(;s.length*t&7;)s+="=";return s},p=({name:r,prefix:e,bitsPerChar:t,alphabet:o})=>T({prefix:e,name:r,encode(n){return st(n,o,t)},decode(n){return nt(n,o,t,r)}});var l=D({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),it=D({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ae={};d(ae,{base10:()=>at});var at=D({prefix:"9",name:"base10",alphabet:"0123456789"});var ce={};d(ce,{base16:()=>ct,base16upper:()=>pt});var ct=p({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),pt=p({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var pe={};d(pe,{base2:()=>ht});var ht=p({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var he={};d(he,{base256emoji:()=>mt});var Pe=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),ft=Pe.reduce((r,e,t)=>(r[t]=e,r),[]),ut=Pe.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function dt(r){return r.reduce((e,t)=>(e+=ft[t],e),"")}function lt(r){let e=[];for(let t of r){let o=ut[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var mt=T({prefix:"\u{1F680}",name:"base256emoji",encode:dt,decode:lt});var fe={};d(fe,{base32:()=>P,base32hex:()=>gt,base32hexpad:()=>St,base32hexpadupper:()=>vt,base32hexupper:()=>wt,base32pad:()=>bt,base32padupper:()=>yt,base32upper:()=>xt,base32z:()=>Et});var P=p({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),xt=p({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),bt=p({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),yt=p({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),gt=p({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),wt=p({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),St=p({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),vt=p({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Et=p({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ue={};d(ue,{base36:()=>At,base36upper:()=>It});var At=D({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),It=D({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var de={};d(de,{base64:()=>Dt,base64pad:()=>Ct,base64url:()=>Rt,base64urlpad:()=>Lt});var Dt=p({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ct=p({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Rt=p({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Lt=p({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var le={};d(le,{base8:()=>Nt});var Nt=p({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var me={};d(me,{identity:()=>Ut});var Ut=T({prefix:"\0",name:"identity",encode:r=>Ne(r),decode:r=>Le(r)});var bo=new TextEncoder,yo=new TextDecoder;var be={};d(be,{identity:()=>H});var Mt=ze,Me=128,Ot=127,zt=~Ot,Bt=Math.pow(2,31);function ze(r,e,t){e=e||[],t=t||0;for(var o=t;r>=Bt;)e[t++]=r&255|Me,r/=128;for(;r&zt;)e[t++]=r&255|Me,r>>>=7;return e[t]=r|0,ze.bytes=t-o+1,e}var Vt=xe,Ft=128,Oe=127;function xe(r,o){var t=0,o=o||0,n=0,s=o,i,c=r.length;do{if(s>=c)throw xe.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=n<28?(i&Oe)<<n:(i&Oe)*Math.pow(2,n),n+=7}while(i>=Ft);return xe.bytes=s-o,t}var kt=Math.pow(2,7),_t=Math.pow(2,14),jt=Math.pow(2,21),qt=Math.pow(2,28),$t=Math.pow(2,35),Kt=Math.pow(2,42),Jt=Math.pow(2,49),Gt=Math.pow(2,56),Xt=Math.pow(2,63),Ht=function(r){return r<kt?1:r<_t?2:r<jt?3:r<qt?4:r<$t?5:r<Kt?6:r<Jt?7:r<Gt?8:r<Xt?9:10},Qt={encode:Mt,decode:Vt,encodingLength:Ht},Yt=Qt,V=Yt;var F=(r,e=0)=>[V.decode(r,e),V.decode.bytes],M=(r,e,t=0)=>(V.encode(r,e,t),e),O=r=>V.encodingLength(r);var C=(r,e)=>{let t=e.byteLength,o=O(r),n=o+O(t),s=new Uint8Array(n+t);return M(r,s,0),M(t,s,o),s.set(e,n),new z(r,t,e,s)},k=r=>{let e=E(r),[t,o]=F(e),[n,s]=F(e.subarray(o)),i=e.subarray(o+s);if(i.byteLength!==n)throw new Error("Incorrect length");return new z(t,n,i,e)},Be=(r,e)=>{if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Re(r.bytes,t.bytes)}},z=class{constructor(e,t,o,n){this.code=e,this.size=t,this.digest=o,this.bytes=n}};var Ve=0,Wt="identity",Fe=E,Zt=r=>C(Ve,Fe(r)),H={code:Ve,name:Wt,encode:Fe,digest:Zt};var we={};d(we,{sha256:()=>Q,sha512:()=>er});var ge=({name:r,code:e,encode:t})=>new ye(r,e,t),ye=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?C(this.code,t):t.then(o=>C(this.code,o))}else throw Error("Unknown type, must be binary type")}};var _e=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Q=ge({name:"sha2-256",code:18,encode:_e("SHA-256")}),er=ge({name:"sha2-512",code:19,encode:_e("SHA-512")});var je=(r,e)=>{let{bytes:t,version:o}=r;switch(o){case 0:return rr(t,Se(r),e||l.encoder);default:return or(t,Se(r),e||P.encoder)}};var qe=new WeakMap,Se=r=>{let e=qe.get(r);if(e==null){let t=new Map;return qe.set(r,t),t}return e},L=class r{constructor(e,t,o,n){this.code=t,this.version=e,this.multihash=o,this.bytes=n,this["/"]=n}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==_)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==nr)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=C(e,t);return r.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let o=t;return o&&e.code===o.code&&e.version===o.version&&Be(e.multihash,o.multihash)}toString(e){return je(this,e)}toJSON(){return{"/":je(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:o,code:n,multihash:s,bytes:i}=t;return new r(o,n,s,i||$e(o,n,s.bytes))}else if(t[sr]===!0){let{version:o,multihash:n,code:s}=t,i=k(n);return r.create(o,s,i)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(o.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==_)throw new Error(`Version 0 CID must use dag-pb (code: ${_}) block encoding`);return new r(e,t,o,o.bytes)}case 1:{let n=$e(e,t,o.bytes);return new r(e,t,o,n)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,_,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,o]=r.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),o=t.size-t.multihashSize,n=E(e.subarray(o,o+t.multihashSize));if(n.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=n.subarray(t.multihashSize-t.digestSize),i=new z(t.multihashCode,t.digestSize,s,n);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[U,J]=F(e.subarray(t));return t+=J,U},n=o(),s=_;if(n===18?(n=0,t=0):s=o(),n!==0&&n!==1)throw new RangeError(`Invalid CID version ${n}`);let i=t,c=o(),f=o(),N=t+f,m=N-i;return{version:n,codec:s,multihashCode:c,digestSize:f,multihashSize:m,size:N}}static parse(e,t){let[o,n]=tr(e,t),s=r.decode(n);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Se(s).set(o,e),s}},tr=(r,e)=>{switch(r[0]){case"Q":{let t=e||l;return[l.prefix,t.decode(`${l.prefix}${r}`)]}case l.prefix:{let t=e||l;return[l.prefix,t.decode(r)]}case P.prefix:{let t=e||P;return[P.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},rr=(r,e,t)=>{let{prefix:o}=t;if(o!==l.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let n=e.get(o);if(n==null){let s=t.encode(r).slice(1);return e.set(o,s),s}else return n},or=(r,e,t)=>{let{prefix:o}=t,n=e.get(o);if(n==null){let s=t.encode(r);return e.set(o,s),s}else return n},_=112,nr=18,$e=(r,e,t)=>{let o=O(r),n=o+O(e),s=new Uint8Array(n+t.byteLength);return M(r,s,0),M(e,s,o),s.set(t,n),s},sr=Symbol.for("@ipld/js-cid/CID");var ve={...me,...pe,...le,...ae,...ce,...fe,...ue,...ie,...de,...he},Mo={...we,...be};function Ee(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var ir=Symbol.for("nodejs.util.inspect.custom"),Ke=Object.values(ve).map(r=>r.decoder).reduce((r,e)=>r.or(e),ve.identity.decoder),Je=114,Ge=36,Xe=37,j=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ae]=!0;toString(){return this.string==null&&(this.string=l.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return L.createV1(Je,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e instanceof Uint8Array)return Ee(this.multihash.bytes,e);if(typeof e=="string")return h(e).equals(this);if(e?.multihash?.bytes!=null)return Ee(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[ir](){return`PeerId(${this.toString()})`}},q=class extends j{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},$=class extends j{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},K=class extends j{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function h(r,e){if(e=e??Ke,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=k(l.decode(`z${r}`));return r.startsWith("12D")?new $({multihash:t}):r.startsWith("16U")?new K({multihash:t}):new q({multihash:t})}return ar(Ke.decode(r))}function ar(r){try{let e=k(r);if(e.code===H.code){if(e.digest.length===Ge)return new $({multihash:e});if(e.digest.length===Xe)return new K({multihash:e})}if(e.code===Q.code)return new q({multihash:e})}catch{return cr(L.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function cr(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==Je)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Q.code)return new q({multihash:r.multihash});if(e.code===H.code){if(e.digest.length===Ge)return new $({multihash:r.multihash});if(e.digest.length===Xe)return new K({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}function A(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let o=r.next(),n=o.value;return o.done===!0||n==null?{done:!0,value:void 0}:{done:!1,value:e(n)}}};return t}var Y=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,o]of e.entries())this.map.set(t.toString(),o)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){this.map.delete(e.toString())}entries(){return A(this.map.entries(),e=>[h(e[0]),e[1]])}forEach(e){this.map.forEach((t,o)=>{e(t,h(o),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return A(this.map.keys(),e=>h(e))}values(){return this.map.values()}get size(){return this.map.size}};var W=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return A(this.set.entries(),e=>{let t=h(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let o=h(t);e(o,o,this)})}has(e){return this.set.has(e.toString())}values(){return A(this.set.values(),e=>h(e))}intersection(e){let t=new r;for(let o of e)this.has(o)&&t.add(o);return t}difference(e){let t=new r;for(let o of this)e.has(o)||t.add(o);return t}union(e){let t=new r;for(let o of e)t.add(o);for(let o of this)t.add(o);return t}};var Z=class r{list;constructor(e){if(this.list=[],e!=null)for(let t of e)this.list.push(t.toString())}[Symbol.iterator](){return A(this.list.entries(),e=>h(e[1]))}concat(e){let t=new r(this);for(let o of e)t.push(o);return t}entries(){return A(this.list.entries(),e=>[e[0],h(e[1])])}every(e){return this.list.every((t,o)=>e(h(t),o,this))}filter(e){let t=new r;return this.list.forEach((o,n)=>{let s=h(o);e(s,n,this)&&t.push(s)}),t}find(e){let t=this.list.find((o,n)=>e(h(o),n,this));if(t!=null)return h(t)}findIndex(e){return this.list.findIndex((t,o)=>e(h(t),o,this))}forEach(e){this.list.forEach((t,o)=>{e(h(t),o,this)})}includes(e){return this.list.includes(e.toString())}indexOf(e){return this.list.indexOf(e.toString())}pop(){let e=this.list.pop();if(e!=null)return h(e)}push(...e){for(let t of e)this.list.push(t.toString())}shift(){let e=this.list.shift();if(e!=null)return h(e)}unshift(...e){let t=this.list.length;for(let o=e.length-1;o>-1;o--)t=this.list.unshift(e[o].toString());return t}get length(){return this.list.length}};return et(pr);})();
2
+ "use strict";var Libp2PPeerCollections=(()=>{var ee=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var at=Object.prototype.hasOwnProperty;var d=(r,e)=>{for(var t in e)ee(r,t,{get:e[t],enumerable:!0})},ct=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of it(e))!at.call(r,n)&&n!==t&&ee(r,n,{get:()=>e[n],enumerable:!(o=st(e,n))||o.enumerable});return r};var pt=r=>ct(ee({},"__esModule",{value:!0}),r);var gr={};d(gr,{PeerList:()=>L,PeerMap:()=>M,PeerSet:()=>R,peerList:()=>et,peerMap:()=>We,peerSet:()=>Ze,trackedPeerList:()=>ot,trackedPeerMap:()=>tt,trackedPeerSet:()=>rt});var wr=Symbol.for("@libp2p/connection");var vr=Symbol.for("@libp2p/content-routing");var Ir=Symbol.for("@libp2p/peer-discovery");var De=Symbol.for("@libp2p/peer-id");var Mr=Symbol.for("@libp2p/peer-routing");var Me;(function(r){r.Accept="accept",r.Ignore="ignore",r.Reject="reject"})(Me||(Me={}));var Pr=Symbol.for("@libp2p/transport");var Re;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Re||(Re={}));var te=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},kr=globalThis.CustomEvent??te;var ie={};d(ie,{base58btc:()=>l,base58flickr:()=>mt});function ht(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o<t.length;o++)t[o]=255;for(var n=0;n<r.length;n++){var s=r.charAt(n),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=n}var c=r.length,u=r.charAt(0),U=Math.log(c)/Math.log(256),m=Math.log(256)/Math.log(c);function O(a){if(a instanceof Uint8Array||(ArrayBuffer.isView(a)?a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength):Array.isArray(a)&&(a=Uint8Array.from(a))),!(a instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(a.length===0)return"";for(var f=0,N=0,b=0,y=a.length;b!==y&&a[b]===0;)b++,f++;for(var w=(y-b)*m+1>>>0,x=new Uint8Array(w);b!==y;){for(var S=a[b],I=0,g=w-1;(S!==0||I<N)&&g!==-1;g--,I++)S+=256*x[g]>>>0,x[g]=S%c>>>0,S=S/c>>>0;if(S!==0)throw new Error("Non-zero carry");N=I,b++}for(var v=w-N;v!==w&&x[v]===0;)v++;for(var Q=u.repeat(f);v<w;++v)Q+=r.charAt(x[v]);return Q}function H(a){if(typeof a!="string")throw new TypeError("Expected String");if(a.length===0)return new Uint8Array;var f=0;if(a[f]!==" "){for(var N=0,b=0;a[f]===u;)N++,f++;for(var y=(a.length-f)*U+1>>>0,w=new Uint8Array(y);a[f];){var x=t[a.charCodeAt(f)];if(x===255)return;for(var S=0,I=y-1;(x!==0||S<b)&&I!==-1;I--,S++)x+=c*w[I]>>>0,w[I]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");b=S,f++}if(a[f]!==" "){for(var g=y-b;g!==y&&w[g]===0;)g++;for(var v=new Uint8Array(N+(y-g)),Q=N;g!==y;)v[Q++]=w[g++];return v}}}function nt(a){var f=H(a);if(f)return f;throw new Error(`Non-${e} character`)}return{encode:O,decodeUnsafe:H,decode:nt}}var ut=ht,ft=ut,Le=ft;var ho=new Uint8Array(0);var Ne=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0},E=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var Pe=r=>new TextEncoder().encode(r),Ue=r=>new TextDecoder().decode(r);var re=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},oe=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Te(this,e)}},ne=class{constructor(e){this.decoders=e}or(e){return Te(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Te=(r,e)=>new ne({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),se=class{constructor(e,t,o,n){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=n,this.encoder=new re(e,t,o),this.decoder=new oe(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new se(r,e,t,o),C=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:n}=Le(t,e);return T({prefix:r,name:e,encode:o,decode:s=>E(n(s))})},dt=(r,e,t,o)=>{let n={};for(let m=0;m<e.length;++m)n[e[m]]=m;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),c=0,u=0,U=0;for(let m=0;m<s;++m){let O=n[r[m]];if(O===void 0)throw new SyntaxError(`Non-${o} character`);u=u<<t|O,c+=t,c>=8&&(c-=8,i[U++]=255&u>>c)}if(c>=t||255&u<<8-c)throw new SyntaxError("Unexpected end of data");return i},lt=(r,e,t)=>{let o=e[e.length-1]==="=",n=(1<<t)-1,s="",i=0,c=0;for(let u=0;u<r.length;++u)for(c=c<<8|r[u],i+=8;i>t;)i-=t,s+=e[n&c>>i];if(i&&(s+=e[n&c<<t-i]),o)for(;s.length*t&7;)s+="=";return s},p=({name:r,prefix:e,bitsPerChar:t,alphabet:o})=>T({prefix:e,name:r,encode(n){return lt(n,o,t)},decode(n){return dt(n,o,t,r)}});var l=C({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),mt=C({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ae={};d(ae,{base10:()=>xt});var xt=C({prefix:"9",name:"base10",alphabet:"0123456789"});var ce={};d(ce,{base16:()=>bt,base16upper:()=>gt});var bt=p({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),gt=p({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var pe={};d(pe,{base2:()=>yt});var yt=p({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var he={};d(he,{base256emoji:()=>At});var ze=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),wt=ze.reduce((r,e,t)=>(r[t]=e,r),[]),St=ze.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function vt(r){return r.reduce((e,t)=>(e+=wt[t],e),"")}function Et(r){let e=[];for(let t of r){let o=St[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var At=T({prefix:"\u{1F680}",name:"base256emoji",encode:vt,decode:Et});var ue={};d(ue,{base32:()=>z,base32hex:()=>Mt,base32hexpad:()=>Lt,base32hexpadupper:()=>Nt,base32hexupper:()=>Rt,base32pad:()=>Ct,base32padupper:()=>Dt,base32upper:()=>It,base32z:()=>Pt});var z=p({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),It=p({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ct=p({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Dt=p({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Mt=p({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Rt=p({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Lt=p({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Nt=p({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Pt=p({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var fe={};d(fe,{base36:()=>Ut,base36upper:()=>Ot});var Ut=C({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ot=C({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var de={};d(de,{base64:()=>Tt,base64pad:()=>zt,base64url:()=>Bt,base64urlpad:()=>kt});var Tt=p({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),zt=p({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Bt=p({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),kt=p({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var le={};d(le,{base8:()=>Vt});var Vt=p({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var me={};d(me,{identity:()=>Ft});var Ft=T({prefix:"\0",name:"identity",encode:r=>Ue(r),decode:r=>Pe(r)});var Co=new TextEncoder,Do=new TextDecoder;var be={};d(be,{identity:()=>W});var qt=Ve,Be=128,$t=127,Kt=~$t,Jt=Math.pow(2,31);function Ve(r,e,t){e=e||[],t=t||0;for(var o=t;r>=Jt;)e[t++]=r&255|Be,r/=128;for(;r&Kt;)e[t++]=r&255|Be,r>>>=7;return e[t]=r|0,Ve.bytes=t-o+1,e}var Gt=xe,Xt=128,ke=127;function xe(r,o){var t=0,o=o||0,n=0,s=o,i,c=r.length;do{if(s>=c)throw xe.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=n<28?(i&ke)<<n:(i&ke)*Math.pow(2,n),n+=7}while(i>=Xt);return xe.bytes=s-o,t}var Ht=Math.pow(2,7),Qt=Math.pow(2,14),Yt=Math.pow(2,21),Wt=Math.pow(2,28),Zt=Math.pow(2,35),er=Math.pow(2,42),tr=Math.pow(2,49),rr=Math.pow(2,56),or=Math.pow(2,63),nr=function(r){return r<Ht?1:r<Qt?2:r<Yt?3:r<Wt?4:r<Zt?5:r<er?6:r<tr?7:r<rr?8:r<or?9:10},sr={encode:qt,decode:Gt,encodingLength:nr},ir=sr,_=ir;var j=(r,e=0)=>[_.decode(r,e),_.decode.bytes],B=(r,e,t=0)=>(_.encode(r,e,t),e),k=r=>_.encodingLength(r);var D=(r,e)=>{let t=e.byteLength,o=k(r),n=o+k(t),s=new Uint8Array(n+t);return B(r,s,0),B(t,s,o),s.set(e,n),new V(r,t,e,s)},q=r=>{let e=E(r),[t,o]=j(e),[n,s]=j(e.subarray(o)),i=e.subarray(o+s);if(i.byteLength!==n)throw new Error("Incorrect length");return new V(t,n,i,e)},Fe=(r,e)=>{if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Ne(r.bytes,t.bytes)}},V=class{constructor(e,t,o,n){this.code=e,this.size=t,this.digest=o,this.bytes=n}};var _e=0,ar="identity",je=E,cr=r=>D(_e,je(r)),W={code:_e,name:ar,encode:je,digest:cr};var we={};d(we,{sha256:()=>Z,sha512:()=>pr});var ye=({name:r,code:e,encode:t})=>new ge(r,e,t),ge=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?D(this.code,t):t.then(o=>D(this.code,o))}else throw Error("Unknown type, must be binary type")}};var $e=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Z=ye({name:"sha2-256",code:18,encode:$e("SHA-256")}),pr=ye({name:"sha2-512",code:19,encode:$e("SHA-512")});var Ke=(r,e)=>{let{bytes:t,version:o}=r;switch(o){case 0:return ur(t,Se(r),e||l.encoder);default:return fr(t,Se(r),e||z.encoder)}};var Je=new WeakMap,Se=r=>{let e=Je.get(r);if(e==null){let t=new Map;return Je.set(r,t),t}return e},P=class r{constructor(e,t,o,n){this.code=t,this.version=e,this.multihash=o,this.bytes=n,this["/"]=n}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==$)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==dr)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=D(e,t);return r.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let o=t;return o&&e.code===o.code&&e.version===o.version&&Fe(e.multihash,o.multihash)}toString(e){return Ke(this,e)}toJSON(){return{"/":Ke(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:o,code:n,multihash:s,bytes:i}=t;return new r(o,n,s,i||Ge(o,n,s.bytes))}else if(t[lr]===!0){let{version:o,multihash:n,code:s}=t,i=q(n);return r.create(o,s,i)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(o.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==$)throw new Error(`Version 0 CID must use dag-pb (code: ${$}) block encoding`);return new r(e,t,o,o.bytes)}case 1:{let n=Ge(e,t,o.bytes);return new r(e,t,o,n)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,$,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,o]=r.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),o=t.size-t.multihashSize,n=E(e.subarray(o,o+t.multihashSize));if(n.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=n.subarray(t.multihashSize-t.digestSize),i=new V(t.multihashCode,t.digestSize,s,n);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[O,H]=j(e.subarray(t));return t+=H,O},n=o(),s=$;if(n===18?(n=0,t=0):s=o(),n!==0&&n!==1)throw new RangeError(`Invalid CID version ${n}`);let i=t,c=o(),u=o(),U=t+u,m=U-i;return{version:n,codec:s,multihashCode:c,digestSize:u,multihashSize:m,size:U}}static parse(e,t){let[o,n]=hr(e,t),s=r.decode(n);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Se(s).set(o,e),s}},hr=(r,e)=>{switch(r[0]){case"Q":{let t=e||l;return[l.prefix,t.decode(`${l.prefix}${r}`)]}case l.prefix:{let t=e||l;return[l.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},ur=(r,e,t)=>{let{prefix:o}=t;if(o!==l.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let n=e.get(o);if(n==null){let s=t.encode(r).slice(1);return e.set(o,s),s}else return n},fr=(r,e,t)=>{let{prefix:o}=t,n=e.get(o);if(n==null){let s=t.encode(r);return e.set(o,s),s}else return n},$=112,dr=18,Ge=(r,e,t)=>{let o=k(r),n=o+k(e),s=new Uint8Array(n+t.byteLength);return B(r,s,0),B(e,s,o),s.set(t,n),s},lr=Symbol.for("@ipld/js-cid/CID");var ve={...me,...pe,...le,...ae,...ce,...ue,...fe,...ie,...de,...he},qo={...we,...be};function Ee(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var mr=Symbol.for("nodejs.util.inspect.custom"),Xe=Object.values(ve).map(r=>r.decoder).reduce((r,e)=>r.or(e),ve.identity.decoder),He=114,Qe=36,Ye=37,K=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[De]=!0;toString(){return this.string==null&&(this.string=l.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return P.createV1(He,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e instanceof Uint8Array)return Ee(this.multihash.bytes,e);if(typeof e=="string")return h(e).equals(this);if(e?.multihash?.bytes!=null)return Ee(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[mr](){return`PeerId(${this.toString()})`}},J=class extends K{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},G=class extends K{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},X=class extends K{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function h(r,e){if(e=e??Xe,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=q(l.decode(`z${r}`));return r.startsWith("12D")?new G({multihash:t}):r.startsWith("16U")?new X({multihash:t}):new J({multihash:t})}return xr(Xe.decode(r))}function xr(r){try{let e=q(r);if(e.code===W.code){if(e.digest.length===Qe)return new G({multihash:e});if(e.digest.length===Ye)return new X({multihash:e})}if(e.code===Z.code)return new J({multihash:e})}catch{return br(P.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function br(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==He)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Z.code)return new J({multihash:r.multihash});if(e.code===W.code){if(e.digest.length===Qe)return new G({multihash:r.multihash});if(e.digest.length===Ye)return new X({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}function A(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let o=r.next(),n=o.value;return o.done===!0||n==null?{done:!0,value:void 0}:{done:!1,value:e(n)}}};return t}var M=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,o]of e.entries())this.map.set(t.toString(),o)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return A(this.map.entries(),e=>[h(e[0]),e[1]])}forEach(e){this.map.forEach((t,o)=>{e(t,h(o),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return A(this.map.keys(),e=>h(e))}values(){return this.map.values()}get size(){return this.map.size}};function We(){return new M}var R=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return A(this.set.entries(),e=>{let t=h(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let o=h(t);e(o,o,this)})}has(e){return this.set.has(e.toString())}values(){return A(this.set.values(),e=>h(e))}intersection(e){let t=new r;for(let o of e)this.has(o)&&t.add(o);return t}difference(e){let t=new r;for(let o of this)e.has(o)||t.add(o);return t}union(e){let t=new r;for(let o of e)t.add(o);for(let o of this)t.add(o);return t}};function Ze(){return new R}var L=class r{list;constructor(e){if(this.list=[],e!=null)for(let t of e)this.list.push(t.toString())}[Symbol.iterator](){return A(this.list.entries(),e=>h(e[1]))}concat(e){let t=new r(this);for(let o of e)t.push(o);return t}entries(){return A(this.list.entries(),e=>[e[0],h(e[1])])}every(e){return this.list.every((t,o)=>e(h(t),o,this))}filter(e){let t=new r;return this.list.forEach((o,n)=>{let s=h(o);e(s,n,this)&&t.push(s)}),t}find(e){let t=this.list.find((o,n)=>e(h(o),n,this));if(t!=null)return h(t)}findIndex(e){return this.list.findIndex((t,o)=>e(h(t),o,this))}forEach(e){this.list.forEach((t,o)=>{e(h(t),o,this)})}includes(e){return this.list.includes(e.toString())}indexOf(e){return this.list.indexOf(e.toString())}pop(){let e=this.list.pop();if(e!=null)return h(e)}push(...e){for(let t of e)this.list.push(t.toString())}shift(){let e=this.list.shift();if(e!=null)return h(e)}unshift(...e){let t=this.list.length;for(let o=e.length-1;o>-1;o--)t=this.list.unshift(e[o].toString());return t}clear(){this.list=[]}get length(){return this.list.length}};function et(){return new L}var Ae=class extends M{metric;constructor(e){super();let{name:t,metrics:o}=e;this.metric=o.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function tt(r){let{name:e,metrics:t}=r,o;return t!=null?o=new Ae({name:e,metrics:t}):o=new M,o}var Ie=class extends R{metric;constructor(e){super();let{name:t,metrics:o}=e;this.metric=o.registerMetric(t),this.updateComponentMetric()}add(e){super.add(e),this.updateComponentMetric()}delete(e){super.delete(e),this.updateComponentMetric()}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function rt(r){let{name:e,metrics:t}=r,o;return t!=null?o=new Ie({name:e,metrics:t}):o=new R,o}var Ce=class extends L{metric;constructor(e){super();let{name:t,metrics:o}=e;this.metric=o.registerMetric(t),this.updateComponentMetric()}pop(){let e=super.pop();return this.updateComponentMetric(),e}push(...e){super.push(...e),this.updateComponentMetric()}shift(){let e=super.shift();return this.updateComponentMetric(),e}unshift(...e){let t=super.unshift(...e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.length)}};function ot(r){let{name:e,metrics:t}=r,o;return t!=null?o=new Ce({name:e,metrics:t}):o=new L,o}return pt(gr);})();
3
3
  return Libp2PPeerCollections}));
@@ -5,6 +5,8 @@
5
5
  *
6
6
  * PeerIds cache stringified versions of themselves so this should be a cheap operation.
7
7
  *
8
+ * Tracked versions are also available which report their current size to the libp2p Metrics collector.
9
+ *
8
10
  * @example Peer lists
9
11
  *
10
12
  * ```JavaScript
@@ -14,6 +16,18 @@
14
16
  * list.push(peerId)
15
17
  * ```
16
18
  *
19
+ * @example Tracked peer lists
20
+ *
21
+ * * ```Typescript
22
+ * import { trackedPeerList } from '@libp2p/peer-collections'
23
+ * import { createLibp2p } from 'libp2p'
24
+ *
25
+ * const libp2p = await createLibp2p()
26
+ *
27
+ * const list = trackedPeerList({ name: 'my_metric_name', metrics: libp2p.metrics })
28
+ * list.push(peerId)
29
+ * ```
30
+ *
17
31
  * @example Peer maps
18
32
  *
19
33
  * ```JavaScript
@@ -23,6 +37,18 @@
23
37
  * map.set(peerId, 'value')
24
38
  * ```
25
39
  *
40
+ * @example Tracked peer maps
41
+ *
42
+ * * ```Typescript
43
+ * import { trackedPeerMap } from '@libp2p/peer-collections'
44
+ * import { createLibp2p } from 'libp2p'
45
+ *
46
+ * const libp2p = await createLibp2p()
47
+ *
48
+ * const list = trackedPeerMap({ name: 'my_metric_name', metrics: libp2p.metrics })
49
+ * map.set(peerId, 'value')
50
+ * ```
51
+ *
26
52
  * @example Peer sets
27
53
  *
28
54
  * ```JavaScript
@@ -31,8 +57,23 @@
31
57
  * const set = peerSet()
32
58
  * set.add(peerId)
33
59
  * ```
60
+ *
61
+ * @example Tracked peer sets
62
+ *
63
+ * * ```Typescript
64
+ * import { trackedPeerSet } from '@libp2p/peer-collections'
65
+ * import { createLibp2p } from 'libp2p'
66
+ *
67
+ * const libp2p = await createLibp2p()
68
+ *
69
+ * const list = trackedPeerSet({ name: 'my_metric_name', metrics: libp2p.metrics })
70
+ * map.add(peerId)
71
+ * ```
34
72
  */
35
- export { PeerMap } from './map.js';
36
- export { PeerSet } from './set.js';
37
- export { PeerList } from './list.js';
73
+ export { PeerMap, peerMap } from './map.js';
74
+ export { PeerSet, peerSet } from './set.js';
75
+ export { PeerList, peerList } from './list.js';
76
+ export { trackedPeerMap } from './tracked-map.js';
77
+ export { trackedPeerSet } from './tracked-set.js';
78
+ export { trackedPeerList } from './tracked-list.js';
38
79
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/src/index.js CHANGED
@@ -5,6 +5,8 @@
5
5
  *
6
6
  * PeerIds cache stringified versions of themselves so this should be a cheap operation.
7
7
  *
8
+ * Tracked versions are also available which report their current size to the libp2p Metrics collector.
9
+ *
8
10
  * @example Peer lists
9
11
  *
10
12
  * ```JavaScript
@@ -14,6 +16,18 @@
14
16
  * list.push(peerId)
15
17
  * ```
16
18
  *
19
+ * @example Tracked peer lists
20
+ *
21
+ * * ```Typescript
22
+ * import { trackedPeerList } from '@libp2p/peer-collections'
23
+ * import { createLibp2p } from 'libp2p'
24
+ *
25
+ * const libp2p = await createLibp2p()
26
+ *
27
+ * const list = trackedPeerList({ name: 'my_metric_name', metrics: libp2p.metrics })
28
+ * list.push(peerId)
29
+ * ```
30
+ *
17
31
  * @example Peer maps
18
32
  *
19
33
  * ```JavaScript
@@ -23,6 +37,18 @@
23
37
  * map.set(peerId, 'value')
24
38
  * ```
25
39
  *
40
+ * @example Tracked peer maps
41
+ *
42
+ * * ```Typescript
43
+ * import { trackedPeerMap } from '@libp2p/peer-collections'
44
+ * import { createLibp2p } from 'libp2p'
45
+ *
46
+ * const libp2p = await createLibp2p()
47
+ *
48
+ * const list = trackedPeerMap({ name: 'my_metric_name', metrics: libp2p.metrics })
49
+ * map.set(peerId, 'value')
50
+ * ```
51
+ *
26
52
  * @example Peer sets
27
53
  *
28
54
  * ```JavaScript
@@ -31,8 +57,23 @@
31
57
  * const set = peerSet()
32
58
  * set.add(peerId)
33
59
  * ```
60
+ *
61
+ * @example Tracked peer sets
62
+ *
63
+ * * ```Typescript
64
+ * import { trackedPeerSet } from '@libp2p/peer-collections'
65
+ * import { createLibp2p } from 'libp2p'
66
+ *
67
+ * const libp2p = await createLibp2p()
68
+ *
69
+ * const list = trackedPeerSet({ name: 'my_metric_name', metrics: libp2p.metrics })
70
+ * map.add(peerId)
71
+ * ```
34
72
  */
35
- export { PeerMap } from './map.js';
36
- export { PeerSet } from './set.js';
37
- export { PeerList } from './list.js';
73
+ export { PeerMap, peerMap } from './map.js';
74
+ export { PeerSet, peerSet } from './set.js';
75
+ export { PeerList, peerList } from './list.js';
76
+ export { trackedPeerMap } from './tracked-map.js';
77
+ export { trackedPeerSet } from './tracked-set.js';
78
+ export { trackedPeerList } from './tracked-list.js';
38
79
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
@@ -17,7 +17,7 @@ import type { PeerId } from '@libp2p/interface';
17
17
  * ```
18
18
  */
19
19
  export declare class PeerList {
20
- private readonly list;
20
+ private list;
21
21
  constructor(list?: PeerList | Iterable<PeerId>);
22
22
  [Symbol.iterator](): IterableIterator<PeerId>;
23
23
  concat(list: PeerList): PeerList;
@@ -33,6 +33,8 @@ export declare class PeerList {
33
33
  push(...peerIds: PeerId[]): void;
34
34
  shift(): PeerId | undefined;
35
35
  unshift(...peerIds: PeerId[]): number;
36
+ clear(): void;
36
37
  get length(): number;
37
38
  }
39
+ export declare function peerList(): PeerList;
38
40
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAElB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IAU/C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,gBAAgB,CAAC,MAAM,CAAC;IAS9C,MAAM,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAUjC,OAAO,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAS9C,KAAK,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO;IAMrF,MAAM,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,QAAQ;IAcvF,IAAI,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS;IAY/F,SAAS,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,MAAM;IAMxF,OAAO,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAMjF,QAAQ,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,OAAO,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC,GAAG,IAAK,MAAM,GAAG,SAAS;IAU1B,IAAI,CAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAMjC,KAAK,IAAK,MAAM,GAAG,SAAS;IAU5B,OAAO,CAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAUtC,IAAI,MAAM,IAAK,MAAM,CAEpB;CACF"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAU;gBAET,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IAU/C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,gBAAgB,CAAC,MAAM,CAAC;IAS9C,MAAM,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAUjC,OAAO,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAS9C,KAAK,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO;IAMrF,MAAM,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,QAAQ;IAcvF,IAAI,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS;IAY/F,SAAS,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,GAAG,MAAM;IAMxF,OAAO,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAMjF,QAAQ,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,OAAO,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC,GAAG,IAAK,MAAM,GAAG,SAAS;IAU1B,IAAI,CAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAMjC,KAAK,IAAK,MAAM,GAAG,SAAS;IAU5B,OAAO,CAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAUtC,KAAK,IAAK,IAAI;IAId,IAAI,MAAM,IAAK,MAAM,CAEpB;CACF;AAED,wBAAgB,QAAQ,IAAK,QAAQ,CAEpC"}
package/dist/src/list.js CHANGED
@@ -110,8 +110,14 @@ export class PeerList {
110
110
  }
111
111
  return len;
112
112
  }
113
+ clear() {
114
+ this.list = [];
115
+ }
113
116
  get length() {
114
117
  return this.list.length;
115
118
  }
116
119
  }
120
+ export function peerList() {
121
+ return new PeerList();
122
+ }
117
123
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"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"}
package/dist/src/map.d.ts CHANGED
@@ -21,7 +21,7 @@ export declare class PeerMap<T> {
21
21
  constructor(map?: PeerMap<T>);
22
22
  [Symbol.iterator](): IterableIterator<[PeerId, T]>;
23
23
  clear(): void;
24
- delete(peer: PeerId): void;
24
+ delete(peer: PeerId): boolean;
25
25
  entries(): IterableIterator<[PeerId, T]>;
26
26
  forEach(fn: (value: T, key: PeerId, map: PeerMap<T>) => void): void;
27
27
  get(peer: PeerId): T | undefined;
@@ -31,4 +31,5 @@ export declare class PeerMap<T> {
31
31
  values(): IterableIterator<T>;
32
32
  get size(): number;
33
33
  }
34
+ export declare function peerMap<T>(): PeerMap<T>;
34
35
  //# sourceMappingURL=map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO,CAAE,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;gBAEvB,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAU7B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAInD,KAAK,IAAK,IAAI;IAId,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IASzC,OAAO,CAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAMpE,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIjC,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,GAAG,CAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIlC,IAAI,IAAK,gBAAgB,CAAC,MAAM,CAAC;IASjC,MAAM,IAAK,gBAAgB,CAAC,CAAC,CAAC;IAI9B,IAAI,IAAI,IAAK,MAAM,CAElB;CACF"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO,CAAE,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;gBAEvB,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAU7B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAInD,KAAK,IAAK,IAAI;IAId,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,OAAO,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IASzC,OAAO,CAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAMpE,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIjC,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,GAAG,CAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIlC,IAAI,IAAK,gBAAgB,CAAC,MAAM,CAAC;IASjC,MAAM,IAAK,gBAAgB,CAAC,CAAC,CAAC;IAI9B,IAAI,IAAI,IAAK,MAAM,CAElB;CACF;AAED,wBAAgB,OAAO,CAAE,CAAC,KAAM,OAAO,CAAC,CAAC,CAAC,CAEzC"}
package/dist/src/map.js CHANGED
@@ -34,7 +34,7 @@ export class PeerMap {
34
34
  this.map.clear();
35
35
  }
36
36
  delete(peer) {
37
- this.map.delete(peer.toString());
37
+ return this.map.delete(peer.toString());
38
38
  }
39
39
  entries() {
40
40
  return mapIterable(this.map.entries(), (val) => {
@@ -67,4 +67,7 @@ export class PeerMap {
67
67
  return this.map.size;
68
68
  }
69
69
  }
70
+ export function peerMap() {
71
+ return new PeerMap();
72
+ }
70
73
  //# sourceMappingURL=map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAGvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,OAAO;IACD,GAAG,CAAgB;IAEpC,YAAa,GAAgB;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;QAEpB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAED,MAAM,CAAE,IAAY;QAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,OAAO;QACL,OAAO,WAAW,CAChB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAClB,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC,CACF,CAAA;IACH,CAAC;IAED,OAAO,CAAE,EAAoD;QAC3D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAE,IAAY;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAE,IAAY;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAE,IAAY,EAAE,KAAQ;QACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,IAAI;QACF,OAAO,WAAW,CAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EACf,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC,CACF,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAGvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,OAAO;IACD,GAAG,CAAgB;IAEpC,YAAa,GAAgB;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;QAEpB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAED,MAAM,CAAE,IAAY;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACL,OAAO,WAAW,CAChB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAClB,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC,CACF,CAAA;IACH,CAAC;IAED,OAAO,CAAE,EAAoD;QAC3D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAE,IAAY;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAE,IAAY;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAE,IAAY,EAAE,KAAQ;QACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,IAAI;QACF,OAAO,WAAW,CAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EACf,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC,CACF,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;IACtB,CAAC;CACF;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,OAAO,EAAK,CAAA;AACzB,CAAC"}
package/dist/src/set.d.ts CHANGED
@@ -32,4 +32,5 @@ export declare class PeerSet {
32
32
  difference(other: PeerSet): PeerSet;
33
33
  union(other: PeerSet): PeerSet;
34
34
  }
35
+ export declare function peerSet(): PeerSet;
35
36
  //# sourceMappingURL=set.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAEpB,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IAU7C,IAAI,IAAI,IAAK,MAAM,CAElB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,gBAAgB,CAAC,MAAM,CAAC;IAI9C,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,KAAK,IAAK,IAAI;IAId,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAW9C,OAAO,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAQhF,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,MAAM,IAAK,gBAAgB,CAAC,MAAM,CAAC;IASnC,YAAY,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAYtC,UAAU,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAYpC,KAAK,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO;CAahC"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAEpB,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IAU7C,IAAI,IAAI,IAAK,MAAM,CAElB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,gBAAgB,CAAC,MAAM,CAAC;IAI9C,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,KAAK,IAAK,IAAI;IAId,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,IAAK,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAW9C,OAAO,CAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAQhF,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,MAAM,IAAK,gBAAgB,CAAC,MAAM,CAAC;IASnC,YAAY,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAYtC,UAAU,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAYpC,KAAK,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO;CAahC;AAED,wBAAgB,OAAO,IAAK,OAAO,CAElC"}
package/dist/src/set.js CHANGED
@@ -91,4 +91,7 @@ export class PeerSet {
91
91
  return output;
92
92
  }
93
93
  }
94
+ export function peerSet() {
95
+ return new PeerSet();
96
+ }
94
97
  //# sourceMappingURL=set.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { PeerList } from './list.js';
2
+ import type { Metrics } from '@libp2p/interface';
3
+ export interface TrackedPeerListInit {
4
+ name: string;
5
+ metrics: Metrics;
6
+ }
7
+ export interface CreateTrackedPeerListInit {
8
+ /**
9
+ * The metric name to use
10
+ */
11
+ name: string;
12
+ /**
13
+ * A metrics implementation
14
+ */
15
+ metrics?: Metrics;
16
+ }
17
+ /**
18
+ * Creates a PeerList that reports it's size to the libp2p Metrics service
19
+ *
20
+ * @example
21
+ *
22
+ * * ```Typescript
23
+ * import { trackedPeerList } from '@libp2p/peer-collections'
24
+ * import { createLibp2p } from 'libp2p'
25
+ *
26
+ * const libp2p = await createLibp2p()
27
+ *
28
+ * const list = trackedPeerList({ name: 'my_metric_name', metrics: libp2p.metrics })
29
+ * list.push(peerId)
30
+ * ```
31
+ */
32
+ export declare function trackedPeerList(config: CreateTrackedPeerListInit): PeerList;
33
+ //# sourceMappingURL=tracked-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-list.d.ts","sourceRoot":"","sources":["../../src/tracked-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAU,OAAO,EAAU,MAAM,mBAAmB,CAAA;AAEhE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AA+CD,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAE,MAAM,EAAE,yBAAyB,GAAG,QAAQ,CAW5E"}
@@ -0,0 +1,63 @@
1
+ import { PeerList } from './list.js';
2
+ class TrackedPeerList extends PeerList {
3
+ metric;
4
+ constructor(init) {
5
+ super();
6
+ const { name, metrics } = init;
7
+ this.metric = metrics.registerMetric(name);
8
+ this.updateComponentMetric();
9
+ }
10
+ pop() {
11
+ const peerId = super.pop();
12
+ this.updateComponentMetric();
13
+ return peerId;
14
+ }
15
+ push(...peerIds) {
16
+ super.push(...peerIds);
17
+ this.updateComponentMetric();
18
+ }
19
+ shift() {
20
+ const peerId = super.shift();
21
+ this.updateComponentMetric();
22
+ return peerId;
23
+ }
24
+ unshift(...peerIds) {
25
+ const result = super.unshift(...peerIds);
26
+ this.updateComponentMetric();
27
+ return result;
28
+ }
29
+ clear() {
30
+ super.clear();
31
+ this.updateComponentMetric();
32
+ }
33
+ updateComponentMetric() {
34
+ this.metric.update(this.length);
35
+ }
36
+ }
37
+ /**
38
+ * Creates a PeerList that reports it's size to the libp2p Metrics service
39
+ *
40
+ * @example
41
+ *
42
+ * * ```Typescript
43
+ * import { trackedPeerList } from '@libp2p/peer-collections'
44
+ * import { createLibp2p } from 'libp2p'
45
+ *
46
+ * const libp2p = await createLibp2p()
47
+ *
48
+ * const list = trackedPeerList({ name: 'my_metric_name', metrics: libp2p.metrics })
49
+ * list.push(peerId)
50
+ * ```
51
+ */
52
+ export function trackedPeerList(config) {
53
+ const { name, metrics } = config;
54
+ let map;
55
+ if (metrics != null) {
56
+ map = new TrackedPeerList({ name, metrics });
57
+ }
58
+ else {
59
+ map = new PeerList();
60
+ }
61
+ return map;
62
+ }
63
+ //# sourceMappingURL=tracked-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-list.js","sourceRoot":"","sources":["../../src/tracked-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQpC,MAAM,eAAgB,SAAQ,QAAQ;IACnB,MAAM,CAAQ;IAE/B,YAAa,IAAyB;QACpC,KAAK,EAAE,CAAA;QAEP,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QAE9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,GAAG;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,CAAE,GAAG,OAAiB;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,CAAE,GAAG,OAAiB;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;CACF;AAcD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAE,MAAiC;IAChE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAChC,IAAI,GAAa,CAAA;IAEjB,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { PeerMap } from './map.js';
2
+ import type { Metrics } from '@libp2p/interface';
3
+ export interface TrackedPeerMapInit {
4
+ name: string;
5
+ metrics: Metrics;
6
+ }
7
+ export interface CreateTrackedPeerMapInit {
8
+ /**
9
+ * The metric name to use
10
+ */
11
+ name: string;
12
+ /**
13
+ * A metrics implementation
14
+ */
15
+ metrics?: Metrics;
16
+ }
17
+ /**
18
+ * Creates a PeerMap that reports it's size to the libp2p Metrics service
19
+ *
20
+ * @example
21
+ *
22
+ * * ```Typescript
23
+ * import { trackedPeerMap } from '@libp2p/peer-collections'
24
+ * import { createLibp2p } from 'libp2p'
25
+ *
26
+ * const libp2p = await createLibp2p()
27
+ *
28
+ * const list = trackedPeerMap({ name: 'my_metric_name', metrics: libp2p.metrics })
29
+ * map.set(peerId, 'value')
30
+ * ```
31
+ */
32
+ export declare function trackedPeerMap<V>(config: CreateTrackedPeerMapInit): PeerMap<V>;
33
+ //# sourceMappingURL=tracked-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-map.d.ts","sourceRoot":"","sources":["../../src/tracked-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,EAAU,OAAO,EAAU,MAAM,mBAAmB,CAAA;AAEhE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAoCD,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAE,CAAC,EAAG,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,CAAC,CAAC,CAWhF"}
@@ -0,0 +1,54 @@
1
+ import { PeerMap } from './map.js';
2
+ class TrackedPeerMap extends PeerMap {
3
+ metric;
4
+ constructor(init) {
5
+ super();
6
+ const { name, metrics } = init;
7
+ this.metric = metrics.registerMetric(name);
8
+ this.updateComponentMetric();
9
+ }
10
+ set(key, value) {
11
+ super.set(key, value);
12
+ this.updateComponentMetric();
13
+ return this;
14
+ }
15
+ delete(key) {
16
+ const deleted = super.delete(key);
17
+ this.updateComponentMetric();
18
+ return deleted;
19
+ }
20
+ clear() {
21
+ super.clear();
22
+ this.updateComponentMetric();
23
+ }
24
+ updateComponentMetric() {
25
+ this.metric.update(this.size);
26
+ }
27
+ }
28
+ /**
29
+ * Creates a PeerMap that reports it's size to the libp2p Metrics service
30
+ *
31
+ * @example
32
+ *
33
+ * * ```Typescript
34
+ * import { trackedPeerMap } from '@libp2p/peer-collections'
35
+ * import { createLibp2p } from 'libp2p'
36
+ *
37
+ * const libp2p = await createLibp2p()
38
+ *
39
+ * const list = trackedPeerMap({ name: 'my_metric_name', metrics: libp2p.metrics })
40
+ * map.set(peerId, 'value')
41
+ * ```
42
+ */
43
+ export function trackedPeerMap(config) {
44
+ const { name, metrics } = config;
45
+ let map;
46
+ if (metrics != null) {
47
+ map = new TrackedPeerMap({ name, metrics });
48
+ }
49
+ else {
50
+ map = new PeerMap();
51
+ }
52
+ return map;
53
+ }
54
+ //# sourceMappingURL=tracked-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-map.js","sourceRoot":"","sources":["../../src/tracked-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAQlC,MAAM,cAAkB,SAAQ,OAAU;IACvB,MAAM,CAAQ;IAE/B,YAAa,IAAwB;QACnC,KAAK,EAAE,CAAA;QAEP,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QAE9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,GAAG,CAAE,GAAW,EAAE,KAAQ;QACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAE,GAAW;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;CACF;AAcD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAM,MAAgC;IAClE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAChC,IAAI,GAAe,CAAA;IAEnB,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,GAAG,GAAG,IAAI,cAAc,CAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,IAAI,OAAO,EAAK,CAAA;IACxB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { PeerSet } from './set.js';
2
+ import type { Metrics } from '@libp2p/interface';
3
+ export interface TrackedPeerSetInit {
4
+ name: string;
5
+ metrics: Metrics;
6
+ }
7
+ export interface CreateTrackedPeerSetInit {
8
+ /**
9
+ * The metric name to use
10
+ */
11
+ name: string;
12
+ /**
13
+ * A metrics implementation
14
+ */
15
+ metrics?: Metrics;
16
+ }
17
+ /**
18
+ * Creates a PeerSet that reports it's size to the libp2p Metrics service
19
+ *
20
+ * @example Tracked peer sets
21
+ *
22
+ * * ```Typescript
23
+ * import { trackedPeerSet } from '@libp2p/peer-collections'
24
+ * import { createLibp2p } from 'libp2p'
25
+ *
26
+ * const libp2p = await createLibp2p()
27
+ *
28
+ * const list = trackedPeerSet({ name: 'my_metric_name', metrics: libp2p.metrics })
29
+ * map.add(peerId)
30
+ * ```
31
+ */
32
+ export declare function trackedPeerSet(config: CreateTrackedPeerSetInit): PeerSet;
33
+ //# sourceMappingURL=tracked-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-set.d.ts","sourceRoot":"","sources":["../../src/tracked-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,EAAU,OAAO,EAAU,MAAM,mBAAmB,CAAA;AAEhE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAkCD,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAWzE"}
@@ -0,0 +1,52 @@
1
+ import { PeerSet } from './set.js';
2
+ class TrackedPeerSet extends PeerSet {
3
+ metric;
4
+ constructor(init) {
5
+ super();
6
+ const { name, metrics } = init;
7
+ this.metric = metrics.registerMetric(name);
8
+ this.updateComponentMetric();
9
+ }
10
+ add(peer) {
11
+ super.add(peer);
12
+ this.updateComponentMetric();
13
+ }
14
+ delete(peer) {
15
+ super.delete(peer);
16
+ this.updateComponentMetric();
17
+ }
18
+ clear() {
19
+ super.clear();
20
+ this.updateComponentMetric();
21
+ }
22
+ updateComponentMetric() {
23
+ this.metric.update(this.size);
24
+ }
25
+ }
26
+ /**
27
+ * Creates a PeerSet that reports it's size to the libp2p Metrics service
28
+ *
29
+ * @example Tracked peer sets
30
+ *
31
+ * * ```Typescript
32
+ * import { trackedPeerSet } from '@libp2p/peer-collections'
33
+ * import { createLibp2p } from 'libp2p'
34
+ *
35
+ * const libp2p = await createLibp2p()
36
+ *
37
+ * const list = trackedPeerSet({ name: 'my_metric_name', metrics: libp2p.metrics })
38
+ * map.add(peerId)
39
+ * ```
40
+ */
41
+ export function trackedPeerSet(config) {
42
+ const { name, metrics } = config;
43
+ let map;
44
+ if (metrics != null) {
45
+ map = new TrackedPeerSet({ name, metrics });
46
+ }
47
+ else {
48
+ map = new PeerSet();
49
+ }
50
+ return map;
51
+ }
52
+ //# sourceMappingURL=tracked-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-set.js","sourceRoot":"","sources":["../../src/tracked-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAQlC,MAAM,cAAe,SAAQ,OAAO;IACjB,MAAM,CAAQ;IAE/B,YAAa,IAAwB;QACnC,KAAK,EAAE,CAAA;QAEP,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QAE9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,GAAG,CAAE,IAAY;QACf,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACf,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,CAAE,IAAY;QAClB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;CACF;AAcD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAE,MAAgC;IAC9D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAChC,IAAI,GAAY,CAAA;IAEhB,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,GAAG,GAAG,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,IAAI,OAAO,EAAE,CAAA;IACrB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,5 +1,11 @@
1
1
  {
2
2
  "PeerList": "https://libp2p.github.io/js-libp2p/classes/_libp2p_peer_collections.PeerList.html",
3
3
  "PeerMap": "https://libp2p.github.io/js-libp2p/classes/_libp2p_peer_collections.PeerMap.html",
4
- "PeerSet": "https://libp2p.github.io/js-libp2p/classes/_libp2p_peer_collections.PeerSet.html"
4
+ "PeerSet": "https://libp2p.github.io/js-libp2p/classes/_libp2p_peer_collections.PeerSet.html",
5
+ "peerList": "https://libp2p.github.io/js-libp2p/functions/_libp2p_peer_collections.peerList-1.html",
6
+ "peerMap": "https://libp2p.github.io/js-libp2p/functions/_libp2p_peer_collections.peerMap-1.html",
7
+ "peerSet": "https://libp2p.github.io/js-libp2p/functions/_libp2p_peer_collections.peerSet-1.html",
8
+ "trackedPeerList": "https://libp2p.github.io/js-libp2p/functions/_libp2p_peer_collections.trackedPeerList.html",
9
+ "trackedPeerMap": "https://libp2p.github.io/js-libp2p/functions/_libp2p_peer_collections.trackedPeerMap.html",
10
+ "trackedPeerSet": "https://libp2p.github.io/js-libp2p/functions/_libp2p_peer_collections.trackedPeerSet.html"
5
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/peer-collections",
3
- "version": "5.0.0",
3
+ "version": "5.1.0",
4
4
  "description": "Stores values against a peer id",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/peer-collections#readme",
@@ -58,6 +58,9 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@libp2p/peer-id-factory": "^4.0.0",
61
- "aegir": "^41.0.2"
61
+ "@types/sinon": "^17.0.2",
62
+ "aegir": "^41.0.2",
63
+ "sinon": "^17.0.1",
64
+ "sinon-ts": "^2.0.0"
62
65
  }
63
66
  }
package/src/index.ts CHANGED
@@ -5,6 +5,8 @@
5
5
  *
6
6
  * PeerIds cache stringified versions of themselves so this should be a cheap operation.
7
7
  *
8
+ * Tracked versions are also available which report their current size to the libp2p Metrics collector.
9
+ *
8
10
  * @example Peer lists
9
11
  *
10
12
  * ```JavaScript
@@ -14,6 +16,18 @@
14
16
  * list.push(peerId)
15
17
  * ```
16
18
  *
19
+ * @example Tracked peer lists
20
+ *
21
+ * * ```Typescript
22
+ * import { trackedPeerList } from '@libp2p/peer-collections'
23
+ * import { createLibp2p } from 'libp2p'
24
+ *
25
+ * const libp2p = await createLibp2p()
26
+ *
27
+ * const list = trackedPeerList({ name: 'my_metric_name', metrics: libp2p.metrics })
28
+ * list.push(peerId)
29
+ * ```
30
+ *
17
31
  * @example Peer maps
18
32
  *
19
33
  * ```JavaScript
@@ -23,6 +37,18 @@
23
37
  * map.set(peerId, 'value')
24
38
  * ```
25
39
  *
40
+ * @example Tracked peer maps
41
+ *
42
+ * * ```Typescript
43
+ * import { trackedPeerMap } from '@libp2p/peer-collections'
44
+ * import { createLibp2p } from 'libp2p'
45
+ *
46
+ * const libp2p = await createLibp2p()
47
+ *
48
+ * const list = trackedPeerMap({ name: 'my_metric_name', metrics: libp2p.metrics })
49
+ * map.set(peerId, 'value')
50
+ * ```
51
+ *
26
52
  * @example Peer sets
27
53
  *
28
54
  * ```JavaScript
@@ -31,8 +57,24 @@
31
57
  * const set = peerSet()
32
58
  * set.add(peerId)
33
59
  * ```
60
+ *
61
+ * @example Tracked peer sets
62
+ *
63
+ * * ```Typescript
64
+ * import { trackedPeerSet } from '@libp2p/peer-collections'
65
+ * import { createLibp2p } from 'libp2p'
66
+ *
67
+ * const libp2p = await createLibp2p()
68
+ *
69
+ * const list = trackedPeerSet({ name: 'my_metric_name', metrics: libp2p.metrics })
70
+ * map.add(peerId)
71
+ * ```
34
72
  */
35
73
 
36
- export { PeerMap } from './map.js'
37
- export { PeerSet } from './set.js'
38
- export { PeerList } from './list.js'
74
+ export { PeerMap, peerMap } from './map.js'
75
+ export { PeerSet, peerSet } from './set.js'
76
+ export { PeerList, peerList } from './list.js'
77
+
78
+ export { trackedPeerMap } from './tracked-map.js'
79
+ export { trackedPeerSet } from './tracked-set.js'
80
+ export { trackedPeerList } from './tracked-list.js'
package/src/list.ts CHANGED
@@ -20,7 +20,7 @@ import type { PeerId } from '@libp2p/interface'
20
20
  * ```
21
21
  */
22
22
  export class PeerList {
23
- private readonly list: string[]
23
+ private list: string[]
24
24
 
25
25
  constructor (list?: PeerList | Iterable<PeerId>) {
26
26
  this.list = []
@@ -148,7 +148,15 @@ export class PeerList {
148
148
  return len
149
149
  }
150
150
 
151
+ clear (): void {
152
+ this.list = []
153
+ }
154
+
151
155
  get length (): number {
152
156
  return this.list.length
153
157
  }
154
158
  }
159
+
160
+ export function peerList (): PeerList {
161
+ return new PeerList()
162
+ }
package/src/map.ts CHANGED
@@ -40,8 +40,8 @@ export class PeerMap <T> {
40
40
  this.map.clear()
41
41
  }
42
42
 
43
- delete (peer: PeerId): void {
44
- this.map.delete(peer.toString())
43
+ delete (peer: PeerId): boolean {
44
+ return this.map.delete(peer.toString())
45
45
  }
46
46
 
47
47
  entries (): IterableIterator<[PeerId, T]> {
@@ -88,3 +88,7 @@ export class PeerMap <T> {
88
88
  return this.map.size
89
89
  }
90
90
  }
91
+
92
+ export function peerMap <T> (): PeerMap<T> {
93
+ return new PeerMap<T>()
94
+ }
package/src/set.ts CHANGED
@@ -122,3 +122,7 @@ export class PeerSet {
122
122
  return output
123
123
  }
124
124
  }
125
+
126
+ export function peerSet (): PeerSet {
127
+ return new PeerSet()
128
+ }
@@ -0,0 +1,92 @@
1
+ import { PeerList } from './list.js'
2
+ import type { Metric, Metrics, PeerId } from '@libp2p/interface'
3
+
4
+ export interface TrackedPeerListInit {
5
+ name: string
6
+ metrics: Metrics
7
+ }
8
+
9
+ class TrackedPeerList extends PeerList {
10
+ private readonly metric: Metric
11
+
12
+ constructor (init: TrackedPeerListInit) {
13
+ super()
14
+
15
+ const { name, metrics } = init
16
+
17
+ this.metric = metrics.registerMetric(name)
18
+ this.updateComponentMetric()
19
+ }
20
+
21
+ pop (): PeerId | undefined {
22
+ const peerId = super.pop()
23
+ this.updateComponentMetric()
24
+ return peerId
25
+ }
26
+
27
+ push (...peerIds: PeerId[]): void {
28
+ super.push(...peerIds)
29
+ this.updateComponentMetric()
30
+ }
31
+
32
+ shift (): PeerId | undefined {
33
+ const peerId = super.shift()
34
+ this.updateComponentMetric()
35
+ return peerId
36
+ }
37
+
38
+ unshift (...peerIds: PeerId[]): number {
39
+ const result = super.unshift(...peerIds)
40
+ this.updateComponentMetric()
41
+ return result
42
+ }
43
+
44
+ clear (): void {
45
+ super.clear()
46
+ this.updateComponentMetric()
47
+ }
48
+
49
+ private updateComponentMetric (): void {
50
+ this.metric.update(this.length)
51
+ }
52
+ }
53
+
54
+ export interface CreateTrackedPeerListInit {
55
+ /**
56
+ * The metric name to use
57
+ */
58
+ name: string
59
+
60
+ /**
61
+ * A metrics implementation
62
+ */
63
+ metrics?: Metrics
64
+ }
65
+
66
+ /**
67
+ * Creates a PeerList that reports it's size to the libp2p Metrics service
68
+ *
69
+ * @example
70
+ *
71
+ * * ```Typescript
72
+ * import { trackedPeerList } from '@libp2p/peer-collections'
73
+ * import { createLibp2p } from 'libp2p'
74
+ *
75
+ * const libp2p = await createLibp2p()
76
+ *
77
+ * const list = trackedPeerList({ name: 'my_metric_name', metrics: libp2p.metrics })
78
+ * list.push(peerId)
79
+ * ```
80
+ */
81
+ export function trackedPeerList (config: CreateTrackedPeerListInit): PeerList {
82
+ const { name, metrics } = config
83
+ let map: PeerList
84
+
85
+ if (metrics != null) {
86
+ map = new TrackedPeerList({ name, metrics })
87
+ } else {
88
+ map = new PeerList()
89
+ }
90
+
91
+ return map
92
+ }
@@ -0,0 +1,81 @@
1
+ import { PeerMap } from './map.js'
2
+ import type { Metric, Metrics, PeerId } from '@libp2p/interface'
3
+
4
+ export interface TrackedPeerMapInit {
5
+ name: string
6
+ metrics: Metrics
7
+ }
8
+
9
+ class TrackedPeerMap<V> extends PeerMap<V> {
10
+ private readonly metric: Metric
11
+
12
+ constructor (init: TrackedPeerMapInit) {
13
+ super()
14
+
15
+ const { name, metrics } = init
16
+
17
+ this.metric = metrics.registerMetric(name)
18
+ this.updateComponentMetric()
19
+ }
20
+
21
+ set (key: PeerId, value: V): this {
22
+ super.set(key, value)
23
+ this.updateComponentMetric()
24
+ return this
25
+ }
26
+
27
+ delete (key: PeerId): boolean {
28
+ const deleted = super.delete(key)
29
+ this.updateComponentMetric()
30
+ return deleted
31
+ }
32
+
33
+ clear (): void {
34
+ super.clear()
35
+ this.updateComponentMetric()
36
+ }
37
+
38
+ private updateComponentMetric (): void {
39
+ this.metric.update(this.size)
40
+ }
41
+ }
42
+
43
+ export interface CreateTrackedPeerMapInit {
44
+ /**
45
+ * The metric name to use
46
+ */
47
+ name: string
48
+
49
+ /**
50
+ * A metrics implementation
51
+ */
52
+ metrics?: Metrics
53
+ }
54
+
55
+ /**
56
+ * Creates a PeerMap that reports it's size to the libp2p Metrics service
57
+ *
58
+ * @example
59
+ *
60
+ * * ```Typescript
61
+ * import { trackedPeerMap } from '@libp2p/peer-collections'
62
+ * import { createLibp2p } from 'libp2p'
63
+ *
64
+ * const libp2p = await createLibp2p()
65
+ *
66
+ * const list = trackedPeerMap({ name: 'my_metric_name', metrics: libp2p.metrics })
67
+ * map.set(peerId, 'value')
68
+ * ```
69
+ */
70
+ export function trackedPeerMap <V> (config: CreateTrackedPeerMapInit): PeerMap<V> {
71
+ const { name, metrics } = config
72
+ let map: PeerMap<V>
73
+
74
+ if (metrics != null) {
75
+ map = new TrackedPeerMap<V>({ name, metrics })
76
+ } else {
77
+ map = new PeerMap<V>()
78
+ }
79
+
80
+ return map
81
+ }
@@ -0,0 +1,79 @@
1
+ import { PeerSet } from './set.js'
2
+ import type { Metric, Metrics, PeerId } from '@libp2p/interface'
3
+
4
+ export interface TrackedPeerSetInit {
5
+ name: string
6
+ metrics: Metrics
7
+ }
8
+
9
+ class TrackedPeerSet extends PeerSet {
10
+ private readonly metric: Metric
11
+
12
+ constructor (init: TrackedPeerSetInit) {
13
+ super()
14
+
15
+ const { name, metrics } = init
16
+
17
+ this.metric = metrics.registerMetric(name)
18
+ this.updateComponentMetric()
19
+ }
20
+
21
+ add (peer: PeerId): void {
22
+ super.add(peer)
23
+ this.updateComponentMetric()
24
+ }
25
+
26
+ delete (peer: PeerId): void {
27
+ super.delete(peer)
28
+ this.updateComponentMetric()
29
+ }
30
+
31
+ clear (): void {
32
+ super.clear()
33
+ this.updateComponentMetric()
34
+ }
35
+
36
+ private updateComponentMetric (): void {
37
+ this.metric.update(this.size)
38
+ }
39
+ }
40
+
41
+ export interface CreateTrackedPeerSetInit {
42
+ /**
43
+ * The metric name to use
44
+ */
45
+ name: string
46
+
47
+ /**
48
+ * A metrics implementation
49
+ */
50
+ metrics?: Metrics
51
+ }
52
+
53
+ /**
54
+ * Creates a PeerSet that reports it's size to the libp2p Metrics service
55
+ *
56
+ * @example Tracked peer sets
57
+ *
58
+ * * ```Typescript
59
+ * import { trackedPeerSet } from '@libp2p/peer-collections'
60
+ * import { createLibp2p } from 'libp2p'
61
+ *
62
+ * const libp2p = await createLibp2p()
63
+ *
64
+ * const list = trackedPeerSet({ name: 'my_metric_name', metrics: libp2p.metrics })
65
+ * map.add(peerId)
66
+ * ```
67
+ */
68
+ export function trackedPeerSet (config: CreateTrackedPeerSetInit): PeerSet {
69
+ const { name, metrics } = config
70
+ let map: PeerSet
71
+
72
+ if (metrics != null) {
73
+ map = new TrackedPeerSet({ name, metrics })
74
+ } else {
75
+ map = new PeerSet()
76
+ }
77
+
78
+ return map
79
+ }