@onekeyfe/hd-web-sdk 0.1.14 → 0.1.18

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.
@@ -4072,6 +4072,9 @@ const inject = ({
4072
4072
  dispose,
4073
4073
  uiResponse,
4074
4074
  cancel,
4075
+ getLogs: () => call({
4076
+ method: 'getLogs'
4077
+ }),
4075
4078
  searchDevices: () => call({
4076
4079
  method: 'searchDevices'
4077
4080
  }),
@@ -4093,8 +4096,9 @@ const inject = ({
4093
4096
  checkBridgeStatus: () => call({
4094
4097
  method: 'checkBridgeStatus'
4095
4098
  }),
4096
- cipherKeyValue: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4099
+ cipherKeyValue: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4097
4100
  connectId,
4101
+ deviceId,
4098
4102
  method: 'cipherKeyValue'
4099
4103
  })),
4100
4104
  deviceBackup: connectId => call({
@@ -4137,96 +4141,119 @@ const inject = ({
4137
4141
  connectId,
4138
4142
  method: 'deviceWipe'
4139
4143
  }),
4140
- evmGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4144
+ evmGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4141
4145
  connectId,
4146
+ deviceId,
4142
4147
  method: 'evmGetAddress'
4143
4148
  })),
4144
- evmGetPublicKey: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4149
+ evmGetPublicKey: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4145
4150
  connectId,
4151
+ deviceId,
4146
4152
  method: 'evmGetPublicKey'
4147
4153
  })),
4148
- evmSignMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4154
+ evmSignMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4149
4155
  connectId,
4156
+ deviceId,
4150
4157
  method: 'evmSignMessage'
4151
4158
  })),
4152
- evmSignMessageEIP712: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4159
+ evmSignMessageEIP712: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4153
4160
  connectId,
4161
+ deviceId,
4154
4162
  method: 'evmSignMessageEIP712'
4155
4163
  })),
4156
- evmSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4164
+ evmSignTransaction: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4157
4165
  connectId,
4166
+ deviceId,
4158
4167
  method: 'evmSignTransaction'
4159
4168
  })),
4160
- evmSignTypedData: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4169
+ evmSignTypedData: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4161
4170
  connectId,
4171
+ deviceId,
4162
4172
  method: 'evmSignTypedData'
4163
4173
  })),
4164
- evmVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4174
+ evmVerifyMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4165
4175
  connectId,
4176
+ deviceId,
4166
4177
  method: 'evmVerifyMessage'
4167
4178
  })),
4168
- btcGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4179
+ btcGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4169
4180
  connectId,
4181
+ deviceId,
4170
4182
  method: 'btcGetAddress'
4171
4183
  })),
4172
- btcGetPublicKey: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4184
+ btcGetPublicKey: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4173
4185
  connectId,
4186
+ deviceId,
4174
4187
  method: 'btcGetPublicKey'
4175
4188
  })),
4176
- btcSignMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4189
+ btcSignMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4177
4190
  connectId,
4191
+ deviceId,
4178
4192
  method: 'btcSignMessage'
4179
4193
  })),
4180
- btcSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4194
+ btcSignTransaction: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4181
4195
  connectId,
4196
+ deviceId,
4182
4197
  method: 'btcSignTransaction'
4183
4198
  })),
4184
- btcVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4199
+ btcVerifyMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4185
4200
  connectId,
4201
+ deviceId,
4186
4202
  method: 'btcVerifyMessage'
4187
4203
  })),
4188
- starcoinGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4204
+ starcoinGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4189
4205
  connectId,
4206
+ deviceId,
4190
4207
  method: 'starcoinGetAddress'
4191
4208
  })),
4192
- starcoinGetPublicKey: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4209
+ starcoinGetPublicKey: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4193
4210
  connectId,
4211
+ deviceId,
4194
4212
  method: 'starcoinGetPublicKey'
4195
4213
  })),
4196
- starcoinSignMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4214
+ starcoinSignMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4197
4215
  connectId,
4216
+ deviceId,
4198
4217
  method: 'starcoinSignMessage'
4199
4218
  })),
4200
- starcoinSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4219
+ starcoinSignTransaction: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4201
4220
  connectId,
4221
+ deviceId,
4202
4222
  method: 'starcoinSignTransaction'
4203
4223
  })),
4204
- starcoinVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4224
+ starcoinVerifyMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4205
4225
  connectId,
4226
+ deviceId,
4206
4227
  method: 'starcoinVerifyMessage'
4207
4228
  })),
4208
- nemGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4229
+ nemGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4209
4230
  connectId,
4231
+ deviceId,
4210
4232
  method: 'nemGetAddress'
4211
4233
  })),
4212
- nemSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4234
+ nemSignTransaction: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4213
4235
  connectId,
4236
+ deviceId,
4214
4237
  method: 'nemSignTransaction'
4215
4238
  })),
4216
- solGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4239
+ solGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4217
4240
  connectId,
4241
+ deviceId,
4218
4242
  method: 'solGetAddress'
4219
4243
  })),
4220
- solSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4244
+ solSignTransaction: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4221
4245
  connectId,
4246
+ deviceId,
4222
4247
  method: 'solSignTransaction'
4223
4248
  })),
4224
- stellarGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4249
+ stellarGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4225
4250
  connectId,
4251
+ deviceId,
4226
4252
  method: 'stellarGetAddress'
4227
4253
  })),
4228
- stellarSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4254
+ stellarSignTransaction: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), {
4229
4255
  connectId,
4256
+ deviceId,
4230
4257
  method: 'stellarSignTransaction'
4231
4258
  })),
4232
4259
  firmwareUpdate: (connectId, params) => call(Object.assign(Object.assign({}, params), {
@@ -4785,337 +4812,6 @@ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
4785
4812
  }
4786
4813
  }
4787
4814
 
4788
- const httpRequest$1 = (url, type = 'text') => __awaiter(void 0, void 0, void 0, function* () {
4789
- const response = yield axios__default["default"].request({
4790
- url,
4791
- withCredentials: false,
4792
- responseType: type === 'binary' ? 'arraybuffer' : 'json'
4793
- });
4794
-
4795
- if (+response.status === 200) {
4796
- if (type === 'json') {
4797
- return response.data;
4798
- }
4799
-
4800
- if (type === 'binary') {
4801
- return response.data;
4802
- }
4803
-
4804
- return response.data;
4805
- }
4806
-
4807
- throw new Error(`httpRequest error: ${url} ${response.statusText}`);
4808
- });
4809
-
4810
- const httpRequest = (url, type) => httpRequest$1(url, type);
4811
-
4812
- const getTimeStamp = () => new Date().getTime();
4813
-
4814
- const VER_NUMS = 3;
4815
- const versionRegex = new RegExp(/^[0-9]{1,3}(\.[0-9]{1,3}){0,2}$/);
4816
-
4817
- const isValidVersionString = version => versionRegex.test(version);
4818
-
4819
- const isValidVersionArray = version => {
4820
- if (!Array.isArray(version)) {
4821
- return false;
4822
- }
4823
-
4824
- if (version.length === 0 || version.length > VER_NUMS) {
4825
- return false;
4826
- }
4827
-
4828
- if (version[0] === 0) {
4829
- return false;
4830
- }
4831
-
4832
- for (let i = 0; i < version.length; i++) {
4833
- if (typeof version[i] !== 'number' || version[i] < 0) {
4834
- return false;
4835
- }
4836
- }
4837
-
4838
- return true;
4839
- };
4840
-
4841
- const normalizeVersionArray = version => {
4842
- if (version.length === VER_NUMS) {
4843
- return version;
4844
- }
4845
-
4846
- const partialVersion = [...version];
4847
-
4848
- for (let i = version.length; i < VER_NUMS; i++) {
4849
- partialVersion.push(0);
4850
- }
4851
-
4852
- return partialVersion;
4853
- };
4854
-
4855
- const versionSplit = version => {
4856
- if (!isValidVersionString(version)) {
4857
- return [0, 0, 0];
4858
- }
4859
-
4860
- return version.split('.').map(v => Number(v));
4861
- };
4862
-
4863
- const versionCompare = (a, b) => {
4864
- if (typeof a === 'string' && typeof b === 'string' && a === b) {
4865
- return 0;
4866
- }
4867
-
4868
- const pa = typeof a === 'string' ? versionSplit(a) : a;
4869
- const pb = typeof b === 'string' ? versionSplit(b) : b;
4870
- const vpa = isValidVersionArray(pa);
4871
- const vpb = isValidVersionArray(pb);
4872
-
4873
- if (!vpa && !vpb) {
4874
- return 0;
4875
- }
4876
-
4877
- if (!vpa && vpb) {
4878
- return -1;
4879
- }
4880
-
4881
- if (vpa && !vpb) {
4882
- return 1;
4883
- }
4884
-
4885
- const npa = normalizeVersionArray(pa);
4886
- const npb = normalizeVersionArray(pb);
4887
-
4888
- for (let i = 0; i < VER_NUMS; i++) {
4889
- if (npa[i] > npb[i]) return 1;
4890
- if (npb[i] > npa[i]) return -1;
4891
- }
4892
-
4893
- return 0;
4894
- };
4895
-
4896
- function patchFeatures(response) {
4897
- if (response.type !== 'Features') {
4898
- return response;
4899
- }
4900
-
4901
- if (response.message.major_version < 1) {
4902
- response.message.major_version = 1;
4903
- }
4904
-
4905
- return response;
4906
- }
4907
-
4908
- const getDeviceModel = features => {
4909
- if (!features || typeof features !== 'object') {
4910
- return 'model_mini';
4911
- }
4912
-
4913
- if (features.model === '1') {
4914
- return 'model_mini';
4915
- }
4916
-
4917
- return 'model_touch';
4918
- };
4919
-
4920
- const getDeviceType = features => {
4921
- if (!features || typeof features !== 'object' || !features.serial_no) {
4922
- return 'classic';
4923
- }
4924
-
4925
- const serialNo = features.serial_no;
4926
- const miniFlag = serialNo.slice(0, 2);
4927
- if (miniFlag.toLowerCase() === 'mi') return 'mini';
4928
- if (miniFlag.toLowerCase() === 'tc') return 'touch';
4929
- return 'classic';
4930
- };
4931
-
4932
- const getDeviceTypeOnBootloader = features => {
4933
- if (!features || typeof features !== 'object') {
4934
- return 'classic';
4935
- }
4936
-
4937
- if (features.model === 'T') {
4938
- return 'touch';
4939
- }
4940
-
4941
- return getDeviceType(features);
4942
- };
4943
-
4944
- const getDeviceTypeByBleName = name => {
4945
- if (!name) return 'classic';
4946
- if (name.startsWith('MI')) return 'mini';
4947
- if (name.startsWith('T')) return 'touch';
4948
- return 'classic';
4949
- };
4950
-
4951
- const getDeviceTypeByDeviceId = deviceId => {
4952
- if (!deviceId) {
4953
- return 'classic';
4954
- }
4955
-
4956
- const miniFlag = deviceId.slice(0, 2);
4957
- if (miniFlag.toLowerCase() === 'mi') return 'mini';
4958
- return 'classic';
4959
- };
4960
-
4961
- const getDeviceUUID = features => {
4962
- const deviceType = getDeviceType(features);
4963
-
4964
- if (deviceType === 'classic') {
4965
- return features.onekey_serial;
4966
- }
4967
-
4968
- return features.serial_no;
4969
- };
4970
-
4971
- const getDeviceLabel = features => {
4972
- const deviceType = getDeviceType(features);
4973
-
4974
- if (typeof features.label === 'string') {
4975
- return features.label;
4976
- }
4977
-
4978
- return `My OneKey ${deviceType.charAt(0).toUpperCase() + deviceType.slice(1)}`;
4979
- };
4980
-
4981
- const getDeviceFirmwareVersion = features => {
4982
- if (!features) return [0, 0, 0];
4983
-
4984
- if (features.onekey_version) {
4985
- return features.onekey_version.split('.');
4986
- }
4987
-
4988
- return [features.major_version, features.minor_version, features.patch_version];
4989
- };
4990
-
4991
- const getDeviceBLEFirmwareVersion = features => {
4992
- if (!features.ble_ver) {
4993
- return null;
4994
- }
4995
-
4996
- return features.ble_ver.split('.');
4997
- };
4998
-
4999
- const HD_HARDENED = 0x80000000;
5000
-
5001
- const toHardened = n => (n | HD_HARDENED) >>> 0;
5002
-
5003
- const fromHardened = n => (n & ~HD_HARDENED) >>> 0;
5004
-
5005
- const PATH_NOT_VALID = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Not a valid path');
5006
- const PATH_NEGATIVE_VALUES = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Path cannot contain negative values');
5007
-
5008
- const getHDPath = path => {
5009
- const parts = path.toLowerCase().split('/');
5010
- if (parts[0] !== 'm') throw PATH_NOT_VALID;
5011
- return parts.filter(p => p !== 'm' && p !== '').map(p => {
5012
- let hardened = false;
5013
-
5014
- if (p.substr(p.length - 1) === "'") {
5015
- hardened = true;
5016
- p = p.substr(0, p.length - 1);
5017
- }
5018
-
5019
- let n = parseInt(p);
5020
-
5021
- if (Number.isNaN(n)) {
5022
- throw PATH_NOT_VALID;
5023
- } else if (n < 0) {
5024
- throw PATH_NEGATIVE_VALUES;
5025
- }
5026
-
5027
- if (hardened) {
5028
- n = toHardened(n);
5029
- }
5030
-
5031
- return n;
5032
- });
5033
- };
5034
-
5035
- const isMultisigPath = path => Array.isArray(path) && path[0] === toHardened(48);
5036
-
5037
- const isSegwitPath = path => Array.isArray(path) && path[0] === toHardened(49);
5038
-
5039
- const getScriptType = path => {
5040
- if (!Array.isArray(path) || path.length < 1) return 'SPENDADDRESS';
5041
- const p1 = fromHardened(path[0]);
5042
-
5043
- switch (p1) {
5044
- case 48:
5045
- return 'SPENDMULTISIG';
5046
-
5047
- case 49:
5048
- return 'SPENDP2SHWITNESS';
5049
-
5050
- case 84:
5051
- return 'SPENDWITNESS';
5052
-
5053
- default:
5054
- return 'SPENDADDRESS';
5055
- }
5056
- };
5057
-
5058
- const getOutputScriptType = path => {
5059
- if (!Array.isArray(path) || path.length < 1) return 'PAYTOADDRESS';
5060
-
5061
- if (path[0] === 49) {
5062
- return 'PAYTOP2SHWITNESS';
5063
- }
5064
-
5065
- const p = fromHardened(path[0]);
5066
-
5067
- switch (p) {
5068
- case 48:
5069
- return 'PAYTOMULTISIG';
5070
-
5071
- case 49:
5072
- return 'PAYTOP2SHWITNESS';
5073
-
5074
- case 84:
5075
- return 'PAYTOWITNESS';
5076
-
5077
- default:
5078
- return 'PAYTOADDRESS';
5079
- }
5080
- };
5081
-
5082
- const serializedPath = path => {
5083
- const pathStr = path.map(p => {
5084
- if (p & HD_HARDENED) {
5085
- return `${p & ~HD_HARDENED}'`;
5086
- }
5087
-
5088
- return p;
5089
- }).join('/');
5090
- return `m/${pathStr}`;
5091
- };
5092
-
5093
- const validatePath = (path, length = 0, base = false) => {
5094
- let valid;
5095
-
5096
- if (typeof path === 'string') {
5097
- valid = getHDPath(path);
5098
- } else if (Array.isArray(path)) {
5099
- valid = path.map(p => {
5100
- const n = parseInt(p);
5101
-
5102
- if (Number.isNaN(n)) {
5103
- throw PATH_NOT_VALID;
5104
- } else if (n < 0) {
5105
- throw PATH_NEGATIVE_VALUES;
5106
- }
5107
-
5108
- return n;
5109
- });
5110
- } else {
5111
- valid = undefined;
5112
- }
5113
-
5114
- if (!valid) throw PATH_NOT_VALID;
5115
- if (length > 0 && valid.length < length) throw PATH_NOT_VALID;
5116
- return base ? valid.splice(0, 3) : valid;
5117
- };
5118
-
5119
4815
  var nested = {
5120
4816
  BinanceGetAddress: {
5121
4817
  fields: {
@@ -13776,6 +13472,513 @@ var MessagesJSON = {
13776
13472
  nested: nested
13777
13473
  };
13778
13474
 
13475
+ const httpRequest$1 = (url, type = 'text') => __awaiter(void 0, void 0, void 0, function* () {
13476
+ const response = yield axios__default["default"].request({
13477
+ url,
13478
+ withCredentials: false,
13479
+ responseType: type === 'binary' ? 'arraybuffer' : 'json'
13480
+ });
13481
+
13482
+ if (+response.status === 200) {
13483
+ if (type === 'json') {
13484
+ return response.data;
13485
+ }
13486
+
13487
+ if (type === 'binary') {
13488
+ return response.data;
13489
+ }
13490
+
13491
+ return response.data;
13492
+ }
13493
+
13494
+ throw new Error(`httpRequest error: ${url} ${response.statusText}`);
13495
+ });
13496
+
13497
+ const httpRequest = (url, type) => httpRequest$1(url, type);
13498
+
13499
+ const getTimeStamp = () => new Date().getTime();
13500
+
13501
+ const VER_NUMS = 3;
13502
+ const versionRegex = new RegExp(/^[0-9]{1,3}(\.[0-9]{1,3}){0,2}$/);
13503
+
13504
+ const isValidVersionString = version => versionRegex.test(version);
13505
+
13506
+ const isValidVersionArray = version => {
13507
+ if (!Array.isArray(version)) {
13508
+ return false;
13509
+ }
13510
+
13511
+ if (version.length === 0 || version.length > VER_NUMS) {
13512
+ return false;
13513
+ }
13514
+
13515
+ if (version[0] === 0) {
13516
+ return false;
13517
+ }
13518
+
13519
+ for (let i = 0; i < version.length; i++) {
13520
+ if (typeof version[i] !== 'number' || version[i] < 0) {
13521
+ return false;
13522
+ }
13523
+ }
13524
+
13525
+ return true;
13526
+ };
13527
+
13528
+ const normalizeVersionArray = version => {
13529
+ if (version.length === VER_NUMS) {
13530
+ return version;
13531
+ }
13532
+
13533
+ const partialVersion = [...version];
13534
+
13535
+ for (let i = version.length; i < VER_NUMS; i++) {
13536
+ partialVersion.push(0);
13537
+ }
13538
+
13539
+ return partialVersion;
13540
+ };
13541
+
13542
+ const versionSplit = version => {
13543
+ if (!isValidVersionString(version)) {
13544
+ return [0, 0, 0];
13545
+ }
13546
+
13547
+ return version.split('.').map(v => Number(v));
13548
+ };
13549
+
13550
+ const versionCompare = (a, b) => {
13551
+ if (typeof a === 'string' && typeof b === 'string' && a === b) {
13552
+ return 0;
13553
+ }
13554
+
13555
+ const pa = typeof a === 'string' ? versionSplit(a) : a;
13556
+ const pb = typeof b === 'string' ? versionSplit(b) : b;
13557
+ const vpa = isValidVersionArray(pa);
13558
+ const vpb = isValidVersionArray(pb);
13559
+
13560
+ if (!vpa && !vpb) {
13561
+ return 0;
13562
+ }
13563
+
13564
+ if (!vpa && vpb) {
13565
+ return -1;
13566
+ }
13567
+
13568
+ if (vpa && !vpb) {
13569
+ return 1;
13570
+ }
13571
+
13572
+ const npa = normalizeVersionArray(pa);
13573
+ const npb = normalizeVersionArray(pb);
13574
+
13575
+ for (let i = 0; i < VER_NUMS; i++) {
13576
+ if (npa[i] > npb[i]) return 1;
13577
+ if (npb[i] > npa[i]) return -1;
13578
+ }
13579
+
13580
+ return 0;
13581
+ };
13582
+
13583
+ function patchFeatures(response) {
13584
+ if (response.type !== 'Features') {
13585
+ return response;
13586
+ }
13587
+
13588
+ if (response.message.major_version < 1) {
13589
+ response.message.major_version = 1;
13590
+ }
13591
+
13592
+ return response;
13593
+ }
13594
+
13595
+ const getDeviceModel = features => {
13596
+ if (!features || typeof features !== 'object') {
13597
+ return 'model_mini';
13598
+ }
13599
+
13600
+ if (features.model === '1') {
13601
+ return 'model_mini';
13602
+ }
13603
+
13604
+ return 'model_touch';
13605
+ };
13606
+
13607
+ const getDeviceType = features => {
13608
+ if (!features || typeof features !== 'object' || !features.serial_no) {
13609
+ return 'classic';
13610
+ }
13611
+
13612
+ const serialNo = features.serial_no;
13613
+ const miniFlag = serialNo.slice(0, 2);
13614
+ if (miniFlag.toLowerCase() === 'mi') return 'mini';
13615
+ if (miniFlag.toLowerCase() === 'tc') return 'touch';
13616
+ return 'classic';
13617
+ };
13618
+
13619
+ const getDeviceTypeOnBootloader = features => getDeviceType(features);
13620
+
13621
+ const getDeviceTypeByBleName = name => {
13622
+ if (!name) return 'classic';
13623
+ if (name.startsWith('MI')) return 'mini';
13624
+ if (name.startsWith('T')) return 'touch';
13625
+ return 'classic';
13626
+ };
13627
+
13628
+ const getDeviceTypeByDeviceId = deviceId => {
13629
+ if (!deviceId) {
13630
+ return 'classic';
13631
+ }
13632
+
13633
+ const miniFlag = deviceId.slice(0, 2);
13634
+ if (miniFlag.toLowerCase() === 'mi') return 'mini';
13635
+ return 'classic';
13636
+ };
13637
+
13638
+ const getDeviceUUID = features => {
13639
+ const deviceType = getDeviceType(features);
13640
+
13641
+ if (deviceType === 'classic') {
13642
+ return features.onekey_serial;
13643
+ }
13644
+
13645
+ return features.serial_no;
13646
+ };
13647
+
13648
+ const getDeviceLabel = features => {
13649
+ const deviceType = getDeviceType(features);
13650
+
13651
+ if (typeof features.label === 'string') {
13652
+ return features.label;
13653
+ }
13654
+
13655
+ return `My OneKey ${deviceType.charAt(0).toUpperCase() + deviceType.slice(1)}`;
13656
+ };
13657
+
13658
+ const getDeviceFirmwareVersion = features => {
13659
+ if (!features) return [0, 0, 0];
13660
+
13661
+ if (features.onekey_version) {
13662
+ return features.onekey_version.split('.');
13663
+ }
13664
+
13665
+ return [features.major_version, features.minor_version, features.patch_version];
13666
+ };
13667
+
13668
+ const getDeviceBLEFirmwareVersion = features => {
13669
+ if (!features.ble_ver) {
13670
+ return null;
13671
+ }
13672
+
13673
+ return features.ble_ver.split('.');
13674
+ };
13675
+
13676
+ const HD_HARDENED = 0x80000000;
13677
+
13678
+ const toHardened = n => (n | HD_HARDENED) >>> 0;
13679
+
13680
+ const fromHardened = n => (n & ~HD_HARDENED) >>> 0;
13681
+
13682
+ const PATH_NOT_VALID = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Not a valid path');
13683
+ const PATH_NEGATIVE_VALUES = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Path cannot contain negative values');
13684
+
13685
+ const getHDPath = path => {
13686
+ const parts = path.toLowerCase().split('/');
13687
+ if (parts[0] !== 'm') throw PATH_NOT_VALID;
13688
+ return parts.filter(p => p !== 'm' && p !== '').map(p => {
13689
+ let hardened = false;
13690
+
13691
+ if (p.substr(p.length - 1) === "'") {
13692
+ hardened = true;
13693
+ p = p.substr(0, p.length - 1);
13694
+ }
13695
+
13696
+ let n = parseInt(p);
13697
+
13698
+ if (Number.isNaN(n)) {
13699
+ throw PATH_NOT_VALID;
13700
+ } else if (n < 0) {
13701
+ throw PATH_NEGATIVE_VALUES;
13702
+ }
13703
+
13704
+ if (hardened) {
13705
+ n = toHardened(n);
13706
+ }
13707
+
13708
+ return n;
13709
+ });
13710
+ };
13711
+
13712
+ const isMultisigPath = path => Array.isArray(path) && path[0] === toHardened(48);
13713
+
13714
+ const isSegwitPath = path => Array.isArray(path) && path[0] === toHardened(49);
13715
+
13716
+ const getScriptType = path => {
13717
+ if (!Array.isArray(path) || path.length < 1) return 'SPENDADDRESS';
13718
+ const p1 = fromHardened(path[0]);
13719
+
13720
+ switch (p1) {
13721
+ case 48:
13722
+ return 'SPENDMULTISIG';
13723
+
13724
+ case 49:
13725
+ return 'SPENDP2SHWITNESS';
13726
+
13727
+ case 84:
13728
+ return 'SPENDWITNESS';
13729
+
13730
+ default:
13731
+ return 'SPENDADDRESS';
13732
+ }
13733
+ };
13734
+
13735
+ const getOutputScriptType = path => {
13736
+ if (!Array.isArray(path) || path.length < 1) return 'PAYTOADDRESS';
13737
+
13738
+ if (path[0] === 49) {
13739
+ return 'PAYTOP2SHWITNESS';
13740
+ }
13741
+
13742
+ const p = fromHardened(path[0]);
13743
+
13744
+ switch (p) {
13745
+ case 48:
13746
+ return 'PAYTOMULTISIG';
13747
+
13748
+ case 49:
13749
+ return 'PAYTOP2SHWITNESS';
13750
+
13751
+ case 84:
13752
+ return 'PAYTOWITNESS';
13753
+
13754
+ default:
13755
+ return 'PAYTOADDRESS';
13756
+ }
13757
+ };
13758
+
13759
+ const serializedPath = path => {
13760
+ const pathStr = path.map(p => {
13761
+ if (p & HD_HARDENED) {
13762
+ return `${p & ~HD_HARDENED}'`;
13763
+ }
13764
+
13765
+ return p;
13766
+ }).join('/');
13767
+ return `m/${pathStr}`;
13768
+ };
13769
+
13770
+ const validatePath = (path, length = 0, base = false) => {
13771
+ let valid;
13772
+
13773
+ if (typeof path === 'string') {
13774
+ valid = getHDPath(path);
13775
+ } else if (Array.isArray(path)) {
13776
+ valid = path.map(p => {
13777
+ const n = parseInt(p);
13778
+
13779
+ if (Number.isNaN(n)) {
13780
+ throw PATH_NOT_VALID;
13781
+ } else if (n < 0) {
13782
+ throw PATH_NEGATIVE_VALUES;
13783
+ }
13784
+
13785
+ return n;
13786
+ });
13787
+ } else {
13788
+ valid = undefined;
13789
+ }
13790
+
13791
+ if (!valid) throw PATH_NOT_VALID;
13792
+ if (length > 0 && valid.length < length) throw PATH_NOT_VALID;
13793
+ return base ? valid.splice(0, 3) : valid;
13794
+ };
13795
+
13796
+ const LOG_EVENT = 'LOG_EVENT';
13797
+ const LOG = {
13798
+ OUTPUT: 'log-output'
13799
+ };
13800
+
13801
+ const createLogMessage = (type, payload) => ({
13802
+ event: LOG_EVENT,
13803
+ type,
13804
+ payload
13805
+ });
13806
+
13807
+ const MAX_ENTRIES = 500;
13808
+ let postMessage$1;
13809
+
13810
+ class Log$6 {
13811
+ constructor(prefix, enabled) {
13812
+ this.prefix = prefix;
13813
+ this.enabled = enabled;
13814
+ this.messages = [];
13815
+ }
13816
+
13817
+ addMessage(level, prefix, ...args) {
13818
+ this.messages.push({
13819
+ level,
13820
+ prefix,
13821
+ message: args,
13822
+ timestamp: new Date().getTime()
13823
+ });
13824
+
13825
+ if (this.messages.length > MAX_ENTRIES) {
13826
+ this.messages.shift();
13827
+ }
13828
+ }
13829
+
13830
+ log(...args) {
13831
+ this.addMessage('log', this.prefix, ...args);
13832
+ sendLogMessage(this.prefix, ...args);
13833
+
13834
+ if (!this.enabled) {
13835
+ return;
13836
+ }
13837
+
13838
+ console.log(this.prefix, ...args);
13839
+ }
13840
+
13841
+ error(...args) {
13842
+ this.addMessage('error', this.prefix, ...args);
13843
+ sendLogMessage(this.prefix, ...args);
13844
+
13845
+ if (!this.enabled) {
13846
+ return;
13847
+ }
13848
+
13849
+ console.error(this.prefix, ...args);
13850
+ }
13851
+
13852
+ warn(...args) {
13853
+ this.addMessage('warn', this.prefix, ...args);
13854
+ sendLogMessage(this.prefix, ...args);
13855
+
13856
+ if (!this.enabled) {
13857
+ return;
13858
+ }
13859
+
13860
+ console.warn(this.prefix, ...args);
13861
+ }
13862
+
13863
+ debug(...args) {
13864
+ this.addMessage('debug', this.prefix, ...args);
13865
+ sendLogMessage(this.prefix, ...args);
13866
+
13867
+ if (!this.enabled) {
13868
+ return;
13869
+ }
13870
+
13871
+ console.log(this.prefix, ...args);
13872
+ }
13873
+
13874
+ }
13875
+
13876
+ const _logs = {};
13877
+
13878
+ const initLog = (prefix, enabled) => {
13879
+ const instance = new Log$6(prefix, !!enabled);
13880
+ _logs[prefix] = instance;
13881
+ return instance;
13882
+ };
13883
+
13884
+ const enableLog = enabled => {
13885
+ Object.keys(_logs).forEach(key => {
13886
+ _logs[key].enabled = !!enabled;
13887
+ });
13888
+ };
13889
+
13890
+ const getLog = () => {
13891
+ let logs = [];
13892
+ Object.keys(_logs).forEach(key => {
13893
+ logs = logs.concat(_logs[key].messages);
13894
+ });
13895
+ logs.sort((a, b) => a.timestamp - b.timestamp);
13896
+ return logs;
13897
+ };
13898
+
13899
+ const setLoggerPostMessage = postMessageFn => {
13900
+ postMessage$1 = postMessageFn;
13901
+ };
13902
+
13903
+ const serializeLog = (...args) => args.map(arg => {
13904
+ if (typeof arg === 'string') {
13905
+ return arg;
13906
+ }
13907
+
13908
+ if (typeof arg === 'number') {
13909
+ return arg;
13910
+ }
13911
+
13912
+ if (typeof arg === 'boolean') {
13913
+ return arg;
13914
+ }
13915
+
13916
+ if (typeof arg === 'undefined') {
13917
+ return arg;
13918
+ }
13919
+
13920
+ if (typeof arg === 'object') {
13921
+ return JSON.stringify(arg, getCircularReplacer());
13922
+ }
13923
+
13924
+ return arg;
13925
+ });
13926
+
13927
+ const getCircularReplacer = () => {
13928
+ const seen = new WeakSet();
13929
+ return (_, value) => {
13930
+ if (typeof value === 'object' && value !== null) {
13931
+ if (seen.has(value)) {
13932
+ return;
13933
+ }
13934
+
13935
+ seen.add(value);
13936
+ }
13937
+
13938
+ return value;
13939
+ };
13940
+ };
13941
+
13942
+ const sendLogMessage = (prefix, ...args) => {
13943
+ postMessage$1 === null || postMessage$1 === void 0 ? void 0 : postMessage$1(createLogMessage(LOG.OUTPUT, serializeLog(prefix, ...args)));
13944
+ };
13945
+
13946
+ exports.d0 = void 0;
13947
+
13948
+ (function (LoggerNames) {
13949
+ LoggerNames["Core"] = "Core";
13950
+ LoggerNames["Transport"] = "Transport";
13951
+ LoggerNames["Device"] = "Device";
13952
+ LoggerNames["DeviceCommands"] = "DeviceCommands";
13953
+ LoggerNames["DeviceConnector"] = "DeviceConnector";
13954
+ LoggerNames["DeviceList"] = "DeviceList";
13955
+ LoggerNames["HdBleSdk"] = "@onekey/hd-ble-sdk";
13956
+ LoggerNames["HdTransportHttp"] = "@onekey/hd-transport-http";
13957
+ LoggerNames["HdBleTransport"] = "@onekey/hd-ble-transport";
13958
+ LoggerNames["Connect"] = "@onekey/connect";
13959
+ LoggerNames["Iframe"] = "IFrame";
13960
+ LoggerNames["SendMessage"] = "[SendMessage]";
13961
+ LoggerNames["Method"] = "[Method]";
13962
+ })(exports.d0 || (exports.d0 = {}));
13963
+
13964
+ const LoggerMap = {
13965
+ [exports.d0.Core]: initLog(exports.d0.Core),
13966
+ [exports.d0.Transport]: initLog(exports.d0.Transport),
13967
+ [exports.d0.Device]: initLog(exports.d0.Device),
13968
+ [exports.d0.DeviceCommands]: initLog(exports.d0.DeviceCommands),
13969
+ [exports.d0.DeviceConnector]: initLog(exports.d0.DeviceConnector),
13970
+ [exports.d0.DeviceList]: initLog(exports.d0.DeviceList),
13971
+ [exports.d0.HdBleSdk]: initLog(exports.d0.HdBleSdk),
13972
+ [exports.d0.HdTransportHttp]: initLog(exports.d0.HdTransportHttp),
13973
+ [exports.d0.HdBleTransport]: initLog(exports.d0.HdBleTransport),
13974
+ [exports.d0.Connect]: initLog(exports.d0.Connect),
13975
+ [exports.d0.Iframe]: initLog(exports.d0.Iframe),
13976
+ [exports.d0.SendMessage]: initLog(exports.d0.SendMessage),
13977
+ [exports.d0.Method]: initLog(exports.d0.Method)
13978
+ };
13979
+
13980
+ const getLogger = key => LoggerMap[key];
13981
+
13779
13982
  const getReleaseStatus = (releases, currentVersion) => {
13780
13983
  const newVersions = releases.filter(r => semver__default["default"].gt(r.version.join('.'), currentVersion));
13781
13984
 
@@ -13948,11 +14151,13 @@ DataManager.getTransportStatus = localVersion => {
13948
14151
  return isLatest ? 'valid' : 'outdated';
13949
14152
  };
13950
14153
 
13951
- const Log$5 = hdShared.initLog('Transport');
14154
+ const Log$5 = getLogger(exports.d0.Transport);
14155
+ const BleLogger = getLogger(exports.d0.HdBleTransport);
14156
+ const HttpLogger = getLogger(exports.d0.HdTransportHttp);
13952
14157
 
13953
14158
  class TransportManager {
13954
14159
  static load() {
13955
- console.log('transport manager load');
14160
+ Log$5.debug('transport manager load');
13956
14161
  this.defaultMessages = DataManager.getProtobufMessages();
13957
14162
  this.currentMessages = this.defaultMessages;
13958
14163
  }
@@ -13965,13 +14170,13 @@ class TransportManager {
13965
14170
 
13966
14171
  if (env === 'react-native') {
13967
14172
  if (!this.reactNativeInit) {
13968
- yield this.transport.init();
14173
+ yield this.transport.init(BleLogger);
13969
14174
  this.reactNativeInit = true;
13970
14175
  } else {
13971
14176
  Log$5.debug('React Native Do Not Initializing transports');
13972
14177
  }
13973
14178
  } else {
13974
- yield this.transport.init();
14179
+ yield this.transport.init(HttpLogger);
13975
14180
  }
13976
14181
 
13977
14182
  Log$5.debug('Configuring transports');
@@ -14017,7 +14222,7 @@ class TransportManager {
14017
14222
  this.transport = new TransportConstructor();
14018
14223
  }
14019
14224
 
14020
- console.log('set transport: ', this.transport);
14225
+ Log$5.debug('set transport: ', this.transport);
14021
14226
  }
14022
14227
 
14023
14228
  static getTransport() {
@@ -14154,6 +14359,18 @@ const createDeviceMessage = (type, payload) => ({
14154
14359
  payload
14155
14360
  });
14156
14361
 
14362
+ const FIRMWARE_EVENT = 'FIRMWARE_EVENT';
14363
+ const FIRMWARE = {
14364
+ RELEASE_INFO: 'firmware-release-info',
14365
+ BLE_RELEASE_INFO: 'ble-firmware-release-info'
14366
+ };
14367
+
14368
+ const createFirmwareMessage = (type, payload) => ({
14369
+ event: FIRMWARE_EVENT,
14370
+ type,
14371
+ payload
14372
+ });
14373
+
14157
14374
  const assertType = (res, resType) => {
14158
14375
  const splitResTypes = Array.isArray(resType) ? resType : resType.split('|');
14159
14376
 
@@ -14162,7 +14379,7 @@ const assertType = (res, resType) => {
14162
14379
  }
14163
14380
  };
14164
14381
 
14165
- const Log$4 = hdShared.initLog('DeviceCommands');
14382
+ const Log$4 = getLogger(exports.d0.DeviceCommands);
14166
14383
 
14167
14384
  class DeviceCommands {
14168
14385
  constructor(device, mainId) {
@@ -14172,24 +14389,26 @@ class DeviceCommands {
14172
14389
  this.disposed = false;
14173
14390
  }
14174
14391
 
14175
- dispose() {
14392
+ dispose(cancelRequest) {
14176
14393
  var _a, _b;
14177
14394
 
14178
- this.disposed = true;
14395
+ return __awaiter(this, void 0, void 0, function* () {
14396
+ this.disposed = true;
14179
14397
 
14180
- if (this._cancelableRequest) {
14181
- this._cancelableRequest();
14182
- }
14398
+ if (cancelRequest && this._cancelableRequest) {
14399
+ this._cancelableRequest();
14400
+ }
14183
14401
 
14184
- this._cancelableRequest = undefined;
14185
- (_b = (_a = this.transport).cancel) === null || _b === void 0 ? void 0 : _b.call(_a);
14402
+ this._cancelableRequest = undefined;
14403
+ yield (_b = (_a = this.transport).cancel) === null || _b === void 0 ? void 0 : _b.call(_a);
14404
+ });
14186
14405
  }
14187
14406
 
14188
14407
  call(type, msg = {}) {
14189
14408
  var _a, _b;
14190
14409
 
14191
14410
  return __awaiter(this, void 0, void 0, function* () {
14192
- console.log('[DeviceCommands] [call] Sending', type);
14411
+ Log$4.debug('[DeviceCommands] [call] Sending', type);
14193
14412
 
14194
14413
  try {
14195
14414
  const promise = this.transport.call(this.mainId, type, msg);
@@ -14223,7 +14442,7 @@ class DeviceCommands {
14223
14442
  try {
14224
14443
  assertType(response, resType);
14225
14444
  } catch (error) {
14226
- console.log('DeviceCommands typedcall error: ', error);
14445
+ Log$4.debug('DeviceCommands typedcall error: ', error);
14227
14446
 
14228
14447
  if (error instanceof hdShared.HardwareError) {
14229
14448
  if (error.errorCode === hdShared.HardwareErrorCode.ResponseUnexpectTypeError) {
@@ -14248,7 +14467,7 @@ class DeviceCommands {
14248
14467
  }
14249
14468
 
14250
14469
  _filterCommonTypes(res) {
14251
- console.log('_filterCommonTypes: ', res);
14470
+ Log$4.debug('_filterCommonTypes: ', res);
14252
14471
 
14253
14472
  if (res.type === 'Failure') {
14254
14473
  const {
@@ -14310,7 +14529,12 @@ class DeviceCommands {
14310
14529
  }, () => this._commonCall('Cancel', {}));
14311
14530
  }
14312
14531
 
14313
- if (res.type === 'PassphraseRequest') ;
14532
+ if (res.type === 'PassphraseRequest') {
14533
+ return this._commonCall('PassphraseAck', {
14534
+ passphrase: ''
14535
+ });
14536
+ }
14537
+
14314
14538
  if (res.type === 'Deprecated_PassphraseStateRequest') ;
14315
14539
  if (res.type === 'WordRequest') ;
14316
14540
  return Promise.resolve(res);
@@ -14451,7 +14675,7 @@ const parseRunOptions = options => {
14451
14675
  return options;
14452
14676
  };
14453
14677
 
14454
- const Log$3 = hdShared.initLog('Device');
14678
+ const Log$3 = getLogger(exports.d0.Device);
14455
14679
 
14456
14680
  class Device extends events.exports {
14457
14681
  constructor(descriptor) {
@@ -14548,7 +14772,7 @@ class Device extends events.exports {
14548
14772
  });
14549
14773
 
14550
14774
  if (this.commands) {
14551
- this.commands.dispose();
14775
+ yield this.commands.dispose(false);
14552
14776
  }
14553
14777
 
14554
14778
  this.commands = new DeviceCommands(this, (_d = this.mainId) !== null && _d !== void 0 ? _d : '');
@@ -14572,7 +14796,7 @@ class Device extends events.exports {
14572
14796
 
14573
14797
  if (this.isUsedHere() && !this.keepSession && this.mainId || this.mainId && env === 'react-native') {
14574
14798
  if (this.commands) {
14575
- this.commands.dispose();
14799
+ this.commands.dispose(false);
14576
14800
 
14577
14801
  if (this.commands.callPromise) {
14578
14802
  try {
@@ -14678,7 +14902,7 @@ class Device extends events.exports {
14678
14902
  run(fn, options) {
14679
14903
  return __awaiter(this, void 0, void 0, function* () {
14680
14904
  if (this.runPromise) {
14681
- this.interruption();
14905
+ yield this.interruptionFromOutside();
14682
14906
  Log$3.debug('[Device] run error:', 'Device is running, but will cancel previous operate');
14683
14907
  }
14684
14908
 
@@ -14725,14 +14949,28 @@ class Device extends events.exports {
14725
14949
  });
14726
14950
  }
14727
14951
 
14728
- interruption() {
14729
- if (this.commands) {
14730
- this.commands.dispose();
14731
- }
14952
+ interruptionFromOutside() {
14953
+ return __awaiter(this, void 0, void 0, function* () {
14954
+ if (this.commands) {
14955
+ yield this.commands.dispose(false);
14956
+ }
14732
14957
 
14733
- if (this.runPromise) {
14734
- this.runPromise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromOutside));
14735
- }
14958
+ if (this.runPromise) {
14959
+ this.runPromise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromOutside));
14960
+ }
14961
+ });
14962
+ }
14963
+
14964
+ interruptionFromUser() {
14965
+ return __awaiter(this, void 0, void 0, function* () {
14966
+ if (this.commands) {
14967
+ yield this.commands.dispose(true);
14968
+ }
14969
+
14970
+ if (this.runPromise) {
14971
+ this.runPromise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromUser));
14972
+ }
14973
+ });
14736
14974
  }
14737
14975
 
14738
14976
  getMode() {
@@ -14810,10 +15048,18 @@ class Device extends events.exports {
14810
15048
  return null;
14811
15049
  }
14812
15050
 
15051
+ checkDeviceId(deviceId) {
15052
+ if (this.features) {
15053
+ return this.features.device_id === deviceId;
15054
+ }
15055
+
15056
+ return false;
15057
+ }
15058
+
14813
15059
  }
14814
15060
 
14815
- const cacheDeviceMap = new Map();
14816
- const Log$2 = hdShared.initLog('DeviceList');
15061
+ const cacheDeviceMap = {};
15062
+ const Log$2 = getLogger(exports.d0.DeviceList);
14817
15063
 
14818
15064
  class DeviceList extends events.exports {
14819
15065
  constructor() {
@@ -14821,7 +15067,7 @@ class DeviceList extends events.exports {
14821
15067
  this.devices = {};
14822
15068
  }
14823
15069
 
14824
- getDeviceLists() {
15070
+ getDeviceLists(connectId) {
14825
15071
  var e_1, _a;
14826
15072
 
14827
15073
  var _b, _c;
@@ -14831,7 +15077,22 @@ class DeviceList extends events.exports {
14831
15077
  const descriptorList = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];
14832
15078
  this.devices = {};
14833
15079
  const deviceList = [];
14834
- console.log('get device list');
15080
+ Log$2.debug('get device list');
15081
+
15082
+ if (connectId) {
15083
+ const device = cacheDeviceMap[connectId];
15084
+
15085
+ if (device) {
15086
+ const exist = descriptorList.find(d => d.path === device.originalDescriptor.path);
15087
+
15088
+ if (exist) {
15089
+ device.updateDescriptor(exist, true);
15090
+ Log$2.debug('find existed Device: ', connectId);
15091
+ this.devices[connectId] = device;
15092
+ return [device];
15093
+ }
15094
+ }
15095
+ }
14835
15096
 
14836
15097
  try {
14837
15098
  for (var descriptorList_1 = __asyncValues(descriptorList), descriptorList_1_1; descriptorList_1_1 = yield descriptorList_1.next(), !descriptorList_1_1.done;) {
@@ -14846,15 +15107,14 @@ class DeviceList extends events.exports {
14846
15107
  if (device.features) {
14847
15108
  const uuid = getDeviceUUID(device.features);
14848
15109
 
14849
- if (cacheDeviceMap.has(uuid)) {
14850
- const cache = cacheDeviceMap.get(uuid);
15110
+ if (cacheDeviceMap[uuid]) {
15111
+ const cache = cacheDeviceMap[uuid];
14851
15112
  cache === null || cache === void 0 ? void 0 : cache.updateFromCache(device);
14852
15113
  device = cache;
14853
- Log$2.debug('use cache device: ', uuid);
14854
15114
  }
14855
15115
 
14856
15116
  this.devices[uuid] = device;
14857
- cacheDeviceMap.set(uuid, device);
15117
+ cacheDeviceMap[uuid] = device;
14858
15118
  }
14859
15119
  }
14860
15120
  } catch (e_1_1) {
@@ -14883,8 +15143,32 @@ class DeviceList extends events.exports {
14883
15143
 
14884
15144
  }
14885
15145
 
15146
+ const getFirmwareReleaseInfo = features => {
15147
+ const firmwareStatus = DataManager.getFirmwareStatus(features);
15148
+ const changelog = DataManager.getFirmwareChangelog(features);
15149
+ const release = DataManager.getFirmwareLeatestRelease(features);
15150
+ return {
15151
+ status: firmwareStatus,
15152
+ changelog,
15153
+ release
15154
+ };
15155
+ };
15156
+
15157
+ const getBleFirmwareReleaseInfo = features => {
15158
+ const firmwareStatus = DataManager.getBLEFirmwareStatus(features);
15159
+ const changelog = DataManager.getBleFirmwareChangelog(features);
15160
+ const release = DataManager.getBleFirmwareLeatestRelease(features);
15161
+ return {
15162
+ status: firmwareStatus,
15163
+ changelog,
15164
+ release
15165
+ };
15166
+ };
15167
+
14886
15168
  class BaseMethod {
14887
15169
  constructor(message) {
15170
+ this.shouldEnsureConnected = true;
15171
+ this.checkDeviceId = false;
14888
15172
  const {
14889
15173
  payload
14890
15174
  } = message;
@@ -14892,6 +15176,7 @@ class BaseMethod {
14892
15176
  this.payload = payload;
14893
15177
  this.responseID = message.id || 0;
14894
15178
  this.connectId = payload.connectId || '';
15179
+ this.deviceId = payload.deviceId || '';
14895
15180
  this.useDevice = true;
14896
15181
  this.allowDeviceMode = [UI_REQUEST.INITIALIZE];
14897
15182
  this.requireDeviceMode = [];
@@ -14906,6 +15191,21 @@ class BaseMethod {
14906
15191
  this.connectId = device.originalDescriptor.path;
14907
15192
  }
14908
15193
 
15194
+ checkFirmwareRelease() {
15195
+ if (!this.device || !this.device.features) return;
15196
+ const releaseInfo = getFirmwareReleaseInfo(this.device.features);
15197
+
15198
+ if (['outdated', 'required'].includes(releaseInfo.status)) {
15199
+ this.postMessage(createFirmwareMessage(FIRMWARE.RELEASE_INFO, releaseInfo));
15200
+ }
15201
+
15202
+ const bleReleaseInfo = getBleFirmwareReleaseInfo(this.device.features);
15203
+
15204
+ if (['outdated', 'required'].includes(bleReleaseInfo.status)) {
15205
+ this.postMessage(createFirmwareMessage(FIRMWARE.BLE_RELEASE_INFO, bleReleaseInfo));
15206
+ }
15207
+ }
15208
+
14909
15209
  dispose() {}
14910
15210
 
14911
15211
  }
@@ -16235,14 +16535,8 @@ class CheckFirmwareRelease extends BaseMethod {
16235
16535
 
16236
16536
  run() {
16237
16537
  if (this.device.features) {
16238
- const firmwareStatus = DataManager.getFirmwareStatus(this.device.features);
16239
- const changelog = DataManager.getFirmwareChangelog(this.device.features);
16240
- const release = DataManager.getFirmwareLeatestRelease(this.device.features);
16241
- return Promise.resolve({
16242
- status: firmwareStatus,
16243
- changelog,
16244
- release
16245
- });
16538
+ const releaseInfo = getFirmwareReleaseInfo(this.device.features);
16539
+ return Promise.resolve(releaseInfo);
16246
16540
  }
16247
16541
 
16248
16542
  return Promise.resolve(null);
@@ -16253,18 +16547,13 @@ class CheckFirmwareRelease extends BaseMethod {
16253
16547
  class CheckBLEFirmwareRelease extends BaseMethod {
16254
16548
  init() {
16255
16549
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.BOOTLOADER];
16550
+ this.checkDeviceId = true;
16256
16551
  }
16257
16552
 
16258
16553
  run() {
16259
16554
  if (this.device.features) {
16260
- const firmwareStatus = DataManager.getBLEFirmwareStatus(this.device.features);
16261
- const changelog = DataManager.getBleFirmwareChangelog(this.device.features);
16262
- const release = DataManager.getBleFirmwareLeatestRelease(this.device.features);
16263
- return Promise.resolve({
16264
- status: firmwareStatus,
16265
- changelog,
16266
- release
16267
- });
16555
+ const releaseInfo = getBleFirmwareReleaseInfo(this.device.features);
16556
+ return Promise.resolve(releaseInfo);
16268
16557
  }
16269
16558
 
16270
16559
  return Promise.resolve(null);
@@ -16288,7 +16577,7 @@ class CheckTransportRelease extends BaseMethod {
16288
16577
 
16289
16578
  }
16290
16579
 
16291
- class CheckBridgeStatus extends BaseMethod {
16580
+ class CheckBridgeStatus$1 extends BaseMethod {
16292
16581
  init() {
16293
16582
  this.useDevice = false;
16294
16583
  }
@@ -16586,7 +16875,7 @@ class DeviceVerify extends BaseMethod {
16586
16875
  data: sha256__default["default"].sha256(this.params.data)
16587
16876
  }));
16588
16877
  response = res.message;
16589
- } else if (deviceType === 'mini') {
16878
+ } else {
16590
16879
  const signatureRes = yield this.device.commands.typedCall('SESignMessage', 'SEMessageSignature', {
16591
16880
  message: this.params.data
16592
16881
  });
@@ -18508,6 +18797,8 @@ class FirmwareUpdate extends BaseMethod {
18508
18797
  }
18509
18798
 
18510
18799
  run() {
18800
+ var _a;
18801
+
18511
18802
  return __awaiter(this, void 0, void 0, function* () {
18512
18803
  const {
18513
18804
  device,
@@ -18531,7 +18822,7 @@ class FirmwareUpdate extends BaseMethod {
18531
18822
  binary = firmware.binary;
18532
18823
  }
18533
18824
  } catch (err) {
18534
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, err);
18825
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_a = err.message) !== null && _a !== void 0 ? _a : err);
18535
18826
  }
18536
18827
 
18537
18828
  return uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, {
@@ -18542,6 +18833,20 @@ class FirmwareUpdate extends BaseMethod {
18542
18833
 
18543
18834
  }
18544
18835
 
18836
+ class CheckBridgeStatus extends BaseMethod {
18837
+ init() {
18838
+ this.useDevice = false;
18839
+ }
18840
+
18841
+ run() {
18842
+ return __awaiter(this, void 0, void 0, function* () {
18843
+ const logs = getLog();
18844
+ return Promise.resolve(logs);
18845
+ });
18846
+ }
18847
+
18848
+ }
18849
+
18545
18850
  var ApiMethods = /*#__PURE__*/Object.freeze({
18546
18851
  __proto__: null,
18547
18852
  searchDevices: SearchDevices,
@@ -18555,7 +18860,7 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
18555
18860
  checkFirmwareRelease: CheckFirmwareRelease,
18556
18861
  checkBLEFirmwareRelease: CheckBLEFirmwareRelease,
18557
18862
  checkTransportRelease: CheckTransportRelease,
18558
- checkBridgeStatus: CheckBridgeStatus,
18863
+ checkBridgeStatus: CheckBridgeStatus$1,
18559
18864
  deviceBackup: DeviceBackup,
18560
18865
  deviceChangePin: DeviceChangePin,
18561
18866
  deviceFlags: DeviceFlags,
@@ -18584,7 +18889,8 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
18584
18889
  solSignTransaction: SolSignTransaction,
18585
18890
  stellarGetAddress: StellarGetAddress,
18586
18891
  stellarSignTransaction: StellarSignTransaction,
18587
- firmwareUpdate: FirmwareUpdate
18892
+ firmwareUpdate: FirmwareUpdate,
18893
+ getLogs: CheckBridgeStatus
18588
18894
  });
18589
18895
 
18590
18896
  function findMethod(message) {
@@ -18608,6 +18914,10 @@ function findMethod(message) {
18608
18914
  const safeThrowError = error => {
18609
18915
  if (error instanceof hdShared.HardwareError) {
18610
18916
  throw error;
18917
+ } else if (error.code === 'ERR_NETWORK') {
18918
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.BridgeNotInstalled);
18919
+ } else if (error.code === 'ECONNABORTED') {
18920
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.BridgeTimeoutError);
18611
18921
  } else {
18612
18922
  throw hdShared.ERRORS.TypedError(error);
18613
18923
  }
@@ -18617,7 +18927,7 @@ const resolveAfter = (msec, value) => new Promise(resolve => {
18617
18927
  setTimeout(resolve, msec, value);
18618
18928
  });
18619
18929
 
18620
- const Log$1 = hdShared.initLog('DeviceConnector');
18930
+ const Log$1 = getLogger(exports.d0.DeviceConnector);
18621
18931
 
18622
18932
  const getDiff = (current, descriptors) => {
18623
18933
  const env = DataManager.getSettings('env');
@@ -18730,7 +19040,7 @@ class DeviceConnector {
18730
19040
 
18731
19041
  acquire(path, session) {
18732
19042
  return __awaiter(this, void 0, void 0, function* () {
18733
- console.log('acquire', path, session);
19043
+ Log$1.debug('acquire', path, session);
18734
19044
  const env = DataManager.getSettings('env');
18735
19045
 
18736
19046
  try {
@@ -18773,7 +19083,7 @@ class DeviceConnector {
18773
19083
 
18774
19084
  }
18775
19085
 
18776
- const Log = hdShared.initLog('Core');
19086
+ const Log = getLogger(exports.d0.Core);
18777
19087
 
18778
19088
  let _core;
18779
19089
 
@@ -18785,7 +19095,10 @@ let _uiPromises = [];
18785
19095
 
18786
19096
  let _callPromise;
18787
19097
 
19098
+ const callApiQueue = [];
18788
19099
  const deviceCacheMap = new Map();
19100
+ let pollingId = 1;
19101
+ const pollingState = {};
18789
19102
 
18790
19103
  const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
18791
19104
  var _a;
@@ -18817,26 +19130,28 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
18817
19130
  }
18818
19131
  }
18819
19132
 
18820
- try {
18821
- yield initDeviceList(method);
18822
- } catch (error) {
18823
- return Promise.reject(error);
19133
+ callApiQueue.push(method);
19134
+
19135
+ if (callApiQueue.length > 1) {
19136
+ Log.debug('should cancel the previous method execution: ', callApiQueue);
18824
19137
  }
18825
19138
 
18826
- const env = DataManager.getSettings('env');
19139
+ if (pollingState[pollingId]) {
19140
+ pollingState[pollingId] = false;
19141
+ }
19142
+
19143
+ pollingId += 1;
18827
19144
  let device;
18828
19145
 
18829
19146
  try {
18830
- if (env === 'react-native') {
18831
- device = initDeviceForBle(method);
18832
- } else {
18833
- device = initDevice(method);
18834
- }
18835
- } catch (error) {
18836
- return Promise.reject(error);
19147
+ device = yield ensureConnected(method, pollingId);
19148
+ } catch (e) {
19149
+ return createResponseMessage(method.responseID, false, {
19150
+ error: e
19151
+ });
18837
19152
  }
18838
19153
 
18839
- Log.debug('Call API - setDevice: ', device);
19154
+ Log.debug('Call API - setDevice: ', device.mainId);
18840
19155
  (_a = method.setDevice) === null || _a === void 0 ? void 0 : _a.call(method, device);
18841
19156
  device.on(DEVICE.PIN, onDevicePinHandler);
18842
19157
  device.on(DEVICE.BUTTON, (d, code) => {
@@ -18873,6 +19188,16 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
18873
19188
  return Promise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceUnexpectedMode, unexpectedMode));
18874
19189
  }
18875
19190
 
19191
+ if (method.deviceId && method.checkDeviceId) {
19192
+ const isSameDeviceID = device.checkDeviceId(method.deviceId);
19193
+
19194
+ if (!isSameDeviceID) {
19195
+ return Promise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceCheckDeviceIdError));
19196
+ }
19197
+ }
19198
+
19199
+ method.checkFirmwareRelease();
19200
+
18876
19201
  if (_deviceList) {
18877
19202
  yield TransportManager.reconfigure(device.getFirmwareVersion());
18878
19203
  }
@@ -18891,7 +19216,7 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
18891
19216
  }
18892
19217
  });
18893
19218
 
18894
- Log.debug('Call API - Device Run: ', device);
19219
+ Log.debug('Call API - Device Run: ', device.mainId);
18895
19220
 
18896
19221
  const deviceRun = () => device.run(inner);
18897
19222
 
@@ -18900,7 +19225,7 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
18900
19225
  try {
18901
19226
  return yield _callPromise.promise;
18902
19227
  } catch (e) {
18903
- console.log('Device Run Error: ', e);
19228
+ Log.debug('Device Run Error: ', e);
18904
19229
  return createResponseMessage(method.responseID, false, {
18905
19230
  error: e
18906
19231
  });
@@ -18920,6 +19245,13 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
18920
19245
  }
18921
19246
  }
18922
19247
 
19248
+ const index = messageResponse && messageResponse.id ? callApiQueue.findIndex(m => m.responseID === messageResponse.id) : -1;
19249
+
19250
+ if (index > -1) {
19251
+ callApiQueue.splice(index, 1);
19252
+ Log.debug('Remove the finished method from the queue: ', callApiQueue);
19253
+ }
19254
+
18923
19255
  closePopup();
18924
19256
  cleanup();
18925
19257
  }
@@ -18940,7 +19272,7 @@ function initDeviceList(method) {
18940
19272
  _deviceList.connector = _connector;
18941
19273
  }
18942
19274
 
18943
- yield _deviceList.getDeviceLists();
19275
+ yield _deviceList.getDeviceLists(method.connectId);
18944
19276
  });
18945
19277
  }
18946
19278
 
@@ -18993,23 +19325,118 @@ function initDeviceForBle(method) {
18993
19325
  return device;
18994
19326
  }
18995
19327
 
19328
+ const ensureConnected = (method, pollingId) => __awaiter(void 0, void 0, void 0, function* () {
19329
+ let tryCount = 0;
19330
+ const MAX_RETRY_COUNT = method.payload && method.payload.retryCount || 5;
19331
+ const POLL_INTERVAL_TIME = method.payload && method.payload.pollIntervalTime || 1000;
19332
+ const TIME_OUT = method.payload && method.payload.timeout || 10000;
19333
+ let timer = null;
19334
+ Log.debug(`EnsureConnected function start, MAX_RETRY_COUNT=${MAX_RETRY_COUNT}, POLL_INTERVAL_TIME=${POLL_INTERVAL_TIME} `);
19335
+
19336
+ const poll = (time = POLL_INTERVAL_TIME) => __awaiter(void 0, void 0, void 0, function* () {
19337
+ return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
19338
+ if (!pollingState[pollingId]) {
19339
+ Log.debug('EnsureConnected function stop, polling id: ', pollingId);
19340
+ reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Polling stop'));
19341
+ return;
19342
+ }
19343
+
19344
+ if (timer) {
19345
+ clearTimeout(timer);
19346
+ }
19347
+
19348
+ timer = setTimeout(() => {
19349
+ reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Polling timeout'));
19350
+ }, TIME_OUT);
19351
+ tryCount += 1;
19352
+ Log.debug('EnsureConnected function try count: ', tryCount, ' poll interval time: ', time);
19353
+
19354
+ try {
19355
+ yield initDeviceList(method);
19356
+ } catch (error) {
19357
+ Log.debug('device list error: ', error);
19358
+
19359
+ if (error.errorCode === hdShared.HardwareErrorCode.BridgeNotInstalled) {
19360
+ reject(error);
19361
+ return;
19362
+ }
19363
+
19364
+ if (error.errorCode === hdShared.HardwareErrorCode.TransportNotConfigured) {
19365
+ yield TransportManager.configure();
19366
+ }
19367
+ }
19368
+
19369
+ const env = DataManager.getSettings('env');
19370
+ let device;
19371
+
19372
+ try {
19373
+ if (env === 'react-native') {
19374
+ device = initDeviceForBle(method);
19375
+ } else {
19376
+ device = initDevice(method);
19377
+ }
19378
+
19379
+ if (device) {
19380
+ if (timer) {
19381
+ clearTimeout(timer);
19382
+ }
19383
+
19384
+ if (env === 'react-native') {
19385
+ yield device.acquire();
19386
+ yield device.initialize();
19387
+ }
19388
+
19389
+ resolve(device);
19390
+ return;
19391
+ }
19392
+ } catch (error) {
19393
+ Log.debug('device error: ', error);
19394
+
19395
+ if (error.errorCode === hdShared.HardwareErrorCode.BlePermissionError) {
19396
+ reject(error);
19397
+ return;
19398
+ }
19399
+ }
19400
+
19401
+ if (tryCount > 5) {
19402
+ if (timer) {
19403
+ clearTimeout(timer);
19404
+ }
19405
+
19406
+ Log.debug('EnsureConnected get to max try count, will return: ', tryCount);
19407
+ reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceNotFound));
19408
+ return;
19409
+ }
19410
+
19411
+ return setTimeout(() => resolve(poll(time * 1.5)), time);
19412
+ }));
19413
+ });
19414
+
19415
+ pollingState[pollingId] = true;
19416
+ return poll();
19417
+ });
19418
+
18996
19419
  const cancel = connectId => {
18997
19420
  const env = DataManager.getSettings('env');
18998
19421
 
18999
- if (connectId) {
19000
- let device;
19422
+ try {
19423
+ if (connectId) {
19424
+ let device;
19001
19425
 
19002
- if (env === 'react-native') {
19003
- device = initDeviceForBle({
19004
- connectId
19005
- });
19006
- } else {
19007
- device = initDevice({
19008
- connectId
19009
- });
19010
- }
19426
+ if (env === 'react-native') {
19427
+ device = initDeviceForBle({
19428
+ connectId
19429
+ });
19430
+ } else {
19431
+ device = initDevice({
19432
+ connectId
19433
+ });
19434
+ }
19011
19435
 
19012
- device === null || device === void 0 ? void 0 : device.interruption();
19436
+ device === null || device === void 0 ? void 0 : device.interruptionFromUser();
19437
+ }
19438
+ } catch (e) {
19439
+ Log.error('Cancel API Error: ', e);
19013
19440
  }
19014
19441
 
19015
19442
  cleanup();
@@ -19026,7 +19453,7 @@ const closePopup = () => {
19026
19453
  };
19027
19454
 
19028
19455
  const onDevicePinHandler = (...[device, type, callback]) => __awaiter(void 0, void 0, void 0, function* () {
19029
- console.log('onDevicePinHandler');
19456
+ Log.debug('onDevicePinHandler');
19030
19457
  const uiPromise = createUiPromise(UI_RESPONSE.RECEIVE_PIN, device);
19031
19458
  postMessage(createUiMessage(UI_REQUEST$1.REQUEST_PIN, {
19032
19459
  device: device.toMessageObject(),
@@ -19138,7 +19565,12 @@ const init = (settings, Transport) => __awaiter(void 0, void 0, void 0, function
19138
19565
  Log.error('DataManager.load error');
19139
19566
  }
19140
19567
 
19141
- hdShared.enableLog(DataManager.getSettings('debug'));
19568
+ enableLog(DataManager.getSettings('debug'));
19569
+
19570
+ if (DataManager.getSettings('env') !== 'react-native') {
19571
+ setLoggerPostMessage(postMessage);
19572
+ }
19573
+
19142
19574
  initCore();
19143
19575
  initConnector();
19144
19576
  return _core;
@@ -19163,18 +19595,6 @@ const HardwareSdk = ({
19163
19595
  cancel
19164
19596
  });
19165
19597
 
19166
- Object.defineProperty(exports, "yI", ({
19167
- enumerable: true,
19168
- get: function () {
19169
- return hdShared.enableLog;
19170
- }
19171
- }));
19172
- Object.defineProperty(exports, "KR", ({
19173
- enumerable: true,
19174
- get: function () {
19175
- return hdShared.initLog;
19176
- }
19177
- }));
19178
19598
  __webpack_unused_export__ = ({
19179
19599
  enumerable: true,
19180
19600
  get: function () {
@@ -19187,7 +19607,11 @@ __webpack_unused_export__ = DEFAULT_PRIORITY;
19187
19607
  __webpack_unused_export__ = DEVICE;
19188
19608
  __webpack_unused_export__ = DEVICE_EVENT;
19189
19609
  __webpack_unused_export__ = DataManager;
19610
+ __webpack_unused_export__ = FIRMWARE;
19611
+ exports.SI = FIRMWARE_EVENT;
19190
19612
  exports.Bg = IFRAME;
19613
+ __webpack_unused_export__ = LOG;
19614
+ exports.og = LOG_EVENT;
19191
19615
  __webpack_unused_export__ = RESPONSE_EVENT;
19192
19616
  exports.rF = UI_EVENT;
19193
19617
  __webpack_unused_export__ = UI_REQUEST$1;
@@ -19195,11 +19619,14 @@ __webpack_unused_export__ = UI_RESPONSE;
19195
19619
  __webpack_unused_export__ = corsValidator;
19196
19620
  __webpack_unused_export__ = createDeviceMessage;
19197
19621
  exports.xG = createErrorMessage;
19622
+ __webpack_unused_export__ = createFirmwareMessage;
19198
19623
  __webpack_unused_export__ = createIFrameMessage;
19624
+ __webpack_unused_export__ = createLogMessage;
19199
19625
  __webpack_unused_export__ = createResponseMessage;
19200
19626
  __webpack_unused_export__ = createUiMessage;
19201
19627
  __webpack_unused_export__ = createUiResponse;
19202
19628
  exports.ZP = HardwareSdk;
19629
+ exports.yI = enableLog;
19203
19630
  __webpack_unused_export__ = getDeviceLabel;
19204
19631
  __webpack_unused_export__ = getDeviceType;
19205
19632
  __webpack_unused_export__ = getDeviceTypeByBleName;
@@ -19207,6 +19634,8 @@ __webpack_unused_export__ = getDeviceTypeByDeviceId;
19207
19634
  __webpack_unused_export__ = getDeviceUUID;
19208
19635
  __webpack_unused_export__ = getEnv;
19209
19636
  __webpack_unused_export__ = getHDPath;
19637
+ __webpack_unused_export__ = getLog;
19638
+ exports.jl = getLogger;
19210
19639
  __webpack_unused_export__ = getScriptType;
19211
19640
  __webpack_unused_export__ = getTimeStamp;
19212
19641
  __webpack_unused_export__ = httpRequest;
@@ -19218,6 +19647,7 @@ exports._4 = parseConnectSettings;
19218
19647
  exports.kW = parseMessage;
19219
19648
  __webpack_unused_export__ = patchFeatures;
19220
19649
  __webpack_unused_export__ = safeThrowError;
19650
+ exports.hZ = setLoggerPostMessage;
19221
19651
  __webpack_unused_export__ = versionCompare;
19222
19652
  __webpack_unused_export__ = versionSplit;
19223
19653
 
@@ -20328,6 +20758,7 @@ function createDeferred(arg, data) {
20328
20758
  }
20329
20759
 
20330
20760
  function fillStringWithArguments(value, object) {
20761
+ if (typeof value !== 'string') return value;
20331
20762
  return value.replace(/\{([^}]+)\}/g, (_, arg) => object[arg] || '?');
20332
20763
  }
20333
20764
 
@@ -20369,6 +20800,8 @@ const HardwareErrorCode = {
20369
20800
  DeviceInitializeFailed: 106,
20370
20801
  DeviceInterruptedFromOutside: 107,
20371
20802
  DeviceUnexpectedBootloaderMode: 108,
20803
+ DeviceInterruptedFromUser: 109,
20804
+ DeviceCheckDeviceIdError: 110,
20372
20805
  NotInitialized: 200,
20373
20806
  IFrameNotInitialized: 300,
20374
20807
  IFrameAleradyInitialized: 301,
@@ -20401,7 +20834,8 @@ const HardwareErrorCode = {
20401
20834
  FirmwareError: 804,
20402
20835
  ResponseUnexpectTypeError: 805,
20403
20836
  BridgeNetworkError: 806,
20404
- BridgeTimeoutError: 807
20837
+ BridgeTimeoutError: 807,
20838
+ BridgeNotInstalled: 808
20405
20839
  };
20406
20840
  const HardwareErrorCodeMessage = {
20407
20841
  [HardwareErrorCode.UnknownError]: 'Unknown error occurred. Check message property.',
@@ -20412,7 +20846,9 @@ const HardwareErrorCodeMessage = {
20412
20846
  [HardwareErrorCode.DeviceNotFound]: 'Device not found',
20413
20847
  [HardwareErrorCode.DeviceInitializeFailed]: 'Device initialization failed',
20414
20848
  [HardwareErrorCode.DeviceInterruptedFromOutside]: 'Device interrupted',
20849
+ [HardwareErrorCode.DeviceInterruptedFromUser]: 'Device interrupted',
20415
20850
  [HardwareErrorCode.DeviceUnexpectedBootloaderMode]: 'Device should be in bootloader mode',
20851
+ [HardwareErrorCode.DeviceCheckDeviceIdError]: 'Device Id in the features is not same.',
20416
20852
  [HardwareErrorCode.NotInitialized]: 'Not initialized',
20417
20853
  [HardwareErrorCode.IFrameNotInitialized]: 'IFrame not initialized',
20418
20854
  [HardwareErrorCode.IFrameAleradyInitialized]: 'IFrame alerady initialized',
@@ -20445,7 +20881,8 @@ const HardwareErrorCodeMessage = {
20445
20881
  [HardwareErrorCode.FirmwareError]: 'Firmware installation failed',
20446
20882
  [HardwareErrorCode.ResponseUnexpectTypeError]: 'Response type is not expected',
20447
20883
  [HardwareErrorCode.BridgeNetworkError]: 'Bridge network error',
20448
- [HardwareErrorCode.BridgeTimeoutError]: 'Bridge network timeout'
20884
+ [HardwareErrorCode.BridgeTimeoutError]: 'Bridge network timeout',
20885
+ [HardwareErrorCode.BridgeNotInstalled]: 'Bridge not installed'
20449
20886
  };
20450
20887
 
20451
20888
  const TypedError = (hardwareError, message) => {
@@ -20496,125 +20933,6 @@ var HardwareError$1 = /*#__PURE__*/Object.freeze({
20496
20933
  serializeError: serializeError,
20497
20934
  CreateErrorByMessage: CreateErrorByMessage
20498
20935
  });
20499
- const MAX_ENTRIES = 100;
20500
-
20501
- class Log {
20502
- constructor(prefix, enabled, logger) {
20503
- this.prefix = prefix;
20504
- this.enabled = enabled;
20505
- this.messages = [];
20506
-
20507
- if (logger) {
20508
- this.logger = logger;
20509
- }
20510
- }
20511
-
20512
- addMessage(level, prefix, ...args) {
20513
- this.messages.push({
20514
- level,
20515
- prefix,
20516
- message: args,
20517
- timestamp: new Date().getTime()
20518
- });
20519
-
20520
- if (this.messages.length > MAX_ENTRIES) {
20521
- this.messages.shift();
20522
- }
20523
- }
20524
-
20525
- log(...args) {
20526
- this.addMessage('log', this.prefix, ...args);
20527
-
20528
- if (!this.enabled) {
20529
- return;
20530
- }
20531
-
20532
- if (this.logger) {
20533
- this.logger.info(this.prefix, ...args);
20534
- } else {
20535
- console.log(this.prefix, ...args);
20536
- }
20537
- }
20538
-
20539
- error(...args) {
20540
- this.addMessage('error', this.prefix, ...args);
20541
-
20542
- if (!this.enabled) {
20543
- return;
20544
- }
20545
-
20546
- if (this.logger) {
20547
- this.logger.error(this.prefix, ...args);
20548
- } else {
20549
- console.error(this.prefix, ...args);
20550
- }
20551
- }
20552
-
20553
- warn(...args) {
20554
- this.addMessage('warn', this.prefix, ...args);
20555
-
20556
- if (!this.enabled) {
20557
- return;
20558
- }
20559
-
20560
- if (this.logger) {
20561
- this.logger.warn(this.prefix, ...args);
20562
- } else {
20563
- console.warn(this.prefix, ...args);
20564
- }
20565
- }
20566
-
20567
- debug(...args) {
20568
- this.addMessage('debug', this.prefix, ...args);
20569
-
20570
- if (!this.enabled) {
20571
- return;
20572
- }
20573
-
20574
- if (this.logger) {
20575
- this.logger.debug(this.prefix, ...args);
20576
- } else {
20577
- console.log(this.prefix, ...args);
20578
- }
20579
- }
20580
-
20581
- }
20582
-
20583
- const _logs = {};
20584
-
20585
- const initLog = (prefix, enabled, logger) => {
20586
- const instance = new Log(prefix, !!enabled, logger);
20587
- _logs[prefix] = instance;
20588
- return instance;
20589
- };
20590
-
20591
- const enableLog = enabled => {
20592
- Object.keys(_logs).forEach(key => {
20593
- _logs[key].enabled = !!enabled;
20594
- });
20595
- };
20596
-
20597
- const setOutsideLogger = logger => {
20598
- Object.keys(_logs).forEach(key => {
20599
- _logs[key].logger = logger;
20600
- });
20601
- };
20602
-
20603
- const enableLogByPrefix = (prefix, enabled) => {
20604
- if (_logs[prefix]) {
20605
- _logs[prefix].enabled = enabled;
20606
- }
20607
- };
20608
-
20609
- const getLog = () => {
20610
- let logs = [];
20611
- Object.keys(_logs).forEach(key => {
20612
- logs = logs.concat(_logs[key].messages);
20613
- });
20614
- logs.sort((a, b) => a.timestamp - b.timestamp);
20615
- return logs;
20616
- };
20617
-
20618
20936
  exports.CreateErrorByMessage = CreateErrorByMessage;
20619
20937
  exports.ERRORS = HardwareError$1;
20620
20938
  exports.HardwareError = HardwareError;
@@ -20622,12 +20940,7 @@ exports.HardwareErrorCode = HardwareErrorCode;
20622
20940
  exports.HardwareErrorCodeMessage = HardwareErrorCodeMessage;
20623
20941
  exports.TypedError = TypedError;
20624
20942
  exports.createDeferred = createDeferred;
20625
- exports.enableLog = enableLog;
20626
- exports.enableLogByPrefix = enableLogByPrefix;
20627
- exports.getLog = getLog;
20628
- exports.initLog = initLog;
20629
20943
  exports.serializeError = serializeError;
20630
- exports.setOutsideLogger = setOutsideLogger;
20631
20944
 
20632
20945
  /***/ }),
20633
20946
 
@@ -45637,7 +45950,7 @@ function createCodeJsBridgeReceive(payloadStr) {
45637
45950
  let frameBridge; // eslint-disable-next-line import/no-mutable-exports
45638
45951
 
45639
45952
  let hostBridge;
45640
- const Log = (0,dist/* initLog */.KR)('[SendMessage]');
45953
+ const Log = (0,dist/* getLogger */.jl)(dist/* LoggerNames.SendMessage */.d0.SendMessage);
45641
45954
  const createJsBridge = params => {
45642
45955
  const bridge = new JsBridgeIframe(params);
45643
45956
 
@@ -45651,13 +45964,20 @@ const sendMessage = async (messages, isHost = true) => {
45651
45964
  const bridge = isHost ? hostBridge : frameBridge;
45652
45965
 
45653
45966
  try {
45654
- Log.debug('request: ', messages);
45967
+ if (messages.event !== 'LOG_EVENT') {
45968
+ Log.debug('request: ', messages);
45969
+ }
45970
+
45655
45971
  const result = await (bridge === null || bridge === void 0 ? void 0 : bridge.request({
45656
45972
  scope: bridge_config.scope,
45657
45973
  data: { ...messages
45658
45974
  }
45659
45975
  }));
45660
- Log.debug('response: ', result);
45976
+
45977
+ if (messages.event !== 'LOG_EVENT') {
45978
+ Log.debug('response: ', result);
45979
+ }
45980
+
45661
45981
  return result;
45662
45982
  } catch (error) {
45663
45983
  Log.error(error);
@@ -45673,7 +45993,7 @@ const sendMessage = async (messages, isHost = true) => {
45673
45993
 
45674
45994
 
45675
45995
  const eventEmitter = new (events_default())();
45676
- const src_Log = (0,dist/* initLog */.KR)('@onekey/connect');
45996
+ const src_Log = (0,dist/* getLogger */.jl)(dist/* LoggerNames.Connect */.d0.Connect);
45677
45997
 
45678
45998
  let _settings = (0,dist/* parseConnectSettings */._4)();
45679
45999
 
@@ -45693,6 +46013,11 @@ const handleMessage = async message => {
45693
46013
  eventEmitter.emit(message.type, message.payload);
45694
46014
  break;
45695
46015
 
46016
+ case dist/* LOG_EVENT */.og:
46017
+ case dist/* FIRMWARE_EVENT */.SI:
46018
+ eventEmitter.emit(message.event, message);
46019
+ break;
46020
+
45696
46021
  default:
45697
46022
  src_Log.log('No need to be captured message', message.event);
45698
46023
  }
@@ -45748,9 +46073,17 @@ const createJSBridge = messageEvent => {
45748
46073
  targetOrigin: origin,
45749
46074
  receiveHandler: async messageEvent => {
45750
46075
  const message = (0,dist/* parseMessage */.kW)(messageEvent);
45751
- console.log('Host Bridge Receive message: ', message);
46076
+
46077
+ if (message.event !== 'LOG_EVENT') {
46078
+ src_Log.debug('Host Bridge Receive message: ', message);
46079
+ }
46080
+
45752
46081
  const response = await handleMessage(message);
45753
- src_Log.debug('Host Bridge response: ', response);
46082
+
46083
+ if (message.event !== 'LOG_EVENT') {
46084
+ src_Log.debug('Host Bridge response: ', response);
46085
+ }
46086
+
45754
46087
  return response;
45755
46088
  }
45756
46089
  });
@@ -45766,13 +46099,14 @@ const src_init = async settings => {
45766
46099
  ...settings
45767
46100
  });
45768
46101
  (0,dist/* enableLog */.yI)(!!settings.debug);
46102
+ (0,dist/* setLoggerPostMessage */.hZ)(handleMessage);
45769
46103
  src_Log.debug('init');
45770
46104
  window.addEventListener('message', createJSBridge);
45771
46105
  window.addEventListener('unload', src_dispose);
45772
46106
 
45773
46107
  try {
45774
46108
  await init({ ..._settings,
45775
- version: "0.1.14"
46109
+ version: "0.1.18"
45776
46110
  });
45777
46111
  return true;
45778
46112
  } catch (e) {