Socket
Socket
Sign inDemoInstall

@ledgerhq/hw-transport

Package Overview
Dependencies
Maintainers
6
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 2.1.0 to 2.1.2

yarn-error.log

258

lib/Transport.js

@@ -7,13 +7,32 @@ "use strict";

exports.StatusCodes = undefined;
var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray");
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _regenerator = require("babel-runtime/regenerator");
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator");
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
exports.TransportError = TransportError;
exports.TransportStatusError = TransportStatusError;
var _events = require("events");
var _events2 = require("events");
var _events2 = _interopRequireDefault(_events);
var _events3 = _interopRequireDefault(_events2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
/**

@@ -30,8 +49,13 @@ * all possible status codes.

/**
*/
/**
*/
const StatusCodes = exports.StatusCodes = {
/**
*/
var StatusCodes = exports.StatusCodes = {
/**

@@ -67,2 +91,4 @@ * Incorrect length

*/
function TransportError(message, id) {

@@ -95,28 +121,59 @@ this.name = "TransportError";

*/
class Transport {
constructor() {
var Transport = function () {
function Transport() {
var _this = this;
(0, _classCallCheck3.default)(this, Transport);
this.debug = false;
this._events = new _events2.default();
this._events = new _events3.default();
this.send = (() => {
var _ref = _asyncToGenerator(function* (cla, ins, p1, p2, data = Buffer.alloc(0), statusList = [StatusCodes.Success]) {
if (data.length >= 256) {
throw new TransportError("data.length exceed 256 bytes limit. Got: " + data.length, "DataLengthTooBig");
}
const response = yield _this.exchange(Buffer.concat([Buffer.from([cla, ins, p1, p2]), Buffer.from([data.length]), data]));
const sw = response.readUInt16BE(response.length - 2);
if (!statusList.some(function (s) {
return s === sw;
})) {
throw new TransportStatusError(sw);
}
return response;
});
this.send = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(cla, ins, p1, p2) {
var data = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : Buffer.alloc(0);
var statusList = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [StatusCodes.Success];
var response, sw;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!(data.length >= 256)) {
_context.next = 2;
break;
}
throw new TransportError("data.length exceed 256 bytes limit. Got: " + data.length, "DataLengthTooBig");
case 2:
_context.next = 4;
return _this.exchange(Buffer.concat([Buffer.from([cla, ins, p1, p2]), Buffer.from([data.length]), data]));
case 4:
response = _context.sent;
sw = response.readUInt16BE(response.length - 2);
if (statusList.some(function (s) {
return s === sw;
})) {
_context.next = 8;
break;
}
throw new TransportStatusError(sw);
case 8:
return _context.abrupt("return", response);
case 9:
case "end":
return _context.stop();
}
}
}, _callee, _this);
}));
return function (_x, _x2, _x3, _x4) {
return _ref.apply(this, arguments);
};
})();
}();
}

@@ -186,61 +243,116 @@

/**
* Listen to an event on an instance of transport.
* Transport implementation can have specific events. Here is the common events:
* * `"disconnect"` : triggered if Transport is disconnected
*/
on(eventName, cb) {
this._events.on(eventName, cb);
}
(0, _createClass3.default)(Transport, [{
key: "on",
/**
* Stop listening to an event on an instance of transport.
*/
off(eventName, cb) {
this._events.removeListener(eventName, cb);
}
emit(event, ...args) {
this._events.emit(event, ...args);
}
/**
* Listen to an event on an instance of transport.
* Transport implementation can have specific events. Here is the common events:
* * `"disconnect"` : triggered if Transport is disconnected
*/
value: function on(eventName, cb) {
this._events.on(eventName, cb);
}
/**
* Enable or not logs of the binary exchange
*/
setDebugMode(debug) {
this.debug = debug;
}
/**
* Stop listening to an event on an instance of transport.
*/
/**
* wrapper on top of exchange to simplify work of the implementation.
* @param cla
* @param ins
* @param p1
* @param p2
* @param data
* @param statusList is a list of accepted status code (shorts). [0x9000] by default
* @return a Promise of response buffer
*/
}, {
key: "off",
value: function off(eventName, cb) {
this._events.removeListener(eventName, cb);
}
}, {
key: "emit",
value: function emit(event) {
var _events;
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
/**
* create() allows to open the first descriptor available or throw if there is none.
* **DEPRECATED**: use `list()` or `listen()` and `open()` instead.
*/
static create(timeout, debug = false) {
var _this2 = this;
(_events = this._events).emit.apply(_events, [event].concat((0, _toConsumableArray3.default)(args)));
}
return _asyncToGenerator(function* () {
console.warn(_this2.name + ".create is deprecated. Please use .list()/.listen() and .open() instead");
const descriptors = yield _this2.list();
if (descriptors.length === 0) {
throw new TransportError("No device found", "NoDeviceFound");
/**
* Enable or not logs of the binary exchange
*/
}, {
key: "setDebugMode",
value: function setDebugMode(debug) {
this.debug = debug;
}
/**
* wrapper on top of exchange to simplify work of the implementation.
* @param cla
* @param ins
* @param p1
* @param p2
* @param data
* @param statusList is a list of accepted status code (shorts). [0x9000] by default
* @return a Promise of response buffer
*/
}], [{
key: "create",
/**
* create() allows to open the first descriptor available or throw if there is none.
* **DEPRECATED**: use `list()` or `listen()` and `open()` instead.
*/
value: function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(timeout) {
var debug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var descriptors, transport;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
console.warn(this.name + ".create is deprecated. Please use .list()/.listen() and .open() instead");
_context2.next = 3;
return this.list();
case 3:
descriptors = _context2.sent;
if (!(descriptors.length === 0)) {
_context2.next = 6;
break;
}
throw new TransportError("No device found", "NoDeviceFound");
case 6:
_context2.next = 8;
return this.open(descriptors[0], timeout);
case 8:
transport = _context2.sent;
transport.setDebugMode(debug);
return _context2.abrupt("return", transport);
case 11:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function create(_x7) {
return _ref2.apply(this, arguments);
}
const transport = yield _this2.open(descriptors[0], timeout);
transport.setDebugMode(debug);
return transport;
})();
}
}
return create;
}()
}]);
return Transport;
}();
exports.default = Transport;
//# sourceMappingURL=Transport.js.map
{
"name": "@ledgerhq/hw-transport",
"version": "2.1.0",
"version": "2.1.2",
"description": "Ledger Hardware Wallet common interface of the communication layer",

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

@@ -8,7 +8,13 @@ //@flow

export type Subscription = { unsubscribe: () => void };
/**
*/
export type Device = Object;
/**
*/
export type DescriptorEvent<Descriptor> = {
type: "add" | "remove",
descriptor: Descriptor
descriptor: Descriptor,
device: Device
};

@@ -19,4 +25,4 @@ /**

next: (event: Ev) => void,
error: (e: ?Error) => void,
complete: () => void
error?: (e: ?Error) => void,
complete?: () => void
};

@@ -23,0 +29,0 @@

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