@ledgerhq/hw-transport-webusb
Advanced tools
Comparing version 4.70.3 to 4.71.0
@@ -36,3 +36,2 @@ "use strict"; | ||
var configurationValue = 1; | ||
var interfaceNumber = 2; | ||
var endpointNumber = 3; | ||
@@ -51,3 +50,3 @@ | ||
function TransportWebUSB(device) { | ||
function TransportWebUSB(device, interfaceNumber) { | ||
_classCallCheck(this, TransportWebUSB); | ||
@@ -60,2 +59,3 @@ | ||
_this.device = device; | ||
_this.interfaceNumber = interfaceNumber; | ||
_this.deviceModel = (0, _devices.identifyUSBProductId)(device.productId); | ||
@@ -101,3 +101,3 @@ return _this; | ||
_context.next = 4; | ||
return this.device.releaseInterface(interfaceNumber); | ||
return this.device.releaseInterface(this.interfaceNumber); | ||
@@ -224,3 +224,3 @@ case 4: | ||
var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(device) { | ||
var transport, onDisconnect; | ||
var iface, interfaceNumber, transport, onDisconnect; | ||
return regeneratorRuntime.wrap(function _callee4$(_context4) { | ||
@@ -247,21 +247,37 @@ while (1) { | ||
case 7: | ||
_context4.prev = 7; | ||
_context4.next = 10; | ||
iface = device.configurations[0].interfaces.find(function (_ref5) { | ||
var alternates = _ref5.alternates; | ||
return alternates.some(function (a) { | ||
return a.interfaceClass === 255; | ||
}); | ||
}); | ||
if (iface) { | ||
_context4.next = 10; | ||
break; | ||
} | ||
throw new _errors.TransportInterfaceNotAvailable("No WebUSB interface found for your Ledger device. Please upgrade firmware or contact techsupport."); | ||
case 10: | ||
interfaceNumber = iface.interfaceNumber; | ||
_context4.prev = 11; | ||
_context4.next = 14; | ||
return device.claimInterface(interfaceNumber); | ||
case 10: | ||
_context4.next = 17; | ||
case 14: | ||
_context4.next = 21; | ||
break; | ||
case 12: | ||
_context4.prev = 12; | ||
_context4.t0 = _context4["catch"](7); | ||
_context4.next = 16; | ||
case 16: | ||
_context4.prev = 16; | ||
_context4.t0 = _context4["catch"](11); | ||
_context4.next = 20; | ||
return device.close(); | ||
case 16: | ||
case 20: | ||
throw new _errors.TransportInterfaceNotAvailable(_context4.t0.message); | ||
case 17: | ||
transport = new TransportWebUSB(device); | ||
case 21: | ||
transport = new TransportWebUSB(device, interfaceNumber); | ||
@@ -281,3 +297,3 @@ onDisconnect = function onDisconnect(e) { | ||
case 21: | ||
case 25: | ||
case "end": | ||
@@ -287,3 +303,3 @@ return _context4.stop(); | ||
} | ||
}, _callee4, this, [[7, 12]]); | ||
}, _callee4, this, [[11, 16]]); | ||
})); | ||
@@ -290,0 +306,0 @@ |
{ | ||
"name": "@ledgerhq/hw-transport-webusb", | ||
"version": "4.70.3", | ||
"version": "4.71.0", | ||
"description": "Ledger Hardware Wallet WebUSB implementation of the communication layer", | ||
@@ -27,5 +27,5 @@ "keywords": [ | ||
"dependencies": { | ||
"@ledgerhq/devices": "^4.70.3", | ||
"@ledgerhq/errors": "^4.70.3", | ||
"@ledgerhq/hw-transport": "^4.70.3", | ||
"@ledgerhq/devices": "^4.71.0", | ||
"@ledgerhq/errors": "^4.71.0", | ||
"@ledgerhq/hw-transport": "^4.71.0", | ||
"@ledgerhq/logs": "^4.70.0" | ||
@@ -43,3 +43,3 @@ }, | ||
}, | ||
"gitHead": "d636a666ed8e61d1704a7e957fbf5276c100334c" | ||
"gitHead": "2cbdd987d71668ee93ad14f2d19b205423defa60" | ||
} |
@@ -67,2 +67,3 @@ <img src="https://user-images.githubusercontent.com/211411/34776833-6f1ef4da-f618-11e7-8b13-f0697901d6a8.png" height="100" /> | ||
- `device` **USBDevice** | ||
- `interfaceNumber` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** | ||
@@ -69,0 +70,0 @@ #### Examples |
@@ -27,3 +27,2 @@ //@flow | ||
const configurationValue = 1; | ||
const interfaceNumber = 2; | ||
const endpointNumber = 3; | ||
@@ -43,6 +42,8 @@ | ||
packetSize = 64; | ||
interfaceNumber: number; | ||
constructor(device: USBDevice) { | ||
constructor(device: USBDevice, interfaceNumber: number) { | ||
super(); | ||
this.device = device; | ||
this.interfaceNumber = interfaceNumber; | ||
this.deviceModel = identifyUSBProductId(device.productId); | ||
@@ -123,2 +124,11 @@ } | ||
await device.reset(); | ||
const iface = device.configurations[0].interfaces.find(({ alternates }) => | ||
alternates.some(a => a.interfaceClass === 255) | ||
); | ||
if (!iface) { | ||
throw new TransportInterfaceNotAvailable( | ||
"No WebUSB interface found for your Ledger device. Please upgrade firmware or contact techsupport." | ||
); | ||
} | ||
const interfaceNumber = iface.interfaceNumber; | ||
try { | ||
@@ -130,3 +140,3 @@ await device.claimInterface(interfaceNumber); | ||
} | ||
const transport = new TransportWebUSB(device); | ||
const transport = new TransportWebUSB(device, interfaceNumber); | ||
const onDisconnect = e => { | ||
@@ -156,3 +166,3 @@ if (device === e.device) { | ||
await this.exchangeBusyPromise; | ||
await this.device.releaseInterface(interfaceNumber); | ||
await this.device.releaseInterface(this.interfaceNumber); | ||
await this.device.reset(); | ||
@@ -159,0 +169,0 @@ await this.device.close(); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
66110
775
129
Updated@ledgerhq/devices@^4.71.0
Updated@ledgerhq/errors@^4.71.0