Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit 6a129b7

Browse files
authored
deps: update project deps to support no-copy operations (#169)
1 parent 4b3b854 commit 6a129b7

File tree

5 files changed

+54
-42
lines changed

5 files changed

+54
-42
lines changed

.github/dependabot.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ updates:
66
interval: daily
77
time: "10:00"
88
open-pull-requests-limit: 10
9+
commit-message:
10+
prefix: "deps"
11+
prefix-development: "deps(dev)"

package.json

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@
7373
"release": "patch"
7474
},
7575
{
76-
"type": "chore",
76+
"type": "docs",
7777
"release": "patch"
7878
},
7979
{
80-
"type": "docs",
80+
"type": "test",
8181
"release": "patch"
8282
},
8383
{
84-
"type": "test",
84+
"type": "deps",
8585
"release": "patch"
8686
},
8787
{
@@ -111,7 +111,11 @@
111111
},
112112
{
113113
"type": "docs",
114-
"section": "Trivial Changes"
114+
"section": "Documentation"
115+
},
116+
{
117+
"type": "deps",
118+
"section": "Dependencies"
115119
},
116120
{
117121
"type": "test",
@@ -144,24 +148,25 @@
144148
},
145149
"dependencies": {
146150
"@libp2p/interface-peer-id": "^1.0.2",
147-
"@libp2p/interface-pubsub": "^1.0.3",
151+
"@libp2p/interface-pubsub": "^2.0.0",
148152
"@libp2p/logger": "^2.0.0",
149153
"@libp2p/pubsub": "^3.0.1",
150-
"protons-runtime": "^1.0.3",
154+
"protons-runtime": "^2.0.2",
155+
"uint8arraylist": "^2.1.1",
151156
"uint8arrays": "^3.0.0"
152157
},
153158
"devDependencies": {
154159
"@libp2p/components": "^2.0.0",
155160
"@libp2p/interface-mocks": "^3.0.1",
156-
"@libp2p/interface-pubsub-compliance-tests": "^1.0.1",
161+
"@libp2p/interface-pubsub-compliance-tests": "^2.0.1",
157162
"@libp2p/peer-collections": "^2.0.0",
158163
"@libp2p/peer-id": "^1.1.10",
159164
"@libp2p/peer-id-factory": "^1.0.9",
160165
"@multiformats/multiaddr": "^10.1.8",
161166
"aegir": "^37.2.0",
162167
"multiformats": "^9.4.5",
163-
"p-wait-for": "^4.1.0",
164-
"protons": "^3.0.3",
168+
"p-wait-for": "^5.0.0",
169+
"protons": "^4.0.1",
165170
"sinon": "^14.0.0",
166171
"wherearewe": "^1.0.0"
167172
}

src/index.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { PubSubInit, Message, PubSubRPC, PubSubRPCMessage, PublishResult }
66
import type { PeerId } from '@libp2p/interface-peer-id'
77
import { logger } from '@libp2p/logger'
88
import { RPC } from './message/rpc.js'
9+
import type { Uint8ArrayList } from 'uint8arraylist'
910

1011
const log = logger('libp2p:floodsub')
1112

@@ -43,22 +44,22 @@ export class FloodSub extends PubSubBaseProtocol {
4344
/**
4445
* Decode a Uint8Array into an RPC object
4546
*/
46-
decodeRpc (bytes: Uint8Array): PubSubRPC {
47+
decodeRpc (bytes: Uint8Array | Uint8ArrayList): PubSubRPC {
4748
return RPC.decode(bytes)
4849
}
4950

5051
/**
5152
* Encode an RPC object into a Uint8Array
5253
*/
53-
encodeRpc (rpc: PubSubRPC): Uint8Array {
54+
encodeRpc (rpc: PubSubRPC): Uint8ArrayList {
5455
return RPC.encode(rpc)
5556
}
5657

57-
decodeMessage (bytes: Uint8Array): PubSubRPCMessage {
58+
decodeMessage (bytes: Uint8Array | Uint8ArrayList): PubSubRPCMessage {
5859
return RPC.Message.decode(bytes)
5960
}
6061

61-
encodeMessage (rpc: PubSubRPCMessage): Uint8Array {
62+
encodeMessage (rpc: PubSubRPCMessage): Uint8ArrayList {
6263
return RPC.Message.encode(rpc)
6364
}
6465

src/message/rpc.ts

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
/* eslint-disable @typescript-eslint/no-namespace */
33

44
import { encodeMessage, decodeMessage, message, bool, string, bytes, uint64 } from 'protons-runtime'
5+
import type { Codec } from 'protons-runtime'
6+
import type { Uint8ArrayList } from 'uint8arraylist'
57

68
export interface RPC {
79
subscriptions: RPC.SubOpts[]
@@ -16,21 +18,22 @@ export namespace RPC {
1618
}
1719

1820
export namespace SubOpts {
19-
export const codec = () => {
21+
export const codec = (): Codec<SubOpts> => {
2022
return message<SubOpts>({
2123
1: { name: 'subscribe', codec: bool, optional: true },
2224
2: { name: 'topic', codec: string, optional: true }
2325
})
2426
}
2527

26-
export const encode = (obj: SubOpts): Uint8Array => {
28+
export const encode = (obj: SubOpts): Uint8ArrayList => {
2729
return encodeMessage(obj, SubOpts.codec())
2830
}
2931

30-
export const decode = (buf: Uint8Array): SubOpts => {
32+
export const decode = (buf: Uint8Array | Uint8ArrayList): SubOpts => {
3133
return decodeMessage(buf, SubOpts.codec())
3234
}
3335
}
36+
3437
export interface Message {
3538
from?: Uint8Array
3639
data?: Uint8Array
@@ -41,7 +44,7 @@ export namespace RPC {
4144
}
4245

4346
export namespace Message {
44-
export const codec = () => {
47+
export const codec = (): Codec<Message> => {
4548
return message<Message>({
4649
1: { name: 'from', codec: bytes, optional: true },
4750
2: { name: 'data', codec: bytes, optional: true },
@@ -52,28 +55,28 @@ export namespace RPC {
5255
})
5356
}
5457

55-
export const encode = (obj: Message): Uint8Array => {
58+
export const encode = (obj: Message): Uint8ArrayList => {
5659
return encodeMessage(obj, Message.codec())
5760
}
5861

59-
export const decode = (buf: Uint8Array): Message => {
62+
export const decode = (buf: Uint8Array | Uint8ArrayList): Message => {
6063
return decodeMessage(buf, Message.codec())
6164
}
6265
}
6366

64-
export const codec = () => {
67+
export const codec = (): Codec<RPC> => {
6568
return message<RPC>({
6669
1: { name: 'subscriptions', codec: RPC.SubOpts.codec(), repeats: true },
6770
2: { name: 'messages', codec: RPC.Message.codec(), repeats: true },
6871
3: { name: 'control', codec: ControlMessage.codec(), optional: true }
6972
})
7073
}
7174

72-
export const encode = (obj: RPC): Uint8Array => {
75+
export const encode = (obj: RPC): Uint8ArrayList => {
7376
return encodeMessage(obj, RPC.codec())
7477
}
7578

76-
export const decode = (buf: Uint8Array): RPC => {
79+
export const decode = (buf: Uint8Array | Uint8ArrayList): RPC => {
7780
return decodeMessage(buf, RPC.codec())
7881
}
7982
}
@@ -86,7 +89,7 @@ export interface ControlMessage {
8689
}
8790

8891
export namespace ControlMessage {
89-
export const codec = () => {
92+
export const codec = (): Codec<ControlMessage> => {
9093
return message<ControlMessage>({
9194
1: { name: 'ihave', codec: ControlIHave.codec(), repeats: true },
9295
2: { name: 'iwant', codec: ControlIWant.codec(), repeats: true },
@@ -95,11 +98,11 @@ export namespace ControlMessage {
9598
})
9699
}
97100

98-
export const encode = (obj: ControlMessage): Uint8Array => {
101+
export const encode = (obj: ControlMessage): Uint8ArrayList => {
99102
return encodeMessage(obj, ControlMessage.codec())
100103
}
101104

102-
export const decode = (buf: Uint8Array): ControlMessage => {
105+
export const decode = (buf: Uint8Array | Uint8ArrayList): ControlMessage => {
103106
return decodeMessage(buf, ControlMessage.codec())
104107
}
105108
}
@@ -110,18 +113,18 @@ export interface ControlIHave {
110113
}
111114

112115
export namespace ControlIHave {
113-
export const codec = () => {
116+
export const codec = (): Codec<ControlIHave> => {
114117
return message<ControlIHave>({
115118
1: { name: 'topic', codec: string, optional: true },
116119
2: { name: 'messageIDs', codec: bytes, repeats: true }
117120
})
118121
}
119122

120-
export const encode = (obj: ControlIHave): Uint8Array => {
123+
export const encode = (obj: ControlIHave): Uint8ArrayList => {
121124
return encodeMessage(obj, ControlIHave.codec())
122125
}
123126

124-
export const decode = (buf: Uint8Array): ControlIHave => {
127+
export const decode = (buf: Uint8Array | Uint8ArrayList): ControlIHave => {
125128
return decodeMessage(buf, ControlIHave.codec())
126129
}
127130
}
@@ -131,17 +134,17 @@ export interface ControlIWant {
131134
}
132135

133136
export namespace ControlIWant {
134-
export const codec = () => {
137+
export const codec = (): Codec<ControlIWant> => {
135138
return message<ControlIWant>({
136139
1: { name: 'messageIDs', codec: bytes, repeats: true }
137140
})
138141
}
139142

140-
export const encode = (obj: ControlIWant): Uint8Array => {
143+
export const encode = (obj: ControlIWant): Uint8ArrayList => {
141144
return encodeMessage(obj, ControlIWant.codec())
142145
}
143146

144-
export const decode = (buf: Uint8Array): ControlIWant => {
147+
export const decode = (buf: Uint8Array | Uint8ArrayList): ControlIWant => {
145148
return decodeMessage(buf, ControlIWant.codec())
146149
}
147150
}
@@ -151,17 +154,17 @@ export interface ControlGraft {
151154
}
152155

153156
export namespace ControlGraft {
154-
export const codec = () => {
157+
export const codec = (): Codec<ControlGraft> => {
155158
return message<ControlGraft>({
156159
1: { name: 'topic', codec: string, optional: true }
157160
})
158161
}
159162

160-
export const encode = (obj: ControlGraft): Uint8Array => {
163+
export const encode = (obj: ControlGraft): Uint8ArrayList => {
161164
return encodeMessage(obj, ControlGraft.codec())
162165
}
163166

164-
export const decode = (buf: Uint8Array): ControlGraft => {
167+
export const decode = (buf: Uint8Array | Uint8ArrayList): ControlGraft => {
165168
return decodeMessage(buf, ControlGraft.codec())
166169
}
167170
}
@@ -173,19 +176,19 @@ export interface ControlPrune {
173176
}
174177

175178
export namespace ControlPrune {
176-
export const codec = () => {
179+
export const codec = (): Codec<ControlPrune> => {
177180
return message<ControlPrune>({
178181
1: { name: 'topic', codec: string, optional: true },
179182
2: { name: 'peers', codec: PeerInfo.codec(), repeats: true },
180183
3: { name: 'backoff', codec: uint64, optional: true }
181184
})
182185
}
183186

184-
export const encode = (obj: ControlPrune): Uint8Array => {
187+
export const encode = (obj: ControlPrune): Uint8ArrayList => {
185188
return encodeMessage(obj, ControlPrune.codec())
186189
}
187190

188-
export const decode = (buf: Uint8Array): ControlPrune => {
191+
export const decode = (buf: Uint8Array | Uint8ArrayList): ControlPrune => {
189192
return decodeMessage(buf, ControlPrune.codec())
190193
}
191194
}
@@ -196,18 +199,18 @@ export interface PeerInfo {
196199
}
197200

198201
export namespace PeerInfo {
199-
export const codec = () => {
202+
export const codec = (): Codec<PeerInfo> => {
200203
return message<PeerInfo>({
201204
1: { name: 'peerID', codec: bytes, optional: true },
202205
2: { name: 'signedPeerRecord', codec: bytes, optional: true }
203206
})
204207
}
205208

206-
export const encode = (obj: PeerInfo): Uint8Array => {
209+
export const encode = (obj: PeerInfo): Uint8ArrayList => {
207210
return encodeMessage(obj, PeerInfo.codec())
208211
}
209212

210-
export const decode = (buf: Uint8Array): PeerInfo => {
213+
export const decode = (buf: Uint8Array | Uint8ArrayList): PeerInfo => {
211214
return decodeMessage(buf, PeerInfo.codec())
212215
}
213216
}

test/floodsub.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,13 @@ describe('floodsub', () => {
107107
const [to, rpc] = spy.getCall(0).args
108108

109109
const expected: Message = {
110-
from: floodsub.components.getPeerId(),
110+
type: 'unsigned',
111111
data: message,
112112
topic
113113
}
114114

115115
expect(to).to.eql(otherPeer)
116-
expect(rpc).to.have.nested.property('messages[0]').that.deep.equals(expected)
116+
expect(rpc).to.have.nested.property('messages[0]').that.containSubset(expected)
117117
})
118118

119119
it('does not send received message back to original sender', async () => {

0 commit comments

Comments
 (0)