Socket
Socket
Sign inDemoInstall

@ledgerhq/hw-transport

Package Overview
Dependencies
Maintainers
7
Versions
366
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ledgerhq/hw-transport - npm Package Compare versions

Comparing version 4.2.0 to 4.3.0-beta.d226ed3b

75

lib/Transport.js

@@ -12,2 +12,6 @@ "use strict";

var _assign = require("babel-runtime/core-js/object/assign");
var _assign2 = _interopRequireDefault(_assign);
var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray");

@@ -181,2 +185,4 @@

}();
this.currentLock = null;
}

@@ -316,2 +322,61 @@

}, {
key: "globalLock",
value: function globalLock(methodName, f, ctx) {
var _this2 = this;
return function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var currentLock, _e;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
currentLock = _this2.currentLock;
if (!currentLock) {
_context2.next = 5;
break;
}
_e = new TransportError("Transport is busy (lock " + currentLock + ")", "TransportLocked");
//$FlowFixMe
(0, _assign2.default)(_e, { currentLock: currentLock, attemptedLock: methodName });
return _context2.abrupt("return", _promise2.default.reject(_e));
case 5:
_context2.prev = 5;
_this2.currentLock = methodName;
_context2.next = 9;
return f.apply(ctx, args);
case 9:
return _context2.abrupt("return", _context2.sent);
case 10:
_context2.prev = 10;
_this2.currentLock = null;
return _context2.finish(10);
case 13:
case "end":
return _context2.stop();
}
}
}, _callee2, _this2, [[5,, 10, 13]]);
}));
return function () {
return _ref2.apply(this, arguments);
};
}();
}
}], [{

@@ -329,3 +394,3 @@ key: "create",

value: function create() {
var _this2 = this;
var _this3 = this;

@@ -339,5 +404,5 @@ var openTimeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3000;

sub.unsubscribe();
reject(new TransportError(_this2.ErrorMessage_ListenTimeout, "ListenTimeout"));
reject(new TransportError(_this3.ErrorMessage_ListenTimeout, "ListenTimeout"));
}, listenTimeout);
var sub = _this2.listen({
var sub = _this3.listen({
next: function next(e) {

@@ -347,3 +412,3 @@ found = true;

clearTimeout(listenTimeoutId);
_this2.open(e.descriptor, openTimeout).then(resolve, reject);
_this3.open(e.descriptor, openTimeout).then(resolve, reject);
},

@@ -357,3 +422,3 @@ error: function error(e) {

if (!found) {
reject(new TransportError(_this2.ErrorMessage_NoDeviceFound, "NoDeviceFound"));
reject(new TransportError(_this3.ErrorMessage_NoDeviceFound, "NoDeviceFound"));
}

@@ -360,0 +425,0 @@ }

2

package.json
{
"name": "@ledgerhq/hw-transport",
"version": "4.2.0",
"version": "4.3.0-beta.d226ed3b",
"description": "Ledger Hardware Wallet common interface of the communication layer",

@@ -5,0 +5,0 @@ "keywords": [

@@ -287,4 +287,30 @@ //@flow

currentLock = null;
globalLock<R, A: any[]>(
methodName: string,
f: (...args: A) => Promise<R>,
ctx: *
): (...args: A) => Promise<R> {
return async (...args) => {
const { currentLock } = this;
if (currentLock) {
const e = new TransportError(
"Transport is busy (lock " + currentLock + ")",
"TransportLocked"
);
//$FlowFixMe
Object.assign(e, { currentLock, attemptedLock: methodName });
return Promise.reject(e);
}
try {
this.currentLock = methodName;
return await f.apply(ctx, args);
} finally {
this.currentLock = null;
}
};
}
static ErrorMessage_ListenTimeout = "No Ledger device found (timeout)";
static ErrorMessage_NoDeviceFound = "No Ledger device found";
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc