1
1
import { CID } from 'multiformats/cid'
2
2
import { multiaddr } from '@multiformats/multiaddr'
3
- import errcode from 'err-code '
3
+ import { CodeError } from '@libp2p/interfaces/errors '
4
4
import {
5
5
Request ,
6
6
Response ,
@@ -24,11 +24,11 @@ export class DHT {
24
24
*/
25
25
async put ( key : Uint8Array , value : Uint8Array ) : Promise < void > {
26
26
if ( ! ( key instanceof Uint8Array ) ) {
27
- throw errcode ( new Error ( 'invalid key received' ) , 'ERR_INVALID_KEY' )
27
+ throw new CodeError ( 'invalid key received' , 'ERR_INVALID_KEY' )
28
28
}
29
29
30
30
if ( ! ( value instanceof Uint8Array ) ) {
31
- throw errcode ( new Error ( 'value received is not a Uint8Array' ) , 'ERR_INVALID_VALUE' )
31
+ throw new CodeError ( 'value received is not a Uint8Array' , 'ERR_INVALID_VALUE' )
32
32
}
33
33
34
34
const sh = await this . client . send ( {
@@ -43,15 +43,15 @@ export class DHT {
43
43
const message = await sh . read ( )
44
44
45
45
if ( message == null ) {
46
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
46
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
47
47
}
48
48
49
49
const response = Response . decode ( message )
50
50
51
51
await sh . close ( )
52
52
53
53
if ( response . type !== Response . Type . OK ) {
54
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT put failed' ) , 'ERR_DHT_PUT_FAILED' )
54
+ throw new CodeError ( response . error ?. msg ?? 'DHT put failed' , 'ERR_DHT_PUT_FAILED' )
55
55
}
56
56
}
57
57
@@ -60,7 +60,7 @@ export class DHT {
60
60
*/
61
61
async get ( key : Uint8Array ) : Promise < Uint8Array > {
62
62
if ( ! ( key instanceof Uint8Array ) ) {
63
- throw errcode ( new Error ( 'invalid key received' ) , 'ERR_INVALID_KEY' )
63
+ throw new CodeError ( 'invalid key received' , 'ERR_INVALID_KEY' )
64
64
}
65
65
66
66
const sh = await this . client . send ( {
@@ -74,19 +74,19 @@ export class DHT {
74
74
const message = await sh . read ( )
75
75
76
76
if ( message == null ) {
77
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
77
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
78
78
}
79
79
80
80
const response = Response . decode ( message )
81
81
82
82
await sh . close ( )
83
83
84
84
if ( response . type !== Response . Type . OK ) {
85
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT get failed' ) , 'ERR_DHT_GET_FAILED' )
85
+ throw new CodeError ( response . error ?. msg ?? 'DHT get failed' , 'ERR_DHT_GET_FAILED' )
86
86
}
87
87
88
88
if ( response . dht == null || response . dht . value == null ) {
89
- throw errcode ( new Error ( 'Invalid DHT get response' ) , 'ERR_DHT_GET_FAILED' )
89
+ throw new CodeError ( 'Invalid DHT get response' , 'ERR_DHT_GET_FAILED' )
90
90
}
91
91
92
92
return response . dht . value
@@ -97,7 +97,7 @@ export class DHT {
97
97
*/
98
98
async findPeer ( peerId : PeerId ) : Promise < PeerInfo > {
99
99
if ( ! isPeerId ( peerId ) ) {
100
- throw errcode ( new Error ( 'invalid peer id received' ) , 'ERR_INVALID_PEER_ID' )
100
+ throw new CodeError ( 'invalid peer id received' , 'ERR_INVALID_PEER_ID' )
101
101
}
102
102
103
103
const sh = await this . client . send ( {
@@ -111,19 +111,19 @@ export class DHT {
111
111
const message = await sh . read ( )
112
112
113
113
if ( message == null ) {
114
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
114
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
115
115
}
116
116
117
117
const response = Response . decode ( message )
118
118
119
119
await sh . close ( )
120
120
121
121
if ( response . type !== Response . Type . OK ) {
122
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT find peer failed' ) , 'ERR_DHT_FIND_PEER_FAILED' )
122
+ throw new CodeError ( response . error ?. msg ?? 'DHT find peer failed' , 'ERR_DHT_FIND_PEER_FAILED' )
123
123
}
124
124
125
125
if ( response . dht == null || response . dht . peer == null || response . dht . peer . addrs == null ) {
126
- throw errcode ( new Error ( 'Invalid response' ) , 'ERR_DHT_FIND_PEER_FAILED' )
126
+ throw new CodeError ( 'Invalid response' , 'ERR_DHT_FIND_PEER_FAILED' )
127
127
}
128
128
129
129
return {
@@ -138,7 +138,7 @@ export class DHT {
138
138
*/
139
139
async provide ( cid : CID ) {
140
140
if ( cid == null || CID . asCID ( cid ) == null ) {
141
- throw errcode ( new Error ( 'invalid cid received' ) , 'ERR_INVALID_CID' )
141
+ throw new CodeError ( 'invalid cid received' , 'ERR_INVALID_CID' )
142
142
}
143
143
144
144
const sh = await this . client . send ( {
@@ -152,15 +152,15 @@ export class DHT {
152
152
const message = await sh . read ( )
153
153
154
154
if ( message == null ) {
155
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
155
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
156
156
}
157
157
158
158
const response = Response . decode ( message )
159
159
160
160
await sh . close ( )
161
161
162
162
if ( response . type !== Response . Type . OK ) {
163
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT provide failed' ) , 'ERR_DHT_PROVIDE_FAILED' )
163
+ throw new CodeError ( response . error ?. msg ?? 'DHT provide failed' , 'ERR_DHT_PROVIDE_FAILED' )
164
164
}
165
165
}
166
166
@@ -169,7 +169,7 @@ export class DHT {
169
169
*/
170
170
async * findProviders ( cid : CID , count : number = 1 ) : AsyncIterable < PeerInfo > {
171
171
if ( cid == null || CID . asCID ( cid ) == null ) {
172
- throw errcode ( new Error ( 'invalid cid received' ) , 'ERR_INVALID_CID' )
172
+ throw new CodeError ( 'invalid cid received' , 'ERR_INVALID_CID' )
173
173
}
174
174
175
175
const sh = await this . client . send ( {
@@ -184,22 +184,22 @@ export class DHT {
184
184
let message = await sh . read ( )
185
185
186
186
if ( message == null ) {
187
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
187
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
188
188
}
189
189
190
190
// stream begin message
191
191
const response = Response . decode ( message )
192
192
193
193
if ( response . type !== Response . Type . OK ) {
194
194
await sh . close ( )
195
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT find providers failed' ) , 'ERR_DHT_FIND_PROVIDERS_FAILED' )
195
+ throw new CodeError ( response . error ?. msg ?? 'DHT find providers failed' , 'ERR_DHT_FIND_PROVIDERS_FAILED' )
196
196
}
197
197
198
198
while ( true ) {
199
199
message = await sh . read ( )
200
200
201
201
if ( message == null ) {
202
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
202
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
203
203
}
204
204
205
205
const response = DHTResponse . decode ( message )
@@ -220,7 +220,7 @@ export class DHT {
220
220
} else {
221
221
// Unexpected message received
222
222
await sh . close ( )
223
- throw errcode ( new Error ( 'unexpected message received' ) , 'ERR_UNEXPECTED_MESSAGE_RECEIVED' )
223
+ throw new CodeError ( 'unexpected message received' , 'ERR_UNEXPECTED_MESSAGE_RECEIVED' )
224
224
}
225
225
}
226
226
}
@@ -230,7 +230,7 @@ export class DHT {
230
230
*/
231
231
async * getClosestPeers ( key : Uint8Array ) : AsyncIterable < PeerInfo > {
232
232
if ( ! ( key instanceof Uint8Array ) ) {
233
- throw errcode ( new Error ( 'invalid key received' ) , 'ERR_INVALID_KEY' )
233
+ throw new CodeError ( 'invalid key received' , 'ERR_INVALID_KEY' )
234
234
}
235
235
236
236
const sh = await this . client . send ( {
@@ -245,21 +245,21 @@ export class DHT {
245
245
let message = await sh . read ( )
246
246
247
247
if ( message == null ) {
248
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
248
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
249
249
}
250
250
251
251
const response = Response . decode ( message )
252
252
253
253
if ( response . type !== Response . Type . OK ) {
254
254
await sh . close ( )
255
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT find providers failed' ) , 'ERR_DHT_FIND_PROVIDERS_FAILED' )
255
+ throw new CodeError ( response . error ?. msg ?? 'DHT find providers failed' , 'ERR_DHT_FIND_PROVIDERS_FAILED' )
256
256
}
257
257
258
258
while ( true ) {
259
259
message = await sh . read ( )
260
260
261
261
if ( message == null ) {
262
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
262
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
263
263
}
264
264
265
265
const response = DHTResponse . decode ( message )
@@ -282,7 +282,7 @@ export class DHT {
282
282
} else {
283
283
// Unexpected message received
284
284
await sh . close ( )
285
- throw errcode ( new Error ( 'unexpected message received' ) , 'ERR_UNEXPECTED_MESSAGE_RECEIVED' )
285
+ throw new CodeError ( 'unexpected message received' , 'ERR_UNEXPECTED_MESSAGE_RECEIVED' )
286
286
}
287
287
}
288
288
}
@@ -292,7 +292,7 @@ export class DHT {
292
292
*/
293
293
async getPublicKey ( peerId : PeerId ) {
294
294
if ( ! isPeerId ( peerId ) ) {
295
- throw errcode ( new Error ( 'invalid peer id received' ) , 'ERR_INVALID_PEER_ID' )
295
+ throw new CodeError ( 'invalid peer id received' , 'ERR_INVALID_PEER_ID' )
296
296
}
297
297
298
298
const sh = await this . client . send ( {
@@ -306,19 +306,19 @@ export class DHT {
306
306
const message = await sh . read ( )
307
307
308
308
if ( message == null ) {
309
- throw errcode ( new Error ( 'Empty response from remote' ) , 'ERR_EMPTY_RESPONSE' )
309
+ throw new CodeError ( 'Empty response from remote' , 'ERR_EMPTY_RESPONSE' )
310
310
}
311
311
312
312
const response = Response . decode ( message )
313
313
314
314
await sh . close ( )
315
315
316
316
if ( response . type !== Response . Type . OK ) {
317
- throw errcode ( new Error ( response . error ?. msg ?? 'DHT get public key failed' ) , 'ERR_DHT_GET_PUBLIC_KEY_FAILED' )
317
+ throw new CodeError ( response . error ?. msg ?? 'DHT get public key failed' , 'ERR_DHT_GET_PUBLIC_KEY_FAILED' )
318
318
}
319
319
320
320
if ( response . dht == null ) {
321
- throw errcode ( new Error ( 'Invalid response' ) , 'ERR_DHT_GET_PUBLIC_KEY_FAILED' )
321
+ throw new CodeError ( 'Invalid response' , 'ERR_DHT_GET_PUBLIC_KEY_FAILED' )
322
322
}
323
323
324
324
return response . dht . value
0 commit comments