@libp2p/peer-collections 5.2.9-7655e5200 → 5.2.9-81ebe4e47
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 +21 -14
- package/dist/index.min.js +30 -1
- package/dist/src/filter.js +3 -3
- package/dist/src/filter.js.map +1 -1
- package/dist/src/index.d.ts +21 -14
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +21 -14
- package/dist/src/index.js.map +1 -1
- package/dist/src/list.d.ts.map +1 -1
- package/dist/src/list.js +24 -26
- package/dist/src/list.js.map +1 -1
- package/dist/src/map.d.ts.map +1 -1
- package/dist/src/map.js +8 -9
- package/dist/src/map.js.map +1 -1
- package/dist/src/set.d.ts.map +1 -1
- package/dist/src/set.js +3 -4
- package/dist/src/set.js.map +1 -1
- package/dist/src/util.d.ts +2 -0
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +7 -0
- package/dist/src/util.js.map +1 -1
- package/package.json +6 -5
- package/src/filter.ts +3 -3
- package/src/index.ts +21 -14
- package/src/list.ts +27 -30
- package/src/map.ts +11 -12
- package/src/set.ts +3 -4
- package/src/util.ts +10 -0
package/src/list.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { peerIdFromString } from '@libp2p/peer-id'
|
|
2
1
|
import { mapIterable } from './util.js'
|
|
3
2
|
import type { PeerId } from '@libp2p/interface'
|
|
4
3
|
|
|
@@ -20,23 +19,23 @@ import type { PeerId } from '@libp2p/interface'
|
|
|
20
19
|
* ```
|
|
21
20
|
*/
|
|
22
21
|
export class PeerList {
|
|
23
|
-
private list:
|
|
22
|
+
private list: PeerId[]
|
|
24
23
|
|
|
25
24
|
constructor (list?: PeerList | Iterable<PeerId>) {
|
|
26
25
|
this.list = []
|
|
27
26
|
|
|
28
27
|
if (list != null) {
|
|
29
28
|
for (const value of list) {
|
|
30
|
-
this.list.push(value
|
|
29
|
+
this.list.push(value)
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
[Symbol.iterator] (): IterableIterator<PeerId> {
|
|
36
|
-
return mapIterable<[number,
|
|
35
|
+
return mapIterable<[number, PeerId], PeerId>(
|
|
37
36
|
this.list.entries(),
|
|
38
37
|
(val) => {
|
|
39
|
-
return
|
|
38
|
+
return val[1]
|
|
40
39
|
}
|
|
41
40
|
)
|
|
42
41
|
}
|
|
@@ -52,26 +51,24 @@ export class PeerList {
|
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
entries (): IterableIterator<[number, PeerId]> {
|
|
55
|
-
return mapIterable<[number,
|
|
54
|
+
return mapIterable<[number, PeerId], [number, PeerId]>(
|
|
56
55
|
this.list.entries(),
|
|
57
56
|
(val) => {
|
|
58
|
-
return [val[0],
|
|
57
|
+
return [val[0], val[1]]
|
|
59
58
|
}
|
|
60
59
|
)
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
every (predicate: (peerId: PeerId, index: number, arr: PeerList) => boolean): boolean {
|
|
64
|
-
return this.list.every((
|
|
65
|
-
return predicate(
|
|
63
|
+
return this.list.every((peerId, index) => {
|
|
64
|
+
return predicate(peerId, index, this)
|
|
66
65
|
})
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
filter (predicate: (peerId: PeerId, index: number, arr: PeerList) => boolean): PeerList {
|
|
70
69
|
const output = new PeerList()
|
|
71
70
|
|
|
72
|
-
this.list.forEach((
|
|
73
|
-
const peerId = peerIdFromString(str)
|
|
74
|
-
|
|
71
|
+
this.list.forEach((peerId, index) => {
|
|
75
72
|
if (predicate(peerId, index, this)) {
|
|
76
73
|
output.push(peerId)
|
|
77
74
|
}
|
|
@@ -81,68 +78,68 @@ export class PeerList {
|
|
|
81
78
|
}
|
|
82
79
|
|
|
83
80
|
find (predicate: (peerId: PeerId, index: number, arr: PeerList) => boolean): PeerId | undefined {
|
|
84
|
-
const
|
|
85
|
-
return predicate(
|
|
81
|
+
const peerId = this.list.find((peerId, index) => {
|
|
82
|
+
return predicate(peerId, index, this)
|
|
86
83
|
})
|
|
87
84
|
|
|
88
|
-
if (
|
|
85
|
+
if (peerId == null) {
|
|
89
86
|
return undefined
|
|
90
87
|
}
|
|
91
88
|
|
|
92
|
-
return
|
|
89
|
+
return peerId
|
|
93
90
|
}
|
|
94
91
|
|
|
95
92
|
findIndex (predicate: (peerId: PeerId, index: number, arr: PeerList) => boolean): number {
|
|
96
|
-
return this.list.findIndex((
|
|
97
|
-
return predicate(
|
|
93
|
+
return this.list.findIndex((peerId, index) => {
|
|
94
|
+
return predicate(peerId, index, this)
|
|
98
95
|
})
|
|
99
96
|
}
|
|
100
97
|
|
|
101
98
|
forEach (predicate: (peerId: PeerId, index: number, arr: PeerList) => void): void {
|
|
102
|
-
this.list.forEach((
|
|
103
|
-
predicate(
|
|
99
|
+
this.list.forEach((peerId, index) => {
|
|
100
|
+
predicate(peerId, index, this)
|
|
104
101
|
})
|
|
105
102
|
}
|
|
106
103
|
|
|
107
104
|
includes (peerId: PeerId): boolean {
|
|
108
|
-
return this.
|
|
105
|
+
return this.includes(peerId)
|
|
109
106
|
}
|
|
110
107
|
|
|
111
108
|
indexOf (peerId: PeerId): number {
|
|
112
|
-
return this.list.
|
|
109
|
+
return this.list.findIndex(id => id.equals(peerId))
|
|
113
110
|
}
|
|
114
111
|
|
|
115
112
|
pop (): PeerId | undefined {
|
|
116
|
-
const
|
|
113
|
+
const peerId = this.list.pop()
|
|
117
114
|
|
|
118
|
-
if (
|
|
115
|
+
if (peerId == null) {
|
|
119
116
|
return undefined
|
|
120
117
|
}
|
|
121
118
|
|
|
122
|
-
return
|
|
119
|
+
return peerId
|
|
123
120
|
}
|
|
124
121
|
|
|
125
122
|
push (...peerIds: PeerId[]): void {
|
|
126
123
|
for (const peerId of peerIds) {
|
|
127
|
-
this.list.push(peerId
|
|
124
|
+
this.list.push(peerId)
|
|
128
125
|
}
|
|
129
126
|
}
|
|
130
127
|
|
|
131
128
|
shift (): PeerId | undefined {
|
|
132
|
-
const
|
|
129
|
+
const peerId = this.list.shift()
|
|
133
130
|
|
|
134
|
-
if (
|
|
131
|
+
if (peerId == null) {
|
|
135
132
|
return undefined
|
|
136
133
|
}
|
|
137
134
|
|
|
138
|
-
return
|
|
135
|
+
return peerId
|
|
139
136
|
}
|
|
140
137
|
|
|
141
138
|
unshift (...peerIds: PeerId[]): number {
|
|
142
139
|
let len = this.list.length
|
|
143
140
|
|
|
144
141
|
for (let i = peerIds.length - 1; i > -1; i--) {
|
|
145
|
-
len = this.list.unshift(peerIds[i]
|
|
142
|
+
len = this.list.unshift(peerIds[i])
|
|
146
143
|
}
|
|
147
144
|
|
|
148
145
|
return len
|
package/src/map.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { peerIdFromString } from '@libp2p/peer-id'
|
|
2
1
|
import { mapIterable } from './util.js'
|
|
3
2
|
import type { PeerId } from '@libp2p/interface'
|
|
4
3
|
|
|
@@ -20,14 +19,14 @@ import type { PeerId } from '@libp2p/interface'
|
|
|
20
19
|
* ```
|
|
21
20
|
*/
|
|
22
21
|
export class PeerMap <T> {
|
|
23
|
-
private readonly map: Map<string, T>
|
|
22
|
+
private readonly map: Map<string, { key: PeerId, value: T }>
|
|
24
23
|
|
|
25
24
|
constructor (map?: PeerMap<T>) {
|
|
26
25
|
this.map = new Map()
|
|
27
26
|
|
|
28
27
|
if (map != null) {
|
|
29
28
|
for (const [key, value] of map.entries()) {
|
|
30
|
-
this.map.set(key.toString(), value)
|
|
29
|
+
this.map.set(key.toString(), { key, value })
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
}
|
|
@@ -45,22 +44,22 @@ export class PeerMap <T> {
|
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
entries (): IterableIterator<[PeerId, T]> {
|
|
48
|
-
return mapIterable<[string, T], [PeerId, T]>(
|
|
47
|
+
return mapIterable<[string, { key: PeerId, value: T }], [PeerId, T]>(
|
|
49
48
|
this.map.entries(),
|
|
50
49
|
(val) => {
|
|
51
|
-
return [
|
|
50
|
+
return [val[1].key, val[1].value]
|
|
52
51
|
}
|
|
53
52
|
)
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
forEach (fn: (value: T, key: PeerId, map: PeerMap<T>) => void): void {
|
|
57
56
|
this.map.forEach((value, key) => {
|
|
58
|
-
fn(value,
|
|
57
|
+
fn(value.value, value.key, this)
|
|
59
58
|
})
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
get (peer: PeerId): T | undefined {
|
|
63
|
-
return this.map.get(peer.toString())
|
|
62
|
+
return this.map.get(peer.toString())?.value
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
has (peer: PeerId): boolean {
|
|
@@ -68,20 +67,20 @@ export class PeerMap <T> {
|
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
set (peer: PeerId, value: T): void {
|
|
71
|
-
this.map.set(peer.toString(), value)
|
|
70
|
+
this.map.set(peer.toString(), { key: peer, value })
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
keys (): IterableIterator<PeerId> {
|
|
75
|
-
return mapIterable<
|
|
76
|
-
this.map.
|
|
74
|
+
return mapIterable<{ key: PeerId, value: T }, PeerId>(
|
|
75
|
+
this.map.values(),
|
|
77
76
|
(val) => {
|
|
78
|
-
return
|
|
77
|
+
return val.key
|
|
79
78
|
}
|
|
80
79
|
)
|
|
81
80
|
}
|
|
82
81
|
|
|
83
82
|
values (): IterableIterator<T> {
|
|
84
|
-
return this.map.values()
|
|
83
|
+
return mapIterable(this.map.values(), (val) => val.value)
|
|
85
84
|
}
|
|
86
85
|
|
|
87
86
|
get size (): number {
|
package/src/set.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { peerIdFromString } from '
|
|
2
|
-
import { mapIterable } from './util.js'
|
|
1
|
+
import { mapIterable, peerIdFromString } from './util.js'
|
|
3
2
|
import type { PeerId } from '@libp2p/interface'
|
|
4
3
|
|
|
5
4
|
/**
|
|
@@ -65,9 +64,9 @@ export class PeerSet {
|
|
|
65
64
|
|
|
66
65
|
forEach (predicate: (peerId: PeerId, index: PeerId, set: PeerSet) => void): void {
|
|
67
66
|
this.set.forEach((str) => {
|
|
68
|
-
const
|
|
67
|
+
const peerId = peerIdFromString(str)
|
|
69
68
|
|
|
70
|
-
predicate(
|
|
69
|
+
predicate(peerId, peerId, this)
|
|
71
70
|
})
|
|
72
71
|
}
|
|
73
72
|
|
package/src/util.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { peerIdFromMultihash } from '@libp2p/peer-id'
|
|
2
|
+
import { base58btc } from 'multiformats/bases/base58'
|
|
3
|
+
import * as Digest from 'multiformats/hashes/digest'
|
|
4
|
+
import type { PeerId } from '@libp2p/interface'
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* Calls the passed map function on every entry of the passed iterable iterator
|
|
3
8
|
*/
|
|
@@ -28,3 +33,8 @@ export function mapIterable <T, R> (iter: IterableIterator<T>, map: (val: T) =>
|
|
|
28
33
|
|
|
29
34
|
return iterator
|
|
30
35
|
}
|
|
36
|
+
|
|
37
|
+
export function peerIdFromString (str: string): PeerId {
|
|
38
|
+
const multihash = Digest.decode(base58btc.decode(`z${str}`))
|
|
39
|
+
return peerIdFromMultihash(multihash)
|
|
40
|
+
}
|