@onekeyfe/hd-core 1.1.4-alpha.2 → 1.1.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/api/BaseMethod.d.ts +2 -0
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddress.d.ts +4 -28
- package/dist/api/allnetwork/AllNetworkGetAddress.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +47 -0
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -0
- package/dist/api/allnetwork/AllNetworkGetAddressByLoop.d.ts +8 -0
- package/dist/api/allnetwork/AllNetworkGetAddressByLoop.d.ts.map +1 -0
- package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +0 -2
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
- package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts +4 -0
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/index.d.ts +3 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/device/Device.d.ts +4 -1
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +4 -4
- package/dist/events/call.d.ts +9 -0
- package/dist/events/call.d.ts.map +1 -1
- package/dist/events/core.d.ts +2 -2
- package/dist/events/core.d.ts.map +1 -1
- package/dist/events/iframe.d.ts +11 -1
- package/dist/events/iframe.d.ts.map +1 -1
- package/dist/index.d.ts +43 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +406 -150
- package/dist/inject.d.ts +3 -0
- package/dist/inject.d.ts.map +1 -1
- package/dist/types/api/allNetworkGetAddress.d.ts +12 -3
- package/dist/types/api/allNetworkGetAddress.d.ts.map +1 -1
- package/dist/types/api/evmGetPublicKey.d.ts +1 -0
- package/dist/types/api/evmGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +2 -1
- package/dist/types/api/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +3 -0
- package/src/api/allnetwork/AllNetworkGetAddress.ts +19 -408
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +480 -0
- package/src/api/allnetwork/AllNetworkGetAddressByLoop.ts +161 -0
- package/src/api/btc/BTCGetPublicKey.ts +13 -0
- package/src/api/cosmos/CosmosGetPublicKey.ts +1 -1
- package/src/api/device/DeviceUnlock.ts +1 -48
- package/src/api/evm/EVMGetPublicKey.ts +9 -3
- package/src/api/index.ts +1 -0
- package/src/core/RequestQueue.ts +26 -0
- package/src/core/index.ts +42 -24
- package/src/device/Device.ts +66 -0
- package/src/events/call.ts +10 -0
- package/src/events/core.ts +7 -1
- package/src/events/iframe.ts +12 -1
- package/src/index.ts +2 -1
- package/src/inject.ts +47 -0
- package/src/types/api/allNetworkGetAddress.ts +17 -3
- package/src/types/api/evmGetPublicKey.ts +1 -0
- package/src/types/api/index.ts +2 -1
package/dist/index.js
CHANGED
|
@@ -26,6 +26,82 @@ var ByteBuffer__default = /*#__PURE__*/_interopDefaultLegacy(ByteBuffer);
|
|
|
26
26
|
var BigNumber__default = /*#__PURE__*/_interopDefaultLegacy(BigNumber);
|
|
27
27
|
var JSZip__default = /*#__PURE__*/_interopDefaultLegacy(JSZip);
|
|
28
28
|
|
|
29
|
+
/******************************************************************************
|
|
30
|
+
Copyright (c) Microsoft Corporation.
|
|
31
|
+
|
|
32
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
33
|
+
purpose with or without fee is hereby granted.
|
|
34
|
+
|
|
35
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
36
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
37
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
38
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
39
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
40
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
41
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
42
|
+
***************************************************************************** */
|
|
43
|
+
|
|
44
|
+
function __rest(s, e) {
|
|
45
|
+
var t = {};
|
|
46
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
47
|
+
t[p] = s[p];
|
|
48
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
49
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
50
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
51
|
+
t[p[i]] = s[p[i]];
|
|
52
|
+
}
|
|
53
|
+
return t;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
57
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
58
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
59
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
60
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
61
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
62
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function __values(o) {
|
|
67
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
68
|
+
if (m) return m.call(o);
|
|
69
|
+
if (o && typeof o.length === "number") return {
|
|
70
|
+
next: function () {
|
|
71
|
+
if (o && i >= o.length) o = void 0;
|
|
72
|
+
return { value: o && o[i++], done: !o };
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function __asyncValues(o) {
|
|
79
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
80
|
+
var m = o[Symbol.asyncIterator], i;
|
|
81
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
82
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
83
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
87
|
+
var e = new Error(message);
|
|
88
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const callbackManager = new Map();
|
|
92
|
+
const generateCallbackId = () => `callback_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
93
|
+
const registerCallback = (id, callback) => {
|
|
94
|
+
callbackManager.set(id, callback);
|
|
95
|
+
};
|
|
96
|
+
const executeCallback = (id, ...args) => {
|
|
97
|
+
const callback = callbackManager.get(id);
|
|
98
|
+
if (callback) {
|
|
99
|
+
callback(...args);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const cleanupCallback = (id) => {
|
|
103
|
+
callbackManager.delete(id);
|
|
104
|
+
};
|
|
29
105
|
const inject = ({ call, cancel, dispose, eventEmitter, init, updateSettings, switchTransport, uiResponse, }) => {
|
|
30
106
|
const api = Object.assign({ on: (type, fn) => {
|
|
31
107
|
eventEmitter.on(type, fn);
|
|
@@ -77,6 +153,20 @@ const createCoreApi = (call) => ({
|
|
|
77
153
|
getNextU2FCounter: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'getNextU2FCounter' })),
|
|
78
154
|
setU2FCounter: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'setU2FCounter' })),
|
|
79
155
|
allNetworkGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'allNetworkGetAddress' })),
|
|
156
|
+
allNetworkGetAddressByLoop: (connectId, deviceId, params) => {
|
|
157
|
+
const { onLoopItemResponse, onAllItemsResponse } = params, restParams = __rest(params, ["onLoopItemResponse", "onAllItemsResponse"]);
|
|
158
|
+
const callbackId = generateCallbackId();
|
|
159
|
+
registerCallback(callbackId, onLoopItemResponse);
|
|
160
|
+
const callbackIdFinish = generateCallbackId();
|
|
161
|
+
registerCallback(callbackIdFinish, (data) => {
|
|
162
|
+
onAllItemsResponse === null || onAllItemsResponse === void 0 ? void 0 : onAllItemsResponse(data);
|
|
163
|
+
cleanupCallback(callbackIdFinish);
|
|
164
|
+
cleanupCallback(callbackId);
|
|
165
|
+
});
|
|
166
|
+
return call(Object.assign(Object.assign({}, restParams), { connectId,
|
|
167
|
+
deviceId, method: 'allNetworkGetAddressByLoop', callbackId,
|
|
168
|
+
callbackIdFinish }));
|
|
169
|
+
},
|
|
80
170
|
evmGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'evmGetAddress' })),
|
|
81
171
|
evmGetPublicKey: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'evmGetPublicKey' })),
|
|
82
172
|
evmSignMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'evmSignMessage' })),
|
|
@@ -684,68 +774,6 @@ const topLevelInject = () => {
|
|
|
684
774
|
return api;
|
|
685
775
|
};
|
|
686
776
|
|
|
687
|
-
/******************************************************************************
|
|
688
|
-
Copyright (c) Microsoft Corporation.
|
|
689
|
-
|
|
690
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
691
|
-
purpose with or without fee is hereby granted.
|
|
692
|
-
|
|
693
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
694
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
695
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
696
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
697
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
698
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
699
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
700
|
-
***************************************************************************** */
|
|
701
|
-
|
|
702
|
-
function __rest(s, e) {
|
|
703
|
-
var t = {};
|
|
704
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
705
|
-
t[p] = s[p];
|
|
706
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
707
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
708
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
709
|
-
t[p[i]] = s[p[i]];
|
|
710
|
-
}
|
|
711
|
-
return t;
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
715
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
716
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
717
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
718
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
719
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
720
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
721
|
-
});
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
function __values(o) {
|
|
725
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
726
|
-
if (m) return m.call(o);
|
|
727
|
-
if (o && typeof o.length === "number") return {
|
|
728
|
-
next: function () {
|
|
729
|
-
if (o && i >= o.length) o = void 0;
|
|
730
|
-
return { value: o && o[i++], done: !o };
|
|
731
|
-
}
|
|
732
|
-
};
|
|
733
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
function __asyncValues(o) {
|
|
737
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
738
|
-
var m = o[Symbol.asyncIterator], i;
|
|
739
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
740
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
741
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
745
|
-
var e = new Error(message);
|
|
746
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
747
|
-
};
|
|
748
|
-
|
|
749
777
|
const LOG_EVENT = 'LOG_EVENT';
|
|
750
778
|
const LOG = {
|
|
751
779
|
OUTPUT: 'log-output',
|
|
@@ -25822,6 +25850,7 @@ const IFRAME = {
|
|
|
25822
25850
|
CALL: 'iframe-call',
|
|
25823
25851
|
CANCEL: 'iframe-cancel',
|
|
25824
25852
|
SWITCH_TRANSPORT: 'iframe-switch-transport',
|
|
25853
|
+
CALLBACK: 'iframe-callback',
|
|
25825
25854
|
};
|
|
25826
25855
|
const createIFrameMessage = (type, payload) => ({
|
|
25827
25856
|
event: UI_EVENT,
|
|
@@ -26715,6 +26744,15 @@ class Device extends events.exports {
|
|
|
26715
26744
|
const env = DataManager.getSettings('env');
|
|
26716
26745
|
if ((this.isUsedHere() && !this.keepSession && this.mainId) ||
|
|
26717
26746
|
(this.mainId && DataManager.isBleConnect(env))) {
|
|
26747
|
+
if (this.pendingCallbackPromise) {
|
|
26748
|
+
try {
|
|
26749
|
+
Log$a.debug('Waiting for callback tasks to complete before releasing device (in release method)');
|
|
26750
|
+
yield this.pendingCallbackPromise.promise;
|
|
26751
|
+
}
|
|
26752
|
+
catch (error) {
|
|
26753
|
+
Log$a.error('Error waiting for callback tasks in release method:', error);
|
|
26754
|
+
}
|
|
26755
|
+
}
|
|
26718
26756
|
if (this.commands) {
|
|
26719
26757
|
this.commands.dispose(false);
|
|
26720
26758
|
if (this.commands.callPromise) {
|
|
@@ -27095,6 +27133,46 @@ class Device extends events.exports {
|
|
|
27095
27133
|
return res.message;
|
|
27096
27134
|
});
|
|
27097
27135
|
}
|
|
27136
|
+
supportUnlockVersionRange() {
|
|
27137
|
+
return {
|
|
27138
|
+
pro: {
|
|
27139
|
+
min: '4.15.0',
|
|
27140
|
+
},
|
|
27141
|
+
};
|
|
27142
|
+
}
|
|
27143
|
+
unlockDevice() {
|
|
27144
|
+
var _a;
|
|
27145
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27146
|
+
const firmwareVersion = (_a = getDeviceFirmwareVersion(this.features)) === null || _a === void 0 ? void 0 : _a.join('.');
|
|
27147
|
+
const versionRange = getMethodVersionRange(this.features, type => this.supportUnlockVersionRange()[type]);
|
|
27148
|
+
if (versionRange && semver__default["default"].gte(firmwareVersion, versionRange.min)) {
|
|
27149
|
+
const res = yield this.commands.typedCall('UnLockDevice', 'UnLockDeviceResponse');
|
|
27150
|
+
if (this.features) {
|
|
27151
|
+
this.features.unlocked = res.message.unlocked == null ? null : res.message.unlocked;
|
|
27152
|
+
this.features.unlocked_attach_pin =
|
|
27153
|
+
res.message.unlocked_attach_pin == null ? undefined : res.message.unlocked_attach_pin;
|
|
27154
|
+
this.features.passphrase_protection =
|
|
27155
|
+
res.message.passphrase_protection == null ? null : res.message.passphrase_protection;
|
|
27156
|
+
return Promise.resolve(this.features);
|
|
27157
|
+
}
|
|
27158
|
+
const featuresRes = yield this.commands.typedCall('GetFeatures', 'Features');
|
|
27159
|
+
this._updateFeatures(featuresRes.message);
|
|
27160
|
+
return Promise.resolve(featuresRes.message);
|
|
27161
|
+
}
|
|
27162
|
+
const { type } = yield this.commands.typedCall('GetAddress', 'Address', {
|
|
27163
|
+
address_n: [toHardened(44), toHardened(1), toHardened(0), 0, 0],
|
|
27164
|
+
coin_name: 'Testnet',
|
|
27165
|
+
script_type: 'SPENDADDRESS',
|
|
27166
|
+
show_display: false,
|
|
27167
|
+
});
|
|
27168
|
+
if (type === 'CallMethodError') {
|
|
27169
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'unlock device error');
|
|
27170
|
+
}
|
|
27171
|
+
const res = yield this.commands.typedCall('GetFeatures', 'Features');
|
|
27172
|
+
this._updateFeatures(res.message);
|
|
27173
|
+
return Promise.resolve(res.message);
|
|
27174
|
+
});
|
|
27175
|
+
}
|
|
27098
27176
|
checkPassphraseStateSafety(passphraseState, useEmptyPassphrase, skipPassphraseCheck) {
|
|
27099
27177
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27100
27178
|
if (!this.features)
|
|
@@ -28667,42 +28745,9 @@ class DeviceUnlock extends BaseMethod {
|
|
|
28667
28745
|
init() {
|
|
28668
28746
|
this.useDevicePassphraseState = false;
|
|
28669
28747
|
}
|
|
28670
|
-
supportUnlockVersionRange() {
|
|
28671
|
-
return {
|
|
28672
|
-
pro: {
|
|
28673
|
-
min: '4.15.0',
|
|
28674
|
-
},
|
|
28675
|
-
};
|
|
28676
|
-
}
|
|
28677
28748
|
run() {
|
|
28678
|
-
var _a;
|
|
28679
28749
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28680
|
-
|
|
28681
|
-
const versionRange = getMethodVersionRange(this.device.features, type => this.supportUnlockVersionRange()[type]);
|
|
28682
|
-
if (versionRange && semver__default["default"].gte(firmwareVersion, versionRange.min)) {
|
|
28683
|
-
const res = yield this.device.commands.typedCall('UnLockDevice', 'UnLockDeviceResponse');
|
|
28684
|
-
if (this.device.features) {
|
|
28685
|
-
this.device.features.unlocked = res.message.unlocked == null ? null : res.message.unlocked;
|
|
28686
|
-
this.device.features.unlocked_attach_pin =
|
|
28687
|
-
res.message.unlocked_attach_pin == null ? undefined : res.message.unlocked_attach_pin;
|
|
28688
|
-
this.device.features.passphrase_protection =
|
|
28689
|
-
res.message.passphrase_protection == null ? null : res.message.passphrase_protection;
|
|
28690
|
-
return Promise.resolve(this.device.features);
|
|
28691
|
-
}
|
|
28692
|
-
const featuresRes = yield this.device.commands.typedCall('GetFeatures', 'Features');
|
|
28693
|
-
return Promise.resolve(featuresRes.message);
|
|
28694
|
-
}
|
|
28695
|
-
const { type } = yield this.device.commands.typedCall('GetAddress', 'Address', {
|
|
28696
|
-
address_n: [toHardened(44), toHardened(1), toHardened(0), 0, 0],
|
|
28697
|
-
coin_name: 'Testnet',
|
|
28698
|
-
script_type: 'SPENDADDRESS',
|
|
28699
|
-
show_display: false,
|
|
28700
|
-
});
|
|
28701
|
-
if (type === 'CallMethodError') {
|
|
28702
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Get the passphrase state error');
|
|
28703
|
-
}
|
|
28704
|
-
const res = yield this.device.commands.typedCall('GetFeatures', 'Features');
|
|
28705
|
-
return Promise.resolve(res.message);
|
|
28750
|
+
return this.device.unlockDevice();
|
|
28706
28751
|
});
|
|
28707
28752
|
}
|
|
28708
28753
|
}
|
|
@@ -30065,12 +30110,17 @@ const networkConfigMap = {
|
|
|
30065
30110
|
methodName: 'neoGetAddress',
|
|
30066
30111
|
},
|
|
30067
30112
|
};
|
|
30068
|
-
class
|
|
30113
|
+
class AllNetworkGetAddressBase extends BaseMethod {
|
|
30114
|
+
constructor() {
|
|
30115
|
+
super(...arguments);
|
|
30116
|
+
this.abortController = null;
|
|
30117
|
+
}
|
|
30069
30118
|
init() {
|
|
30119
|
+
var _a, _b;
|
|
30070
30120
|
this.checkDeviceId = true;
|
|
30071
30121
|
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
|
|
30072
30122
|
validateParams(this.payload, [{ name: 'bundle', type: 'array' }]);
|
|
30073
|
-
this.payload.bundle.forEach((batch) => {
|
|
30123
|
+
(_b = (_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle) === null || _b === void 0 ? void 0 : _b.forEach((batch) => {
|
|
30074
30124
|
validateParams(batch, [
|
|
30075
30125
|
{ name: 'path', required: true },
|
|
30076
30126
|
{ name: 'network', type: 'string', required: true },
|
|
@@ -30096,7 +30146,7 @@ class AllNetworkGetAddress extends BaseMethod {
|
|
|
30096
30146
|
_originalIndex: originalIndex,
|
|
30097
30147
|
};
|
|
30098
30148
|
}
|
|
30099
|
-
callMethod(methodName, params) {
|
|
30149
|
+
callMethod(methodName, params, rootFingerprint) {
|
|
30100
30150
|
var _a;
|
|
30101
30151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30102
30152
|
const method = findMethod({
|
|
@@ -30110,12 +30160,29 @@ class AllNetworkGetAddress extends BaseMethod {
|
|
|
30110
30160
|
try {
|
|
30111
30161
|
method.init();
|
|
30112
30162
|
(_a = method.setDevice) === null || _a === void 0 ? void 0 : _a.call(method, this.device);
|
|
30163
|
+
method.context = this.context;
|
|
30164
|
+
const onSignalAbort = () => {
|
|
30165
|
+
var _a;
|
|
30166
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort(hdShared.HardwareErrorCodeMessage[hdShared.HardwareErrorCode.RepeatUnlocking]);
|
|
30167
|
+
};
|
|
30168
|
+
const _onDeviceButtonHandler = (...[device, request]) => {
|
|
30169
|
+
if (request.code === 'ButtonRequest_PinEntry' ||
|
|
30170
|
+
request.code === 'ButtonRequest_AttachPin') {
|
|
30171
|
+
onSignalAbort();
|
|
30172
|
+
}
|
|
30173
|
+
else {
|
|
30174
|
+
onDeviceButtonHandler(device, request);
|
|
30175
|
+
}
|
|
30176
|
+
};
|
|
30177
|
+
this.device.on(DEVICE.BUTTON, _onDeviceButtonHandler);
|
|
30178
|
+
this.device.on(DEVICE.PIN, onSignalAbort);
|
|
30179
|
+
this.device.on(DEVICE.PASSPHRASE, onSignalAbort);
|
|
30113
30180
|
preCheckDeviceSupport(this.device, method);
|
|
30114
30181
|
const response = yield method.run();
|
|
30115
30182
|
if (!Array.isArray(response) || response.length === 0) {
|
|
30116
30183
|
throw new Error('No response');
|
|
30117
30184
|
}
|
|
30118
|
-
result = response.map((item, index) => (Object.assign(Object.assign({}, params.bundle[index]._originRequestParams), { success: true, payload: item })));
|
|
30185
|
+
result = response.map((item, index) => (Object.assign(Object.assign({}, params.bundle[index]._originRequestParams), { success: true, payload: Object.assign(Object.assign({}, item), { rootFingerprint }) })));
|
|
30119
30186
|
}
|
|
30120
30187
|
catch (e) {
|
|
30121
30188
|
const error = handleSkippableHardwareError(e, this.device, method);
|
|
@@ -30136,45 +30203,24 @@ class AllNetworkGetAddress extends BaseMethod {
|
|
|
30136
30203
|
});
|
|
30137
30204
|
}
|
|
30138
30205
|
run() {
|
|
30139
|
-
var _a, _b;
|
|
30140
30206
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30141
|
-
const
|
|
30142
|
-
|
|
30143
|
-
|
|
30144
|
-
|
|
30145
|
-
|
|
30146
|
-
|
|
30147
|
-
|
|
30148
|
-
|
|
30149
|
-
|
|
30150
|
-
|
|
30151
|
-
|
|
30152
|
-
|
|
30153
|
-
|
|
30154
|
-
|
|
30155
|
-
return acc;
|
|
30156
|
-
}, {});
|
|
30157
|
-
let i = 0;
|
|
30158
|
-
for (const [methodName, params] of Object.entries(methodGroups)) {
|
|
30159
|
-
const methodParams = {
|
|
30160
|
-
bundle: params.map(param => (Object.assign({}, param.params))),
|
|
30161
|
-
};
|
|
30162
|
-
const response = yield this.callMethod(methodName, methodParams);
|
|
30163
|
-
for (let i = 0; i < params.length; i++) {
|
|
30164
|
-
const { _originRequestParams, _originalIndex } = params[i];
|
|
30165
|
-
const responseKey = `${_originalIndex}`;
|
|
30166
|
-
resultMap[responseKey] = Object.assign(Object.assign({}, _originRequestParams), response[i]);
|
|
30167
|
-
}
|
|
30168
|
-
if (((_b = (_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle) === null || _b === void 0 ? void 0 : _b.length) > 1) {
|
|
30169
|
-
const progress = Math.round(((i + 1) / this.payload.bundle.length) * 100);
|
|
30170
|
-
this.postMessage(createUiMessage(UI_REQUEST.DEVICE_PROGRESS, { progress }));
|
|
30207
|
+
const res = yield this.device.commands.typedCall('GetPublicKey', 'PublicKey', {
|
|
30208
|
+
address_n: [toHardened(44), toHardened(1), toHardened(0)],
|
|
30209
|
+
coin_name: 'Testnet',
|
|
30210
|
+
script_type: 'SPENDADDRESS',
|
|
30211
|
+
show_display: false,
|
|
30212
|
+
});
|
|
30213
|
+
this.postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW));
|
|
30214
|
+
if (res.message.root_fingerprint == null) {
|
|
30215
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter);
|
|
30216
|
+
}
|
|
30217
|
+
this.abortController = new AbortController();
|
|
30218
|
+
return this.getAllNetworkAddress(res.message.root_fingerprint).catch(e => {
|
|
30219
|
+
if (e instanceof hdShared.HardwareError && e.errorCode === hdShared.HardwareErrorCode.RepeatUnlocking) {
|
|
30220
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RepeatUnlocking, e.message);
|
|
30171
30221
|
}
|
|
30172
|
-
|
|
30173
|
-
}
|
|
30174
|
-
for (let i = 0; i < bundle.length; i++) {
|
|
30175
|
-
responses.push(resultMap[i]);
|
|
30176
|
-
}
|
|
30177
|
-
return Promise.resolve(responses);
|
|
30222
|
+
throw e;
|
|
30223
|
+
});
|
|
30178
30224
|
});
|
|
30179
30225
|
}
|
|
30180
30226
|
}
|
|
@@ -30195,10 +30241,7 @@ function handleSkippableHardwareError(e, device, method) {
|
|
|
30195
30241
|
let error;
|
|
30196
30242
|
if (e instanceof hdShared.HardwareError && e.errorCode !== hdShared.HardwareErrorCode.RuntimeError) {
|
|
30197
30243
|
const { errorCode } = e;
|
|
30198
|
-
if (errorCode === hdShared.HardwareErrorCode.
|
|
30199
|
-
error = e;
|
|
30200
|
-
}
|
|
30201
|
-
else if (errorCode === hdShared.HardwareErrorCode.CallMethodNeedUpgradeFirmware) {
|
|
30244
|
+
if (errorCode === hdShared.HardwareErrorCode.CallMethodNeedUpgradeFirmware) {
|
|
30202
30245
|
error = e;
|
|
30203
30246
|
}
|
|
30204
30247
|
else if (errorCode === hdShared.HardwareErrorCode.DeviceNotSupportMethod) {
|
|
@@ -30224,6 +30267,164 @@ function handleSkippableHardwareError(e, device, method) {
|
|
|
30224
30267
|
return error;
|
|
30225
30268
|
}
|
|
30226
30269
|
|
|
30270
|
+
class AllNetworkGetAddress extends AllNetworkGetAddressBase {
|
|
30271
|
+
getAllNetworkAddress(rootFingerprint) {
|
|
30272
|
+
var _a, _b, _c, _d;
|
|
30273
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30274
|
+
const responses = [];
|
|
30275
|
+
const resultMap = {};
|
|
30276
|
+
const { bundle } = this.payload;
|
|
30277
|
+
const methodGroups = bundle
|
|
30278
|
+
.map((param, index) => this.generateMethodName({
|
|
30279
|
+
network: param.network,
|
|
30280
|
+
payload: param,
|
|
30281
|
+
originalIndex: index,
|
|
30282
|
+
}))
|
|
30283
|
+
.reduce((acc, cur) => {
|
|
30284
|
+
if (!acc[cur.methodName]) {
|
|
30285
|
+
acc[cur.methodName] = [];
|
|
30286
|
+
}
|
|
30287
|
+
acc[cur.methodName].push(cur);
|
|
30288
|
+
return acc;
|
|
30289
|
+
}, {});
|
|
30290
|
+
let i = 0;
|
|
30291
|
+
for (const [methodName, params] of Object.entries(methodGroups)) {
|
|
30292
|
+
const methodParams = {
|
|
30293
|
+
bundle: params.map(param => (Object.assign({}, param.params))),
|
|
30294
|
+
};
|
|
30295
|
+
if ((_a = this.abortController) === null || _a === void 0 ? void 0 : _a.signal.aborted) {
|
|
30296
|
+
throw new Error(hdShared.HardwareErrorCodeMessage[hdShared.HardwareErrorCode.RepeatUnlocking]);
|
|
30297
|
+
}
|
|
30298
|
+
const response = yield this.callMethod(methodName, methodParams, rootFingerprint);
|
|
30299
|
+
if ((_b = this.abortController) === null || _b === void 0 ? void 0 : _b.signal.aborted) {
|
|
30300
|
+
throw new Error(hdShared.HardwareErrorCodeMessage[hdShared.HardwareErrorCode.RepeatUnlocking]);
|
|
30301
|
+
}
|
|
30302
|
+
for (let i = 0; i < params.length; i++) {
|
|
30303
|
+
const { _originRequestParams, _originalIndex } = params[i];
|
|
30304
|
+
const responseKey = `${_originalIndex}`;
|
|
30305
|
+
resultMap[responseKey] = Object.assign(Object.assign({}, _originRequestParams), response[i]);
|
|
30306
|
+
}
|
|
30307
|
+
if (((_d = (_c = this.payload) === null || _c === void 0 ? void 0 : _c.bundle) === null || _d === void 0 ? void 0 : _d.length) > 1) {
|
|
30308
|
+
const progress = Math.round(((i + 1) / this.payload.bundle.length) * 100);
|
|
30309
|
+
this.postMessage(createUiMessage(UI_REQUEST.DEVICE_PROGRESS, { progress }));
|
|
30310
|
+
}
|
|
30311
|
+
i++;
|
|
30312
|
+
}
|
|
30313
|
+
for (let i = 0; i < bundle.length; i++) {
|
|
30314
|
+
responses.push(resultMap[i]);
|
|
30315
|
+
}
|
|
30316
|
+
this.abortController = null;
|
|
30317
|
+
return Promise.resolve(responses);
|
|
30318
|
+
});
|
|
30319
|
+
}
|
|
30320
|
+
}
|
|
30321
|
+
|
|
30322
|
+
class AllNetworkGetAddressByLoop extends AllNetworkGetAddressBase {
|
|
30323
|
+
getAllNetworkAddress(rootFingerprint) {
|
|
30324
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30325
|
+
const { callbackId, callbackIdFinish } = this.payload;
|
|
30326
|
+
if (!callbackId) {
|
|
30327
|
+
throw new Error('callbackId is required');
|
|
30328
|
+
}
|
|
30329
|
+
if (!callbackIdFinish) {
|
|
30330
|
+
throw new Error('callbackIdFinish is required');
|
|
30331
|
+
}
|
|
30332
|
+
const bundle = this.payload.bundle || [this.payload];
|
|
30333
|
+
const callbackPromise = this.processCallbacksInBackground(bundle, rootFingerprint, callbackId, callbackIdFinish);
|
|
30334
|
+
this.device.pendingCallbackPromise = hdShared.createDeferred(callbackPromise);
|
|
30335
|
+
if (this.context && this.payload.connectId) {
|
|
30336
|
+
this.context.registerCallbackTask(this.payload.connectId, this.device.pendingCallbackPromise);
|
|
30337
|
+
}
|
|
30338
|
+
return Promise.resolve([]);
|
|
30339
|
+
});
|
|
30340
|
+
}
|
|
30341
|
+
processCallbacksInBackground(bundle, rootFingerprint, callbackId, callbackIdFinish) {
|
|
30342
|
+
var _a, _b, _c;
|
|
30343
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30344
|
+
try {
|
|
30345
|
+
const allResults = [];
|
|
30346
|
+
for (let i = 0; i < bundle.length; i++) {
|
|
30347
|
+
const item = bundle[i];
|
|
30348
|
+
if ((_a = this.abortController) === null || _a === void 0 ? void 0 : _a.signal.aborted) {
|
|
30349
|
+
throw new Error(hdShared.HardwareErrorCodeMessage[hdShared.HardwareErrorCode.RepeatUnlocking]);
|
|
30350
|
+
}
|
|
30351
|
+
const methodParams = this.generateMethodName({
|
|
30352
|
+
network: item.network,
|
|
30353
|
+
payload: item,
|
|
30354
|
+
originalIndex: i,
|
|
30355
|
+
});
|
|
30356
|
+
const singleMethodParams = {
|
|
30357
|
+
bundle: [methodParams.params],
|
|
30358
|
+
};
|
|
30359
|
+
const response = yield this.callMethod(methodParams.methodName, singleMethodParams, rootFingerprint);
|
|
30360
|
+
if ((_b = this.abortController) === null || _b === void 0 ? void 0 : _b.signal.aborted) {
|
|
30361
|
+
throw new Error(hdShared.HardwareErrorCodeMessage[hdShared.HardwareErrorCode.RepeatUnlocking]);
|
|
30362
|
+
}
|
|
30363
|
+
const singleResult = Object.assign(Object.assign({}, item), response[0]);
|
|
30364
|
+
allResults.push(singleResult);
|
|
30365
|
+
this.sendItemCallback(callbackId, singleResult, i);
|
|
30366
|
+
}
|
|
30367
|
+
this.sendFinishCallback({
|
|
30368
|
+
callbackId: callbackIdFinish,
|
|
30369
|
+
data: allResults,
|
|
30370
|
+
});
|
|
30371
|
+
}
|
|
30372
|
+
catch (error) {
|
|
30373
|
+
let errorCode = error.errorCode || error.code;
|
|
30374
|
+
let errorMessage = error.message;
|
|
30375
|
+
if (error instanceof hdShared.HardwareError) {
|
|
30376
|
+
errorCode = error.errorCode;
|
|
30377
|
+
errorMessage = error.message;
|
|
30378
|
+
}
|
|
30379
|
+
else if (error.message === hdShared.HardwareErrorCodeMessage[hdShared.HardwareErrorCode.RepeatUnlocking]) {
|
|
30380
|
+
errorCode = hdShared.HardwareErrorCode.RepeatUnlocking;
|
|
30381
|
+
errorMessage = error.message;
|
|
30382
|
+
}
|
|
30383
|
+
else {
|
|
30384
|
+
const hardwareError = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, error.message);
|
|
30385
|
+
errorCode = hardwareError.errorCode;
|
|
30386
|
+
errorMessage = hardwareError.message;
|
|
30387
|
+
}
|
|
30388
|
+
this.sendFinishCallback({
|
|
30389
|
+
callbackId: callbackIdFinish,
|
|
30390
|
+
error: {
|
|
30391
|
+
success: false,
|
|
30392
|
+
payload: {
|
|
30393
|
+
error: errorMessage,
|
|
30394
|
+
code: errorCode,
|
|
30395
|
+
},
|
|
30396
|
+
},
|
|
30397
|
+
});
|
|
30398
|
+
}
|
|
30399
|
+
finally {
|
|
30400
|
+
(_c = this.context) === null || _c === void 0 ? void 0 : _c.cancelCallbackTasks(this.payload.connectId);
|
|
30401
|
+
this.abortController = null;
|
|
30402
|
+
}
|
|
30403
|
+
});
|
|
30404
|
+
}
|
|
30405
|
+
sendFinishCallback({ callbackId, data, error, }) {
|
|
30406
|
+
this.postMessage({
|
|
30407
|
+
event: IFRAME.CALLBACK,
|
|
30408
|
+
type: IFRAME.CALLBACK,
|
|
30409
|
+
payload: {
|
|
30410
|
+
callbackId,
|
|
30411
|
+
data,
|
|
30412
|
+
error,
|
|
30413
|
+
},
|
|
30414
|
+
});
|
|
30415
|
+
}
|
|
30416
|
+
sendItemCallback(callbackId, data, itemIndex) {
|
|
30417
|
+
this.postMessage({
|
|
30418
|
+
event: IFRAME.CALLBACK,
|
|
30419
|
+
type: IFRAME.CALLBACK,
|
|
30420
|
+
payload: {
|
|
30421
|
+
callbackId,
|
|
30422
|
+
data: Object.assign(Object.assign({}, data), { index: itemIndex }),
|
|
30423
|
+
},
|
|
30424
|
+
});
|
|
30425
|
+
}
|
|
30426
|
+
}
|
|
30427
|
+
|
|
30227
30428
|
var bitcoin = [
|
|
30228
30429
|
{
|
|
30229
30430
|
name: "Bitcoin",
|
|
@@ -30798,6 +30999,15 @@ class BTCGetPublicKey extends BaseMethod {
|
|
|
30798
30999
|
}
|
|
30799
31000
|
}
|
|
30800
31001
|
catch (error) {
|
|
31002
|
+
if (error instanceof hdShared.HardwareError) {
|
|
31003
|
+
const { errorCode } = error;
|
|
31004
|
+
if (errorCode === hdShared.HardwareErrorCode.PinCancelled ||
|
|
31005
|
+
errorCode === hdShared.HardwareErrorCode.ActionCancelled ||
|
|
31006
|
+
errorCode === hdShared.HardwareErrorCode.ResponseUnexpectTypeError ||
|
|
31007
|
+
errorCode === hdShared.HardwareErrorCode.PinInvalid) {
|
|
31008
|
+
throw error;
|
|
31009
|
+
}
|
|
31010
|
+
}
|
|
30801
31011
|
responses = [];
|
|
30802
31012
|
for (let i = 0; i < this.params.length; i++) {
|
|
30803
31013
|
const param = this.params[i];
|
|
@@ -31637,6 +31847,7 @@ class EVMGetPublicKey extends BaseMethod {
|
|
|
31637
31847
|
constructor() {
|
|
31638
31848
|
super(...arguments);
|
|
31639
31849
|
this.hasBundle = false;
|
|
31850
|
+
this.confirmShowOnOneKey = false;
|
|
31640
31851
|
this.useBatch = false;
|
|
31641
31852
|
}
|
|
31642
31853
|
init() {
|
|
@@ -31644,7 +31855,8 @@ class EVMGetPublicKey extends BaseMethod {
|
|
|
31644
31855
|
this.checkDeviceId = true;
|
|
31645
31856
|
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
|
|
31646
31857
|
this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);
|
|
31647
|
-
this.
|
|
31858
|
+
this.confirmShowOnOneKey = (_c = (_b = this.payload) === null || _b === void 0 ? void 0 : _b.bundle) === null || _c === void 0 ? void 0 : _c.some((item) => !!item.showOnOneKey);
|
|
31859
|
+
this.useBatch = !this.confirmShowOnOneKey && this.hasBundle && this.payload.useBatch;
|
|
31648
31860
|
const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };
|
|
31649
31861
|
validateParams(payload, [{ name: 'bundle', type: 'array' }]);
|
|
31650
31862
|
this.params = [];
|
|
@@ -31680,7 +31892,7 @@ class EVMGetPublicKey extends BaseMethod {
|
|
|
31680
31892
|
var _a;
|
|
31681
31893
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31682
31894
|
const responses = [];
|
|
31683
|
-
if (this.useBatch &&
|
|
31895
|
+
if (this.useBatch && supportBatchPublicKey((_a = this.device) === null || _a === void 0 ? void 0 : _a.features)) {
|
|
31684
31896
|
try {
|
|
31685
31897
|
const res = yield batchGetPublickeys(this.device, this.params, 'secp256k1', 60, {
|
|
31686
31898
|
includeNode: false,
|
|
@@ -38137,6 +38349,7 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
|
|
|
38137
38349
|
promptWebDeviceAccess: PromptWebDeviceAccess,
|
|
38138
38350
|
cipherKeyValue: CipherKeyValue,
|
|
38139
38351
|
allNetworkGetAddress: AllNetworkGetAddress,
|
|
38352
|
+
allNetworkGetAddressByLoop: AllNetworkGetAddressByLoop,
|
|
38140
38353
|
btcGetAddress: BTCGetAddress,
|
|
38141
38354
|
btcGetPublicKey: BTCGetPublicKey,
|
|
38142
38355
|
btcSignMessage: BTCSignMessage,
|
|
@@ -38349,6 +38562,7 @@ const Log$1 = getLogger(exports.LoggerNames.Core);
|
|
|
38349
38562
|
class RequestQueue {
|
|
38350
38563
|
constructor() {
|
|
38351
38564
|
this.requestQueue = new Map();
|
|
38565
|
+
this.pendingCallbackTasks = new Map();
|
|
38352
38566
|
this.generateRequestId = (method) => {
|
|
38353
38567
|
if (method && method.responseID != null) {
|
|
38354
38568
|
return method.responseID;
|
|
@@ -38425,6 +38639,28 @@ class RequestQueue {
|
|
|
38425
38639
|
releaseTask(requestId) {
|
|
38426
38640
|
this.requestQueue.delete(requestId);
|
|
38427
38641
|
}
|
|
38642
|
+
registerPendingCallbackTask(connectId, callbackPromise) {
|
|
38643
|
+
this.pendingCallbackTasks.set(connectId, callbackPromise);
|
|
38644
|
+
callbackPromise.promise.finally(() => {
|
|
38645
|
+
Log$1.debug(`Callback task completed for connectId: ${connectId}`);
|
|
38646
|
+
this.pendingCallbackTasks.delete(connectId);
|
|
38647
|
+
});
|
|
38648
|
+
}
|
|
38649
|
+
waitForPendingCallbackTasks(connectId) {
|
|
38650
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38651
|
+
const pendingTask = this.pendingCallbackTasks.get(connectId);
|
|
38652
|
+
if (pendingTask) {
|
|
38653
|
+
Log$1.debug(`Waiting for pending callback task to complete for connectId: ${connectId}`);
|
|
38654
|
+
yield pendingTask.promise;
|
|
38655
|
+
}
|
|
38656
|
+
});
|
|
38657
|
+
}
|
|
38658
|
+
cancelCallbackTasks(connectId) {
|
|
38659
|
+
const pendingTask = this.pendingCallbackTasks.get(connectId);
|
|
38660
|
+
if (pendingTask) {
|
|
38661
|
+
pendingTask.resolve();
|
|
38662
|
+
}
|
|
38663
|
+
}
|
|
38428
38664
|
}
|
|
38429
38665
|
|
|
38430
38666
|
const getMutex = () => {
|
|
@@ -38547,6 +38783,9 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
38547
38783
|
Log.debug('passphrase state change, clear device cache');
|
|
38548
38784
|
DevicePool.clearDeviceCache(method.payload.connectId);
|
|
38549
38785
|
}
|
|
38786
|
+
if (method.connectId) {
|
|
38787
|
+
yield context.waitForCallbackTasks(method.connectId);
|
|
38788
|
+
}
|
|
38550
38789
|
yield waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
|
|
38551
38790
|
const task = requestQueue.createTask(method);
|
|
38552
38791
|
let device;
|
|
@@ -38570,6 +38809,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
38570
38809
|
}
|
|
38571
38810
|
Log.debug('Call API - setDevice: ', device.mainId);
|
|
38572
38811
|
(_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, device);
|
|
38812
|
+
method.context = context;
|
|
38573
38813
|
device.on(DEVICE.PIN, onDevicePinHandler);
|
|
38574
38814
|
device.on(DEVICE.BUTTON, onDeviceButtonHandler);
|
|
38575
38815
|
device.on(DEVICE.PASSPHRASE, message.payload.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler);
|
|
@@ -38577,6 +38817,9 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
38577
38817
|
device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
|
|
38578
38818
|
device.on(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, onSelectDeviceInBootloaderForWebDeviceHandler);
|
|
38579
38819
|
try {
|
|
38820
|
+
if (method.connectId) {
|
|
38821
|
+
yield context.waitForCallbackTasks(method.connectId);
|
|
38822
|
+
}
|
|
38580
38823
|
yield waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
|
|
38581
38824
|
const inner = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
38582
38825
|
var _c, _d, _e, _f, _g;
|
|
@@ -38599,15 +38842,14 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
|
|
|
38599
38842
|
firmware: currentFirmwareVersion,
|
|
38600
38843
|
ble: currentBleVersion,
|
|
38601
38844
|
};
|
|
38602
|
-
|
|
38603
|
-
|
|
38604
|
-
|
|
38605
|
-
else if (newVersionStatus === 'required') {
|
|
38606
|
-
throw hdShared.createNewFirmwareForceUpdateHardwareError(method.connectId, method.deviceId, 'firmware', currentVersions);
|
|
38845
|
+
const requiredUpdates = [];
|
|
38846
|
+
if (newVersionStatus === 'required') {
|
|
38847
|
+
requiredUpdates.push('firmware');
|
|
38607
38848
|
}
|
|
38608
|
-
|
|
38609
|
-
|
|
38849
|
+
if (bleVersionStatus === 'required') {
|
|
38850
|
+
requiredUpdates.push('ble');
|
|
38610
38851
|
}
|
|
38852
|
+
throw hdShared.createNewFirmwareForceUpdateHardwareError(method.connectId, method.deviceId, requiredUpdates, currentVersions);
|
|
38611
38853
|
}
|
|
38612
38854
|
if (versionRange) {
|
|
38613
38855
|
if (semver__default["default"].valid(versionRange.min) &&
|
|
@@ -38904,6 +39146,7 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
|
|
|
38904
39146
|
hdShared.HardwareErrorCode.BleWriteCharacteristicError,
|
|
38905
39147
|
hdShared.HardwareErrorCode.BleAlreadyConnected,
|
|
38906
39148
|
hdShared.HardwareErrorCode.FirmwareUpdateLimitOneDevice,
|
|
39149
|
+
hdShared.HardwareErrorCode.SelectDevice,
|
|
38907
39150
|
hdShared.HardwareErrorCode.DeviceDetectInBootloaderMode,
|
|
38908
39151
|
hdShared.HardwareErrorCode.BleCharacteristicNotifyChangeFailure,
|
|
38909
39152
|
hdShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission,
|
|
@@ -38934,6 +39177,7 @@ const cancel = (context, connectId) => {
|
|
|
38934
39177
|
const { requestQueue, setPrePendingCallPromise } = context;
|
|
38935
39178
|
if (connectId) {
|
|
38936
39179
|
try {
|
|
39180
|
+
requestQueue.cancelCallbackTasks(connectId);
|
|
38937
39181
|
const requestIds = requestQueue.getRequestTasksId();
|
|
38938
39182
|
Log.debug(`Cancel Api connect requestQueues: length:${requestIds.length} requestIds:${requestIds.join(',')}`);
|
|
38939
39183
|
const canceledDevices = [];
|
|
@@ -39114,6 +39358,11 @@ class Core extends events.exports {
|
|
|
39114
39358
|
setPrePendingCallPromise: (promise) => {
|
|
39115
39359
|
this.prePendingCallPromise = promise;
|
|
39116
39360
|
},
|
|
39361
|
+
registerCallbackTask: (connectId, callbackPromise) => {
|
|
39362
|
+
this.requestQueue.registerPendingCallbackTask(connectId, callbackPromise);
|
|
39363
|
+
},
|
|
39364
|
+
waitForCallbackTasks: (connectId) => this.requestQueue.waitForPendingCallbackTasks(connectId),
|
|
39365
|
+
cancelCallbackTasks: (connectId) => this.requestQueue.cancelCallbackTasks(connectId),
|
|
39117
39366
|
};
|
|
39118
39367
|
}
|
|
39119
39368
|
handleMessage(message) {
|
|
@@ -39155,6 +39404,11 @@ class Core extends events.exports {
|
|
|
39155
39404
|
cancel(this.getCoreContext(), message.payload.connectId);
|
|
39156
39405
|
break;
|
|
39157
39406
|
}
|
|
39407
|
+
case IFRAME.CALLBACK: {
|
|
39408
|
+
Log.log('callback message: ', message);
|
|
39409
|
+
postMessage(message);
|
|
39410
|
+
break;
|
|
39411
|
+
}
|
|
39158
39412
|
}
|
|
39159
39413
|
return Promise.resolve(message);
|
|
39160
39414
|
});
|
|
@@ -39253,6 +39507,7 @@ exports.UI_REQUEST = UI_REQUEST;
|
|
|
39253
39507
|
exports.UI_RESPONSE = UI_RESPONSE;
|
|
39254
39508
|
exports.checkNeedUpdateBootForClassicAndMini = checkNeedUpdateBootForClassicAndMini;
|
|
39255
39509
|
exports.checkNeedUpdateBootForTouch = checkNeedUpdateBootForTouch;
|
|
39510
|
+
exports.cleanupCallback = cleanupCallback;
|
|
39256
39511
|
exports.corsValidator = corsValidator;
|
|
39257
39512
|
exports.createDeviceMessage = createDeviceMessage;
|
|
39258
39513
|
exports.createErrorMessage = createErrorMessage;
|
|
@@ -39264,6 +39519,7 @@ exports.createUiMessage = createUiMessage;
|
|
|
39264
39519
|
exports.createUiResponse = createUiResponse;
|
|
39265
39520
|
exports["default"] = HardwareSdk;
|
|
39266
39521
|
exports.enableLog = enableLog;
|
|
39522
|
+
exports.executeCallback = executeCallback;
|
|
39267
39523
|
exports.getDeviceBLEFirmwareVersion = getDeviceBLEFirmwareVersion;
|
|
39268
39524
|
exports.getDeviceBleName = getDeviceBleName;
|
|
39269
39525
|
exports.getDeviceBoardloaderVersion = getDeviceBoardloaderVersion;
|