@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.
- package/background/KoniTypes.d.ts +89 -0
- package/background/KoniTypes.js +18 -19
- package/background/handlers/Extension.js +17 -2
- package/background/handlers/State.d.ts +0 -1
- package/background/handlers/State.js +4 -8
- package/background/types.d.ts +6 -1
- package/cjs/background/KoniTypes.js +21 -11
- package/cjs/background/handlers/Extension.js +22 -6
- package/cjs/background/handlers/State.js +4 -8
- package/cjs/constants/index.js +7 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/balance.js +5 -0
- package/cjs/koni/api/dotsama/transfer.js +6 -0
- package/cjs/koni/api/nft/config.js +11 -6
- package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/xTokens.js +2 -2
- package/cjs/koni/background/cron.js +12 -1
- package/cjs/koni/background/handlers/Extension.js +457 -131
- package/cjs/koni/background/handlers/State.js +236 -53
- package/cjs/koni/background/handlers/Tabs.js +61 -9
- package/cjs/koni/background/subscription.js +3 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/Metadata.js +3 -0
- package/cjs/services/chain-service/constants.js +10 -4
- package/cjs/services/chain-service/handler/SubstrateApi.js +2 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -1
- package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +147 -0
- package/cjs/services/chain-service/index.js +54 -5
- package/cjs/services/chain-service/utils.js +32 -0
- package/cjs/services/event-service/types.js +3 -1
- package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -9
- package/cjs/services/request-service/handler/SubstrateRequestHandler.js +2 -2
- package/cjs/services/request-service/handler/WalletConnectRequestHandler.js +71 -0
- package/cjs/services/request-service/index.js +24 -6
- package/cjs/services/storage-service/DatabaseService.js +31 -1
- package/cjs/services/storage-service/databases/index.js +3 -0
- package/cjs/services/storage-service/db-stores/MantaPay.js +40 -0
- package/cjs/services/transaction-service/helpers/index.js +3 -2
- package/cjs/services/transaction-service/index.js +2 -1
- package/cjs/services/wallet-connect-service/constants.js +38 -0
- package/cjs/services/wallet-connect-service/handler/Eip155RequestHandler.js +113 -0
- package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +123 -0
- package/cjs/services/wallet-connect-service/helpers.js +81 -0
- package/cjs/services/wallet-connect-service/index.js +273 -0
- package/cjs/services/wallet-connect-service/types.js +27 -0
- package/cjs/utils/array.js +17 -0
- package/cjs/utils/environment.js +66 -0
- package/cjs/utils/index.js +78 -1
- package/cjs/utils/lazy.js +52 -0
- package/constants/index.d.ts +2 -0
- package/constants/index.js +2 -0
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/balance.js +6 -1
- package/koni/api/dotsama/transfer.js +7 -1
- package/koni/api/nft/config.js +11 -6
- package/koni/api/xcm/polkadotXcm.js +1 -1
- package/koni/api/xcm/xTokens.js +2 -2
- package/koni/background/cron.d.ts +1 -0
- package/koni/background/cron.js +13 -2
- package/koni/background/handlers/Extension.d.ts +11 -0
- package/koni/background/handlers/Extension.js +329 -12
- package/koni/background/handlers/State.d.ts +17 -3
- package/koni/background/handlers/State.js +238 -52
- package/koni/background/handlers/Tabs.d.ts +2 -0
- package/koni/background/handlers/Tabs.js +58 -7
- package/koni/background/subscription.js +3 -0
- package/package.json +72 -6
- package/packageInfo.js +1 -1
- package/page/Metadata.d.ts +2 -0
- package/page/Metadata.js +3 -0
- package/services/chain-service/constants.d.ts +3 -0
- package/services/chain-service/constants.js +5 -2
- package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
- package/services/chain-service/handler/SubstrateApi.js +2 -1
- package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +3 -1
- package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +30 -0
- package/services/chain-service/handler/manta/MantaPrivateHandler.js +140 -0
- package/services/chain-service/handler/types.d.ts +2 -0
- package/services/chain-service/index.d.ts +7 -3
- package/services/chain-service/index.js +56 -7
- package/services/chain-service/utils.d.ts +3 -0
- package/services/chain-service/utils.js +28 -0
- package/services/event-service/types.d.ts +3 -0
- package/services/event-service/types.js +3 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +0 -1
- package/services/request-service/handler/AuthRequestHandler.js +5 -10
- package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -1
- package/services/request-service/handler/SubstrateRequestHandler.js +2 -2
- package/services/request-service/handler/WalletConnectRequestHandler.d.ts +15 -0
- package/services/request-service/handler/WalletConnectRequestHandler.js +62 -0
- package/services/request-service/index.d.ts +7 -2
- package/services/request-service/index.js +24 -6
- package/services/storage-service/DatabaseService.d.ts +10 -1
- package/services/storage-service/DatabaseService.js +31 -1
- package/services/storage-service/databases/index.d.ts +2 -0
- package/services/storage-service/databases/index.js +3 -0
- package/services/storage-service/db-stores/MantaPay.d.ts +9 -0
- package/services/storage-service/db-stores/MantaPay.js +32 -0
- package/services/transaction-service/helpers/index.d.ts +1 -1
- package/services/transaction-service/helpers/index.js +2 -2
- package/services/transaction-service/index.js +2 -1
- package/services/transaction-service/types.d.ts +2 -1
- package/services/wallet-connect-service/constants.d.ts +11 -0
- package/services/wallet-connect-service/constants.js +23 -0
- package/services/wallet-connect-service/handler/Eip155RequestHandler.d.ts +8 -0
- package/services/wallet-connect-service/handler/Eip155RequestHandler.js +106 -0
- package/services/wallet-connect-service/handler/PolkadotRequestHandler.d.ts +8 -0
- package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +114 -0
- package/services/wallet-connect-service/helpers.d.ts +12 -0
- package/services/wallet-connect-service/helpers.js +67 -0
- package/services/wallet-connect-service/index.d.ts +20 -0
- package/services/wallet-connect-service/index.js +265 -0
- package/services/wallet-connect-service/types.d.ts +46 -0
- package/services/wallet-connect-service/types.js +20 -0
- package/utils/array.d.ts +1 -0
- package/utils/array.js +10 -0
- package/utils/environment.d.ts +2 -0
- package/utils/environment.js +59 -0
- package/utils/index.d.ts +4 -0
- package/utils/index.js +10 -2
- package/utils/lazy.d.ts +2 -0
- package/utils/lazy.js +43 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.WALLET_CONNECT_SUPPORT_NAMESPACES = exports.WALLET_CONNECT_SUPPORTED_METHODS = exports.WALLET_CONNECT_REQUEST_KEY = exports.WALLET_CONNECT_POLKADOT_NAMESPACE = exports.WALLET_CONNECT_EIP155_NAMESPACE = exports.RELAY_URL = exports.PROJECT_ID = exports.DEFAULT_WALLET_CONNECT_OPTIONS = exports.ALL_WALLET_CONNECT_EVENT = void 0;
|
|
7
|
+
var _types = require("@subwallet/extension-base/services/wallet-connect-service/types");
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
const PROJECT_ID = '6da34c0b48164d27681924dd9a46d6be';
|
|
12
|
+
exports.PROJECT_ID = PROJECT_ID;
|
|
13
|
+
const RELAY_URL = 'wss://relay.walletconnect.com';
|
|
14
|
+
exports.RELAY_URL = RELAY_URL;
|
|
15
|
+
const DEFAULT_WALLET_CONNECT_OPTIONS = {
|
|
16
|
+
logger: 'debug',
|
|
17
|
+
projectId: PROJECT_ID,
|
|
18
|
+
relayUrl: RELAY_URL,
|
|
19
|
+
metadata: {
|
|
20
|
+
name: 'SubWallet',
|
|
21
|
+
description: 'React Wallet for WalletConnect',
|
|
22
|
+
url: 'https://www.subwallet.app/',
|
|
23
|
+
icons: ['https://1570604715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lh39Kwxa1xxZM9WX_Bs%2Ficon%2FiETEgi1ykXUQRW63vPnL%2FLogo%3DWhite%2C%20Background%3DGradient.jpg?alt=media&token=46c5dafa-ce09-4576-bcd9-a5c796786f1a']
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.DEFAULT_WALLET_CONNECT_OPTIONS = DEFAULT_WALLET_CONNECT_OPTIONS;
|
|
27
|
+
const ALL_WALLET_CONNECT_EVENT = ['session_proposal', 'session_update', 'session_extend', 'session_ping', 'session_delete', 'session_expire', 'session_request', 'session_request_sent', 'session_event', 'proposal_expire'];
|
|
28
|
+
exports.ALL_WALLET_CONNECT_EVENT = ALL_WALLET_CONNECT_EVENT;
|
|
29
|
+
const WALLET_CONNECT_SUPPORTED_METHODS = [_types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE, _types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION, _types.EIP155_SIGNING_METHODS.ETH_SEND_TRANSACTION, _types.EIP155_SIGNING_METHODS.PERSONAL_SIGN, _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V1, _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3, _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V4];
|
|
30
|
+
exports.WALLET_CONNECT_SUPPORTED_METHODS = WALLET_CONNECT_SUPPORTED_METHODS;
|
|
31
|
+
const WALLET_CONNECT_REQUEST_KEY = 'wallet-connect';
|
|
32
|
+
exports.WALLET_CONNECT_REQUEST_KEY = WALLET_CONNECT_REQUEST_KEY;
|
|
33
|
+
const WALLET_CONNECT_EIP155_NAMESPACE = 'eip155';
|
|
34
|
+
exports.WALLET_CONNECT_EIP155_NAMESPACE = WALLET_CONNECT_EIP155_NAMESPACE;
|
|
35
|
+
const WALLET_CONNECT_POLKADOT_NAMESPACE = 'polkadot';
|
|
36
|
+
exports.WALLET_CONNECT_POLKADOT_NAMESPACE = WALLET_CONNECT_POLKADOT_NAMESPACE;
|
|
37
|
+
const WALLET_CONNECT_SUPPORT_NAMESPACES = [WALLET_CONNECT_EIP155_NAMESPACE, WALLET_CONNECT_POLKADOT_NAMESPACE];
|
|
38
|
+
exports.WALLET_CONNECT_SUPPORT_NAMESPACES = WALLET_CONNECT_SUPPORT_NAMESPACES;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase"));
|
|
9
|
+
var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey"));
|
|
10
|
+
var _utils = require("@json-rpc-tools/utils");
|
|
11
|
+
var _helpers = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
|
|
12
|
+
var _types = require("@subwallet/extension-base/services/wallet-connect-service/types");
|
|
13
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
14
|
+
var _utils3 = require("@walletconnect/utils");
|
|
15
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
16
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
+
var _walletConnectService = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("walletConnectService");
|
|
18
|
+
var _koniState = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("koniState");
|
|
19
|
+
var _checkAccount = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("checkAccount");
|
|
20
|
+
var _handleError = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("handleError");
|
|
21
|
+
class Eip155RequestHandler {
|
|
22
|
+
constructor(koniState, walletConnectService) {
|
|
23
|
+
Object.defineProperty(this, _handleError, {
|
|
24
|
+
value: _handleError2
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, _checkAccount, {
|
|
27
|
+
value: _checkAccount2
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, _walletConnectService, {
|
|
30
|
+
writable: true,
|
|
31
|
+
value: void 0
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(this, _koniState, {
|
|
34
|
+
writable: true,
|
|
35
|
+
value: void 0
|
|
36
|
+
});
|
|
37
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState] = koniState;
|
|
38
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService] = walletConnectService;
|
|
39
|
+
}
|
|
40
|
+
handleRequest(requestEvent) {
|
|
41
|
+
const {
|
|
42
|
+
id,
|
|
43
|
+
params,
|
|
44
|
+
topic
|
|
45
|
+
} = requestEvent;
|
|
46
|
+
const {
|
|
47
|
+
chainId: _chainId,
|
|
48
|
+
request
|
|
49
|
+
} = params;
|
|
50
|
+
const method = request.method;
|
|
51
|
+
const requestSession = (0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].getSession(topic);
|
|
52
|
+
const url = requestSession.peer.metadata.url;
|
|
53
|
+
const sessionAccounts = requestSession.namespaces.eip155.accounts.map(account => account.split(':')[2]);
|
|
54
|
+
if ([_types.EIP155_SIGNING_METHODS.PERSONAL_SIGN, _types.EIP155_SIGNING_METHODS.ETH_SIGN, _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA, _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3, _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V4].includes(method)) {
|
|
55
|
+
const address = (0, _helpers.getEip155MessageAddress)(method, request.params);
|
|
56
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkAccount)[_checkAccount](address, sessionAccounts);
|
|
57
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState].evmSign((0, _helpers.getWCId)(id), url, method === _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA ? _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V4 : method, request.params, sessionAccounts).then(async signature => {
|
|
58
|
+
await (0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
59
|
+
topic: topic,
|
|
60
|
+
response: (0, _utils.formatJsonRpcResult)(id, signature)
|
|
61
|
+
});
|
|
62
|
+
}).catch(e => {
|
|
63
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _handleError)[_handleError](topic, id, e);
|
|
64
|
+
});
|
|
65
|
+
} else if (method === _types.EIP155_SIGNING_METHODS.ETH_SEND_TRANSACTION) {
|
|
66
|
+
const [tx] = (0, _helpers.parseRequestParams)(request.params);
|
|
67
|
+
const address = tx.from;
|
|
68
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkAccount)[_checkAccount](address, sessionAccounts);
|
|
69
|
+
const chainId = parseInt(_chainId.split(':')[1]);
|
|
70
|
+
const [networkKey, chainInfo] = (0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState].findNetworkKeyByChainId(chainId);
|
|
71
|
+
if (!networkKey || !chainInfo) {
|
|
72
|
+
throw new Error((0, _utils3.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + address);
|
|
73
|
+
}
|
|
74
|
+
const chainState = (0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState].getChainStateByKey(networkKey);
|
|
75
|
+
const createRequest = () => {
|
|
76
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState].evmSendTransaction((0, _helpers.getWCId)(id), url, networkKey, sessionAccounts, tx).then(async signature => {
|
|
77
|
+
await (0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
78
|
+
topic: topic,
|
|
79
|
+
response: (0, _utils.formatJsonRpcResult)(id, signature)
|
|
80
|
+
});
|
|
81
|
+
}).catch(e => {
|
|
82
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _handleError)[_handleError](topic, id, e);
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
if (!chainState.active) {
|
|
86
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState].chainService.enableChain(networkKey).then(createRequest).catch(() => {
|
|
87
|
+
throw new Error((0, _utils3.getSdkError)('USER_REJECTED').message + ' Can not active chain: ' + chainInfo.name);
|
|
88
|
+
});
|
|
89
|
+
} else {
|
|
90
|
+
createRequest();
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
throw Error((0, _utils3.getSdkError)('INVALID_METHOD').message + ' ' + method);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.default = Eip155RequestHandler;
|
|
98
|
+
function _checkAccount2(address, accounts) {
|
|
99
|
+
if (!accounts.find(account => (0, _utils2.isSameAddress)(account, address))) {
|
|
100
|
+
throw new Error((0, _utils3.getSdkError)('UNSUPPORTED_ACCOUNTS').message + ' ' + address);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function _handleError2(topic, id, e) {
|
|
104
|
+
console.log(e);
|
|
105
|
+
let message = e.message;
|
|
106
|
+
if (message.includes('User Rejected Request')) {
|
|
107
|
+
message = (0, _utils3.getSdkError)('USER_REJECTED').message;
|
|
108
|
+
}
|
|
109
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
110
|
+
topic: topic,
|
|
111
|
+
response: (0, _utils.formatJsonRpcError)(id, message)
|
|
112
|
+
}).catch(console.error);
|
|
113
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase"));
|
|
9
|
+
var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey"));
|
|
10
|
+
var _utils = require("@json-rpc-tools/utils");
|
|
11
|
+
var _RequestBytesSign = _interopRequireDefault(require("@subwallet/extension-base/background/RequestBytesSign"));
|
|
12
|
+
var _RequestExtrinsicSign = _interopRequireDefault(require("@subwallet/extension-base/background/RequestExtrinsicSign"));
|
|
13
|
+
var _helpers = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
|
|
14
|
+
var _types = require("@subwallet/extension-base/services/wallet-connect-service/types");
|
|
15
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
16
|
+
var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
|
|
17
|
+
var _utils3 = require("@walletconnect/utils");
|
|
18
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
19
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
20
|
+
var _walletConnectService = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("walletConnectService");
|
|
21
|
+
var _requestService = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("requestService");
|
|
22
|
+
var _checkAccount = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("checkAccount");
|
|
23
|
+
var _handleError = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("handleError");
|
|
24
|
+
class PolkadotRequestHandler {
|
|
25
|
+
constructor(walletConnectService, requestService) {
|
|
26
|
+
Object.defineProperty(this, _handleError, {
|
|
27
|
+
value: _handleError2
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, _checkAccount, {
|
|
30
|
+
value: _checkAccount2
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(this, _walletConnectService, {
|
|
33
|
+
writable: true,
|
|
34
|
+
value: void 0
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(this, _requestService, {
|
|
37
|
+
writable: true,
|
|
38
|
+
value: void 0
|
|
39
|
+
});
|
|
40
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService] = walletConnectService;
|
|
41
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService] = requestService;
|
|
42
|
+
}
|
|
43
|
+
handleRequest(requestEvent) {
|
|
44
|
+
const {
|
|
45
|
+
id,
|
|
46
|
+
params,
|
|
47
|
+
topic
|
|
48
|
+
} = requestEvent;
|
|
49
|
+
const {
|
|
50
|
+
request
|
|
51
|
+
} = params;
|
|
52
|
+
const method = request.method;
|
|
53
|
+
const requestSession = (0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].getSession(topic);
|
|
54
|
+
const url = requestSession.peer.metadata.url;
|
|
55
|
+
const sessionAccounts = requestSession.namespaces.polkadot.accounts.map(account => account.split(':')[2]);
|
|
56
|
+
if (method === _types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE) {
|
|
57
|
+
const param = (0, _helpers.parseRequestParams)(request.params);
|
|
58
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkAccount)[_checkAccount](param.address, sessionAccounts);
|
|
59
|
+
const pair = _uiKeyring.default.getPair(param.address);
|
|
60
|
+
const address = pair.address;
|
|
61
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService].sign(url, new _RequestBytesSign.default({
|
|
62
|
+
address: address,
|
|
63
|
+
data: param.message,
|
|
64
|
+
type: 'bytes'
|
|
65
|
+
}), {
|
|
66
|
+
address,
|
|
67
|
+
...pair.meta
|
|
68
|
+
}, (0, _helpers.getWCId)(id)).then(async _ref => {
|
|
69
|
+
let {
|
|
70
|
+
signature
|
|
71
|
+
} = _ref;
|
|
72
|
+
await (0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
73
|
+
topic: topic,
|
|
74
|
+
response: (0, _utils.formatJsonRpcResult)(id, {
|
|
75
|
+
signature
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
}).catch(e => {
|
|
79
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _handleError)[_handleError](topic, id, e);
|
|
80
|
+
});
|
|
81
|
+
} else if (method === _types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION) {
|
|
82
|
+
const param = (0, _helpers.parseRequestParams)(request.params);
|
|
83
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkAccount)[_checkAccount](param.address, sessionAccounts);
|
|
84
|
+
const pair = _uiKeyring.default.getPair(param.address);
|
|
85
|
+
const address = pair.address;
|
|
86
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService].sign(url, new _RequestExtrinsicSign.default(param.transactionPayload), {
|
|
87
|
+
address,
|
|
88
|
+
...pair.meta
|
|
89
|
+
}, (0, _helpers.getWCId)(id)).then(async _ref2 => {
|
|
90
|
+
let {
|
|
91
|
+
signature
|
|
92
|
+
} = _ref2;
|
|
93
|
+
await (0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
94
|
+
topic: topic,
|
|
95
|
+
response: (0, _utils.formatJsonRpcResult)(id, {
|
|
96
|
+
signature
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
}).catch(e => {
|
|
100
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _handleError)[_handleError](topic, id, e);
|
|
101
|
+
});
|
|
102
|
+
} else {
|
|
103
|
+
throw Error(`${(0, _utils3.getSdkError)('INVALID_METHOD').message} ${method}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.default = PolkadotRequestHandler;
|
|
108
|
+
function _checkAccount2(address, accounts) {
|
|
109
|
+
if (!accounts.find(account => (0, _utils2.isSameAddress)(account, address))) {
|
|
110
|
+
throw new Error((0, _utils3.getSdkError)('UNSUPPORTED_ACCOUNTS').message + ' ' + address);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function _handleError2(topic, id, e) {
|
|
114
|
+
console.log(e);
|
|
115
|
+
let message = e.message;
|
|
116
|
+
if (message.includes('User Rejected Request')) {
|
|
117
|
+
message = (0, _utils3.getSdkError)('USER_REJECTED').message;
|
|
118
|
+
}
|
|
119
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
120
|
+
topic: topic,
|
|
121
|
+
response: (0, _utils.formatJsonRpcError)(id, message)
|
|
122
|
+
}).catch(console.error);
|
|
123
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseRequestParams = exports.isWalletConnectRequest = exports.isSupportWalletConnectNamespace = exports.isSupportWalletConnectChain = exports.isProposalExpired = exports.getWCId = exports.getEip155MessageAddress = exports.convertConnectRequest = void 0;
|
|
7
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
8
|
+
var _utilCrypto = require("@polkadot/util-crypto");
|
|
9
|
+
var _constants = require("./constants");
|
|
10
|
+
var _types = require("./types");
|
|
11
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
12
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
|
|
14
|
+
const getWCId = id => {
|
|
15
|
+
return [_constants.WALLET_CONNECT_REQUEST_KEY, Date.now(), id].join('.');
|
|
16
|
+
};
|
|
17
|
+
exports.getWCId = getWCId;
|
|
18
|
+
const convertConnectRequest = request => {
|
|
19
|
+
return {
|
|
20
|
+
id: getWCId(request.id),
|
|
21
|
+
isInternal: false,
|
|
22
|
+
request: request,
|
|
23
|
+
url: request.params.proposer.metadata.url
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.convertConnectRequest = convertConnectRequest;
|
|
27
|
+
const parseRequestParams = params => {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
return params;
|
|
30
|
+
};
|
|
31
|
+
exports.parseRequestParams = parseRequestParams;
|
|
32
|
+
const getEip155MessageAddress = (method, param) => {
|
|
33
|
+
switch (method) {
|
|
34
|
+
case _types.EIP155_SIGNING_METHODS.PERSONAL_SIGN:
|
|
35
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA:
|
|
36
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN:
|
|
37
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3:
|
|
38
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V4:
|
|
39
|
+
// eslint-disable-next-line no-case-declarations
|
|
40
|
+
const [p1, p2] = parseRequestParams(param);
|
|
41
|
+
if (typeof p1 === 'string' && (0, _utilCrypto.isEthereumAddress)(p1)) {
|
|
42
|
+
return p1;
|
|
43
|
+
} else if (typeof p2 === 'string' && (0, _utilCrypto.isEthereumAddress)(p2)) {
|
|
44
|
+
return p2;
|
|
45
|
+
}
|
|
46
|
+
return '';
|
|
47
|
+
default:
|
|
48
|
+
return '';
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.getEip155MessageAddress = getEip155MessageAddress;
|
|
52
|
+
const isWalletConnectRequest = id => {
|
|
53
|
+
if (!id) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const [prefix] = id.split('.');
|
|
57
|
+
return prefix === _constants.WALLET_CONNECT_REQUEST_KEY;
|
|
58
|
+
};
|
|
59
|
+
exports.isWalletConnectRequest = isWalletConnectRequest;
|
|
60
|
+
const isProposalExpired = params => {
|
|
61
|
+
const timeNum = params.expiry;
|
|
62
|
+
const expireTime = new Date(timeNum > 10 ** 12 ? timeNum : timeNum * 1000);
|
|
63
|
+
const now = new Date();
|
|
64
|
+
return now.getTime() >= expireTime.getTime();
|
|
65
|
+
};
|
|
66
|
+
exports.isProposalExpired = isProposalExpired;
|
|
67
|
+
const isSupportWalletConnectNamespace = namespace => {
|
|
68
|
+
return _constants.WALLET_CONNECT_SUPPORT_NAMESPACES.includes(namespace);
|
|
69
|
+
};
|
|
70
|
+
exports.isSupportWalletConnectNamespace = isSupportWalletConnectNamespace;
|
|
71
|
+
const isSupportWalletConnectChain = (chain, chainInfoMap) => {
|
|
72
|
+
const [namespace, info] = chain.split(':');
|
|
73
|
+
if (namespace === _constants.WALLET_CONNECT_POLKADOT_NAMESPACE) {
|
|
74
|
+
return !!(0, _utils.findChainInfoByHalfGenesisHash)(chainInfoMap, info);
|
|
75
|
+
} else if (namespace === _constants.WALLET_CONNECT_EIP155_NAMESPACE) {
|
|
76
|
+
return !!(0, _utils.findChainInfoByChainId)(chainInfoMap, parseInt(info));
|
|
77
|
+
} else {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
exports.isSupportWalletConnectChain = isSupportWalletConnectChain;
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase"));
|
|
9
|
+
var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey"));
|
|
10
|
+
var _utils = require("@json-rpc-tools/utils");
|
|
11
|
+
var _Eip155RequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/wallet-connect-service/handler/Eip155RequestHandler"));
|
|
12
|
+
var _signClient = _interopRequireDefault(require("@walletconnect/sign-client"));
|
|
13
|
+
var _utils2 = require("@walletconnect/utils");
|
|
14
|
+
var _rxjs = require("rxjs");
|
|
15
|
+
var _PolkadotRequestHandler = _interopRequireDefault(require("./handler/PolkadotRequestHandler"));
|
|
16
|
+
var _constants = require("./constants");
|
|
17
|
+
var _helpers = require("./helpers");
|
|
18
|
+
var _types = require("./types");
|
|
19
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
20
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
var _requestService = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("requestService");
|
|
22
|
+
var _polkadotRequestHandler = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("polkadotRequestHandler");
|
|
23
|
+
var _eip155RequestHandler = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("eip155RequestHandler");
|
|
24
|
+
var _koniState = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("koniState");
|
|
25
|
+
var _client = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("client");
|
|
26
|
+
var _option = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("option");
|
|
27
|
+
var _initClient = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("initClient");
|
|
28
|
+
var _updateSessions = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("updateSessions");
|
|
29
|
+
var _onSessionProposal = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("onSessionProposal");
|
|
30
|
+
var _onSessionRequest = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("onSessionRequest");
|
|
31
|
+
var _createListener = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("createListener");
|
|
32
|
+
var _removeListener = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("removeListener");
|
|
33
|
+
var _checkClient = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("checkClient");
|
|
34
|
+
class WalletConnectService {
|
|
35
|
+
constructor(koniState, requestService) {
|
|
36
|
+
let option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.DEFAULT_WALLET_CONNECT_OPTIONS;
|
|
37
|
+
Object.defineProperty(this, _checkClient, {
|
|
38
|
+
value: _checkClient2
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(this, _removeListener, {
|
|
41
|
+
value: _removeListener2
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(this, _createListener, {
|
|
44
|
+
value: _createListener2
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(this, _onSessionRequest, {
|
|
47
|
+
value: _onSessionRequest2
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(this, _onSessionProposal, {
|
|
50
|
+
value: _onSessionProposal2
|
|
51
|
+
});
|
|
52
|
+
Object.defineProperty(this, _updateSessions, {
|
|
53
|
+
value: _updateSessions2
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(this, _initClient, {
|
|
56
|
+
value: _initClient2
|
|
57
|
+
});
|
|
58
|
+
Object.defineProperty(this, _requestService, {
|
|
59
|
+
writable: true,
|
|
60
|
+
value: void 0
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(this, _polkadotRequestHandler, {
|
|
63
|
+
writable: true,
|
|
64
|
+
value: void 0
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(this, _eip155RequestHandler, {
|
|
67
|
+
writable: true,
|
|
68
|
+
value: void 0
|
|
69
|
+
});
|
|
70
|
+
Object.defineProperty(this, _koniState, {
|
|
71
|
+
writable: true,
|
|
72
|
+
value: void 0
|
|
73
|
+
});
|
|
74
|
+
Object.defineProperty(this, _client, {
|
|
75
|
+
writable: true,
|
|
76
|
+
value: void 0
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(this, _option, {
|
|
79
|
+
writable: true,
|
|
80
|
+
value: void 0
|
|
81
|
+
});
|
|
82
|
+
this.sessionSubject = new _rxjs.BehaviorSubject([]);
|
|
83
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState] = koniState;
|
|
84
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService] = requestService;
|
|
85
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _option)[_option] = option;
|
|
86
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _polkadotRequestHandler)[_polkadotRequestHandler] = new _PolkadotRequestHandler.default(this, requestService);
|
|
87
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _eip155RequestHandler)[_eip155RequestHandler] = new _Eip155RequestHandler.default((0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState], this);
|
|
88
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]().catch(console.error);
|
|
89
|
+
}
|
|
90
|
+
get sessions() {
|
|
91
|
+
var _classPrivateFieldLoo;
|
|
92
|
+
return ((_classPrivateFieldLoo = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.session.values) || [];
|
|
93
|
+
}
|
|
94
|
+
getSession(topic) {
|
|
95
|
+
var _classPrivateFieldLoo2;
|
|
96
|
+
const session = (_classPrivateFieldLoo2 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.session.get(topic);
|
|
97
|
+
if (!session) {
|
|
98
|
+
throw new Error((0, _utils2.getInternalError)('MISMATCHED_TOPIC').message);
|
|
99
|
+
} else {
|
|
100
|
+
return session;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async changeOption(newOption) {
|
|
104
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _option)[_option] = Object.assign({}, (0, _classPrivateFieldLooseBase2.default)(this, _option)[_option], newOption);
|
|
105
|
+
await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]();
|
|
106
|
+
}
|
|
107
|
+
getSessions() {
|
|
108
|
+
var _classPrivateFieldLoo3;
|
|
109
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
110
|
+
console.log((_classPrivateFieldLoo3 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.session.values);
|
|
111
|
+
}
|
|
112
|
+
async connect(uri) {
|
|
113
|
+
var _classPrivateFieldLoo4;
|
|
114
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
115
|
+
await ((_classPrivateFieldLoo4 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo4 === void 0 ? void 0 : _classPrivateFieldLoo4.pair({
|
|
116
|
+
uri
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
async approveSession(result) {
|
|
120
|
+
var _classPrivateFieldLoo5;
|
|
121
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
122
|
+
await ((_classPrivateFieldLoo5 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo5 === void 0 ? void 0 : _classPrivateFieldLoo5.approve(result));
|
|
123
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
|
|
124
|
+
}
|
|
125
|
+
async rejectSession(id) {
|
|
126
|
+
var _classPrivateFieldLoo6;
|
|
127
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
128
|
+
await ((_classPrivateFieldLoo6 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo6 === void 0 ? void 0 : _classPrivateFieldLoo6.reject({
|
|
129
|
+
id: id,
|
|
130
|
+
reason: (0, _utils2.getSdkError)('USER_REJECTED')
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
async responseRequest(response) {
|
|
134
|
+
var _classPrivateFieldLoo7;
|
|
135
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
136
|
+
await ((_classPrivateFieldLoo7 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo7 === void 0 ? void 0 : _classPrivateFieldLoo7.respond(response));
|
|
137
|
+
}
|
|
138
|
+
async resetWallet(resetAll) {
|
|
139
|
+
var _classPrivateFieldLoo8, _classPrivateFieldLoo10, _classPrivateFieldLoo12;
|
|
140
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _removeListener)[_removeListener]();
|
|
141
|
+
|
|
142
|
+
// Disconnect session
|
|
143
|
+
const sessions = ((_classPrivateFieldLoo8 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo8 === void 0 ? void 0 : _classPrivateFieldLoo8.session.values) || [];
|
|
144
|
+
for (const session of sessions) {
|
|
145
|
+
var _classPrivateFieldLoo9;
|
|
146
|
+
(_classPrivateFieldLoo9 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo9 === void 0 ? void 0 : _classPrivateFieldLoo9.disconnect({
|
|
147
|
+
topic: session.topic,
|
|
148
|
+
reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
|
|
149
|
+
}).catch(console.error);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Disconnect pair
|
|
153
|
+
const pairs = ((_classPrivateFieldLoo10 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo10 === void 0 ? void 0 : _classPrivateFieldLoo10.pairing.values) || [];
|
|
154
|
+
for (const pair of pairs) {
|
|
155
|
+
var _classPrivateFieldLoo11;
|
|
156
|
+
(_classPrivateFieldLoo11 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo11 === void 0 ? void 0 : _classPrivateFieldLoo11.disconnect({
|
|
157
|
+
topic: pair.topic,
|
|
158
|
+
reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
|
|
159
|
+
}).catch(console.error);
|
|
160
|
+
}
|
|
161
|
+
const keys = (await ((_classPrivateFieldLoo12 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo12 === void 0 ? void 0 : _classPrivateFieldLoo12.core.storage.getKeys())) || [];
|
|
162
|
+
const deleteKeys = resetAll ? keys : keys.filter(key => key.startsWith('wc@'));
|
|
163
|
+
for (const key of deleteKeys) {
|
|
164
|
+
try {
|
|
165
|
+
var _classPrivateFieldLoo13;
|
|
166
|
+
await ((_classPrivateFieldLoo13 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo13 === void 0 ? void 0 : _classPrivateFieldLoo13.core.storage.removeItem(key));
|
|
167
|
+
} catch (e) {
|
|
168
|
+
console.error(e);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]();
|
|
172
|
+
}
|
|
173
|
+
async disconnect(topic) {
|
|
174
|
+
var _classPrivateFieldLoo14;
|
|
175
|
+
await ((_classPrivateFieldLoo14 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo14 === void 0 ? void 0 : _classPrivateFieldLoo14.disconnect({
|
|
176
|
+
topic: topic,
|
|
177
|
+
reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
|
|
178
|
+
}));
|
|
179
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.default = WalletConnectService;
|
|
183
|
+
async function _initClient2() {
|
|
184
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _removeListener)[_removeListener]();
|
|
185
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _client)[_client] = await _signClient.default.init((0, _classPrivateFieldLooseBase2.default)(this, _option)[_option]);
|
|
186
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
|
|
187
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _createListener)[_createListener]();
|
|
188
|
+
}
|
|
189
|
+
function _updateSessions2() {
|
|
190
|
+
this.sessionSubject.next(this.sessions);
|
|
191
|
+
}
|
|
192
|
+
function _onSessionProposal2(proposal) {
|
|
193
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
194
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService].addConnectWCRequest((0, _helpers.convertConnectRequest)(proposal));
|
|
195
|
+
}
|
|
196
|
+
function _onSessionRequest2(requestEvent) {
|
|
197
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _checkClient)[_checkClient]();
|
|
198
|
+
const {
|
|
199
|
+
id,
|
|
200
|
+
params,
|
|
201
|
+
topic
|
|
202
|
+
} = requestEvent;
|
|
203
|
+
const {
|
|
204
|
+
chainId,
|
|
205
|
+
request
|
|
206
|
+
} = params;
|
|
207
|
+
const method = request.method;
|
|
208
|
+
try {
|
|
209
|
+
const requestSession = this.getSession(topic);
|
|
210
|
+
const namespaces = Object.keys(requestSession.namespaces);
|
|
211
|
+
const chains = Object.values(requestSession.namespaces).map(namespace => namespace.chains).flat();
|
|
212
|
+
const methods = Object.values(requestSession.namespaces).map(namespace => namespace.methods).flat();
|
|
213
|
+
const chainInfoMap = (0, _classPrivateFieldLooseBase2.default)(this, _koniState)[_koniState].getChainInfoMap();
|
|
214
|
+
const [requestNamespace] = chainId.split(':');
|
|
215
|
+
if (!namespaces.includes(requestNamespace)) {
|
|
216
|
+
throw Error((0, _utils2.getSdkError)('UNSUPPORTED_NAMESPACE_KEY').message);
|
|
217
|
+
}
|
|
218
|
+
if (!chains.includes(chainId)) {
|
|
219
|
+
throw Error((0, _utils2.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + chainId);
|
|
220
|
+
}
|
|
221
|
+
if (!(0, _helpers.isSupportWalletConnectChain)(chainId, chainInfoMap)) {
|
|
222
|
+
throw Error((0, _utils2.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + chainId);
|
|
223
|
+
}
|
|
224
|
+
if (!methods.includes(method)) {
|
|
225
|
+
throw Error((0, _utils2.getSdkError)('UNAUTHORIZED_METHOD').message + ' ' + method);
|
|
226
|
+
}
|
|
227
|
+
if (!_constants.WALLET_CONNECT_SUPPORTED_METHODS.includes(method)) {
|
|
228
|
+
throw Error((0, _utils2.getSdkError)('UNSUPPORTED_METHODS').message + ' ' + method);
|
|
229
|
+
}
|
|
230
|
+
switch (method) {
|
|
231
|
+
case _types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE:
|
|
232
|
+
case _types.POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION:
|
|
233
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _polkadotRequestHandler)[_polkadotRequestHandler].handleRequest(requestEvent);
|
|
234
|
+
break;
|
|
235
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SEND_TRANSACTION:
|
|
236
|
+
case _types.EIP155_SIGNING_METHODS.PERSONAL_SIGN:
|
|
237
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA:
|
|
238
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3:
|
|
239
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V4:
|
|
240
|
+
case _types.EIP155_SIGNING_METHODS.ETH_SIGN:
|
|
241
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _eip155RequestHandler)[_eip155RequestHandler].handleRequest(requestEvent);
|
|
242
|
+
break;
|
|
243
|
+
default:
|
|
244
|
+
throw Error((0, _utils2.getSdkError)('INVALID_METHOD').message + ' ' + method);
|
|
245
|
+
}
|
|
246
|
+
} catch (e) {
|
|
247
|
+
console.log(e);
|
|
248
|
+
this.responseRequest({
|
|
249
|
+
topic: topic,
|
|
250
|
+
response: (0, _utils.formatJsonRpcError)(id, e.message)
|
|
251
|
+
}).catch(console.error);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function _createListener2() {
|
|
255
|
+
var _classPrivateFieldLoo15, _classPrivateFieldLoo16, _classPrivateFieldLoo17, _classPrivateFieldLoo18, _classPrivateFieldLoo19, _classPrivateFieldLoo20;
|
|
256
|
+
(_classPrivateFieldLoo15 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo15 === void 0 ? void 0 : _classPrivateFieldLoo15.on('session_proposal', (0, _classPrivateFieldLooseBase2.default)(this, _onSessionProposal)[_onSessionProposal].bind(this));
|
|
257
|
+
(_classPrivateFieldLoo16 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo16 === void 0 ? void 0 : _classPrivateFieldLoo16.on('session_request', (0, _classPrivateFieldLooseBase2.default)(this, _onSessionRequest)[_onSessionRequest].bind(this));
|
|
258
|
+
(_classPrivateFieldLoo17 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo17 === void 0 ? void 0 : _classPrivateFieldLoo17.on('session_ping', data => console.log('ping', data));
|
|
259
|
+
(_classPrivateFieldLoo18 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo18 === void 0 ? void 0 : _classPrivateFieldLoo18.on('session_event', data => console.log('event', data));
|
|
260
|
+
(_classPrivateFieldLoo19 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo19 === void 0 ? void 0 : _classPrivateFieldLoo19.on('session_update', data => console.log('update', data));
|
|
261
|
+
(_classPrivateFieldLoo20 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo20 === void 0 ? void 0 : _classPrivateFieldLoo20.on('session_delete', (0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions].bind(this));
|
|
262
|
+
}
|
|
263
|
+
function _removeListener2() {
|
|
264
|
+
_constants.ALL_WALLET_CONNECT_EVENT.forEach(event => {
|
|
265
|
+
var _classPrivateFieldLoo21;
|
|
266
|
+
(_classPrivateFieldLoo21 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo21 === void 0 ? void 0 : _classPrivateFieldLoo21.removeAllListeners(event);
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
function _checkClient2() {
|
|
270
|
+
if (!(0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) {
|
|
271
|
+
throw new Error((0, _utils2.getInternalError)('NOT_INITIALIZED').message);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.POLKADOT_SIGNING_METHODS = exports.EIP155_SIGNING_METHODS = void 0;
|
|
7
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
let EIP155_SIGNING_METHODS;
|
|
10
|
+
exports.EIP155_SIGNING_METHODS = EIP155_SIGNING_METHODS;
|
|
11
|
+
(function (EIP155_SIGNING_METHODS) {
|
|
12
|
+
EIP155_SIGNING_METHODS["PERSONAL_SIGN"] = "personal_sign";
|
|
13
|
+
EIP155_SIGNING_METHODS["ETH_SIGN"] = "eth_sign";
|
|
14
|
+
EIP155_SIGNING_METHODS["ETH_SIGN_TRANSACTION"] = "eth_signTransaction";
|
|
15
|
+
EIP155_SIGNING_METHODS["ETH_SIGN_TYPED_DATA"] = "eth_signTypedData";
|
|
16
|
+
EIP155_SIGNING_METHODS["ETH_SIGN_TYPED_DATA_V1"] = "eth_signTypedData_v1";
|
|
17
|
+
EIP155_SIGNING_METHODS["ETH_SIGN_TYPED_DATA_V3"] = "eth_signTypedData_v3";
|
|
18
|
+
EIP155_SIGNING_METHODS["ETH_SIGN_TYPED_DATA_V4"] = "eth_signTypedData_v4";
|
|
19
|
+
EIP155_SIGNING_METHODS["ETH_SEND_RAW_TRANSACTION"] = "eth_sendRawTransaction";
|
|
20
|
+
EIP155_SIGNING_METHODS["ETH_SEND_TRANSACTION"] = "eth_sendTransaction";
|
|
21
|
+
})(EIP155_SIGNING_METHODS || (exports.EIP155_SIGNING_METHODS = EIP155_SIGNING_METHODS = {}));
|
|
22
|
+
let POLKADOT_SIGNING_METHODS;
|
|
23
|
+
exports.POLKADOT_SIGNING_METHODS = POLKADOT_SIGNING_METHODS;
|
|
24
|
+
(function (POLKADOT_SIGNING_METHODS) {
|
|
25
|
+
POLKADOT_SIGNING_METHODS["POLKADOT_SIGN_TRANSACTION"] = "polkadot_signTransaction";
|
|
26
|
+
POLKADOT_SIGNING_METHODS["POLKADOT_SIGN_MESSAGE"] = "polkadot_signMessage";
|
|
27
|
+
})(POLKADOT_SIGNING_METHODS || (exports.POLKADOT_SIGNING_METHODS = POLKADOT_SIGNING_METHODS = {}));
|