@@ -10,7 +10,11 @@ import { ledgerUSBVendorId } from "@ledgerhq/devices";
10
10
import hidFraming from "@ledgerhq/devices/lib/hid-framing" ;
11
11
import { identifyUSBProductId , identifyProductName } from "@ledgerhq/devices" ;
12
12
import { DeviceModel } from "@ledgerhq/devices" ;
13
- import { TransportError , DisconnectedDevice } from "@ledgerhq/errors" ;
13
+ import {
14
+ TransportError ,
15
+ DisconnectedDevice ,
16
+ DisconnectedDeviceDuringOperation ,
17
+ } from "@ledgerhq/errors" ;
14
18
15
19
const filterInterface = ( device ) =>
16
20
[ "win32" , "darwin" ] . includes ( process . platform )
@@ -21,8 +25,6 @@ export function getDevices(): (Device & { deviceName?: string })[] {
21
25
return HID . devices ( ledgerUSBVendorId , 0x0 ) . filter ( filterInterface ) ;
22
26
}
23
27
24
- const isDisconnectedError = ( e ) =>
25
- e && e . message && e . message . indexOf ( "HID" ) >= 0 ;
26
28
/**
27
29
* node-hid Transport minimal implementation
28
30
* @example
@@ -109,12 +111,13 @@ export default class TransportNodeHidNoEvents extends Transport {
109
111
this . device . write ( data ) ;
110
112
return Promise . resolve ( ) ;
111
113
} catch ( e ) {
112
- if ( isDisconnectedError ( e ) ) {
114
+ const maybeMappedError =
115
+ e && e . message ? new DisconnectedDeviceDuringOperation ( e . message ) : e ;
116
+ if ( maybeMappedError instanceof DisconnectedDeviceDuringOperation ) {
113
117
this . setDisconnected ( ) ;
114
- return Promise . reject ( new DisconnectedDevice ( e . message ) ) ;
115
118
}
116
119
117
- return Promise . reject ( e ) ;
120
+ return Promise . reject ( maybeMappedError ) ;
118
121
}
119
122
} ;
120
123
readHID = ( ) : Promise < Buffer > =>
@@ -125,12 +128,15 @@ export default class TransportNodeHidNoEvents extends Transport {
125
128
}
126
129
127
130
if ( e ) {
128
- if ( isDisconnectedError ( e ) ) {
131
+ const maybeMappedError =
132
+ e && e . message
133
+ ? new DisconnectedDeviceDuringOperation ( e . message )
134
+ : e ;
135
+ if ( maybeMappedError instanceof DisconnectedDeviceDuringOperation ) {
129
136
this . setDisconnected ( ) ;
130
- return reject ( new DisconnectedDevice ( e . message ) ) ;
131
137
}
132
138
133
- reject ( e ) ;
139
+ reject ( maybeMappedError ) ;
134
140
} else {
135
141
const buffer = Buffer . from ( res ) ;
136
142
resolve ( buffer ) ;
0 commit comments