1
- import errCode from 'err-code '
1
+ import { CodeError } from '@libp2p/interfaces/errors '
2
2
import type { Direction } from '@libp2p/interface-connection'
3
3
4
4
export enum codes {
@@ -14,110 +14,109 @@ export enum codes {
14
14
ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS = 'ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS' ,
15
15
}
16
16
17
- export class WebRTCTransportError extends Error {
18
- constructor ( msg : string ) {
19
- super ( `WebRTC transport error: ${ msg } ` )
17
+ export class WebRTCTransportError extends CodeError {
18
+ constructor ( msg : string , code ?: string ) {
19
+ super ( `WebRTC transport error: ${ msg } ` , code ?? '' )
20
20
this . name = 'WebRTCTransportError'
21
21
}
22
22
}
23
23
24
24
export class ConnectionClosedError extends WebRTCTransportError {
25
25
constructor ( state : RTCPeerConnectionState , msg : string ) {
26
- super ( `peerconnection moved to state: ${ state } : ${ msg } ` )
26
+ super ( `peerconnection moved to state: ${ state } : ${ msg } ` , codes . ERR_CONNECTION_CLOSED )
27
27
this . name = 'WebRTC/ConnectionClosed'
28
28
}
29
29
}
30
30
31
- export function connectionClosedError ( state : RTCPeerConnectionState , msg : string ) : Error {
32
- return errCode ( new ConnectionClosedError ( state , msg ) , codes . ERR_CONNECTION_CLOSED )
31
+ export function connectionClosedError ( state : RTCPeerConnectionState , msg : string ) : ConnectionClosedError {
32
+ return new ConnectionClosedError ( state , msg )
33
33
}
34
34
35
35
export class DataChannelError extends WebRTCTransportError {
36
36
constructor ( streamLabel : string , msg : string ) {
37
- super ( `[stream: ${ streamLabel } ] data channel error: ${ msg } ` )
37
+ super ( `[stream: ${ streamLabel } ] data channel error: ${ msg } ` , codes . ERR_DATA_CHANNEL )
38
38
this . name = 'WebRTC/DataChannelError'
39
39
}
40
40
}
41
41
42
- export function dataChannelError ( streamLabel : string , msg : string ) : Error {
43
- return errCode ( new DataChannelError ( streamLabel , msg ) , codes . ERR_DATA_CHANNEL )
42
+ export function dataChannelError ( streamLabel : string , msg : string ) : DataChannelError {
43
+ return new DataChannelError ( streamLabel , msg )
44
44
}
45
45
46
46
export class InappropriateMultiaddrError extends WebRTCTransportError {
47
47
constructor ( msg : string ) {
48
- super ( `There was a problem with the Multiaddr which was passed in: ${ msg } ` )
48
+ super ( `There was a problem with the Multiaddr which was passed in: ${ msg } ` , codes . ERR_INVALID_MULTIADDR )
49
49
this . name = 'WebRTC/InappropriateMultiaddrError'
50
50
}
51
51
}
52
52
53
- export function inappropriateMultiaddr ( msg : string ) : Error {
54
- return errCode ( new InappropriateMultiaddrError ( msg ) , codes . ERR_INVALID_MULTIADDR )
53
+ export function inappropriateMultiaddr ( msg : string ) : InappropriateMultiaddrError {
54
+ return new InappropriateMultiaddrError ( msg )
55
55
}
56
56
57
57
export class InvalidArgumentError extends WebRTCTransportError {
58
58
constructor ( msg : string ) {
59
- super ( `There was a problem with a provided argument: ${ msg } ` )
59
+ super ( `There was a problem with a provided argument: ${ msg } ` , codes . ERR_INVALID_PARAMETERS )
60
60
this . name = 'WebRTC/InvalidArgumentError'
61
61
}
62
62
}
63
63
64
- export function invalidArgument ( msg : string ) : Error {
65
- return errCode ( new InvalidArgumentError ( msg ) , codes . ERR_INVALID_PARAMETERS )
64
+ export function invalidArgument ( msg : string ) : InvalidArgumentError {
65
+ return new InvalidArgumentError ( msg )
66
66
}
67
67
68
68
export class InvalidFingerprintError extends WebRTCTransportError {
69
69
constructor ( fingerprint : string , source : string ) {
70
- super ( `Invalid fingerprint "${ fingerprint } " within ${ source } ` )
70
+ super ( `Invalid fingerprint "${ fingerprint } " within ${ source } ` , codes . ERR_INVALID_FINGERPRINT )
71
71
this . name = 'WebRTC/InvalidFingerprintError'
72
72
}
73
73
}
74
74
75
- export function invalidFingerprint ( fingerprint : string , source : string ) : Error {
76
- return errCode ( new InvalidFingerprintError ( fingerprint , source ) , codes . ERR_INVALID_FINGERPRINT )
75
+ export function invalidFingerprint ( fingerprint : string , source : string ) : InvalidFingerprintError {
76
+ return new InvalidFingerprintError ( fingerprint , source )
77
77
}
78
78
79
79
export class OperationAbortedError extends WebRTCTransportError {
80
80
constructor ( context : string , abortReason : string ) {
81
- super ( `Signalled to abort because (${ abortReason } }) ${ context } ` )
81
+ super ( `Signalled to abort because (${ abortReason } }) ${ context } ` , codes . ERR_ALREADY_ABORTED )
82
82
this . name = 'WebRTC/OperationAbortedError'
83
83
}
84
84
}
85
85
86
- export function operationAborted ( context : string , reason : string ) : Error {
87
- return errCode ( new OperationAbortedError ( context , reason ) , codes . ERR_ALREADY_ABORTED )
86
+ export function operationAborted ( context : string , reason : string ) : OperationAbortedError {
87
+ return new OperationAbortedError ( context , reason )
88
88
}
89
89
90
90
export class OverStreamLimitError extends WebRTCTransportError {
91
91
constructor ( msg : string ) {
92
- super ( msg )
92
+ const code = msg . startsWith ( 'inbound' ) ? codes . ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS : codes . ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS
93
+ super ( msg , code )
93
94
this . name = 'WebRTC/OverStreamLimitError'
94
95
}
95
96
}
96
97
97
- export function overStreamLimit ( dir : Direction , proto : string ) : Error {
98
- const code = dir === 'inbound' ? codes . ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS : codes . ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS
99
- return errCode ( new OverStreamLimitError ( `${ dir } stream limit reached for protocol - ${ proto } ` ) , code )
98
+ export function overStreamLimit ( dir : Direction , proto : string ) : OverStreamLimitError {
99
+ return new OverStreamLimitError ( `${ dir } stream limit reached for protocol - ${ proto } ` )
100
100
}
101
101
102
102
export class UnimplementedError extends WebRTCTransportError {
103
103
constructor ( methodName : string ) {
104
- super ( `A method (${ methodName } ) was called though it has been intentionally left unimplemented.` )
104
+ super ( `A method (${ methodName } ) was called though it has been intentionally left unimplemented.` , codes . ERR_NOT_IMPLEMENTED )
105
105
this . name = 'WebRTC/UnimplementedError'
106
106
}
107
107
}
108
108
109
- export function unimplemented ( methodName : string ) : Error {
110
- return errCode ( new UnimplementedError ( methodName ) , codes . ERR_NOT_IMPLEMENTED )
109
+ export function unimplemented ( methodName : string ) : UnimplementedError {
110
+ return new UnimplementedError ( methodName )
111
111
}
112
112
113
113
export class UnsupportedHashAlgorithmError extends WebRTCTransportError {
114
114
constructor ( algo : string ) {
115
- const msg = `unsupported hash algorithm: ${ algo } `
116
- super ( msg )
115
+ super ( `unsupported hash algorithm: ${ algo } ` , codes . ERR_HASH_NOT_SUPPORTED )
117
116
this . name = 'WebRTC/UnsupportedHashAlgorithmError'
118
117
}
119
118
}
120
119
121
- export function unsupportedHashAlgorithm ( algorithm : string ) : Error {
122
- return errCode ( new UnsupportedHashAlgorithmError ( algorithm ) , codes . ERR_HASH_NOT_SUPPORTED )
120
+ export function unsupportedHashAlgorithm ( algorithm : string ) : UnsupportedHashAlgorithmError {
121
+ return new UnsupportedHashAlgorithmError ( algorithm )
123
122
}
0 commit comments