@subwallet/extension-base 1.1.68-2 → 1.2.1

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.
Files changed (168) hide show
  1. package/background/KoniTypes.d.ts +3 -1
  2. package/background/handlers/State.d.ts +1 -78
  3. package/background/handlers/State.js +1 -428
  4. package/background/types.d.ts +1 -0
  5. package/cjs/background/handlers/State.js +1 -456
  6. package/cjs/constants/storage.js +3 -1
  7. package/cjs/koni/api/dotsama/crowdloan.js +1 -2
  8. package/cjs/koni/api/nft/acala_nft/index.js +1 -3
  9. package/cjs/koni/api/nft/assethub_nft/index.js +1 -3
  10. package/cjs/koni/api/nft/assethub_unique/index.js +1 -3
  11. package/cjs/koni/api/nft/bit.country/index.js +4 -6
  12. package/cjs/koni/api/nft/config.js +1 -8
  13. package/cjs/koni/api/nft/evm_nft/index.js +1 -3
  14. package/cjs/koni/api/nft/karura_nft/index.js +1 -3
  15. package/cjs/koni/api/nft/ordinal_nft/index.js +4 -3
  16. package/cjs/koni/api/nft/rmrk_nft/index.js +4 -6
  17. package/cjs/koni/api/nft/unique_network_nft/index.js +1 -3
  18. package/cjs/koni/api/nft/unique_nft/uniqueNftV2.js +1 -3
  19. package/cjs/koni/api/nft/vara_nft/index.js +1 -3
  20. package/cjs/koni/api/nft/wasm_nft/index.js +10 -17
  21. package/cjs/koni/api/staking/bonding/astar.js +2 -4
  22. package/cjs/koni/api/staking/subsquidStaking.js +9 -12
  23. package/cjs/koni/api/subquery/subquery.js +1 -3
  24. package/cjs/koni/background/handlers/Extension.js +39 -15
  25. package/cjs/koni/background/handlers/Mobile.js +7 -4
  26. package/cjs/koni/background/handlers/State.js +68 -12
  27. package/cjs/koni/background/handlers/Tabs.js +4 -1
  28. package/cjs/koni/background/handlers/index.js +71 -71
  29. package/cjs/koni/background/subscription.js +7 -6
  30. package/cjs/packageInfo.js +1 -1
  31. package/cjs/services/campaign-service/helpers.js +3 -1
  32. package/cjs/services/chain-service/index.js +36 -27
  33. package/cjs/services/chain-service/utils/patch.js +1 -3
  34. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +1 -2
  35. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +2 -3
  36. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -3
  37. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -2
  38. package/cjs/services/earning-service/handlers/native-staking/astar.js +3 -4
  39. package/cjs/services/event-service/index.js +0 -1
  40. package/cjs/services/history-service/subsquid-multi-chain-history.js +1 -3
  41. package/cjs/services/keyring-service/index.js +22 -0
  42. package/cjs/services/migration-service/scripts/MigrateRemoveGenesisHash.js +28 -0
  43. package/cjs/services/migration-service/scripts/index.js +3 -1
  44. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +16 -21
  45. package/cjs/services/notification-service/NotificationService.js +3 -1
  46. package/cjs/services/price-service/coingecko.js +6 -7
  47. package/cjs/services/price-service/index.js +7 -3
  48. package/cjs/services/request-service/handler/PopupHandler.js +14 -15
  49. package/cjs/services/setting-service/SettingService.js +4 -1
  50. package/cjs/services/setting-service/constants.js +1 -1
  51. package/cjs/services/setting-service/i18n/i18n.js +2 -4
  52. package/cjs/services/storage-service/DatabaseService.js +1 -1
  53. package/cjs/services/storage-service/databases/index.js +14 -1
  54. package/cjs/services/storage-service/db-stores/KeyValue.js +13 -0
  55. package/cjs/services/subscan-service/index.js +11 -3
  56. package/cjs/services/transaction-service/index.js +3 -3
  57. package/cjs/services/wallet-connect-service/constants.js +2 -2
  58. package/cjs/services/wallet-connect-service/helpers.js +1 -4
  59. package/cjs/services/wallet-connect-service/index.js +50 -33
  60. package/cjs/storage/index.js +120 -23
  61. package/cjs/types/common/index.js +16 -0
  62. package/cjs/types/common/storage.js +1 -0
  63. package/cjs/types/index.js +11 -0
  64. package/cjs/utils/environment.js +1 -1
  65. package/cjs/utils/eth/parseTransaction/index.js +8 -10
  66. package/cjs/utils/fetch.js +55 -0
  67. package/cjs/utils/fetchStaticCache.js +2 -4
  68. package/cjs/utils/fetchStaticData.js +7 -4
  69. package/cjs/utils/index.js +24 -0
  70. package/cjs/utils/reportError.js +1 -3
  71. package/constants/storage.d.ts +1 -0
  72. package/constants/storage.js +1 -0
  73. package/koni/api/dotsama/crowdloan.js +2 -3
  74. package/koni/api/nft/acala_nft/index.js +0 -1
  75. package/koni/api/nft/assethub_nft/index.js +0 -1
  76. package/koni/api/nft/assethub_unique/index.js +0 -1
  77. package/koni/api/nft/bit.country/index.js +0 -1
  78. package/koni/api/nft/config.js +1 -7
  79. package/koni/api/nft/evm_nft/index.js +0 -1
  80. package/koni/api/nft/karura_nft/index.js +0 -1
  81. package/koni/api/nft/ordinal_nft/index.d.ts +2 -0
  82. package/koni/api/nft/ordinal_nft/index.js +4 -3
  83. package/koni/api/nft/rmrk_nft/index.js +0 -1
  84. package/koni/api/nft/unique_network_nft/index.js +0 -1
  85. package/koni/api/nft/unique_nft/uniqueNftV2.js +0 -1
  86. package/koni/api/nft/vara_nft/index.js +0 -1
  87. package/koni/api/nft/wasm_nft/index.js +4 -10
  88. package/koni/api/staking/bonding/astar.js +0 -1
  89. package/koni/api/staking/subsquidStaking.js +10 -12
  90. package/koni/api/subquery/subquery.js +0 -1
  91. package/koni/background/handlers/Extension.d.ts +4 -0
  92. package/koni/background/handlers/Extension.js +29 -8
  93. package/koni/background/handlers/Mobile.js +9 -6
  94. package/koni/background/handlers/State.d.ts +6 -1
  95. package/koni/background/handlers/State.js +68 -12
  96. package/koni/background/handlers/Tabs.js +4 -1
  97. package/koni/background/handlers/index.d.ts +13 -7
  98. package/koni/background/handlers/index.js +67 -62
  99. package/koni/background/subscription.js +2 -1
  100. package/package.json +35 -28
  101. package/packageInfo.js +1 -1
  102. package/services/campaign-service/helpers.js +3 -1
  103. package/services/chain-service/index.js +36 -28
  104. package/services/chain-service/utils/patch.js +0 -1
  105. package/services/earning-service/handlers/liquid-staking/acala.js +0 -1
  106. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +0 -1
  107. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -1
  108. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -1
  109. package/services/earning-service/handlers/native-staking/astar.js +0 -1
  110. package/services/event-service/index.js +0 -1
  111. package/services/history-service/subsquid-multi-chain-history.js +0 -1
  112. package/services/keyring-service/index.d.ts +1 -0
  113. package/services/keyring-service/index.js +19 -0
  114. package/services/migration-service/scripts/MigrateRemoveGenesisHash.d.ts +4 -0
  115. package/services/migration-service/scripts/MigrateRemoveGenesisHash.js +20 -0
  116. package/services/migration-service/scripts/index.js +3 -1
  117. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +17 -21
  118. package/services/notification-service/NotificationService.js +3 -1
  119. package/services/price-service/coingecko.js +6 -6
  120. package/services/price-service/index.js +7 -3
  121. package/services/request-service/handler/PopupHandler.d.ts +1 -1
  122. package/services/request-service/handler/PopupHandler.js +14 -15
  123. package/services/setting-service/SettingService.d.ts +1 -0
  124. package/services/setting-service/SettingService.js +4 -1
  125. package/services/setting-service/constants.js +2 -2
  126. package/services/setting-service/i18n/i18n.js +2 -4
  127. package/services/storage-service/DatabaseService.js +1 -1
  128. package/services/storage-service/databases/index.d.ts +8 -0
  129. package/services/storage-service/databases/index.js +13 -1
  130. package/services/storage-service/db-stores/KeyValue.d.ts +4 -0
  131. package/services/storage-service/db-stores/KeyValue.js +5 -0
  132. package/services/subscan-service/index.d.ts +2 -0
  133. package/services/subscan-service/index.js +10 -1
  134. package/services/transaction-service/index.js +4 -4
  135. package/services/wallet-connect-service/constants.js +3 -3
  136. package/services/wallet-connect-service/helpers.js +1 -4
  137. package/services/wallet-connect-service/index.d.ts +2 -0
  138. package/services/wallet-connect-service/index.js +42 -31
  139. package/storage/index.d.ts +19 -9
  140. package/storage/index.js +115 -23
  141. package/types/common/index.d.ts +1 -0
  142. package/types/common/index.js +4 -0
  143. package/types/common/storage.d.ts +4 -0
  144. package/types/common/storage.js +1 -0
  145. package/types/index.d.ts +1 -0
  146. package/types/index.js +1 -0
  147. package/utils/environment.js +1 -1
  148. package/utils/eth/parseTransaction/index.js +8 -10
  149. package/utils/fetch.d.ts +8 -0
  150. package/utils/fetch.js +44 -0
  151. package/utils/fetchStaticCache.js +2 -3
  152. package/utils/fetchStaticData.d.ts +1 -1
  153. package/utils/fetchStaticData.js +7 -4
  154. package/utils/index.d.ts +2 -0
  155. package/utils/index.js +2 -0
  156. package/utils/reportError.js +0 -1
  157. package/background/handlers/Extension.d.ts +0 -55
  158. package/background/handlers/Extension.js +0 -601
  159. package/background/handlers/Tabs.d.ts +0 -24
  160. package/background/handlers/Tabs.js +0 -194
  161. package/background/handlers/index.d.ts +0 -3
  162. package/background/handlers/index.js +0 -45
  163. package/cjs/background/handlers/Extension.js +0 -642
  164. package/cjs/background/handlers/Tabs.js +0 -222
  165. package/cjs/background/handlers/index.js +0 -54
  166. package/cjs/koni/background/events.js +0 -14
  167. package/koni/background/events.d.ts +0 -1
  168. package/koni/background/events.js +0 -7
@@ -23,14 +23,37 @@ var _types = require("./types");
23
23
  const storage = _storage.SWStorage.instance;
24
24
  const methodDOTRequire = [_types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE, _types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION];
25
25
  const methodEVMRequire = [_types.EIP155_SIGNING_METHODS.PERSONAL_SIGN, _types.EIP155_SIGNING_METHODS.ETH_SIGN, _types.EIP155_SIGNING_METHODS.ETH_SEND_TRANSACTION];
26
+ class WCStorage {
27
+ async getEntries() {
28
+ const datas = await storage.getEntries();
29
+ return Promise.resolve(datas.filter(_ref => {
30
+ let [key] = _ref;
31
+ return key.startsWith('wc@');
32
+ }).map(_ref2 => {
33
+ let [key, value] = _ref2;
34
+ return [key, JSON.parse(value)];
35
+ }));
36
+ }
37
+ async getItem(key) {
38
+ const data = await storage.getItem(key);
39
+ return data ? JSON.parse(data) : undefined;
40
+ }
41
+ async getKeys() {
42
+ return (await storage.keys()).filter(key => key.startsWith('wc@'));
43
+ }
44
+ async removeItem(key) {
45
+ return await storage.removeItem(key);
46
+ }
47
+ async setItem(key, value) {
48
+ return await storage.setItem(key, JSON.stringify(value));
49
+ }
50
+ }
26
51
  var _requestService = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("requestService");
27
52
  var _polkadotRequestHandler = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("polkadotRequestHandler");
28
53
  var _eip155RequestHandler = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("eip155RequestHandler");
29
54
  var _koniState = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("koniState");
30
55
  var _client = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("client");
31
56
  var _option = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("option");
32
- var _haveData = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("haveData");
33
- var _initClient = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("initClient");
34
57
  var _updateSessions = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("updateSessions");
35
58
  var _onSessionProposal = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("onSessionProposal");
36
59
  var _onSessionRequest = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("onSessionRequest");
@@ -58,13 +81,6 @@ class WalletConnectService {
58
81
  Object.defineProperty(this, _updateSessions, {
59
82
  value: _updateSessions2
60
83
  });
61
- Object.defineProperty(this, _initClient, {
62
- value: _initClient2
63
- });
64
- Object.defineProperty(this, _haveData, {
65
- get: _get_haveData,
66
- set: void 0
67
- });
68
84
  Object.defineProperty(this, _requestService, {
69
85
  writable: true,
70
86
  value: void 0
@@ -92,10 +108,28 @@ class WalletConnectService {
92
108
  this.sessionSubject = new _rxjs.BehaviorSubject([]);
93
109
  (0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState] = koniState;
94
110
  (0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService] = requestService;
111
+ option.storage = new WCStorage();
95
112
  (0, _classPrivateFieldLooseBase2.default)(this, _option)[_option] = option;
96
113
  (0, _classPrivateFieldLooseBase2.default)(this, _polkadotRequestHandler)[_polkadotRequestHandler] = new _PolkadotRequestHandler.default(this, requestService);
97
114
  (0, _classPrivateFieldLooseBase2.default)(this, _eip155RequestHandler)[_eip155RequestHandler] = new _Eip155RequestHandler.default((0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState], this);
98
- (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]().catch(console.error);
115
+ this.initClient().catch(console.error);
116
+ }
117
+ async haveData() {
118
+ const sessionStorage = await storage.getItem('wc@2:client:0.3//session');
119
+ const pairingStorage = await storage.getItem('wc@2:core:0.3//pairing');
120
+ const subscriptionStorage = await storage.getItem('wc@2:core:0.3//subscription');
121
+ const sessions = sessionStorage ? JSON.parse(sessionStorage) : [];
122
+ const pairings = pairingStorage ? JSON.parse(pairingStorage) : [];
123
+ const subscriptions = subscriptionStorage ? JSON.parse(subscriptionStorage) : [];
124
+ return !!sessions.length || !!pairings.length || !!subscriptions.length;
125
+ }
126
+ async initClient(force) {
127
+ (0, _classPrivateFieldLooseBase2.default)(this, _removeListener)[_removeListener]();
128
+ if (force || (await this.haveData())) {
129
+ (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client] = await _signClient.default.init((0, _classPrivateFieldLooseBase2.default)(this, _option)[_option]);
130
+ }
131
+ (0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
132
+ (0, _classPrivateFieldLooseBase2.default)(this, _createListener)[_createListener]();
99
133
  }
100
134
  get sessions() {
101
135
  var _classPrivateFieldLoo;
@@ -112,12 +146,12 @@ class WalletConnectService {
112
146
  }
113
147
  async changeOption(newOption) {
114
148
  (0, _classPrivateFieldLooseBase2.default)(this, _option)[_option] = Object.assign({}, (0, _classPrivateFieldLooseBase2.default)(this, _option)[_option], newOption);
115
- await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]();
149
+ await this.initClient();
116
150
  }
117
151
  async connect(uri) {
118
152
  var _classPrivateFieldLoo3;
119
- if (!(0, _classPrivateFieldLooseBase2.default)(this, _haveData)[_haveData]) {
120
- await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient](true);
153
+ if (!(await this.haveData())) {
154
+ await this.initClient(true);
121
155
  }
122
156
  (0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
123
157
  await ((_classPrivateFieldLoo3 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.pair({
@@ -127,10 +161,10 @@ class WalletConnectService {
127
161
  async approveSession(result) {
128
162
  var _classPrivateFieldLoo4;
129
163
  (0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
130
- Object.entries(result.namespaces).forEach(_ref => {
164
+ Object.entries(result.namespaces).forEach(_ref3 => {
131
165
  let [namespace, {
132
166
  methods
133
- }] = _ref;
167
+ }] = _ref3;
134
168
  methods = [...methods, ...this.findMethodsMissing(_constants.WALLET_CONNECT_EIP155_NAMESPACE === namespace ? methodEVMRequire : methodDOTRequire, methods)];
135
169
  result.namespaces[namespace].methods = methods;
136
170
  });
@@ -191,7 +225,7 @@ class WalletConnectService {
191
225
  console.error(e);
192
226
  }
193
227
  }
194
- await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]();
228
+ await this.initClient();
195
229
  (0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
196
230
  }
197
231
  async disconnect(topic) {
@@ -214,23 +248,6 @@ class WalletConnectService {
214
248
  }
215
249
  }
216
250
  exports.default = WalletConnectService;
217
- function _get_haveData() {
218
- const sessionStorage = storage.getItem('wc@2:client:0.3//session');
219
- const pairingStorage = storage.getItem('wc@2:core:0.3//pairing');
220
- const subscriptionStorage = storage.getItem('wc@2:core:0.3//subscription');
221
- const sessions = sessionStorage ? JSON.parse(sessionStorage) : [];
222
- const pairings = pairingStorage ? JSON.parse(pairingStorage) : [];
223
- const subscriptions = subscriptionStorage ? JSON.parse(subscriptionStorage) : [];
224
- return !!sessions.length || !!pairings.length || !!subscriptions.length;
225
- }
226
- async function _initClient2(force) {
227
- (0, _classPrivateFieldLooseBase2.default)(this, _removeListener)[_removeListener]();
228
- if (force || (0, _classPrivateFieldLooseBase2.default)(this, _haveData)[_haveData]) {
229
- (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client] = await _signClient.default.init((0, _classPrivateFieldLooseBase2.default)(this, _option)[_option]);
230
- }
231
- (0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
232
- (0, _classPrivateFieldLooseBase2.default)(this, _createListener)[_createListener]();
233
- }
234
251
  function _updateSessions2() {
235
252
  this.sessionSubject.next(this.sessions);
236
253
  }
@@ -1,59 +1,156 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.SWStorage = void 0;
8
+ var _databases = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/databases"));
9
+ var _promise = require("@subwallet/extension-base/utils/promise");
10
+ var _xGlobal = require("@polkadot/x-global");
7
11
  // Copyright 2019-2022 @polkadot/extension-base authors & contributors
8
12
  // SPDX-License-Identifier: Apache-2.0
9
13
 
14
+ const hasLocalStorage = typeof localStorage !== 'undefined';
15
+
16
+ // Create localStorage adaptor
10
17
  class SWStorage {
11
18
  _storage = {};
19
+ localStorage = hasLocalStorage ? localStorage : undefined;
20
+ kvDatabase = _databases.default.getInstance().keyValue;
21
+ isReady = false;
22
+ waitReadyHandler = (0, _promise.createPromiseHandler)();
23
+ get waitReady() {
24
+ return this.waitReadyHandler.promise;
25
+ }
12
26
  constructor() {
13
- this.sync();
27
+ this.sync().then(() => {
28
+ this.isReady = true;
29
+ this.waitReadyHandler.resolve(this);
30
+ }).catch(console.error);
14
31
  }
15
- setItem(key, value) {
32
+ async setItem(key, value) {
33
+ !this.isReady && (await this.waitReady);
16
34
  this._storage[key] = value;
17
- localStorage.setItem(key, value);
35
+ if (this.localStorage) {
36
+ var _this$localStorage;
37
+ (_this$localStorage = this.localStorage) === null || _this$localStorage === void 0 ? void 0 : _this$localStorage.setItem(key, value);
38
+ } else {
39
+ this.kvDatabase.put({
40
+ key,
41
+ value
42
+ }).catch(console.error);
43
+ }
44
+ }
45
+ async getEntries() {
46
+ !this.isReady && (await this.waitReady);
47
+ return Object.entries(this._storage);
48
+ }
49
+ async setMap(map) {
50
+ !this.isReady && (await this.waitReady);
51
+ this._storage = {
52
+ ...this._storage,
53
+ ...map
54
+ };
55
+ if (this.localStorage) {
56
+ Object.entries(map).forEach(_ref => {
57
+ var _this$localStorage2;
58
+ let [key, value] = _ref;
59
+ (_this$localStorage2 = this.localStorage) === null || _this$localStorage2 === void 0 ? void 0 : _this$localStorage2.setItem(key, value);
60
+ });
61
+ } else {
62
+ const putList = Object.entries(map).map(_ref2 => {
63
+ let [key, value] = _ref2;
64
+ return {
65
+ key,
66
+ value
67
+ };
68
+ });
69
+ this.kvDatabase.bulkPut(putList).catch(console.error);
70
+ }
71
+ }
72
+ async getItem(key) {
73
+ !this.isReady && (await this.waitReady);
74
+ return this._storage[key] || null;
18
75
  }
19
- getItem(key) {
20
- return this._storage[key] || localStorage.getItem(key) || null;
76
+ async getItems(keys) {
77
+ !this.isReady && (await this.waitReady);
78
+ return keys.map(key => this._storage[key] || null);
21
79
  }
22
- removeItem(key) {
80
+ async getMap(keys) {
81
+ !this.isReady && (await this.waitReady);
82
+ return keys.reduce((result, key) => {
83
+ result[key] = this._storage[key] || null;
84
+ return result;
85
+ }, {});
86
+ }
87
+ async removeItem(key) {
88
+ !this.isReady && (await this.waitReady);
23
89
  this._storage[key] && delete this._storage[key];
24
- localStorage.removeItem(key);
90
+ if (this.localStorage) {
91
+ this.localStorage.removeItem(key);
92
+ } else {
93
+ this.kvDatabase.where({
94
+ key
95
+ }).delete().catch(console.error);
96
+ }
97
+ }
98
+ async removeItems(keys) {
99
+ !this.isReady && (await this.waitReady);
100
+ keys.forEach(key => {
101
+ this._storage[key] && delete this._storage[key];
102
+ });
103
+ if (this.localStorage) {
104
+ keys.forEach(key => {
105
+ this.localStorage && this.localStorage.removeItem(key);
106
+ });
107
+ } else {
108
+ this.kvDatabase.where('key').anyOf(keys).delete().catch(console.error);
109
+ }
25
110
  }
26
- clear() {
111
+ async clear() {
112
+ !this.isReady && (await this.waitReady);
27
113
  this._storage = {};
28
- localStorage.clear();
114
+ if (this.localStorage) {
115
+ this.localStorage.clear();
116
+ } else {
117
+ this.kvDatabase.clear().catch(console.error);
118
+ }
29
119
  }
30
- key(index) {
120
+ async key(index) {
121
+ !this.isReady && (await this.waitReady);
31
122
  return Object.keys(this._storage)[index] || null;
32
123
  }
33
- length(index) {
124
+ async length(index) {
125
+ !this.isReady && (await this.waitReady);
34
126
  return Object.keys(this._storage)[index] || null;
35
127
  }
36
128
 
37
129
  // Additional methods
38
- keys() {
130
+ async keys() {
131
+ !this.isReady && (await this.waitReady);
39
132
  return Object.keys(this._storage) || [];
40
133
  }
41
- copy() {
134
+ async copy() {
135
+ !this.isReady && (await this.waitReady);
42
136
  return JSON.parse(JSON.stringify(this._storage));
43
137
  }
44
- sync() {
45
- this._storage = JSON.parse(JSON.stringify(localStorage));
138
+ async sync() {
139
+ if (this.localStorage) {
140
+ this._storage = JSON.parse(JSON.stringify(this.localStorage));
141
+ } else {
142
+ const items = await this.kvDatabase.toArray();
143
+ this._storage = {};
144
+ items.forEach(item => {
145
+ this._storage[item.key] = item.value;
146
+ });
147
+ }
46
148
  }
47
149
  static get instance() {
48
- // @ts-ignore
49
- if (!window.SWStorage) {
50
- console.log('SWStorage init');
51
- // @ts-ignore
52
- window.SWStorage = new SWStorage();
150
+ if (!_xGlobal.xglobal.SWStorage) {
151
+ _xGlobal.xglobal.SWStorage = new SWStorage();
53
152
  }
54
-
55
- // @ts-ignore
56
- return window.SWStorage;
153
+ return _xGlobal.xglobal.SWStorage;
57
154
  }
58
155
  }
59
156
  exports.SWStorage = SWStorage;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _storage = require("./storage");
7
+ Object.keys(_storage).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _storage[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _storage[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1 @@
1
+ "use strict";
@@ -79,4 +79,15 @@ Object.keys(_yield).forEach(function (key) {
79
79
  return _yield[key];
80
80
  }
81
81
  });
82
+ });
83
+ var _common = require("./common");
84
+ Object.keys(_common).forEach(function (key) {
85
+ if (key === "default" || key === "__esModule") return;
86
+ if (key in exports && exports[key] === _common[key]) return;
87
+ Object.defineProperty(exports, key, {
88
+ enumerable: true,
89
+ get: function () {
90
+ return _common[key];
91
+ }
92
+ });
82
93
  });
@@ -88,6 +88,6 @@ exports.targetIsWeb = targetIsWeb;
88
88
  const targetIsMobile = TARGET_ENV === 'mobile';
89
89
  exports.targetIsMobile = targetIsMobile;
90
90
  const MODULE_SUPPORT = {
91
- MANTA_ZK: targetIsExtension
91
+ MANTA_ZK: false
92
92
  };
93
93
  exports.MODULE_SUPPORT = MODULE_SUPPORT;
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.parseEvmRlp = exports.parseContractInput = exports.isContractAddress = void 0;
8
8
  var _helper = require("@subwallet/extension-base/services/chain-service/helper");
9
9
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
10
+ var _utils2 = require("@subwallet/extension-base/utils");
10
11
  var _eth = require("@subwallet/extension-base/utils/eth");
11
12
  var _base = require("@subwallet/extension-base/utils/eth/parseTransaction/base");
12
- var _axios = _interopRequireDefault(require("axios"));
13
13
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
14
14
  var _i18next = require("i18next");
15
15
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
@@ -137,17 +137,15 @@ const parseContractInput = async (input, contractAddress, network) => {
137
137
  if (contractAddress && network) {
138
138
  if ((0, _utils._getEvmAbiExplorer)(network)) {
139
139
  try {
140
- const res = await _axios.default.get((0, _utils._getEvmAbiExplorer)(network), {
140
+ const data = await (0, _utils2.fetchJson)((0, _utils._getEvmAbiExplorer)(network), {
141
141
  params: {
142
142
  address: contractAddress
143
143
  },
144
144
  timeout: 3000
145
145
  });
146
-
147
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
148
- if (res.status === 200 && res.data.status === '1') {
149
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
150
- const abi = res.data.result;
146
+ if (data.status === '1') {
147
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
148
+ const abi = data.result;
151
149
  const temp = parseInputWithAbi(input, abi);
152
150
  if (temp) {
153
151
  return {
@@ -213,7 +211,7 @@ const parseEvmRlp = async (data, networkMap, evmApiMap) => {
213
211
  if (await isContractAddress(tx.to, evmApiMap[network.slug])) {
214
212
  if ((0, _utils._getEvmAbiExplorer)(network) !== '') {
215
213
  try {
216
- const res = await _axios.default.get((0, _utils._getEvmAbiExplorer)(network), {
214
+ const data = await (0, _utils2.fetchJson)((0, _utils._getEvmAbiExplorer)(network), {
217
215
  params: {
218
216
  address: tx.to
219
217
  },
@@ -221,9 +219,9 @@ const parseEvmRlp = async (data, networkMap, evmApiMap) => {
221
219
  });
222
220
 
223
221
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
224
- if (res.status === 200 && res.data.status === '1') {
222
+ if (data.status === '1') {
225
223
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
226
- const abi = res.data.result;
224
+ const abi = data.result;
227
225
  const temp = parseInputWithAbi(tx.data, abi);
228
226
  if (temp) {
229
227
  result.data = temp;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fetchData = fetchData;
7
+ exports.fetchJson = fetchJson;
8
+ exports.fetchText = fetchText;
9
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
10
+ // SPDX-License-Identifier: Apache-2.0
11
+
12
+ async function fetchData(url) {
13
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
+ const {
15
+ data,
16
+ params,
17
+ timeout,
18
+ ...fetchOptions
19
+ } = options;
20
+ let timeoutId;
21
+ if (timeout) {
22
+ const controller = new AbortController();
23
+ timeoutId = setTimeout(() => controller.abort(), timeout);
24
+ fetchOptions.signal = new AbortController().signal;
25
+ }
26
+ if (params) {
27
+ const urlParams = new URLSearchParams(params);
28
+ url = `${url}?${urlParams.toString()}`;
29
+ }
30
+ if (data) {
31
+ fetchOptions.headers = {
32
+ 'Content-Type': 'application/json',
33
+ Accept: 'application/json',
34
+ ...fetchOptions.headers
35
+ };
36
+ fetchOptions.body = JSON.stringify(data);
37
+ }
38
+ const response = await fetch(url, fetchOptions);
39
+ if (!response.ok) {
40
+ throw new Error(`HTTP error! Status: ${response.status}`);
41
+ } else {
42
+ clearTimeout(timeoutId);
43
+ }
44
+ return response;
45
+ }
46
+ async function fetchJson(url) {
47
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
48
+ const response = await fetchData(url, options);
49
+ return await response.json();
50
+ }
51
+ async function fetchText(url) {
52
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53
+ const response = await fetchData(url, options);
54
+ return await response.text();
55
+ }
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.fetchStaticCache = fetchStaticCache;
8
- var _axios = _interopRequireDefault(require("axios"));
7
+ var _fetch = require("@subwallet/extension-base/utils/fetch");
9
8
  // Copyright 2019-2022 @subwallet/extension-base
10
9
  // SPDX-License-Identifier: Apache-2.0
11
10
 
@@ -15,10 +14,9 @@ const fetchTarget = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://stat
15
14
  async function fetchStaticCache(slug, defaultData) {
16
15
  let timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 9000;
17
16
  try {
18
- const rs = await _axios.default.get(`${fetchTarget}/${slug}`, {
17
+ return await (0, _fetch.fetchJson)(`${fetchTarget}/${slug}`, {
19
18
  timeout
20
19
  });
21
- return rs.data;
22
20
  } catch (e) {
23
21
  return defaultData;
24
22
  }
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.fetchStaticData = fetchStaticData;
7
+ var _fetch = require("@subwallet/extension-base/utils/fetch");
8
8
  var _staticData = require("@subwallet/extension-base/utils/staticData");
9
- var _axios = _interopRequireDefault(require("axios"));
10
9
  // Copyright 2019-2022 @subwallet/extension-base
11
10
  // SPDX-License-Identifier: Apache-2.0
12
11
 
@@ -14,10 +13,14 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
14
13
  const branchName = process.env.BRANCH_NAME || 'koni-dev';
15
14
  const fetchTarget = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
16
15
  async function fetchStaticData(slug, targetFile) {
16
+ let isJson = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
17
17
  const fetchFile = targetFile || fetchTarget;
18
18
  try {
19
- const rs = await _axios.default.get(`https://static-data.subwallet.app/${slug}/${fetchFile}`);
20
- return rs.data;
19
+ if (isJson) {
20
+ return await (0, _fetch.fetchJson)(`https://static-data.subwallet.app/${slug}/${fetchFile}`);
21
+ } else {
22
+ return await (0, _fetch.fetchText)(`https://static-data.subwallet.app/${slug}/${fetchFile}`);
23
+ }
21
24
  } catch (e) {
22
25
  return _staticData.staticData[slug];
23
26
  }
@@ -80,6 +80,30 @@ var _i18next = require("i18next");
80
80
  var _util = require("@polkadot/util");
81
81
  var _utilCrypto = require("@polkadot/util-crypto");
82
82
  var _canDerive = require("./canDerive");
83
+ var _mv = require("./mv3");
84
+ Object.keys(_mv).forEach(function (key) {
85
+ if (key === "default" || key === "__esModule") return;
86
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
87
+ if (key in exports && exports[key] === _mv[key]) return;
88
+ Object.defineProperty(exports, key, {
89
+ enumerable: true,
90
+ get: function () {
91
+ return _mv[key];
92
+ }
93
+ });
94
+ });
95
+ var _fetch = require("./fetch");
96
+ Object.keys(_fetch).forEach(function (key) {
97
+ if (key === "default" || key === "__esModule") return;
98
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
99
+ if (key in exports && exports[key] === _fetch[key]) return;
100
+ Object.defineProperty(exports, key, {
101
+ enumerable: true,
102
+ get: function () {
103
+ return _fetch[key];
104
+ }
105
+ });
106
+ });
83
107
  var _account = require("./account");
84
108
  Object.keys(_account).forEach(function (key) {
85
109
  if (key === "default" || key === "__esModule") return;
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.reportError = void 0;
8
7
  var _environment = require("@subwallet/extension-base/utils/environment");
9
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
10
8
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
11
9
  // SPDX-License-Identifier: Apache-2.0
12
10
 
@@ -23,7 +21,7 @@ const reportError = async (e, pathName) => {
23
21
  app_version: JSON.stringify(process.env.PKG_VERSION),
24
22
  current_routes: pathName
25
23
  };
26
- await (0, _crossFetch.default)(_environment.TARGET_ENV === 'extension' ? EXTENSION_REPORT_ERROR_URL : WEBAPP_REPORT_ERROR_URL, {
24
+ await fetch(_environment.TARGET_ENV === 'extension' ? EXTENSION_REPORT_ERROR_URL : WEBAPP_REPORT_ERROR_URL, {
27
25
  method: 'POST',
28
26
  body: JSON.stringify(body)
29
27
  });
@@ -1,4 +1,5 @@
1
1
  export declare const LANGUAGE = "current-language";
2
+ export declare const DEFAULT_LANGUAGE = "en";
2
3
  export declare const CURRENCY = "current-currency";
3
4
  export declare const REMIND_EXPORT_ACCOUNT = "remind_export_account";
4
5
  export declare const LATEST_SESSION = "general.latest-session";
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  export const LANGUAGE = 'current-language';
5
+ export const DEFAULT_LANGUAGE = 'en';
5
6
  export const CURRENCY = 'current-currency';
6
7
  export const REMIND_EXPORT_ACCOUNT = 'remind_export_account';
7
8
  export const LATEST_SESSION = 'general.latest-session';
@@ -6,9 +6,8 @@ import { _FundStatus } from '@subwallet/chain-list/types';
6
6
  import { APIItemState, CrowdloanParaState } from '@subwallet/extension-base/background/KoniTypes';
7
7
  import { ACALA_REFRESH_CROWDLOAN_INTERVAL } from '@subwallet/extension-base/constants';
8
8
  import registry from '@subwallet/extension-base/koni/api/dotsama/typeRegistry';
9
- import { categoryAddresses, reformatAddress } from '@subwallet/extension-base/utils';
9
+ import { categoryAddresses, fetchJson, reformatAddress } from '@subwallet/extension-base/utils';
10
10
  import { fetchStaticData } from '@subwallet/extension-base/utils/fetchStaticData';
11
- import axios from 'axios';
12
11
  import { BN } from '@polkadot/util';
13
12
  const STATUS_MAP = {
14
13
  [_FundStatus.IN_AUCTION]: CrowdloanParaState.ONGOING,
@@ -82,7 +81,7 @@ export const subscribeAcalaContributeInterval = (polkadotAddresses, fundInfo, ca
82
81
  const acalaContributionApi = 'https://api.polkawallet.io/acala-distribution-v2/crowdloan?account=';
83
82
  const getContributeInfo = () => {
84
83
  Promise.all(polkadotAddresses.map(polkadotAddress => {
85
- return axios.get(`${acalaContributionApi}${polkadotAddress}`);
84
+ return fetchJson(`${acalaContributionApi}${polkadotAddress}`);
86
85
  })).then(resList => {
87
86
  let contribute = new BN(0);
88
87
  resList.forEach(res => {
@@ -4,7 +4,6 @@
4
4
  import { getRandomIpfsGateway } from '@subwallet/extension-base/koni/api/nft/config';
5
5
  import { BaseNftApi } from '@subwallet/extension-base/koni/api/nft/nft';
6
6
  import { isUrl } from '@subwallet/extension-base/utils';
7
- import fetch from 'cross-fetch';
8
7
  const acalaExternalBaseUrl = 'https://apps.acala.network/portfolio/nft/';
9
8
  export class AcalaNftApi extends BaseNftApi {
10
9
  // eslint-disable-next-line no-useless-constructor
@@ -4,7 +4,6 @@
4
4
  import { AssetHubNftType } from '@subwallet/extension-base/background/KoniTypes';
5
5
  import { BaseNftApi } from '@subwallet/extension-base/koni/api/nft/nft';
6
6
  import { isUrl } from '@subwallet/extension-base/utils';
7
- import fetch from 'cross-fetch';
8
7
  export default class AssetHubNftsPalletApi extends BaseNftApi {
9
8
  // eslint-disable-next-line no-useless-constructor
10
9
  constructor(api, addresses, chain) {
@@ -4,7 +4,6 @@
4
4
  import { AssetHubNftType } from '@subwallet/extension-base/background/KoniTypes';
5
5
  import { BaseNftApi } from '@subwallet/extension-base/koni/api/nft/nft';
6
6
  import { isUrl } from '@subwallet/extension-base/utils';
7
- import fetch from 'cross-fetch';
8
7
  export default class AssetHubUniquesPalletApi extends BaseNftApi {
9
8
  // eslint-disable-next-line no-useless-constructor
10
9
  constructor(api, addresses, chain) {
@@ -4,7 +4,6 @@
4
4
  import { BIT_AVATAR_API, BIT_COUNTRY_IPFS_SERVER, BIT_COUNTRY_LAND_ESTATE_METADATA_API } from '@subwallet/extension-base/koni/api/nft/config';
5
5
  import { BaseNftApi } from '@subwallet/extension-base/koni/api/nft/nft';
6
6
  import { isUrl } from '@subwallet/extension-base/utils';
7
- import fetch from 'cross-fetch';
8
7
  import { BN_ZERO, hexToBn } from '@polkadot/util';
9
8
  export class BitCountryNftApi extends BaseNftApi {
10
9
  constructor(api, addresses, chain) {