@subwallet/extension-base 1.0.12-0 → 1.0.13-0

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 (75) hide show
  1. package/background/KoniTypes.d.ts +52 -0
  2. package/background/KoniTypes.js +10 -18
  3. package/background/handlers/State.d.ts +0 -1
  4. package/background/handlers/State.js +4 -8
  5. package/cjs/background/KoniTypes.js +12 -10
  6. package/cjs/background/handlers/State.js +4 -8
  7. package/cjs/koni/api/nft/config.js +11 -6
  8. package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
  9. package/cjs/koni/api/xcm/xTokens.js +2 -2
  10. package/cjs/koni/background/handlers/Extension.js +150 -1
  11. package/cjs/koni/background/handlers/State.js +14 -3
  12. package/cjs/koni/background/handlers/Tabs.js +61 -9
  13. package/cjs/packageInfo.js +1 -1
  14. package/cjs/page/Metadata.js +3 -0
  15. package/cjs/services/chain-service/utils.js +28 -1
  16. package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -9
  17. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +2 -2
  18. package/cjs/services/request-service/handler/WalletConnectRequestHandler.js +71 -0
  19. package/cjs/services/request-service/index.js +24 -6
  20. package/cjs/services/transaction-service/helpers/index.js +3 -2
  21. package/cjs/services/transaction-service/index.js +2 -1
  22. package/cjs/services/wallet-connect-service/constants.js +38 -0
  23. package/cjs/services/wallet-connect-service/handler/Eip155RequestHandler.js +113 -0
  24. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +123 -0
  25. package/cjs/services/wallet-connect-service/helpers.js +81 -0
  26. package/cjs/services/wallet-connect-service/index.js +273 -0
  27. package/cjs/services/wallet-connect-service/types.js +27 -0
  28. package/cjs/utils/array.js +17 -0
  29. package/cjs/utils/environment.js +66 -0
  30. package/cjs/utils/index.js +66 -1
  31. package/koni/api/nft/config.js +11 -6
  32. package/koni/api/xcm/polkadotXcm.js +1 -1
  33. package/koni/api/xcm/xTokens.js +2 -2
  34. package/koni/background/handlers/Extension.d.ts +6 -0
  35. package/koni/background/handlers/Extension.js +144 -2
  36. package/koni/background/handlers/State.d.ts +2 -0
  37. package/koni/background/handlers/State.js +14 -3
  38. package/koni/background/handlers/Tabs.d.ts +2 -0
  39. package/koni/background/handlers/Tabs.js +58 -7
  40. package/package.json +55 -6
  41. package/packageInfo.js +1 -1
  42. package/page/Metadata.d.ts +2 -0
  43. package/page/Metadata.js +3 -0
  44. package/services/chain-service/utils.d.ts +2 -0
  45. package/services/chain-service/utils.js +25 -1
  46. package/services/request-service/handler/AuthRequestHandler.d.ts +0 -1
  47. package/services/request-service/handler/AuthRequestHandler.js +5 -10
  48. package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -1
  49. package/services/request-service/handler/SubstrateRequestHandler.js +2 -2
  50. package/services/request-service/handler/WalletConnectRequestHandler.d.ts +15 -0
  51. package/services/request-service/handler/WalletConnectRequestHandler.js +62 -0
  52. package/services/request-service/index.d.ts +7 -2
  53. package/services/request-service/index.js +24 -6
  54. package/services/transaction-service/helpers/index.d.ts +1 -1
  55. package/services/transaction-service/helpers/index.js +2 -2
  56. package/services/transaction-service/index.js +2 -1
  57. package/services/transaction-service/types.d.ts +2 -1
  58. package/services/wallet-connect-service/constants.d.ts +11 -0
  59. package/services/wallet-connect-service/constants.js +23 -0
  60. package/services/wallet-connect-service/handler/Eip155RequestHandler.d.ts +8 -0
  61. package/services/wallet-connect-service/handler/Eip155RequestHandler.js +106 -0
  62. package/services/wallet-connect-service/handler/PolkadotRequestHandler.d.ts +8 -0
  63. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +114 -0
  64. package/services/wallet-connect-service/helpers.d.ts +12 -0
  65. package/services/wallet-connect-service/helpers.js +67 -0
  66. package/services/wallet-connect-service/index.d.ts +20 -0
  67. package/services/wallet-connect-service/index.js +265 -0
  68. package/services/wallet-connect-service/types.d.ts +46 -0
  69. package/services/wallet-connect-service/types.js +20 -0
  70. package/utils/array.d.ts +1 -0
  71. package/utils/array.js +10 -0
  72. package/utils/environment.d.ts +2 -0
  73. package/utils/environment.js +59 -0
  74. package/utils/index.d.ts +3 -0
  75. package/utils/index.js +9 -2
@@ -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 = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.uniqueStringArray = void 0;
7
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
8
+ // SPDX-License-Identifier: Apache-2.0
9
+
10
+ const uniqueStringArray = array => {
11
+ const map = {};
12
+ array.forEach(v => {
13
+ map[v] = v;
14
+ });
15
+ return Object.keys(map);
16
+ };
17
+ exports.uniqueStringArray = uniqueStringArray;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RuntimeInfo = void 0;
7
+ var _KoniTypes = require("../background/KoniTypes");
8
+ // Copyright 2019-2022 @polkadot/extension authors & contributors
9
+ // SPDX-License-Identifier: Apache-2.0
10
+
11
+ function detectRuntimeEnvironment() {
12
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
13
+ // Web environment
14
+ return {
15
+ environment: _KoniTypes.RuntimeEnvironment.Web,
16
+ version: navigator.userAgent,
17
+ host: window.location.host,
18
+ protocol: window.location.protocol
19
+ };
20
+ } else if (typeof self !== 'undefined' && typeof importScripts !== 'undefined') {
21
+ // Service Worker environment
22
+ return {
23
+ environment: _KoniTypes.RuntimeEnvironment.ServiceWorker,
24
+ version: navigator.userAgent,
25
+ host: self.location.host,
26
+ protocol: window.location.protocol
27
+ };
28
+ } else if (typeof process !== 'undefined' && process.versions && process.versions.node) {
29
+ // Node.js environment
30
+ return {
31
+ environment: _KoniTypes.RuntimeEnvironment.Node,
32
+ version: process.versions.node
33
+ };
34
+ } else if (typeof chrome !== 'undefined' && typeof chrome.runtime !== 'undefined') {
35
+ // Extension environment (Chrome)
36
+ return {
37
+ environment: _KoniTypes.RuntimeEnvironment.ExtensionChrome,
38
+ version: chrome.runtime.getManifest().version,
39
+ host: window.location.host,
40
+ protocol: window.location.protocol
41
+ };
42
+ } else if (typeof browser !== 'undefined' && typeof browser.runtime !== 'undefined') {
43
+ // Extension environment (Firefox)
44
+ return {
45
+ environment: _KoniTypes.RuntimeEnvironment.ExtensionFirefox,
46
+ version: browser.runtime.getManifest().version,
47
+ host: window.location.host,
48
+ protocol: window.location.protocol
49
+ };
50
+ // @ts-ignore
51
+ } else if (typeof WorkerGlobalScope !== 'undefined') {
52
+ // Web Worker environment
53
+ return {
54
+ environment: _KoniTypes.RuntimeEnvironment.WebWorker,
55
+ version: ''
56
+ };
57
+ } else {
58
+ // Unknown environment
59
+ return {
60
+ environment: _KoniTypes.RuntimeEnvironment.Unknown,
61
+ version: ''
62
+ };
63
+ }
64
+ }
65
+ const RuntimeInfo = detectRuntimeEnvironment();
66
+ exports.RuntimeInfo = RuntimeInfo;