@subwallet/extension-base 1.0.12-0 → 1.0.13-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 (124) hide show
  1. package/background/KoniTypes.d.ts +89 -0
  2. package/background/KoniTypes.js +18 -19
  3. package/background/handlers/Extension.js +17 -2
  4. package/background/handlers/State.d.ts +0 -1
  5. package/background/handlers/State.js +4 -8
  6. package/background/types.d.ts +6 -1
  7. package/cjs/background/KoniTypes.js +21 -11
  8. package/cjs/background/handlers/Extension.js +22 -6
  9. package/cjs/background/handlers/State.js +4 -8
  10. package/cjs/constants/index.js +7 -1
  11. package/cjs/defaults.js +1 -1
  12. package/cjs/koni/api/dotsama/balance.js +5 -0
  13. package/cjs/koni/api/dotsama/transfer.js +6 -0
  14. package/cjs/koni/api/nft/config.js +11 -6
  15. package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
  16. package/cjs/koni/api/xcm/xTokens.js +2 -2
  17. package/cjs/koni/background/cron.js +12 -1
  18. package/cjs/koni/background/handlers/Extension.js +457 -131
  19. package/cjs/koni/background/handlers/State.js +236 -53
  20. package/cjs/koni/background/handlers/Tabs.js +61 -9
  21. package/cjs/koni/background/subscription.js +3 -0
  22. package/cjs/packageInfo.js +1 -1
  23. package/cjs/page/Metadata.js +3 -0
  24. package/cjs/services/chain-service/constants.js +10 -4
  25. package/cjs/services/chain-service/handler/SubstrateApi.js +2 -1
  26. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -1
  27. package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +147 -0
  28. package/cjs/services/chain-service/index.js +54 -5
  29. package/cjs/services/chain-service/utils.js +32 -0
  30. package/cjs/services/event-service/types.js +3 -1
  31. package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -9
  32. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +2 -2
  33. package/cjs/services/request-service/handler/WalletConnectRequestHandler.js +71 -0
  34. package/cjs/services/request-service/index.js +24 -6
  35. package/cjs/services/storage-service/DatabaseService.js +31 -1
  36. package/cjs/services/storage-service/databases/index.js +3 -0
  37. package/cjs/services/storage-service/db-stores/MantaPay.js +40 -0
  38. package/cjs/services/transaction-service/helpers/index.js +3 -2
  39. package/cjs/services/transaction-service/index.js +2 -1
  40. package/cjs/services/wallet-connect-service/constants.js +38 -0
  41. package/cjs/services/wallet-connect-service/handler/Eip155RequestHandler.js +113 -0
  42. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +123 -0
  43. package/cjs/services/wallet-connect-service/helpers.js +81 -0
  44. package/cjs/services/wallet-connect-service/index.js +273 -0
  45. package/cjs/services/wallet-connect-service/types.js +27 -0
  46. package/cjs/utils/array.js +17 -0
  47. package/cjs/utils/environment.js +66 -0
  48. package/cjs/utils/index.js +78 -1
  49. package/cjs/utils/lazy.js +52 -0
  50. package/constants/index.d.ts +2 -0
  51. package/constants/index.js +2 -0
  52. package/defaults.d.ts +1 -1
  53. package/defaults.js +1 -1
  54. package/koni/api/dotsama/balance.js +6 -1
  55. package/koni/api/dotsama/transfer.js +7 -1
  56. package/koni/api/nft/config.js +11 -6
  57. package/koni/api/xcm/polkadotXcm.js +1 -1
  58. package/koni/api/xcm/xTokens.js +2 -2
  59. package/koni/background/cron.d.ts +1 -0
  60. package/koni/background/cron.js +13 -2
  61. package/koni/background/handlers/Extension.d.ts +11 -0
  62. package/koni/background/handlers/Extension.js +329 -12
  63. package/koni/background/handlers/State.d.ts +17 -3
  64. package/koni/background/handlers/State.js +238 -52
  65. package/koni/background/handlers/Tabs.d.ts +2 -0
  66. package/koni/background/handlers/Tabs.js +58 -7
  67. package/koni/background/subscription.js +3 -0
  68. package/package.json +72 -6
  69. package/packageInfo.js +1 -1
  70. package/page/Metadata.d.ts +2 -0
  71. package/page/Metadata.js +3 -0
  72. package/services/chain-service/constants.d.ts +3 -0
  73. package/services/chain-service/constants.js +5 -2
  74. package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
  75. package/services/chain-service/handler/SubstrateApi.js +2 -1
  76. package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -1
  77. package/services/chain-service/handler/SubstrateChainHandler.js +3 -1
  78. package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +30 -0
  79. package/services/chain-service/handler/manta/MantaPrivateHandler.js +140 -0
  80. package/services/chain-service/handler/types.d.ts +2 -0
  81. package/services/chain-service/index.d.ts +7 -3
  82. package/services/chain-service/index.js +56 -7
  83. package/services/chain-service/utils.d.ts +3 -0
  84. package/services/chain-service/utils.js +28 -0
  85. package/services/event-service/types.d.ts +3 -0
  86. package/services/event-service/types.js +3 -1
  87. package/services/request-service/handler/AuthRequestHandler.d.ts +0 -1
  88. package/services/request-service/handler/AuthRequestHandler.js +5 -10
  89. package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -1
  90. package/services/request-service/handler/SubstrateRequestHandler.js +2 -2
  91. package/services/request-service/handler/WalletConnectRequestHandler.d.ts +15 -0
  92. package/services/request-service/handler/WalletConnectRequestHandler.js +62 -0
  93. package/services/request-service/index.d.ts +7 -2
  94. package/services/request-service/index.js +24 -6
  95. package/services/storage-service/DatabaseService.d.ts +10 -1
  96. package/services/storage-service/DatabaseService.js +31 -1
  97. package/services/storage-service/databases/index.d.ts +2 -0
  98. package/services/storage-service/databases/index.js +3 -0
  99. package/services/storage-service/db-stores/MantaPay.d.ts +9 -0
  100. package/services/storage-service/db-stores/MantaPay.js +32 -0
  101. package/services/transaction-service/helpers/index.d.ts +1 -1
  102. package/services/transaction-service/helpers/index.js +2 -2
  103. package/services/transaction-service/index.js +2 -1
  104. package/services/transaction-service/types.d.ts +2 -1
  105. package/services/wallet-connect-service/constants.d.ts +11 -0
  106. package/services/wallet-connect-service/constants.js +23 -0
  107. package/services/wallet-connect-service/handler/Eip155RequestHandler.d.ts +8 -0
  108. package/services/wallet-connect-service/handler/Eip155RequestHandler.js +106 -0
  109. package/services/wallet-connect-service/handler/PolkadotRequestHandler.d.ts +8 -0
  110. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +114 -0
  111. package/services/wallet-connect-service/helpers.d.ts +12 -0
  112. package/services/wallet-connect-service/helpers.js +67 -0
  113. package/services/wallet-connect-service/index.d.ts +20 -0
  114. package/services/wallet-connect-service/index.js +265 -0
  115. package/services/wallet-connect-service/types.d.ts +46 -0
  116. package/services/wallet-connect-service/types.js +20 -0
  117. package/utils/array.d.ts +1 -0
  118. package/utils/array.js +10 -0
  119. package/utils/environment.d.ts +2 -0
  120. package/utils/environment.js +59 -0
  121. package/utils/index.d.ts +4 -0
  122. package/utils/index.js +10 -2
  123. package/utils/lazy.d.ts +2 -0
  124. package/utils/lazy.js +43 -0
@@ -6,10 +6,12 @@ import { AccountAuthType, AccountJson, AddressJson, AuthorizeRequest, Confirmati
6
6
  import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
7
7
  import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCustomAssetRequest, _ValidateCustomAssetResponse, EnableChainParams, EnableMultiChainParams } from '@subwallet/extension-base/services/chain-service/types';
8
8
  import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
9
+ import { WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
9
10
  import { InjectedAccount, MetadataDefBase } from '@subwallet/extension-inject/types';
10
11
  import { KeyringPair$Json, KeyringPair$Meta } from '@subwallet/keyring/types';
11
12
  import { KeyringOptions } from '@subwallet/ui-keyring/options/types';
12
13
  import { KeyringAddress, KeyringPairs$Json } from '@subwallet/ui-keyring/types';
14
+ import { SessionTypes } from '@walletconnect/types/dist/types/sign-client/session';
13
15
  import Web3 from 'web3';
14
16
  import { RequestArguments, TransactionConfig } from 'web3-core';
15
17
  import { JsonRpcPayload, JsonRpcResponse } from 'web3-core-helpers';
@@ -18,6 +20,21 @@ import { BN } from '@polkadot/util';
18
20
  import { HexString } from '@polkadot/util/types';
19
21
  import { KeypairType } from '@polkadot/util-crypto/types';
20
22
  import { TransactionWarning } from './warnings/TransactionWarning';
23
+ export declare enum RuntimeEnvironment {
24
+ Web = "Web",
25
+ Node = "Node",
26
+ ExtensionChrome = "Extension (Chrome)",
27
+ ExtensionFirefox = "Extension (Firefox)",
28
+ WebWorker = "Web Worker",
29
+ ServiceWorker = "Service Worker",
30
+ Unknown = "Unknown"
31
+ }
32
+ export interface RuntimeEnvironmentInfo {
33
+ environment: RuntimeEnvironment;
34
+ version: string;
35
+ host?: string;
36
+ protocol?: string;
37
+ }
21
38
  export interface ServiceInfo {
22
39
  chainInfoMap: Record<string, _ChainInfo>;
23
40
  chainStateMap: Record<string, _ChainState>;
@@ -1407,6 +1424,64 @@ export interface PassPhishing {
1407
1424
  export interface RequestPassPhishingPage {
1408
1425
  url: string;
1409
1426
  }
1427
+ export interface RequestAddPspToken {
1428
+ genesisHash: string;
1429
+ tokenInfo: {
1430
+ type: string;
1431
+ address: string;
1432
+ symbol: string;
1433
+ name: string;
1434
+ decimals?: number;
1435
+ logo?: string;
1436
+ };
1437
+ }
1438
+ export interface RequestConnectWalletConnect {
1439
+ uri: string;
1440
+ }
1441
+ export interface RequestRejectConnectWalletSession {
1442
+ id: string;
1443
+ }
1444
+ export interface RequestApproveConnectWalletSession {
1445
+ id: string;
1446
+ accounts: string[];
1447
+ }
1448
+ export interface RequestReconnectConnectWalletSession {
1449
+ id: string;
1450
+ }
1451
+ export interface RequestDisconnectWalletConnectSession {
1452
+ topic: string;
1453
+ }
1454
+ export interface MantaPayConfig {
1455
+ address: string;
1456
+ zkAddress: string;
1457
+ enabled: boolean;
1458
+ chain: string;
1459
+ isInitialSync: boolean;
1460
+ }
1461
+ export interface MantaAuthorizationContext {
1462
+ address: string;
1463
+ chain: string;
1464
+ data: unknown;
1465
+ }
1466
+ export interface MantaPaySyncState {
1467
+ isSyncing: boolean;
1468
+ progress: number;
1469
+ needManualSync?: boolean;
1470
+ }
1471
+ export interface MantaPayEnableParams {
1472
+ password: string;
1473
+ address: string;
1474
+ }
1475
+ export declare enum MantaPayEnableMessage {
1476
+ WRONG_PASSWORD = "WRONG_PASSWORD",
1477
+ CHAIN_DISCONNECTED = "CHAIN_DISCONNECTED",
1478
+ UNKNOWN_ERROR = "UNKNOWN_ERROR",
1479
+ SUCCESS = "SUCCESS"
1480
+ }
1481
+ export interface MantaPayEnableResponse {
1482
+ success: boolean;
1483
+ message: MantaPayEnableMessage;
1484
+ }
1410
1485
  export interface KoniRequestSignatures {
1411
1486
  'pri(staking.submitTuringCancelCompound)': [RequestTuringCancelStakeCompound, SWTransactionResponse];
1412
1487
  'pri(staking.submitTuringCompound)': [RequestTuringStakeCompound, SWTransactionResponse];
@@ -1461,6 +1536,12 @@ export interface KoniRequestSignatures {
1461
1536
  'pri(crowdloan.getCrowdloan)': [RequestCrowdloan, CrowdloanJson];
1462
1537
  'pri(crowdloan.getSubscription)': [RequestSubscribeCrowdloan, CrowdloanJson, CrowdloanJson];
1463
1538
  'pri(phishing.pass)': [RequestPassPhishingPage, boolean];
1539
+ 'pri(mantaPay.enable)': [MantaPayEnableParams, MantaPayEnableResponse];
1540
+ 'pri(mantaPay.disable)': [string, boolean];
1541
+ 'pri(mantaPay.getZkBalance)': [null, null];
1542
+ 'pri(mantaPay.subscribeConfig)': [null, MantaPayConfig[], MantaPayConfig[]];
1543
+ 'pri(mantaPay.subscribeSyncingState)': [null, MantaPaySyncState, MantaPaySyncState];
1544
+ 'pri(mantaPay.initSyncMantaPay)': [string, null];
1464
1545
  'pri(authorize.listV2)': [null, ResponseAuthorizeList];
1465
1546
  'pri(authorize.requestsV2)': [RequestAuthorizeSubscribe, boolean, AuthorizeRequest[]];
1466
1547
  'pri(authorize.approveV2)': [RequestAuthorizeApproveV2, boolean];
@@ -1561,6 +1642,14 @@ export interface KoniRequestSignatures {
1561
1642
  'mobile(subscription.start)': [SubscriptionServiceType[], void];
1562
1643
  'mobile(subscription.stop)': [SubscriptionServiceType[], void];
1563
1644
  'mobile(subscription.restart)': [SubscriptionServiceType[], void];
1645
+ 'pub(token.add)': [RequestAddPspToken, boolean];
1646
+ 'pri(walletConnect.connect)': [RequestConnectWalletConnect, boolean];
1647
+ 'pri(walletConnect.requests.subscribe)': [null, WalletConnectSessionRequest[], WalletConnectSessionRequest[]];
1648
+ 'pri(walletConnect.session.approve)': [RequestApproveConnectWalletSession, boolean];
1649
+ 'pri(walletConnect.session.reject)': [RequestRejectConnectWalletSession, boolean];
1650
+ 'pri(walletConnect.session.reconnect)': [RequestReconnectConnectWalletSession, boolean];
1651
+ 'pri(walletConnect.session.subscribe)': [null, SessionTypes.Struct[], SessionTypes.Struct[]];
1652
+ 'pri(walletConnect.session.disconnect)': [RequestDisconnectWalletConnectSession, boolean];
1564
1653
  }
1565
1654
  export interface ApplicationMetadataType {
1566
1655
  version: string;
@@ -1,24 +1,16 @@
1
1
  // Copyright 2019-2022 @polkadot/extension-koni authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- /// Request Auth
5
-
6
- /// Manage Auth
7
-
8
- // Get Auth
9
-
10
- // Auth All site
11
-
12
- // Manage site auth (all allowed/unAllowed)
13
-
14
- // Manage single auth with single account
15
-
16
- // Manage single site with multi account
17
-
18
- // Manage site block
19
-
20
- // Forget site auth
21
-
4
+ export let RuntimeEnvironment;
5
+ (function (RuntimeEnvironment) {
6
+ RuntimeEnvironment["Web"] = "Web";
7
+ RuntimeEnvironment["Node"] = "Node";
8
+ RuntimeEnvironment["ExtensionChrome"] = "Extension (Chrome)";
9
+ RuntimeEnvironment["ExtensionFirefox"] = "Extension (Firefox)";
10
+ RuntimeEnvironment["WebWorker"] = "Web Worker";
11
+ RuntimeEnvironment["ServiceWorker"] = "Service Worker";
12
+ RuntimeEnvironment["Unknown"] = "Unknown";
13
+ })(RuntimeEnvironment || (RuntimeEnvironment = {}));
22
14
  /// Staking subscribe
23
15
 
24
16
  export let StakingType;
@@ -231,4 +223,11 @@ export let NotificationType;
231
223
  NotificationType["SUCCESS"] = "success";
232
224
  NotificationType["WARNING"] = "warning";
233
225
  NotificationType["ERROR"] = "error";
234
- })(NotificationType || (NotificationType = {}));
226
+ })(NotificationType || (NotificationType = {}));
227
+ export let MantaPayEnableMessage;
228
+ (function (MantaPayEnableMessage) {
229
+ MantaPayEnableMessage["WRONG_PASSWORD"] = "WRONG_PASSWORD";
230
+ MantaPayEnableMessage["CHAIN_DISCONNECTED"] = "CHAIN_DISCONNECTED";
231
+ MantaPayEnableMessage["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
232
+ MantaPayEnableMessage["SUCCESS"] = "SUCCESS";
233
+ })(MantaPayEnableMessage || (MantaPayEnableMessage = {}));
@@ -446,8 +446,23 @@ export default class Extension {
446
446
  });
447
447
  return true;
448
448
  }
449
- windowOpen(path) {
450
- const url = `${chrome.extension.getURL('index.html')}#${path}`;
449
+ windowOpen({
450
+ allowedPath: path,
451
+ params,
452
+ subPath
453
+ }) {
454
+ let paramString = '';
455
+ if (params) {
456
+ paramString += '?';
457
+ for (let i = 0; i < Object.keys(params).length; i++) {
458
+ const [key, value] = Object.entries(params)[i];
459
+ paramString += `${key}=${value}`;
460
+ if (i !== Object.keys(params).length - 1) {
461
+ paramString += '&';
462
+ }
463
+ }
464
+ }
465
+ const url = `${chrome.extension.getURL('index.html')}#${path}${subPath || ''}${paramString}`;
451
466
  if (!ALLOWED_PATH.includes(path)) {
452
467
  console.error('Not allowed to open the url:', url);
453
468
  return false;
@@ -70,7 +70,6 @@ export default class State {
70
70
  private saveCurrentAuthList;
71
71
  private metaComplete;
72
72
  private signComplete;
73
- stripUrl(url: string): string;
74
73
  private updateIcon;
75
74
  toggleAuthorization(url: string): AuthUrls;
76
75
  private updateIconAuth;
@@ -3,6 +3,7 @@
3
3
 
4
4
  import { DEFAULT_SETTING } from '@subwallet/extension-base/services/setting-service/constants';
5
5
  import SettingsStore from '@subwallet/extension-base/stores/Settings';
6
+ import { stripUrl } from '@subwallet/extension-base/utils';
6
7
  import { getId } from '@subwallet/extension-base/utils/getId';
7
8
  import { addMetadata, knownMetadata } from '@subwallet/extension-chains';
8
9
  import { BehaviorSubject } from 'rxjs';
@@ -206,7 +207,7 @@ export default class State {
206
207
  url
207
208
  } = this.#authRequests[id];
208
209
  const isAllowedMap = {};
209
- this.#authUrls[this.stripUrl(url)] = {
210
+ this.#authUrls[stripUrl(url)] = {
210
211
  count: 0,
211
212
  id: idStr,
212
213
  isAllowed,
@@ -264,11 +265,6 @@ export default class State {
264
265
  }
265
266
  };
266
267
  };
267
- stripUrl(url) {
268
- assert(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), `Invalid url ${url}, expected to start with http: or https: or ipfs: or ipns:`);
269
- const parts = url.split('/');
270
- return parts[2];
271
- }
272
268
  updateIcon(shouldClose) {
273
269
  const authCount = this.numAuthRequests;
274
270
  const metaCount = this.numMetaRequests;
@@ -304,7 +300,7 @@ export default class State {
304
300
  this.updateIcon(shouldClose);
305
301
  }
306
302
  async authorizeUrl(url, request) {
307
- const idStr = this.stripUrl(url);
303
+ const idStr = stripUrl(url);
308
304
 
309
305
  // Do not enqueue duplicate authorization requests.
310
306
  const isDuplicate = Object.values(this.#authRequests).some(request => request.idStr === idStr);
@@ -328,7 +324,7 @@ export default class State {
328
324
  });
329
325
  }
330
326
  ensureUrlAuthorized(url) {
331
- const entry = this.#authUrls[this.stripUrl(url)];
327
+ const entry = this.#authUrls[stripUrl(url)];
332
328
  assert(entry, `The source ${url} has not been enabled yet`);
333
329
  assert(entry.isAllowed, `The source ${url} is not allowed to interact with this extension`);
334
330
  return true;
@@ -124,7 +124,7 @@ export interface RequestSignatures extends KoniRequestSignatures {
124
124
  'pri(signing.cancel)': [RequestSigningCancel, boolean];
125
125
  'pri(signing.isLocked)': [RequestSigningIsLocked, ResponseSigningIsLocked];
126
126
  'pri(signing.requests)': [RequestSigningSubscribe, boolean, SigningRequest[]];
127
- 'pri(window.open)': [AllowedPath, boolean];
127
+ 'pri(window.open)': [WindowOpenParams, boolean];
128
128
  'pub(accounts.list)': [RequestAccountList, InjectedAccount[]];
129
129
  'pub(accounts.subscribe)': [RequestAccountSubscribe, boolean, InjectedAccount[]];
130
130
  'pub(authorize.tab)': [RequestAuthorizeTab, null];
@@ -361,6 +361,11 @@ export interface ResponseJsonRestore {
361
361
  error: string | null;
362
362
  }
363
363
  export declare type AllowedPath = typeof ALLOWED_PATH[number];
364
+ export declare type WindowOpenParams = {
365
+ allowedPath: AllowedPath;
366
+ subPath?: string;
367
+ params?: Record<string, string>;
368
+ };
364
369
  export interface ResponseJsonGetAccountInfo {
365
370
  address: string;
366
371
  name: string;
@@ -3,18 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.UnstakingStatus = exports.TransferTxErrorType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.StakingTxErrorType = exports.StakingStatus = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.NETWORK_ERROR = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.ChainEditStandard = exports.BasicTxWarningCode = exports.BasicTxErrorType = exports.BalanceErrorType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
6
+ exports.UnstakingStatus = exports.TransferTxErrorType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.StakingTxErrorType = exports.StakingStatus = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.NETWORK_ERROR = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.ChainEditStandard = exports.BasicTxWarningCode = exports.BasicTxErrorType = exports.BalanceErrorType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
7
7
  // Copyright 2019-2022 @polkadot/extension-koni authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
- /// Request Auth
10
- /// Manage Auth
11
- // Get Auth
12
- // Auth All site
13
- // Manage site auth (all allowed/unAllowed)
14
- // Manage single auth with single account
15
- // Manage single site with multi account
16
- // Manage site block
17
- // Forget site auth
9
+ let RuntimeEnvironment;
10
+ exports.RuntimeEnvironment = RuntimeEnvironment;
11
+ (function (RuntimeEnvironment) {
12
+ RuntimeEnvironment["Web"] = "Web";
13
+ RuntimeEnvironment["Node"] = "Node";
14
+ RuntimeEnvironment["ExtensionChrome"] = "Extension (Chrome)";
15
+ RuntimeEnvironment["ExtensionFirefox"] = "Extension (Firefox)";
16
+ RuntimeEnvironment["WebWorker"] = "Web Worker";
17
+ RuntimeEnvironment["ServiceWorker"] = "Service Worker";
18
+ RuntimeEnvironment["Unknown"] = "Unknown";
19
+ })(RuntimeEnvironment || (exports.RuntimeEnvironment = RuntimeEnvironment = {}));
18
20
  /// Staking subscribe
19
21
  let StakingType;
20
22
  exports.StakingType = StakingType;
@@ -239,4 +241,12 @@ exports.NotificationType = NotificationType;
239
241
  NotificationType["SUCCESS"] = "success";
240
242
  NotificationType["WARNING"] = "warning";
241
243
  NotificationType["ERROR"] = "error";
242
- })(NotificationType || (exports.NotificationType = NotificationType = {}));
244
+ })(NotificationType || (exports.NotificationType = NotificationType = {}));
245
+ let MantaPayEnableMessage;
246
+ exports.MantaPayEnableMessage = MantaPayEnableMessage;
247
+ (function (MantaPayEnableMessage) {
248
+ MantaPayEnableMessage["WRONG_PASSWORD"] = "WRONG_PASSWORD";
249
+ MantaPayEnableMessage["CHAIN_DISCONNECTED"] = "CHAIN_DISCONNECTED";
250
+ MantaPayEnableMessage["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
251
+ MantaPayEnableMessage["SUCCESS"] = "SUCCESS";
252
+ })(MantaPayEnableMessage || (exports.MantaPayEnableMessage = MantaPayEnableMessage = {}));
@@ -483,8 +483,24 @@ class Extension {
483
483
  });
484
484
  return true;
485
485
  }
486
- windowOpen(path) {
487
- const url = `${chrome.extension.getURL('index.html')}#${path}`;
486
+ windowOpen(_ref24) {
487
+ let {
488
+ allowedPath: path,
489
+ params,
490
+ subPath
491
+ } = _ref24;
492
+ let paramString = '';
493
+ if (params) {
494
+ paramString += '?';
495
+ for (let i = 0; i < Object.keys(params).length; i++) {
496
+ const [key, value] = Object.entries(params)[i];
497
+ paramString += `${key}=${value}`;
498
+ if (i !== Object.keys(params).length - 1) {
499
+ paramString += '&';
500
+ }
501
+ }
502
+ }
503
+ const url = `${chrome.extension.getURL('index.html')}#${path}${subPath || ''}${paramString}`;
488
504
  if (!_defaults.ALLOWED_PATH.includes(path)) {
489
505
  console.error('Not allowed to open the url:', url);
490
506
  return false;
@@ -507,26 +523,26 @@ class Extension {
507
523
  throw new Error(`"${suri}" is not a valid derivation path`);
508
524
  }
509
525
  }
510
- derivationValidate(_ref24) {
526
+ derivationValidate(_ref25) {
511
527
  let {
512
528
  parentAddress,
513
529
  parentPassword,
514
530
  suri
515
- } = _ref24;
531
+ } = _ref25;
516
532
  const childPair = this.derive(parentAddress, suri, parentPassword, {});
517
533
  return {
518
534
  address: childPair.address,
519
535
  suri
520
536
  };
521
537
  }
522
- derivationCreate(_ref25) {
538
+ derivationCreate(_ref26) {
523
539
  let {
524
540
  genesisHash,
525
541
  name,
526
542
  parentAddress,
527
543
  parentPassword,
528
544
  suri
529
- } = _ref25;
545
+ } = _ref26;
530
546
  const childPair = this.derive(parentAddress, suri, parentPassword, {
531
547
  genesisHash,
532
548
  name,
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = exports.NotificationOptions = void 0;
8
8
  var _constants = require("@subwallet/extension-base/services/setting-service/constants");
9
9
  var _Settings = _interopRequireDefault(require("@subwallet/extension-base/stores/Settings"));
10
+ var _utils = require("@subwallet/extension-base/utils");
10
11
  var _getId = require("@subwallet/extension-base/utils/getId");
11
12
  var _extensionChains = require("@subwallet/extension-chains");
12
13
  var _rxjs = require("rxjs");
@@ -232,7 +233,7 @@ class State {
232
233
  url
233
234
  } = this.#authRequests[id];
234
235
  const isAllowedMap = {};
235
- this.#authUrls[this.stripUrl(url)] = {
236
+ this.#authUrls[(0, _utils.stripUrl)(url)] = {
236
237
  count: 0,
237
238
  id: idStr,
238
239
  isAllowed,
@@ -290,11 +291,6 @@ class State {
290
291
  }
291
292
  };
292
293
  };
293
- stripUrl(url) {
294
- (0, _util.assert)(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), `Invalid url ${url}, expected to start with http: or https: or ipfs: or ipns:`);
295
- const parts = url.split('/');
296
- return parts[2];
297
- }
298
294
  updateIcon(shouldClose) {
299
295
  const authCount = this.numAuthRequests;
300
296
  const metaCount = this.numMetaRequests;
@@ -330,7 +326,7 @@ class State {
330
326
  this.updateIcon(shouldClose);
331
327
  }
332
328
  async authorizeUrl(url, request) {
333
- const idStr = this.stripUrl(url);
329
+ const idStr = (0, _utils.stripUrl)(url);
334
330
 
335
331
  // Do not enqueue duplicate authorization requests.
336
332
  const isDuplicate = Object.values(this.#authRequests).some(request => request.idStr === idStr);
@@ -354,7 +350,7 @@ class State {
354
350
  });
355
351
  }
356
352
  ensureUrlAuthorized(url) {
357
- const entry = this.#authUrls[this.stripUrl(url)];
353
+ const entry = this.#authUrls[(0, _utils.stripUrl)(url)];
358
354
  (0, _util.assert)(entry, `The source ${url} has not been enabled yet`);
359
355
  (0, _util.assert)(entry.isAllowed, `The source ${url} is not allowed to interact with this extension`);
360
356
  return true;
@@ -18,6 +18,8 @@ var _exportNames = {
18
18
  CRON_REFRESH_CHAIN_STAKING_METADATA: true,
19
19
  CRON_REFRESH_CHAIN_NOMINATOR_METADATA: true,
20
20
  CRON_RECOVER_HISTORY_INTERVAL: true,
21
+ CRON_SYNC_MANTA_PAY: true,
22
+ MANTA_PAY_BALANCE_INTERVAL: true,
21
23
  ALL_ACCOUNT_KEY: true,
22
24
  ALL_NETWORK_KEY: true,
23
25
  ALL_GENESIS_HASH: true,
@@ -25,7 +27,7 @@ var _exportNames = {
25
27
  IGNORE_QR_SIGNER: true,
26
28
  XCM_MIN_AMOUNT_RATIO: true
27
29
  };
28
- exports.XCM_MIN_AMOUNT_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
30
+ exports.XCM_MIN_AMOUNT_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
29
31
  var _staking = require("./staking");
30
32
  Object.keys(_staking).forEach(function (key) {
31
33
  if (key === "default" || key === "__esModule") return;
@@ -69,6 +71,10 @@ const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
69
71
  exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = CRON_REFRESH_CHAIN_NOMINATOR_METADATA;
70
72
  const CRON_RECOVER_HISTORY_INTERVAL = 30000;
71
73
  exports.CRON_RECOVER_HISTORY_INTERVAL = CRON_RECOVER_HISTORY_INTERVAL;
74
+ const CRON_SYNC_MANTA_PAY = 300000;
75
+ exports.CRON_SYNC_MANTA_PAY = CRON_SYNC_MANTA_PAY;
76
+ const MANTA_PAY_BALANCE_INTERVAL = 30000;
77
+ exports.MANTA_PAY_BALANCE_INTERVAL = MANTA_PAY_BALANCE_INTERVAL;
72
78
  const ALL_ACCOUNT_KEY = 'ALL';
73
79
  exports.ALL_ACCOUNT_KEY = ALL_ACCOUNT_KEY;
74
80
  const ALL_NETWORK_KEY = 'all';
package/cjs/defaults.js CHANGED
@@ -7,7 +7,7 @@ exports.PORT_MOBILE = exports.PORT_EXTENSION = exports.PORT_CONTENT = exports.PH
7
7
  // Copyright 2019-2022 @polkadot/extension-base authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
10
- const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/new-seed-phrase'];
10
+ const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/detail', '/accounts/new-seed-phrase'];
11
11
  exports.ALLOWED_PATH = ALLOWED_PATH;
12
12
  const PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
13
13
  exports.PHISHING_PAGE_REDIRECT = PHISHING_PAGE_REDIRECT;
@@ -337,6 +337,11 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
337
337
  }
338
338
  async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
339
339
  const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.LOCAL]);
340
+ Object.values(tokenMap).forEach(token => {
341
+ if (_constants2._MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_constants2._ZK_ASSET_PREFIX)) {
342
+ delete tokenMap[token.slug];
343
+ }
344
+ });
340
345
  const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
341
346
  try {
342
347
  const assetIndex = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
@@ -42,6 +42,12 @@ async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMap, chai
42
42
  supportTransferAll: true
43
43
  };
44
44
  }
45
+ if (tokenInfo.symbol.startsWith(_constants._ZK_ASSET_PREFIX) && _constants._MANTA_ZK_CHAIN_GROUP.includes(tokenInfo.originChain)) {
46
+ return {
47
+ supportTransfer: false,
48
+ supportTransferAll: false
49
+ };
50
+ }
45
51
  if (_constants._TRANSFER_NOT_SUPPORTED_CHAINS.includes(networkKey)) {
46
52
  return {
47
53
  supportTransfer: false,
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_TELOS_MIAMI = exports.IPFS_IO_GATEWAY = exports.IPFS_GATEWAY_CLOUD = exports.IPFS_FLEEK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_SERVER = void 0;
7
7
  exports.getRandomIpfsGateway = getRandomIpfsGateway;
8
+ var _utils = require("@subwallet/extension-base/utils");
8
9
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
9
10
  // SPDX-License-Identifier: Apache-2.0
10
11
 
@@ -102,9 +103,6 @@ exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = SUPPORTED_TRANSFER_SUBSTRATE_C
102
103
  const RANDOM_IPFS_GATEWAY_SETTING = [{
103
104
  provider: IPFS_IO_GATEWAY,
104
105
  weight: 0 // Not stable
105
- }, {
106
- provider: NFT_STORAGE_GATEWAY,
107
- weight: 50
108
106
  }, {
109
107
  provider: CF_IPFS_GATEWAY,
110
108
  weight: 4
@@ -123,13 +121,20 @@ const RANDOM_IPFS_GATEWAY_SETTING = [{
123
121
  }, {
124
122
  provider: IPFS_GATEWAY_CLOUD,
125
123
  weight: 0 // Deceptive site warning
126
- }, {
127
- provider: IPFS_FLEEK,
128
- weight: 4
129
124
  }, {
130
125
  provider: IPFS_TELOS_MIAMI,
131
126
  weight: 0
132
127
  }];
128
+ if (!_utils.RuntimeInfo.protocol || _utils.RuntimeInfo.protocol && !_utils.RuntimeInfo.protocol.startsWith('http')) {
129
+ RANDOM_IPFS_GATEWAY_SETTING.push({
130
+ provider: NFT_STORAGE_GATEWAY,
131
+ weight: 50
132
+ });
133
+ RANDOM_IPFS_GATEWAY_SETTING.push({
134
+ provider: IPFS_FLEEK,
135
+ weight: 4
136
+ });
137
+ }
133
138
  const RANDOM_IPFS_GATEWAY_TOTAL_WEIGHT = RANDOM_IPFS_GATEWAY_SETTING.reduce((value, item) => value + item.weight, 0);
134
139
  function getRandomIpfsGateway() {
135
140
  const weighedItems = [];
@@ -11,7 +11,7 @@ var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
11
11
 
12
12
  function getExtrinsicByPolkadotXcmPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
13
13
  const weightParam = (0, _utils.getDestWeight)();
14
- const version = ['statemint', 'statemine', 'shiden'].includes(originChainInfo.slug) ? 'V3' : 'V1';
14
+ const version = ['statemint', 'statemine', 'shiden', 'astar'].includes(originChainInfo.slug) ? 'V3' : 'V1';
15
15
  const beneficiary = (0, _utils.getBeneficiary)(destinationChainInfo, recipientAddress, version);
16
16
  const destination = (0, _utils.getDestinationChainLocation)(originChainInfo, destinationChainInfo, version);
17
17
  let assetLocation = (0, _utils.getTokenLocation)(tokenInfo, value, version);
@@ -24,7 +24,7 @@ function getCurrencyId(tokenInfo) {
24
24
  return (0, _utils2._getTokenOnChainInfo)(tokenInfo) || (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
25
25
  }
26
26
  function getExtrinsicByXtokensPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
27
- const weightParam = ['pioneer', 'hydradx_main'].includes(originChainInfo.slug) ? _utils.FOUR_INSTRUCTIONS_WEIGHT : (0, _utils.getDestWeight)();
28
- const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot'].includes(originChainInfo.slug) ? 'V3' : undefined;
27
+ const weightParam = ['pioneer'].includes(originChainInfo.slug) ? _utils.FOUR_INSTRUCTIONS_WEIGHT : (0, _utils.getDestWeight)();
28
+ const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot', 'interlay', 'hydradx_main'].includes(originChainInfo.slug) ? 'V3' : undefined;
29
29
  return api.tx.xTokens.transfer(getCurrencyId(tokenInfo), value, (0, _utils.getDestMultilocation)(destinationChainInfo, recipientAddress, destVersion), weightParam);
30
30
  }
@@ -73,6 +73,7 @@ class KoniCron {
73
73
  const commonReload = eventTypes.some(eventType => commonReloadEvents.includes(eventType));
74
74
  const chainUpdated = eventTypes.includes('chain.updateState');
75
75
  const stakingSubmitted = eventTypes.includes('transaction.submitStaking');
76
+ const reloadMantaPay = eventTypes.includes('mantaPay.submitTransaction') || eventTypes.includes('mantaPay.enable');
76
77
  const updatedChains = [];
77
78
  if (chainUpdated) {
78
79
  events.forEach(event => {
@@ -82,7 +83,7 @@ class KoniCron {
82
83
  }
83
84
  });
84
85
  }
85
- if (!commonReload && !chainUpdated && !stakingSubmitted) {
86
+ if (!commonReload && !chainUpdated && !stakingSubmitted && !reloadMantaPay) {
86
87
  return;
87
88
  }
88
89
  const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
@@ -93,6 +94,9 @@ class KoniCron {
93
94
  const needUpdateNft = this.needUpdateNft(chainInfoMap, updatedChains);
94
95
  const needUpdateStaking = this.needUpdateStaking(chainInfoMap, updatedChains);
95
96
 
97
+ // MantaPay
98
+ reloadMantaPay && this.removeCron('syncMantaPay');
99
+
96
100
  // NFT
97
101
  (commonReload || needUpdateNft) && this.resetNft(address);
98
102
  (commonReload || needUpdateNft) && this.removeCron('refreshNft');
@@ -110,6 +114,7 @@ class KoniCron {
110
114
  (commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshStakingReward', this.refreshStakingReward(address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
111
115
  (commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
112
116
  needUpdateStaking && this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate), _constants.CRON_REFRESH_CHAIN_STAKING_METADATA);
117
+ reloadMantaPay && this.addCron('syncMantaPay', this.syncMantaPay, _constants.CRON_SYNC_MANTA_PAY);
113
118
  } else {
114
119
  this.setStakingRewardReady();
115
120
  }
@@ -124,6 +129,7 @@ class KoniCron {
124
129
  this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
125
130
  this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
126
131
  this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap()), _constants.CRON_REFRESH_CHAIN_STAKING_METADATA);
132
+ this.addCron('syncMantaPay', this.syncMantaPay, _constants.CRON_SYNC_MANTA_PAY);
127
133
  } else {
128
134
  this.setStakingRewardReady();
129
135
  }
@@ -147,6 +153,11 @@ class KoniCron {
147
153
  this.status = 'stopped';
148
154
  return Promise.resolve();
149
155
  };
156
+ syncMantaPay = () => {
157
+ if (this.state.isMantaPayEnabled) {
158
+ this.state.syncMantaPay().catch(console.warn);
159
+ }
160
+ };
150
161
  refreshNft = (address, apiMap, smartContractNfts, chainInfoMap) => {
151
162
  return () => {
152
163
  this.subscriptions.subscribeNft(address, apiMap.substrate, apiMap.evm, smartContractNfts, chainInfoMap);