@ledgerhq/hw-transport
Advanced tools
Comparing version 2.1.0 to 2.1.2
@@ -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
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
314171
11
801