Skip to content

Commit 9531b13

Browse files
committed
deps!: update to libp2p 0.46.x
Updates all libp2p deps to 0.46.x to close streams gracefully. BREAKING CHANGE: requires [email protected] or later
1 parent 09755bd commit 9531b13

27 files changed

+80
-84
lines changed

.aegir.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
/** @type {import('aegir').PartialOptions} */
33
export default {
44
build: {
5-
bundlesizeMax: '32KB'
5+
bundlesizeMax: '33KB'
66
}
77
}

package.json

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,8 @@
143143
"docs": "aegir docs"
144144
},
145145
"dependencies": {
146-
"@libp2p/interface-connection": "^5.1.0",
147-
"@libp2p/interface-libp2p": "^3.1.0",
148-
"@libp2p/interface-peer-id": "^2.0.0",
149-
"@libp2p/interface-peer-info": "^1.0.8",
150-
"@libp2p/interface-registrar": "^2.0.8",
151-
"@libp2p/interfaces": "^3.2.0",
152-
"@libp2p/logger": "^2.0.5",
153-
"@libp2p/topology": "^4.0.0",
154-
"@libp2p/tracked-map": "^3.0.0",
146+
"@libp2p/interface": "^0.1.1",
147+
"@libp2p/logger": "^3.0.1",
155148
"@multiformats/multiaddr": "^12.1.0",
156149
"@vascosantos/moving-average": "^1.1.0",
157150
"abortable-iterator": "^5.0.1",
@@ -166,7 +159,7 @@
166159
"it-pipe": "^3.0.1",
167160
"it-take": "^3.0.1",
168161
"just-debounce-it": "^3.0.1",
169-
"multiformats": "^11.0.0",
162+
"multiformats": "^12.0.1",
170163
"progress-events": "^1.0.0",
171164
"protons-runtime": "^5.0.0",
172165
"timeout-abort-controller": "^3.0.0",
@@ -176,12 +169,12 @@
176169
"varint-decoder": "^1.0.0"
177170
},
178171
"devDependencies": {
179-
"@chainsafe/libp2p-noise": "^12.0.0",
180-
"@libp2p/kad-dht": "^9.3.3",
181-
"@libp2p/mplex": "^8.0.3",
182-
"@libp2p/peer-id": "^2.0.0",
183-
"@libp2p/peer-id-factory": "^2.0.0",
184-
"@libp2p/tcp": "^7.0.1",
172+
"@chainsafe/libp2p-noise": "^13.0.0",
173+
"@libp2p/kad-dht": "^10.0.2",
174+
"@libp2p/mplex": "^9.0.2",
175+
"@libp2p/peer-id": "^3.0.1",
176+
"@libp2p/peer-id-factory": "^3.0.2",
177+
"@libp2p/tcp": "^8.0.2",
185178
"@nodeutils/defaults-deep": "^1.1.0",
186179
"@types/lodash.difference": "^4.5.7",
187180
"@types/lodash.flatten": "^4.4.7",
@@ -195,7 +188,7 @@
195188
"iso-random-stream": "^2.0.0",
196189
"it-all": "^3.0.1",
197190
"it-drain": "^3.0.1",
198-
"libp2p": "^0.45.1",
191+
"libp2p": "^0.46.3",
199192
"lodash.difference": "^4.5.0",
200193
"lodash.flatten": "^4.4.0",
201194
"lodash.range": "^3.2.0",

src/bitswap.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { logger } from './utils/index.js'
99
import { WantManager } from './want-manager/index.js'
1010
import type { BitswapOptions, Bitswap, MultihashHasherLoader, WantListEntry, BitswapWantProgressEvents, BitswapNotifyProgressEvents } from './index.js'
1111
import type { BitswapMessage } from './message/index.js'
12-
import type { Libp2p } from '@libp2p/interface-libp2p'
13-
import type { PeerId } from '@libp2p/interface-peer-id'
12+
import type { Libp2p } from '@libp2p/interface'
13+
import type { PeerId } from '@libp2p/interface/peer-id'
1414
import type { Logger } from '@libp2p/logger'
1515
import type { AbortOptions } from '@multiformats/multiaddr'
1616
import type { Blockstore, Pair } from 'interface-blockstore'

src/decision-engine/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { trackedMap } from '@libp2p/tracked-map'
1+
import { trackedMap } from '@libp2p/interface/metrics/tracked-map'
22
import { base58btc } from 'multiformats/bases/base58'
33
import { CID } from 'multiformats/cid'
44
import { BitswapMessage as Message } from '../message/index.js'
@@ -12,8 +12,8 @@ import type { Message as PBMessage } from '../message/message.js'
1212
import type { Network } from '../network.js'
1313
import type { Stats } from '../stats/index.js'
1414
import type { WantListEntry } from '../wantlist/entry.js'
15-
import type { Libp2p } from '@libp2p/interface-libp2p'
16-
import type { PeerId } from '@libp2p/interface-peer-id'
15+
import type { Libp2p } from '@libp2p/interface'
16+
import type { PeerId } from '@libp2p/interface/peer-id'
1717
import type { Logger } from '@libp2p/logger'
1818
import type { Blockstore } from 'interface-blockstore'
1919

src/decision-engine/ledger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Wantlist } from '../wantlist/index.js'
22
import type { Message } from '../message/message.js'
33
import type { WantListEntry } from '../wantlist/entry.js'
4-
import type { PeerId } from '@libp2p/interface-peer-id'
4+
import type { PeerId } from '@libp2p/interface/peer-id'
55
import type { CID } from 'multiformats/cid'
66

77
export class Ledger {

src/decision-engine/req-queue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { SortedMap } from '../utils/sorted-map.js'
22
import type { Task, TaskMerger } from './index.js'
3-
import type { PeerId } from '@libp2p/interface-peer-id'
3+
import type { PeerId } from '@libp2p/interface/peer-id'
44

55
export interface PopTaskResult {
66
peerId?: PeerId

src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { DefaultBitswap } from './bitswap.js'
22
import type { Message } from './message/message'
33
import type { BitswapNetworkNotifyProgressEvents, BitswapNetworkWantProgressEvents } from './network.js'
4-
import type { Libp2p } from '@libp2p/interface-libp2p'
5-
import type { PeerId } from '@libp2p/interface-peer-id'
4+
import type { Libp2p } from '@libp2p/interface'
5+
import type { PeerId } from '@libp2p/interface/peer-id'
6+
import type { Startable } from '@libp2p/interface/startable'
67
import type { AbortOptions } from '@libp2p/interfaces'
7-
import type { Startable } from '@libp2p/interfaces/startable'
88
import type { IMovingAverage } from '@vascosantos/moving-average'
99
import type { Blockstore } from 'interface-blockstore'
1010
import type { CID } from 'multiformats/cid'

src/network.ts

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { createTopology } from '@libp2p/topology'
2-
import { abortableSource } from 'abortable-iterator'
1+
import { CodeError } from '@libp2p/interface/errors'
32
import drain from 'it-drain'
43
import * as lp from 'it-length-prefixed'
54
import map from 'it-map'
@@ -13,11 +12,12 @@ import { logger } from './utils/index.js'
1312
import type { DefaultBitswap } from './bitswap.js'
1413
import type { MultihashHasherLoader } from './index.js'
1514
import type { Stats } from './stats/index.js'
16-
import type { Connection } from '@libp2p/interface-connection'
17-
import type { Libp2p } from '@libp2p/interface-libp2p'
18-
import type { PeerId } from '@libp2p/interface-peer-id'
19-
import type { PeerInfo } from '@libp2p/interface-peer-info'
20-
import type { IncomingStreamData } from '@libp2p/interface-registrar'
15+
import type { Libp2p } from '@libp2p/interface'
16+
import type { Connection } from '@libp2p/interface/connection'
17+
import type { PeerId } from '@libp2p/interface/peer-id'
18+
import type { PeerInfo } from '@libp2p/interface/peer-info'
19+
import type { IncomingStreamData } from '@libp2p/interface/stream-handler'
20+
import type { Topology } from '@libp2p/interface/topology'
2121
import type { AbortOptions } from '@libp2p/interfaces'
2222
import type { Logger } from '@libp2p/logger'
2323
import type { Multiaddr } from '@multiformats/multiaddr'
@@ -107,10 +107,10 @@ export class Network {
107107
})
108108

109109
// register protocol with topology
110-
const topology = createTopology({
110+
const topology: Topology = {
111111
onConnect: this._onPeerConnect,
112112
onDisconnect: this._onPeerDisconnect
113-
})
113+
}
114114

115115
/** @type {string[]} */
116116
this._registrarIds = []
@@ -153,10 +153,16 @@ export class Network {
153153
const controller = new TimeoutController(this._incomingStreamTimeout)
154154

155155
Promise.resolve().then(async () => {
156-
this._log('incoming new bitswap %s connection from %p', stream.stat.protocol, connection.remotePeer)
156+
this._log('incoming new bitswap %s connection from %p', stream.protocol, connection.remotePeer)
157+
const abortListener = (): void => {
158+
stream.abort(new CodeError('Incoming Bitswap stream timed out', 'ERR_TIMEOUT'))
159+
}
160+
161+
let signal = AbortSignal.timeout(this._incomingStreamTimeout)
162+
signal.addEventListener('abort', abortListener)
157163

158164
await pipe(
159-
abortableSource(stream.source, controller.signal),
165+
stream,
160166
(source) => lp.decode(source),
161167
async (source) => {
162168
for await (const data of source) {
@@ -169,18 +175,23 @@ export class Network {
169175
}
170176

171177
// we have received some data so reset the timeout controller
172-
controller.reset()
178+
signal.removeEventListener('abort', abortListener)
179+
signal = AbortSignal.timeout(this._incomingStreamTimeout)
180+
signal.addEventListener('abort', abortListener)
173181
}
174182
}
175183
)
184+
185+
await stream.close({
186+
signal
187+
})
176188
})
177189
.catch(err => {
178190
this._log(err)
179191
stream.abort(err)
180192
})
181193
.finally(() => {
182194
controller.clear()
183-
stream.close()
184195
})
185196
}
186197

@@ -273,7 +284,7 @@ export class Network {
273284
try {
274285
/** @type {Uint8Array} */
275286
let serialized
276-
switch (stream.stat.protocol) {
287+
switch (stream.protocol) {
277288
case BITSWAP100:
278289
serialized = msg.serializeToBitswap100()
279290
break
@@ -282,19 +293,20 @@ export class Network {
282293
serialized = msg.serializeToBitswap110()
283294
break
284295
default:
285-
throw new Error(`Unknown protocol: ${stream.stat.protocol}`)
296+
throw new Error(`Unknown protocol: ${stream.protocol}`)
286297
}
287298

288299
await pipe(
289300
[serialized],
290301
(source) => lp.encode(source),
291302
stream
292303
)
304+
305+
await stream.close()
293306
} catch (err: any) {
294307
options.onProgress?.(new CustomProgressEvent<{ peer: PeerId, error: Error }>('bitswap:network:send-wantlist:error', { peer: peerId, error: err }))
295308
this._log(err)
296-
} finally {
297-
stream.close()
309+
stream.abort(err)
298310
}
299311
}
300312
}

src/notifications.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
44
import * as CONSTANTS from './constants.js'
55
import { logger } from './utils/index.js'
66
import type { BitswapWantBlockProgressEvents } from './index.js'
7-
import type { PeerId } from '@libp2p/interface-peer-id'
7+
import type { PeerId } from '@libp2p/interface/peer-id'
88
import type { AbortOptions } from '@libp2p/interfaces'
99
import type { Logger } from '@libp2p/logger'
1010
import type { CID } from 'multiformats/cid'

src/stats/index.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
import { EventEmitter } from 'events'
2-
import { trackedMap } from '@libp2p/tracked-map'
2+
import { trackedMap } from '@libp2p/interface/metrics/tracked-map'
33
import { Stat } from './stat.js'
4-
import type { PeerId } from '@libp2p/interface-peer-id'
4+
import type { PeerId } from '@libp2p/interface/peer-id'
55
import type { IMovingAverage } from '@vascosantos/moving-average'
66
import type { Libp2p } from 'libp2p'
77

8-
/**
9-
* @typedef {import('multiformats').CID} CID
10-
* @typedef {import('@libp2p/interface-peer-id').PeerId} PeerId
11-
*/
12-
138
export interface StatsOptions {
149
enabled?: boolean
1510
computeThrottleTimeout?: number

src/utils/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { logger as createLogger, type Logger } from '@libp2p/logger'
22
import { equals as uint8ArrayEquals } from 'uint8arrays/equals'
33
import { BitswapMessageEntry } from '../message/entry.js'
4-
import type { PeerId } from '@libp2p/interface-peer-id'
4+
import type { PeerId } from '@libp2p/interface/peer-id'
55

66
/**
77
* Creates a logger for the given subsystem

src/want-manager/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { trackedMap } from '@libp2p/tracked-map'
1+
import { trackedMap } from '@libp2p/interface/metrics/tracked-map'
22
import { base58btc } from 'multiformats/bases/base58'
33
import * as CONSTANTS from '../constants.js'
44
import { BitswapMessage as Message } from '../message/index.js'
@@ -8,8 +8,8 @@ import { MsgQueue } from './msg-queue.js'
88
import type { BitswapWantBlockProgressEvents } from '../index.js'
99
import type { Network } from '../network.js'
1010
import type { Stats } from '../stats/index.js'
11-
import type { Libp2p } from '@libp2p/interface-libp2p'
12-
import type { PeerId } from '@libp2p/interface-peer-id'
11+
import type { Libp2p } from '@libp2p/interface'
12+
import type { PeerId } from '@libp2p/interface/peer-id'
1313
import type { Logger } from '@libp2p/logger'
1414
import type { AbortOptions } from '@multiformats/multiaddr'
1515
import type { CID } from 'multiformats/cid'

src/want-manager/msg-queue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { BitswapMessage as Message } from '../message/index.js'
44
import { logger } from '../utils/index.js'
55
import type { BitswapWantBlockProgressEvents } from '../index.js'
66
import type { BitswapNetworkWantProgressEvents, Network } from '../network.js'
7-
import type { PeerId } from '@libp2p/interface-peer-id'
7+
import type { PeerId } from '@libp2p/interface/peer-id'
88
import type { Logger } from '@libp2p/logger'
99
import type { CID } from 'multiformats/cid'
1010
import type { ProgressOptions } from 'progress-events'

src/wantlist/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { trackedMap } from '@libp2p/tracked-map'
1+
import { trackedMap } from '@libp2p/interface/metrics/tracked-map'
22
import { base58btc } from 'multiformats/bases/base58'
33
import { Message } from '../message/message.js'
44
import { WantListEntry as Entry } from './entry.js'
55
import type { Stats } from '../stats/index.js'
6-
import type { Libp2p } from '@libp2p/interface-libp2p'
6+
import type { Libp2p } from '@libp2p/interface'
77
import type { CID } from 'multiformats/cid'
88

99
const WantType = {

test/bitswap-mock-internals.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-env mocha */
22
/* eslint max-nested-callbacks: ["error", 5] */
33

4-
import { isPeerId, type PeerId } from '@libp2p/interface-peer-id'
4+
import { isPeerId, type PeerId } from '@libp2p/interface/peer-id'
55
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
66
import { expect } from 'aegir/chai'
77
import { MemoryBlockstore } from 'blockstore-core/memory'

test/bitswap-stats.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,10 @@ import { BitswapMessage as Message } from '../src/message/index.js'
88
import { createLibp2pNode } from './utils/create-libp2p-node.js'
99
import { makeBlocks } from './utils/make-blocks.js'
1010
import { makePeerIds } from './utils/make-peer-id.js'
11-
import type { Libp2p } from '@libp2p/interface-libp2p'
12-
import type { PeerId } from '@libp2p/interface-peer-id'
11+
import type { Libp2p } from '@libp2p/interface'
12+
import type { PeerId } from '@libp2p/interface/peer-id'
1313
import type { CID } from 'multiformats/cid'
1414

15-
/**
16-
* @typedef {import('@libp2p/interface-libp2p').Libp2p} Libp2p
17-
* @typedef {import('multiformats/cid').CID} CID
18-
*/
19-
2015
const expectedStats = [
2116
'blocksReceived',
2217
'dataReceived',

test/bitswap.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { BitswapMessage as Message } from '../src/message/index.js'
1111
import { createLibp2pNode } from './utils/create-libp2p-node.js'
1212
import { orderedFinish } from './utils/helpers.js'
1313
import { makeBlocks } from './utils/make-blocks.js'
14-
import type { Libp2p } from '@libp2p/interface-libp2p'
14+
import type { Libp2p } from '@libp2p/interface'
1515
import type { DualKadDHT } from '@libp2p/kad-dht'
1616

1717
/**

test/decision-engine/decision-engine.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { makeBlocks } from '../utils/make-blocks.js'
2020
import { makePeerId, makePeerIds } from '../utils/make-peer-id.js'
2121
import { mockNetwork } from '../utils/mocks.js'
2222
import type { Network } from '../../src/network.js'
23-
import type { PeerId } from '@libp2p/interface-peer-id'
23+
import type { PeerId } from '@libp2p/interface/peer-id'
2424
import type { Blockstore } from 'interface-blockstore'
2525

2626
const sum = (nums: number[]): number => nums.reduce((a, b) => a + b, 0)

test/decision-engine/ledger.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
44
import { expect } from 'aegir/chai'
55
import { Ledger } from '../../src/decision-engine/ledger.js'
6-
import type { PeerId } from '@libp2p/interface-peer-id'
6+
import type { PeerId } from '@libp2p/interface/peer-id'
77

88
describe('Ledger', () => {
99
/** @type {} */

test/decision-engine/req-queue.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
44
import { expect } from 'aegir/chai'
55
import { RequestQueue } from '../../src/decision-engine/req-queue.js'
6-
import type { PeerId } from '@libp2p/interface-peer-id'
6+
import type { PeerId } from '@libp2p/interface/peer-id'
77

88
describe('Request Queue', () => {
99
let peerIds: PeerId[]

test/decision-engine/task-merger.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
44
import { expect } from 'aegir/chai'
55
import { RequestQueue } from '../../src/decision-engine/req-queue.js'
66
import { DefaultTaskMerger } from '../../src/decision-engine/task-merger.js'
7-
import type { PeerId } from '@libp2p/interface-peer-id'
7+
import type { PeerId } from '@libp2p/interface/peer-id'
88

99
interface Task {
1010
topic: string

0 commit comments

Comments
 (0)