@ledgerhq/hw-transport-node-hid-singleton 6.11.0 → 6.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/lib/TransportNodeHid.d.ts +7 -0
- package/lib/TransportNodeHid.d.ts.map +1 -1
- package/lib/TransportNodeHid.js +33 -0
- package/lib/TransportNodeHid.js.map +1 -1
- package/lib/listenDevices.js +1 -1
- package/lib/listenDevices.js.map +1 -1
- package/lib-es/TransportNodeHid.d.ts +7 -0
- package/lib-es/TransportNodeHid.d.ts.map +1 -1
- package/lib-es/TransportNodeHid.js +33 -0
- package/lib-es/TransportNodeHid.js.map +1 -1
- package/lib-es/listenDevices.js +1 -1
- package/lib-es/listenDevices.js.map +1 -1
- package/package.json +5 -5
- package/src/TransportNodeHid.ts +31 -1
package/README.md
CHANGED
|
@@ -17,10 +17,12 @@ Allows to communicate with Ledger Hardware Wallets.
|
|
|
17
17
|
|
|
18
18
|
* [TransportNodeHidSingleton](#transportnodehidsingleton)
|
|
19
19
|
* [Examples](#examples)
|
|
20
|
+
* [exchange](#exchange)
|
|
21
|
+
* [Parameters](#parameters)
|
|
20
22
|
* [isSupported](#issupported)
|
|
21
23
|
* [list](#list)
|
|
22
24
|
* [listen](#listen)
|
|
23
|
-
* [Parameters](#parameters)
|
|
25
|
+
* [Parameters](#parameters-1)
|
|
24
26
|
* [disconnect](#disconnect)
|
|
25
27
|
* [open](#open)
|
|
26
28
|
|
|
@@ -38,6 +40,16 @@ import TransportNodeHid from "@ledgerhq/hw-transport-node-hid-singleton";
|
|
|
38
40
|
TransportNodeHid.create().then(transport => ...)
|
|
39
41
|
```
|
|
40
42
|
|
|
43
|
+
#### exchange
|
|
44
|
+
|
|
45
|
+
Exchange with the device using APDU protocol.
|
|
46
|
+
|
|
47
|
+
##### Parameters
|
|
48
|
+
|
|
49
|
+
* `apdu` **[Buffer](https://nodejs.org/api/buffer.html)**
|
|
50
|
+
|
|
51
|
+
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Buffer](https://nodejs.org/api/buffer.html)>** a promise of apdu response
|
|
52
|
+
|
|
41
53
|
#### isSupported
|
|
42
54
|
|
|
43
55
|
#### list
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import TransportNodeHidNoEvents from "@ledgerhq/hw-transport-node-hid-noevents";
|
|
2
3
|
import type { Observer, DescriptorEvent, Subscription } from "@ledgerhq/hw-transport";
|
|
3
4
|
/**
|
|
@@ -27,6 +28,12 @@ export default class TransportNodeHidSingleton extends TransportNodeHidNoEvents
|
|
|
27
28
|
* if path="" is not provided, the library will take the first device
|
|
28
29
|
*/
|
|
29
30
|
static open(): Promise<TransportNodeHidSingleton>;
|
|
31
|
+
/**
|
|
32
|
+
* Exchange with the device using APDU protocol.
|
|
33
|
+
* @param apdu
|
|
34
|
+
* @returns a promise of apdu response
|
|
35
|
+
*/
|
|
36
|
+
exchange(apdu: Buffer): Promise<Buffer>;
|
|
30
37
|
close(): Promise<void>;
|
|
31
38
|
}
|
|
32
39
|
//# sourceMappingURL=TransportNodeHid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransportNodeHid.d.ts","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":"AACA,OAAO,wBAEN,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TransportNodeHid.d.ts","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":";AACA,OAAO,wBAEN,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAsBhC;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,wBAAwB;IAC7E;;OAEG;IACH,MAAM,CAAC,WAAW,yBAAwC;IAE1D;;OAEG;IACH,MAAM,CAAC,IAAI,qBAAiC;IAE5C;OACG;IACH,MAAM,CAAC,MAAM,aAAc,SAAS,gBAAgB,GAAG,CAAC,CAAC,KAAG,YAAY,CAqDtE;IAEF;;OAEG;WACU,UAAU;IASvB;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAqCjD;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvB"}
|
package/lib/TransportNodeHid.js
CHANGED
|
@@ -91,6 +91,16 @@ var devices_1 = require("@ledgerhq/devices");
|
|
|
91
91
|
var errors_1 = require("@ledgerhq/errors");
|
|
92
92
|
var listenDevices_1 = require("./listenDevices");
|
|
93
93
|
var transportInstance;
|
|
94
|
+
var DISCONNECT_TIMEOUT = 5000;
|
|
95
|
+
var disconnectTimeout;
|
|
96
|
+
var clearDisconnectTimeout = function () {
|
|
97
|
+
if (disconnectTimeout) {
|
|
98
|
+
clearTimeout(disconnectTimeout);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
var setDisconnectTimeout = function () {
|
|
102
|
+
disconnectTimeout = setTimeout(function () { return TransportNodeHidSingleton.disconnect(); }, DISCONNECT_TIMEOUT);
|
|
103
|
+
};
|
|
94
104
|
/**
|
|
95
105
|
* node-hid Transport implementation
|
|
96
106
|
* @example
|
|
@@ -114,6 +124,7 @@ var TransportNodeHidSingleton = /** @class */ (function (_super) {
|
|
|
114
124
|
transportInstance.emit("disconnect");
|
|
115
125
|
transportInstance = null;
|
|
116
126
|
}
|
|
127
|
+
clearDisconnectTimeout();
|
|
117
128
|
return [2 /*return*/];
|
|
118
129
|
});
|
|
119
130
|
});
|
|
@@ -122,6 +133,7 @@ var TransportNodeHidSingleton = /** @class */ (function (_super) {
|
|
|
122
133
|
* if path="" is not provided, the library will take the first device
|
|
123
134
|
*/
|
|
124
135
|
TransportNodeHidSingleton.open = function () {
|
|
136
|
+
clearDisconnectTimeout();
|
|
125
137
|
return Promise.resolve().then(function () {
|
|
126
138
|
if (transportInstance) {
|
|
127
139
|
(0, logs_1.log)("hid-verbose", "reusing opened transport instance");
|
|
@@ -150,6 +162,27 @@ var TransportNodeHidSingleton = /** @class */ (function (_super) {
|
|
|
150
162
|
return transportInstance;
|
|
151
163
|
});
|
|
152
164
|
};
|
|
165
|
+
/**
|
|
166
|
+
* Exchange with the device using APDU protocol.
|
|
167
|
+
* @param apdu
|
|
168
|
+
* @returns a promise of apdu response
|
|
169
|
+
*/
|
|
170
|
+
TransportNodeHidSingleton.prototype.exchange = function (apdu) {
|
|
171
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
172
|
+
var result;
|
|
173
|
+
return __generator(this, function (_a) {
|
|
174
|
+
switch (_a.label) {
|
|
175
|
+
case 0:
|
|
176
|
+
clearDisconnectTimeout();
|
|
177
|
+
return [4 /*yield*/, _super.prototype.exchange.call(this, apdu)];
|
|
178
|
+
case 1:
|
|
179
|
+
result = _a.sent();
|
|
180
|
+
setDisconnectTimeout();
|
|
181
|
+
return [2 /*return*/, result];
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
};
|
|
153
186
|
TransportNodeHidSingleton.prototype.close = function () {
|
|
154
187
|
// intentionally, a close will not effectively close the hid connection
|
|
155
188
|
return Promise.resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransportNodeHid.js","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA2B;AAC3B,yGAEkD;AAMlD,uCAAqC;AACrC,6CAAyD;AACzD,2CAAkD;AAClD,iDAAgD;AAChD,IAAI,iBAAiB,CAAC;AACtB;;;;;;GAMG;AAEH;IAAuD,6CAAwB;IAA/E;;
|
|
1
|
+
{"version":3,"file":"TransportNodeHid.js","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":"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"}
|
package/lib/listenDevices.js
CHANGED
|
@@ -9,7 +9,7 @@ var devices_1 = require("@ledgerhq/devices");
|
|
|
9
9
|
var logs_1 = require("@ledgerhq/logs");
|
|
10
10
|
var deviceToLog = function (_a) {
|
|
11
11
|
var productId = _a.productId, locationId = _a.locationId, deviceAddress = _a.deviceAddress;
|
|
12
|
-
return "productId="
|
|
12
|
+
return "productId=".concat(productId, " locationId=").concat(locationId, " deviceAddress=").concat(deviceAddress);
|
|
13
13
|
};
|
|
14
14
|
var usbDebounce = 1000;
|
|
15
15
|
var setUsbDebounce = function (n) {
|
package/lib/listenDevices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listenDevices.js","sourceRoot":"","sources":["../src/listenDevices.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAsC;AACtC,6CAAsD;AACtD,uCAAqC;AAWrC,IAAM,WAAW,GAAG,UAAC,EAAwC;QAAtC,SAAS,eAAA,EAAE,UAAU,gBAAA,EAAE,aAAa,mBAAA;IACzD,OAAA,
|
|
1
|
+
{"version":3,"file":"listenDevices.js","sourceRoot":"","sources":["../src/listenDevices.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAsC;AACtC,6CAAsD;AACtD,uCAAqC;AAWrC,IAAM,WAAW,GAAG,UAAC,EAAwC;QAAtC,SAAS,eAAA,EAAE,UAAU,gBAAA,EAAE,aAAa,mBAAA;IACzD,OAAA,oBAAa,SAAS,yBAAe,UAAU,4BAAkB,aAAa,CAAE;AAAhF,CAAgF,CAAC;AAEnF,IAAI,WAAW,GAAG,IAAI,CAAC;AAChB,IAAM,cAAc,GAAG,UAAC,CAAS;IACtC,WAAW,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AACF,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,IAAM,OAAO,GAAG;IACd,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,IAAI,CAAC;QAClB,0BAAS,CAAC,eAAe,EAAE,CAAC;KAC7B;IAED,OAAO,cAAO,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,6EAA6E;AAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;IACjB,IAAI,UAAU,EAAE;QACd,0DAA0D;QAC1D,0BAAS,CAAC,cAAc,EAAE,CAAC;KAC5B;AACH,CAAC,CAAC,CAAC;AACI,IAAM,aAAa,GAAG,UAC3B,KAA6B,EAC7B,QAAgC;IAEhC,IAAM,SAAS,GAAG,OAAO,EAAE,CAAC;IAC5B,IAAM,QAAQ,GAAG,MAAM,GAAG,2BAAiB,CAAC;IAC5C,IAAM,WAAW,GAAG,SAAS,GAAG,2BAAiB,CAAC;IAClD,IAAI,OAAO,CAAC;IAEZ,IAAM,GAAG,GAAG,UAAC,MAAM;QACjB,IAAA,UAAG,EAAC,eAAe,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,EAAE;YACZ,wEAAwE;YACxE,mGAAmG;YACnG,OAAO,GAAG,UAAU,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,CAAC;gBACd,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC,EAAE,WAAW,CAAC,CAAC;SACjB;IACH,CAAC,CAAC;IAEF,IAAM,MAAM,GAAG,UAAC,MAAM;QACpB,IAAA,UAAG,EAAC,eAAe,EAAE,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvD,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;SAChB;aAAM;YACL,QAAQ,CAAC,MAAM,CAAC,CAAC;SAClB;IACH,CAAC,CAAC;IAEF,0BAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5B,0BAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,IAAI,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,mFAAmF;QACnF,0BAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7B,mFAAmF;QACnF,0BAAS,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnC,SAAS,EAAE,CAAC;IACd,CAAC,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,aAAa,iBA2CxB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import TransportNodeHidNoEvents from "@ledgerhq/hw-transport-node-hid-noevents";
|
|
2
3
|
import type { Observer, DescriptorEvent, Subscription } from "@ledgerhq/hw-transport";
|
|
3
4
|
/**
|
|
@@ -27,6 +28,12 @@ export default class TransportNodeHidSingleton extends TransportNodeHidNoEvents
|
|
|
27
28
|
* if path="" is not provided, the library will take the first device
|
|
28
29
|
*/
|
|
29
30
|
static open(): Promise<TransportNodeHidSingleton>;
|
|
31
|
+
/**
|
|
32
|
+
* Exchange with the device using APDU protocol.
|
|
33
|
+
* @param apdu
|
|
34
|
+
* @returns a promise of apdu response
|
|
35
|
+
*/
|
|
36
|
+
exchange(apdu: Buffer): Promise<Buffer>;
|
|
30
37
|
close(): Promise<void>;
|
|
31
38
|
}
|
|
32
39
|
//# sourceMappingURL=TransportNodeHid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransportNodeHid.d.ts","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":"AACA,OAAO,wBAEN,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TransportNodeHid.d.ts","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":";AACA,OAAO,wBAEN,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAsBhC;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,wBAAwB;IAC7E;;OAEG;IACH,MAAM,CAAC,WAAW,yBAAwC;IAE1D;;OAEG;IACH,MAAM,CAAC,IAAI,qBAAiC;IAE5C;OACG;IACH,MAAM,CAAC,MAAM,aAAc,SAAS,gBAAgB,GAAG,CAAC,CAAC,KAAG,YAAY,CAqDtE;IAEF;;OAEG;WACU,UAAU;IASvB;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAqCjD;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvB"}
|
|
@@ -67,6 +67,16 @@ import { identifyUSBProductId } from "@ledgerhq/devices";
|
|
|
67
67
|
import { CantOpenDevice } from "@ledgerhq/errors";
|
|
68
68
|
import { listenDevices } from "./listenDevices";
|
|
69
69
|
var transportInstance;
|
|
70
|
+
var DISCONNECT_TIMEOUT = 5000;
|
|
71
|
+
var disconnectTimeout;
|
|
72
|
+
var clearDisconnectTimeout = function () {
|
|
73
|
+
if (disconnectTimeout) {
|
|
74
|
+
clearTimeout(disconnectTimeout);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
var setDisconnectTimeout = function () {
|
|
78
|
+
disconnectTimeout = setTimeout(function () { return TransportNodeHidSingleton.disconnect(); }, DISCONNECT_TIMEOUT);
|
|
79
|
+
};
|
|
70
80
|
/**
|
|
71
81
|
* node-hid Transport implementation
|
|
72
82
|
* @example
|
|
@@ -90,6 +100,7 @@ var TransportNodeHidSingleton = /** @class */ (function (_super) {
|
|
|
90
100
|
transportInstance.emit("disconnect");
|
|
91
101
|
transportInstance = null;
|
|
92
102
|
}
|
|
103
|
+
clearDisconnectTimeout();
|
|
93
104
|
return [2 /*return*/];
|
|
94
105
|
});
|
|
95
106
|
});
|
|
@@ -98,6 +109,7 @@ var TransportNodeHidSingleton = /** @class */ (function (_super) {
|
|
|
98
109
|
* if path="" is not provided, the library will take the first device
|
|
99
110
|
*/
|
|
100
111
|
TransportNodeHidSingleton.open = function () {
|
|
112
|
+
clearDisconnectTimeout();
|
|
101
113
|
return Promise.resolve().then(function () {
|
|
102
114
|
if (transportInstance) {
|
|
103
115
|
log("hid-verbose", "reusing opened transport instance");
|
|
@@ -126,6 +138,27 @@ var TransportNodeHidSingleton = /** @class */ (function (_super) {
|
|
|
126
138
|
return transportInstance;
|
|
127
139
|
});
|
|
128
140
|
};
|
|
141
|
+
/**
|
|
142
|
+
* Exchange with the device using APDU protocol.
|
|
143
|
+
* @param apdu
|
|
144
|
+
* @returns a promise of apdu response
|
|
145
|
+
*/
|
|
146
|
+
TransportNodeHidSingleton.prototype.exchange = function (apdu) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
148
|
+
var result;
|
|
149
|
+
return __generator(this, function (_a) {
|
|
150
|
+
switch (_a.label) {
|
|
151
|
+
case 0:
|
|
152
|
+
clearDisconnectTimeout();
|
|
153
|
+
return [4 /*yield*/, _super.prototype.exchange.call(this, apdu)];
|
|
154
|
+
case 1:
|
|
155
|
+
result = _a.sent();
|
|
156
|
+
setDisconnectTimeout();
|
|
157
|
+
return [2 /*return*/, result];
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
};
|
|
129
162
|
TransportNodeHidSingleton.prototype.close = function () {
|
|
130
163
|
// intentionally, a close will not effectively close the hid connection
|
|
131
164
|
return Promise.resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransportNodeHid.js","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,wBAAwB,EAAE,EAC/B,UAAU,GACX,MAAM,0CAA0C,CAAC;AAMlD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,IAAI,iBAAiB,CAAC;AACtB;;;;;;GAMG;AAEH;IAAuD,6CAAwB;IAA/E;;
|
|
1
|
+
{"version":3,"file":"TransportNodeHid.js","sourceRoot":"","sources":["../src/TransportNodeHid.ts"],"names":[],"mappings":"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"}
|
package/lib-es/listenDevices.js
CHANGED
|
@@ -3,7 +3,7 @@ import { ledgerUSBVendorId } from "@ledgerhq/devices";
|
|
|
3
3
|
import { log } from "@ledgerhq/logs";
|
|
4
4
|
var deviceToLog = function (_a) {
|
|
5
5
|
var productId = _a.productId, locationId = _a.locationId, deviceAddress = _a.deviceAddress;
|
|
6
|
-
return "productId="
|
|
6
|
+
return "productId=".concat(productId, " locationId=").concat(locationId, " deviceAddress=").concat(deviceAddress);
|
|
7
7
|
};
|
|
8
8
|
var usbDebounce = 1000;
|
|
9
9
|
export var setUsbDebounce = function (n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listenDevices.js","sourceRoot":"","sources":["../src/listenDevices.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAWrC,IAAM,WAAW,GAAG,UAAC,EAAwC;QAAtC,SAAS,eAAA,EAAE,UAAU,gBAAA,EAAE,aAAa,mBAAA;IACzD,OAAA,
|
|
1
|
+
{"version":3,"file":"listenDevices.js","sourceRoot":"","sources":["../src/listenDevices.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAWrC,IAAM,WAAW,GAAG,UAAC,EAAwC;QAAtC,SAAS,eAAA,EAAE,UAAU,gBAAA,EAAE,aAAa,mBAAA;IACzD,OAAA,oBAAa,SAAS,yBAAe,UAAU,4BAAkB,aAAa,CAAE;AAAhF,CAAgF,CAAC;AAEnF,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,CAAS;IACtC,WAAW,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,IAAM,OAAO,GAAG;IACd,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,IAAI,CAAC;QAClB,SAAS,CAAC,eAAe,EAAE,CAAC;KAC7B;IAED,OAAO,cAAO,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,6EAA6E;AAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;IACjB,IAAI,UAAU,EAAE;QACd,0DAA0D;QAC1D,SAAS,CAAC,cAAc,EAAE,CAAC;KAC5B;AACH,CAAC,CAAC,CAAC;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,UAC3B,KAA6B,EAC7B,QAAgC;IAEhC,IAAM,SAAS,GAAG,OAAO,EAAE,CAAC;IAC5B,IAAM,QAAQ,GAAG,MAAM,GAAG,iBAAiB,CAAC;IAC5C,IAAM,WAAW,GAAG,SAAS,GAAG,iBAAiB,CAAC;IAClD,IAAI,OAAO,CAAC;IAEZ,IAAM,GAAG,GAAG,UAAC,MAAM;QACjB,GAAG,CAAC,eAAe,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,EAAE;YACZ,wEAAwE;YACxE,mGAAmG;YACnG,OAAO,GAAG,UAAU,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,CAAC;gBACd,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC,EAAE,WAAW,CAAC,CAAC;SACjB;IACH,CAAC,CAAC;IAEF,IAAM,MAAM,GAAG,UAAC,MAAM;QACpB,GAAG,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvD,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;SAChB;aAAM;YACL,QAAQ,CAAC,MAAM,CAAC,CAAC;SAClB;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,IAAI,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,mFAAmF;QACnF,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7B,mFAAmF;QACnF,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnC,SAAS,EAAE,CAAC;IACd,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/hw-transport-node-hid-singleton",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.23.0",
|
|
4
4
|
"description": "Ledger Hardware Wallet Node implementation of the communication layer, using node-hid and usb-detection",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"types": "lib/TransportNodeHid.d.ts",
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ledgerhq/devices": "^6.
|
|
30
|
+
"@ledgerhq/devices": "^6.20.0",
|
|
31
31
|
"@ledgerhq/errors": "^6.10.0",
|
|
32
|
-
"@ledgerhq/hw-transport": "^6.
|
|
33
|
-
"@ledgerhq/hw-transport-node-hid-noevents": "^6.
|
|
32
|
+
"@ledgerhq/hw-transport": "^6.20.0",
|
|
33
|
+
"@ledgerhq/hw-transport-node-hid-noevents": "^6.20.0",
|
|
34
34
|
"@ledgerhq/logs": "^6.10.0",
|
|
35
35
|
"lodash": "^4.17.21",
|
|
36
36
|
"node-hid": "2.1.1",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"watch": "bash ../../script/watch.sh",
|
|
43
43
|
"doc": "bash ../../script/doc.sh"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "aa41abf0cb3c375d677f9c2739956b3a2566d852"
|
|
46
46
|
}
|
package/src/TransportNodeHid.ts
CHANGED
|
@@ -12,6 +12,22 @@ import { identifyUSBProductId } from "@ledgerhq/devices";
|
|
|
12
12
|
import { CantOpenDevice } from "@ledgerhq/errors";
|
|
13
13
|
import { listenDevices } from "./listenDevices";
|
|
14
14
|
let transportInstance;
|
|
15
|
+
|
|
16
|
+
const DISCONNECT_TIMEOUT = 5000;
|
|
17
|
+
let disconnectTimeout;
|
|
18
|
+
const clearDisconnectTimeout = () => {
|
|
19
|
+
if (disconnectTimeout) {
|
|
20
|
+
clearTimeout(disconnectTimeout);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const setDisconnectTimeout = () => {
|
|
25
|
+
disconnectTimeout = setTimeout(
|
|
26
|
+
() => TransportNodeHidSingleton.disconnect(),
|
|
27
|
+
DISCONNECT_TIMEOUT
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
|
|
15
31
|
/**
|
|
16
32
|
* node-hid Transport implementation
|
|
17
33
|
* @example
|
|
@@ -97,12 +113,14 @@ export default class TransportNodeHidSingleton extends TransportNodeHidNoEvents
|
|
|
97
113
|
transportInstance.emit("disconnect");
|
|
98
114
|
transportInstance = null;
|
|
99
115
|
}
|
|
116
|
+
clearDisconnectTimeout();
|
|
100
117
|
}
|
|
101
118
|
|
|
102
119
|
/**
|
|
103
120
|
* if path="" is not provided, the library will take the first device
|
|
104
121
|
*/
|
|
105
122
|
static open(): Promise<TransportNodeHidSingleton> {
|
|
123
|
+
clearDisconnectTimeout();
|
|
106
124
|
return Promise.resolve().then(() => {
|
|
107
125
|
if (transportInstance) {
|
|
108
126
|
log("hid-verbose", "reusing opened transport instance");
|
|
@@ -138,7 +156,19 @@ export default class TransportNodeHidSingleton extends TransportNodeHidNoEvents
|
|
|
138
156
|
});
|
|
139
157
|
}
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Exchange with the device using APDU protocol.
|
|
161
|
+
* @param apdu
|
|
162
|
+
* @returns a promise of apdu response
|
|
163
|
+
*/
|
|
164
|
+
async exchange(apdu: Buffer): Promise<Buffer> {
|
|
165
|
+
clearDisconnectTimeout();
|
|
166
|
+
const result = await super.exchange(apdu);
|
|
167
|
+
setDisconnectTimeout();
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
close(): Promise<void> {
|
|
142
172
|
// intentionally, a close will not effectively close the hid connection
|
|
143
173
|
return Promise.resolve();
|
|
144
174
|
}
|