@shapeshiftoss/hdwallet-ledger-webusb 1.55.4-alpha.1 → 1.55.5
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/dist/adapter.js +75 -30
- package/dist/adapter.js.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +173 -124
- package/dist/transport.js.map +1 -1
- package/package.json +5 -5
package/dist/adapter.js
CHANGED
|
@@ -1,9 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.WebUSBLedgerAdapter = exports.VENDOR_ID = void 0;
|
|
36
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
37
|
+
const ledger = __importStar(require("@shapeshiftoss/hdwallet-ledger"));
|
|
38
|
+
const transport_1 = require("./transport");
|
|
39
|
+
exports.VENDOR_ID = 11415;
|
|
40
|
+
class WebUSBLedgerAdapter {
|
|
7
41
|
constructor(keyring) {
|
|
8
42
|
this.keyring = keyring;
|
|
9
43
|
if (window && window.navigator.usb) {
|
|
@@ -14,36 +48,47 @@ export class WebUSBLedgerAdapter {
|
|
|
14
48
|
static useKeyring(keyring) {
|
|
15
49
|
return new WebUSBLedgerAdapter(keyring);
|
|
16
50
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
51
|
+
handleConnectWebUSBLedger(e) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
var _a, _b, _c, _d;
|
|
54
|
+
if (e.device.vendorId !== exports.VENDOR_ID)
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
this.keyring.emit([(_a = e.device.manufacturerName) !== null && _a !== void 0 ? _a : "", (_b = e.device.productName) !== null && _b !== void 0 ? _b : "", core.Events.CONNECT], e.device.serialNumber);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.keyring.emit([(_c = e.device.manufacturerName) !== null && _c !== void 0 ? _c : "", (_d = e.device.productName) !== null && _d !== void 0 ? _d : "", core.Events.FAILURE], [e.device.serialNumber, { message: Object.assign({ code: error.type }, error) }]);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
26
63
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
64
|
+
handleDisconnectWebUSBLedger(e) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
if (e.device.vendorId !== exports.VENDOR_ID)
|
|
68
|
+
return;
|
|
69
|
+
this.keyring.emit([(_a = e.device.manufacturerName) !== null && _a !== void 0 ? _a : "", (_b = e.device.productName) !== null && _b !== void 0 ? _b : "", core.Events.DISCONNECT], e.device.serialNumber);
|
|
70
|
+
});
|
|
31
71
|
}
|
|
32
72
|
get(device) {
|
|
33
73
|
return core.mustBeDefined(this.keyring.get(device.serialNumber));
|
|
34
74
|
}
|
|
35
75
|
// without unique device identifiers, we should only ever have one ledger device on the keyring at a time
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
76
|
+
initialize(ledgerTransport) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
const transport = ledgerTransport !== null && ledgerTransport !== void 0 ? ledgerTransport : (yield (0, transport_1.getLedgerTransport)());
|
|
79
|
+
const wallet = ledger.create(new transport_1.LedgerWebUsbTransport(transport.device, transport, this.keyring));
|
|
80
|
+
this.keyring.add(wallet, transport.device.serialNumber);
|
|
81
|
+
return Object.keys(this.keyring.wallets).length;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
pairDevice() {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
const ledgerTransport = yield (0, transport_1.getLedgerTransport)();
|
|
87
|
+
const device = ledgerTransport.device;
|
|
88
|
+
yield this.initialize(ledgerTransport);
|
|
89
|
+
return core.mustBeDefined(this.keyring.get(device.serialNumber));
|
|
90
|
+
});
|
|
47
91
|
}
|
|
48
92
|
}
|
|
93
|
+
exports.WebUSBLedgerAdapter = WebUSBLedgerAdapter;
|
|
49
94
|
//# sourceMappingURL=adapter.js.map
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./adapter"), exports);
|
|
18
|
+
__exportStar(require("./transport"), exports);
|
|
3
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,8CAA4B"}
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAIA,OAAO,eAAe,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAIA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAM5D,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAa,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AASvC,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,CAAC,CAoB/D;AAED,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,eAAe,CA6BlE,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EACpH,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAwDtC;AAED,qBAAa,qBAAsB,SAAQ,eAAe;IACxD,MAAM,EAAE,SAAS,CAAC;gBAEN,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO;IAKnE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,IAAI,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EACzF,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,EACT,GAAG,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CA8CjC"}
|
package/dist/transport.js
CHANGED
|
@@ -1,45 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import openApp from "@ledgerhq/live-common/lib/hw/openApp";
|
|
8
|
-
import * as core from "@shapeshiftoss/hdwallet-core";
|
|
9
|
-
import { LedgerTransport, Thorchain } from "@shapeshiftoss/hdwallet-ledger";
|
|
10
|
-
import PQueue from "p-queue/dist";
|
|
11
|
-
import { VENDOR_ID } from "./adapter";
|
|
12
|
-
const RECORD_CONFORMANCE_MOCKS = false;
|
|
13
|
-
const callsQueue = new PQueue({ concurrency: 1, interval: 1000 });
|
|
14
|
-
export async function getFirstLedgerDevice() {
|
|
15
|
-
if (!(window && window.navigator.usb))
|
|
16
|
-
throw new core.WebUSBNotAvailable();
|
|
17
|
-
try {
|
|
18
|
-
const existingDevices = await TransportWebUSB.list();
|
|
19
|
-
const maybeExistingDevice = existingDevices?.[0];
|
|
20
|
-
if (maybeExistingDevice)
|
|
21
|
-
return maybeExistingDevice;
|
|
22
|
-
const requestedDevice = await window.navigator.usb.requestDevice({
|
|
23
|
-
filters: [{ vendorId: VENDOR_ID }],
|
|
24
|
-
});
|
|
25
|
-
return requestedDevice;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
7
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.LedgerWebUsbTransport = exports.getLedgerTransport = void 0;
|
|
39
|
+
exports.getFirstLedgerDevice = getFirstLedgerDevice;
|
|
40
|
+
exports.translateCoinAndMethod = translateCoinAndMethod;
|
|
41
|
+
const hw_app_btc_1 = __importDefault(require("@ledgerhq/hw-app-btc"));
|
|
42
|
+
const hw_app_cosmos_1 = __importDefault(require("@ledgerhq/hw-app-cosmos"));
|
|
43
|
+
const hw_app_eth_1 = __importDefault(require("@ledgerhq/hw-app-eth"));
|
|
44
|
+
const hw_transport_webusb_1 = __importDefault(require("@ledgerhq/hw-transport-webusb"));
|
|
45
|
+
const getAppAndVersion_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/getAppAndVersion"));
|
|
46
|
+
const getDeviceInfo_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/getDeviceInfo"));
|
|
47
|
+
const openApp_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/openApp"));
|
|
48
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
49
|
+
const hdwallet_ledger_1 = require("@shapeshiftoss/hdwallet-ledger");
|
|
50
|
+
const dist_1 = __importDefault(require("p-queue/dist"));
|
|
51
|
+
const adapter_1 = require("./adapter");
|
|
52
|
+
const RECORD_CONFORMANCE_MOCKS = false;
|
|
53
|
+
const callsQueue = new dist_1.default({ concurrency: 1, interval: 1000 });
|
|
54
|
+
function getFirstLedgerDevice() {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
if (!(window && window.navigator.usb))
|
|
57
|
+
throw new core.WebUSBNotAvailable();
|
|
58
|
+
try {
|
|
59
|
+
const existingDevices = yield hw_transport_webusb_1.default.list();
|
|
60
|
+
const maybeExistingDevice = existingDevices === null || existingDevices === void 0 ? void 0 : existingDevices[0];
|
|
61
|
+
if (maybeExistingDevice)
|
|
62
|
+
return maybeExistingDevice;
|
|
63
|
+
const requestedDevice = yield window.navigator.usb.requestDevice({
|
|
64
|
+
filters: [{ vendorId: adapter_1.VENDOR_ID }],
|
|
65
|
+
});
|
|
66
|
+
return requestedDevice;
|
|
30
67
|
}
|
|
31
|
-
|
|
32
|
-
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (core.isIndexable(err) && err.name === "TransportInterfaceNotAvailable") {
|
|
70
|
+
throw new core.ConflictingApp("Ledger");
|
|
71
|
+
}
|
|
72
|
+
throw new core.WebUSBCouldNotInitialize("Ledger", String(core.isIndexable(err) ? err.message : err));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
33
75
|
}
|
|
34
|
-
|
|
35
|
-
const device =
|
|
76
|
+
const getLedgerTransport = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
const device = yield getFirstLedgerDevice();
|
|
36
78
|
if (!device)
|
|
37
79
|
throw new Error("No device found");
|
|
38
|
-
|
|
80
|
+
yield device.open();
|
|
39
81
|
if (device.configuration === null)
|
|
40
|
-
|
|
82
|
+
yield device.selectConfiguration(1);
|
|
41
83
|
try {
|
|
42
|
-
|
|
84
|
+
yield device.reset();
|
|
43
85
|
}
|
|
44
86
|
catch (err) {
|
|
45
87
|
console.warn(err);
|
|
@@ -48,110 +90,117 @@ export const getLedgerTransport = async () => {
|
|
|
48
90
|
if (!usbInterface)
|
|
49
91
|
throw new Error("No Ledger device found");
|
|
50
92
|
try {
|
|
51
|
-
|
|
93
|
+
yield device.claimInterface(usbInterface.interfaceNumber);
|
|
52
94
|
}
|
|
53
95
|
catch (error) {
|
|
54
|
-
|
|
96
|
+
yield device.close();
|
|
55
97
|
console.error(error);
|
|
56
98
|
throw new Error(error.message);
|
|
57
99
|
}
|
|
58
|
-
return new
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
return new hw_transport_webusb_1.default(device, usbInterface.interfaceNumber);
|
|
101
|
+
});
|
|
102
|
+
exports.getLedgerTransport = getLedgerTransport;
|
|
103
|
+
function translateCoinAndMethod(transport, coin, method) {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
switch (coin) {
|
|
106
|
+
case "Btc": {
|
|
107
|
+
const btc = new hw_app_btc_1.default({ transport: transport });
|
|
108
|
+
const methodInstance = btc[method].bind(btc);
|
|
109
|
+
return methodInstance;
|
|
110
|
+
}
|
|
111
|
+
case "Eth": {
|
|
112
|
+
const eth = new hw_app_eth_1.default(transport);
|
|
113
|
+
const methodInstance = eth[method].bind(eth);
|
|
114
|
+
return methodInstance;
|
|
115
|
+
}
|
|
116
|
+
case "Thorchain": {
|
|
117
|
+
const thorchain = new hdwallet_ledger_1.Thorchain(transport);
|
|
118
|
+
const methodInstance = thorchain[method].bind(thorchain);
|
|
119
|
+
return methodInstance;
|
|
120
|
+
}
|
|
121
|
+
case "Cosmos": {
|
|
122
|
+
const cosmos = new hw_app_cosmos_1.default(transport);
|
|
123
|
+
const methodInstance = cosmos[method].bind(cosmos);
|
|
124
|
+
return methodInstance;
|
|
125
|
+
}
|
|
126
|
+
case null: {
|
|
127
|
+
switch (method) {
|
|
128
|
+
case "decorateAppAPIMethods": {
|
|
129
|
+
const out = transport.decorateAppAPIMethods.bind(transport);
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
case "getAppAndVersion": {
|
|
133
|
+
const out = getAppAndVersion_1.default.bind(undefined, transport);
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
case "getDeviceInfo": {
|
|
137
|
+
const out = getDeviceInfo_1.default.bind(undefined, transport);
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
case "openApp": {
|
|
141
|
+
const out = openApp_1.default.bind(undefined, transport);
|
|
142
|
+
return out;
|
|
143
|
+
}
|
|
144
|
+
default: {
|
|
145
|
+
throw new TypeError("method");
|
|
146
|
+
}
|
|
102
147
|
}
|
|
103
148
|
}
|
|
149
|
+
default: {
|
|
150
|
+
throw new TypeError("coin");
|
|
151
|
+
}
|
|
104
152
|
}
|
|
105
|
-
|
|
106
|
-
throw new TypeError("coin");
|
|
107
|
-
}
|
|
108
|
-
}
|
|
153
|
+
});
|
|
109
154
|
}
|
|
110
|
-
|
|
111
|
-
device;
|
|
155
|
+
class LedgerWebUsbTransport extends hdwallet_ledger_1.LedgerTransport {
|
|
112
156
|
constructor(device, transport, keyring) {
|
|
113
157
|
super(transport, keyring);
|
|
114
158
|
this.device = device;
|
|
115
159
|
}
|
|
116
|
-
|
|
117
|
-
return
|
|
160
|
+
getDeviceID() {
|
|
161
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
return core.mustBeDefined(this.device.serialNumber);
|
|
163
|
+
});
|
|
118
164
|
}
|
|
119
|
-
|
|
120
|
-
this
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
165
|
+
call(coin, method, ...args) {
|
|
166
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
+
this.emit(`ledger.${coin}.${method}.call`, core.makeEvent({
|
|
168
|
+
message_type: method,
|
|
169
|
+
from_wallet: false,
|
|
170
|
+
message: {},
|
|
171
|
+
}));
|
|
172
|
+
try {
|
|
173
|
+
const transport = yield (0, exports.getLedgerTransport)();
|
|
174
|
+
const methodInstance = yield translateCoinAndMethod(transport, coin, method);
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
176
|
+
// @ts-ignore ts is drunk, stop pls
|
|
177
|
+
const response = yield callsQueue.add(() => methodInstance(...args));
|
|
178
|
+
yield transport.close();
|
|
179
|
+
const result = {
|
|
180
|
+
success: true,
|
|
181
|
+
payload: response,
|
|
182
|
+
coin,
|
|
183
|
+
method,
|
|
184
|
+
};
|
|
185
|
+
if (RECORD_CONFORMANCE_MOCKS) {
|
|
186
|
+
// May need a slight amount of cleanup on escaping `'`s.
|
|
187
|
+
console.info(`this.memoize('${coin}', '${method}',\n JSON.parse('${JSON.stringify(args)}'),\n JSON.parse('${JSON.stringify(result)}'))`);
|
|
188
|
+
}
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
190
|
+
// @ts-ignore ts is drunk, stop pls
|
|
191
|
+
return result;
|
|
141
192
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
method,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
console.error(e);
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
payload: { error: String(e) },
|
|
198
|
+
coin,
|
|
199
|
+
method,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
});
|
|
155
203
|
}
|
|
156
204
|
}
|
|
205
|
+
exports.LedgerWebUsbTransport = LedgerWebUsbTransport;
|
|
157
206
|
//# sourceMappingURL=transport.js.map
|
package/dist/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapeshiftoss/hdwallet-ledger-webusb",
|
|
3
|
-
"version": "1.55.
|
|
3
|
+
"version": "1.55.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"@ledgerhq/hw-app-eth": "^6.38.0",
|
|
19
19
|
"@ledgerhq/hw-transport": "^6.31.2",
|
|
20
20
|
"@ledgerhq/hw-transport-webusb": "^6.29.2",
|
|
21
|
-
"@ledgerhq/live-common": "^
|
|
21
|
+
"@ledgerhq/live-common": "^21.8.2",
|
|
22
22
|
"@ledgerhq/logs": "^6.10.1",
|
|
23
|
-
"@shapeshiftoss/hdwallet-core": "
|
|
24
|
-
"@shapeshiftoss/hdwallet-ledger": "
|
|
23
|
+
"@shapeshiftoss/hdwallet-core": "1.55.5",
|
|
24
|
+
"@shapeshiftoss/hdwallet-ledger": "1.55.5",
|
|
25
25
|
"@types/w3c-web-usb": "^1.0.4",
|
|
26
26
|
"p-queue": "^7.4.1"
|
|
27
27
|
},
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"@types/ledgerhq__hw-transport": "^4.21.3",
|
|
30
30
|
"@types/w3c-web-usb": "^1.0.6"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "451552ac2086a22aabeee80f844fbafafab69576"
|
|
33
33
|
}
|