@shapeshiftoss/hdwallet-ledger-webhid 1.55.4-alpha.1 → 1.55.4
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 +94 -48
- 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 +131 -79
- package/dist/transport.js.map +1 -1
- package/package.json +8 -8
package/dist/adapter.js
CHANGED
|
@@ -1,12 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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.WebHIDLedgerAdapter = void 0;
|
|
36
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
37
|
+
const ledger = __importStar(require("@shapeshiftoss/hdwallet-ledger"));
|
|
38
|
+
const transport_1 = require("./transport");
|
|
4
39
|
const VENDOR_ID = 11415;
|
|
5
40
|
const APP_NAVIGATION_DELAY = 3000;
|
|
6
|
-
|
|
7
|
-
keyring;
|
|
8
|
-
currentEventTimestamp = 0;
|
|
41
|
+
class WebHIDLedgerAdapter {
|
|
9
42
|
constructor(keyring) {
|
|
43
|
+
this.currentEventTimestamp = 0;
|
|
10
44
|
this.keyring = keyring;
|
|
11
45
|
if (window && window.navigator.hid) {
|
|
12
46
|
window.navigator.hid.addEventListener("connect", this.handleConnectWebHIDLedger.bind(this));
|
|
@@ -16,58 +50,70 @@ export class WebHIDLedgerAdapter {
|
|
|
16
50
|
static useKeyring(keyring) {
|
|
17
51
|
return new WebHIDLedgerAdapter(keyring);
|
|
18
52
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
await this.initialize(e.device);
|
|
25
|
-
this.keyring.emit(["Ledger", e.device.productName ?? "", core.Events.CONNECT], MOCK_SERIAL_NUMBER);
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
this.keyring.emit(["Ledger", e.device.productName ?? "", core.Events.FAILURE], [MOCK_SERIAL_NUMBER, { message: { code: error.type, ...error } }]);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async handleDisconnectWebHIDLedger(e) {
|
|
32
|
-
if (e.device.vendorId !== VENDOR_ID)
|
|
33
|
-
return;
|
|
34
|
-
const ts = Date.now();
|
|
35
|
-
this.currentEventTimestamp = ts;
|
|
36
|
-
// timeout gives time to detect if it is an app navigation based disconnect/connect event
|
|
37
|
-
// discard disconnect event if it is not the most recent event received
|
|
38
|
-
setTimeout(async () => {
|
|
39
|
-
if (ts !== this.currentEventTimestamp)
|
|
53
|
+
handleConnectWebHIDLedger(e) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
if (e.device.vendorId !== VENDOR_ID)
|
|
40
57
|
return;
|
|
58
|
+
this.currentEventTimestamp = Date.now();
|
|
41
59
|
try {
|
|
42
|
-
|
|
60
|
+
yield this.initialize(e.device);
|
|
61
|
+
this.keyring.emit(["Ledger", (_a = e.device.productName) !== null && _a !== void 0 ? _a : "", core.Events.CONNECT], transport_1.MOCK_SERIAL_NUMBER);
|
|
43
62
|
}
|
|
44
63
|
catch (error) {
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
finally {
|
|
48
|
-
this.keyring.emit(["Ledger", e.device.productName ?? "", core.Events.DISCONNECT], MOCK_SERIAL_NUMBER);
|
|
64
|
+
this.keyring.emit(["Ledger", (_b = e.device.productName) !== null && _b !== void 0 ? _b : "", core.Events.FAILURE], [transport_1.MOCK_SERIAL_NUMBER, { message: Object.assign({ code: error.type }, error) }]);
|
|
49
65
|
}
|
|
50
|
-
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
handleDisconnectWebHIDLedger(e) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
if (e.device.vendorId !== VENDOR_ID)
|
|
71
|
+
return;
|
|
72
|
+
const ts = Date.now();
|
|
73
|
+
this.currentEventTimestamp = ts;
|
|
74
|
+
// timeout gives time to detect if it is an app navigation based disconnect/connect event
|
|
75
|
+
// discard disconnect event if it is not the most recent event received
|
|
76
|
+
setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
var _a;
|
|
78
|
+
if (ts !== this.currentEventTimestamp)
|
|
79
|
+
return;
|
|
80
|
+
try {
|
|
81
|
+
yield this.keyring.remove(transport_1.MOCK_SERIAL_NUMBER);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error(error);
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
this.keyring.emit(["Ledger", (_a = e.device.productName) !== null && _a !== void 0 ? _a : "", core.Events.DISCONNECT], transport_1.MOCK_SERIAL_NUMBER);
|
|
88
|
+
}
|
|
89
|
+
}), APP_NAVIGATION_DELAY);
|
|
90
|
+
});
|
|
51
91
|
}
|
|
52
92
|
get() {
|
|
53
|
-
return core.mustBeDefined(this.keyring.get(MOCK_SERIAL_NUMBER));
|
|
93
|
+
return core.mustBeDefined(this.keyring.get(transport_1.MOCK_SERIAL_NUMBER));
|
|
54
94
|
}
|
|
55
95
|
// without unique device identifiers, we should only ever have one HID ledger device on the keyring at a time
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
96
|
+
initialize(device) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
var _a;
|
|
99
|
+
device = (_a = device !== null && device !== void 0 ? device : (yield (0, transport_1.getFirstLedgerDevice)())) !== null && _a !== void 0 ? _a : undefined;
|
|
100
|
+
if (device) {
|
|
101
|
+
yield this.keyring.remove(transport_1.MOCK_SERIAL_NUMBER);
|
|
102
|
+
const ledgerTransport = yield (0, transport_1.openTransport)(device);
|
|
103
|
+
const wallet = ledger.create(new transport_1.LedgerWebHIDTransport(device, ledgerTransport, this.keyring));
|
|
104
|
+
this.keyring.add(wallet, transport_1.MOCK_SERIAL_NUMBER);
|
|
105
|
+
}
|
|
106
|
+
return Object.keys(this.keyring.wallets).length;
|
|
107
|
+
});
|
|
65
108
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
109
|
+
pairDevice() {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const ledgerTransport = yield (0, transport_1.getTransport)();
|
|
112
|
+
const device = ledgerTransport.device;
|
|
113
|
+
yield this.initialize(device);
|
|
114
|
+
return core.mustBeDefined(this.keyring.get(transport_1.MOCK_SERIAL_NUMBER));
|
|
115
|
+
});
|
|
71
116
|
}
|
|
72
117
|
}
|
|
118
|
+
exports.WebHIDLedgerAdapter = WebHIDLedgerAdapter;
|
|
73
119
|
//# 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":"AAEA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAI5D,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAIvC,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAMtE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAY/E;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAY7D;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAC9G,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,GACR,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAI5D,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAIvC,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAMtE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAY/E;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAY7D;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAC9G,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,GACR,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CA8C7B;AAED,qBAAa,qBAAsB,SAAQ,MAAM,CAAC,eAAe;IAC/D,MAAM,EAAE,SAAS,CAAC;gBAEN,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO;IAM7D,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;CAgDjC"}
|
package/dist/transport.js
CHANGED
|
@@ -1,54 +1,102 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
+
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.LedgerWebHIDTransport = exports.MOCK_SERIAL_NUMBER = void 0;
|
|
39
|
+
exports.getFirstLedgerDevice = getFirstLedgerDevice;
|
|
40
|
+
exports.openTransport = openTransport;
|
|
41
|
+
exports.getTransport = getTransport;
|
|
42
|
+
exports.translateCoinAndMethod = translateCoinAndMethod;
|
|
43
|
+
const hw_app_btc_1 = __importDefault(require("@ledgerhq/hw-app-btc"));
|
|
44
|
+
const hw_app_eth_1 = __importDefault(require("@ledgerhq/hw-app-eth"));
|
|
45
|
+
const hw_transport_webhid_1 = __importDefault(require("@ledgerhq/hw-transport-webhid"));
|
|
46
|
+
const getAppAndVersion_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/getAppAndVersion"));
|
|
47
|
+
const getDeviceInfo_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/getDeviceInfo"));
|
|
48
|
+
const openApp_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/openApp"));
|
|
49
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
50
|
+
const ledger = __importStar(require("@shapeshiftoss/hdwallet-ledger"));
|
|
9
51
|
const RECORD_CONFORMANCE_MOCKS = false;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
52
|
+
exports.MOCK_SERIAL_NUMBER = "ledger-webhid-device"; // WebHID devices do not have serialNumbers
|
|
53
|
+
function getFirstLedgerDevice() {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
if (!(window && window.navigator.hid))
|
|
56
|
+
throw new core.WebHIDNotAvailable();
|
|
57
|
+
const existingDevices = yield hw_transport_webhid_1.default.list();
|
|
58
|
+
return existingDevices.length > 0 ? existingDevices[0] : null;
|
|
59
|
+
});
|
|
16
60
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
catch (err) {
|
|
24
|
-
if (core.isIndexable(err) && err.name === "TransportInterfaceNotAvailable") {
|
|
25
|
-
throw new core.ConflictingApp("Ledger");
|
|
61
|
+
function openTransport(device) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
if (!(window && window.navigator.hid))
|
|
64
|
+
throw new core.WebHIDNotAvailable();
|
|
65
|
+
try {
|
|
66
|
+
return yield hw_transport_webhid_1.default.open(device);
|
|
26
67
|
}
|
|
27
|
-
|
|
28
|
-
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (core.isIndexable(err) && err.name === "TransportInterfaceNotAvailable") {
|
|
70
|
+
throw new core.ConflictingApp("Ledger");
|
|
71
|
+
}
|
|
72
|
+
throw new core.WebHIDCouldNotInitialize("Ledger", String(core.isIndexable(err) ? err.message : err));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
29
75
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
catch (err) {
|
|
37
|
-
if (core.isIndexable(err) && err.name === "TransportInterfaceNotAvailable") {
|
|
38
|
-
throw new core.ConflictingApp("Ledger");
|
|
76
|
+
function getTransport() {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
if (!(window && window.navigator.hid))
|
|
79
|
+
throw new core.WebHIDNotAvailable();
|
|
80
|
+
try {
|
|
81
|
+
return (yield hw_transport_webhid_1.default.request());
|
|
39
82
|
}
|
|
40
|
-
|
|
41
|
-
|
|
83
|
+
catch (err) {
|
|
84
|
+
if (core.isIndexable(err) && err.name === "TransportInterfaceNotAvailable") {
|
|
85
|
+
throw new core.ConflictingApp("Ledger");
|
|
86
|
+
}
|
|
87
|
+
throw new core.WebHIDCouldNotPair("Ledger", String(core.isIndexable(err) ? err.message : err));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
42
90
|
}
|
|
43
|
-
|
|
91
|
+
function translateCoinAndMethod(transport, coin, method) {
|
|
44
92
|
switch (coin) {
|
|
45
93
|
case "Btc": {
|
|
46
|
-
const btc = new
|
|
94
|
+
const btc = new hw_app_btc_1.default({ transport: transport });
|
|
47
95
|
const methodInstance = btc[method].bind(btc);
|
|
48
96
|
return methodInstance;
|
|
49
97
|
}
|
|
50
98
|
case "Eth": {
|
|
51
|
-
const eth = new
|
|
99
|
+
const eth = new hw_app_eth_1.default(transport);
|
|
52
100
|
const methodInstance = eth[method].bind(eth);
|
|
53
101
|
return methodInstance;
|
|
54
102
|
}
|
|
@@ -59,15 +107,15 @@ export function translateCoinAndMethod(transport, coin, method) {
|
|
|
59
107
|
return out;
|
|
60
108
|
}
|
|
61
109
|
case "getAppAndVersion": {
|
|
62
|
-
const out =
|
|
110
|
+
const out = getAppAndVersion_1.default.bind(undefined, transport);
|
|
63
111
|
return out;
|
|
64
112
|
}
|
|
65
113
|
case "getDeviceInfo": {
|
|
66
|
-
const out =
|
|
114
|
+
const out = getDeviceInfo_1.default.bind(undefined, transport);
|
|
67
115
|
return out;
|
|
68
116
|
}
|
|
69
117
|
case "openApp": {
|
|
70
|
-
const out =
|
|
118
|
+
const out = openApp_1.default.bind(undefined, transport);
|
|
71
119
|
return out;
|
|
72
120
|
}
|
|
73
121
|
default: {
|
|
@@ -80,50 +128,54 @@ export function translateCoinAndMethod(transport, coin, method) {
|
|
|
80
128
|
}
|
|
81
129
|
}
|
|
82
130
|
}
|
|
83
|
-
|
|
84
|
-
device;
|
|
131
|
+
class LedgerWebHIDTransport extends ledger.LedgerTransport {
|
|
85
132
|
constructor(device, transport, keyring) {
|
|
86
133
|
super(transport, keyring);
|
|
87
134
|
this.device = device;
|
|
88
135
|
}
|
|
89
136
|
// WebHID has no device.serialNumber. Use "0001" for Ledger WebUSBDevices and "0002" for Ledger WebHIDDevices
|
|
90
|
-
|
|
91
|
-
return
|
|
137
|
+
getDeviceID() {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
return exports.MOCK_SERIAL_NUMBER;
|
|
140
|
+
});
|
|
92
141
|
}
|
|
93
|
-
|
|
94
|
-
this
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
142
|
+
call(coin, method, ...args) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
this.emit(`ledger.${coin}.${method}.call`, core.makeEvent({
|
|
145
|
+
message_type: method,
|
|
146
|
+
from_wallet: false,
|
|
147
|
+
message: {},
|
|
148
|
+
}));
|
|
149
|
+
try {
|
|
150
|
+
const methodInstance = translateCoinAndMethod(this.transport, coin, method);
|
|
151
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
152
|
+
// @ts-ignore TODO(gomes): ts pls I didn't diff this why is this failing type check
|
|
153
|
+
const response = yield methodInstance(...args);
|
|
154
|
+
const result = {
|
|
155
|
+
success: true,
|
|
156
|
+
payload: response,
|
|
157
|
+
coin,
|
|
158
|
+
method,
|
|
159
|
+
};
|
|
160
|
+
if (RECORD_CONFORMANCE_MOCKS) {
|
|
161
|
+
// May need a slight amount of cleanup on escaping `'`s.
|
|
162
|
+
console.info(`this.memoize('${coin}', '${method}',\n JSON.parse('${JSON.stringify(args)}'),\n JSON.parse('${JSON.stringify(result)}'))`);
|
|
163
|
+
}
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
165
|
+
// @ts-ignore TODO(gomes): ts pls I didn't diff this why is this failing type check
|
|
166
|
+
return result;
|
|
113
167
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
method,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
console.error(e);
|
|
170
|
+
return {
|
|
171
|
+
success: false,
|
|
172
|
+
payload: { error: String(e) },
|
|
173
|
+
coin,
|
|
174
|
+
method,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
});
|
|
127
178
|
}
|
|
128
179
|
}
|
|
180
|
+
exports.LedgerWebHIDTransport = LedgerWebHIDTransport;
|
|
129
181
|
//# 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-webhid",
|
|
3
|
-
"version": "1.55.4
|
|
3
|
+
"version": "1.55.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
"prepublishOnly": "yarn clean && yarn build"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@ledgerhq/hw-app-btc": "^10.
|
|
18
|
-
"@ledgerhq/hw-app-eth": "^6.
|
|
19
|
-
"@ledgerhq/hw-transport": "^6.
|
|
20
|
-
"@ledgerhq/hw-transport-webhid": "^6.
|
|
17
|
+
"@ledgerhq/hw-app-btc": "^10.0.8",
|
|
18
|
+
"@ledgerhq/hw-app-eth": "^6.9.0",
|
|
19
|
+
"@ledgerhq/hw-transport": "^6.7.0",
|
|
20
|
+
"@ledgerhq/hw-transport-webhid": "^6.7.0",
|
|
21
21
|
"@ledgerhq/live-common": "^21.8.2",
|
|
22
|
-
"@shapeshiftoss/hdwallet-core": "
|
|
23
|
-
"@shapeshiftoss/hdwallet-ledger": "
|
|
22
|
+
"@shapeshiftoss/hdwallet-core": "1.55.4",
|
|
23
|
+
"@shapeshiftoss/hdwallet-ledger": "1.55.4",
|
|
24
24
|
"@types/w3c-web-hid": "^1.0.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/ledgerhq__hw-transport": "^4.21.3"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "2e002e22b66d776eaf3d33130ad9730824334284"
|
|
30
30
|
}
|