@broxus/evm-connect 1.0.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 (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/cjs/components/EvmConnectButton/index.d.ts +21 -0
  4. package/dist/cjs/components/EvmConnectButton/index.js +52 -0
  5. package/dist/cjs/components/EvmConnectDialog/index.css +130 -0
  6. package/dist/cjs/components/EvmConnectDialog/index.d.ts +11 -0
  7. package/dist/cjs/components/EvmConnectDialog/index.js +65 -0
  8. package/dist/cjs/components/EvmConnector/index.css +37 -0
  9. package/dist/cjs/components/EvmConnector/index.d.ts +20 -0
  10. package/dist/cjs/components/EvmConnector/index.js +97 -0
  11. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.css +43 -0
  12. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -0
  13. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.js +65 -0
  14. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.css +54 -0
  15. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +11 -0
  16. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.js +93 -0
  17. package/dist/cjs/components/EvmProvidersDispatcher/index.css +13 -0
  18. package/dist/cjs/components/EvmProvidersDispatcher/index.d.ts +5 -0
  19. package/dist/cjs/components/EvmProvidersDispatcher/index.js +49 -0
  20. package/dist/cjs/components/index.d.ts +4 -0
  21. package/dist/cjs/components/index.js +20 -0
  22. package/dist/cjs/constants.d.ts +1 -0
  23. package/dist/cjs/constants.js +4 -0
  24. package/dist/cjs/context/EvmWalletProvidersContext.d.ts +20 -0
  25. package/dist/cjs/context/EvmWalletProvidersContext.js +95 -0
  26. package/dist/cjs/context/EvmWalletServiceContext.d.ts +10 -0
  27. package/dist/cjs/context/EvmWalletServiceContext.js +55 -0
  28. package/dist/cjs/context/index.d.ts +2 -0
  29. package/dist/cjs/context/index.js +18 -0
  30. package/dist/cjs/core/EIP6963Connector.d.ts +17 -0
  31. package/dist/cjs/core/EIP6963Connector.js +127 -0
  32. package/dist/cjs/core/EthereumConnector.d.ts +43 -0
  33. package/dist/cjs/core/EthereumConnector.js +190 -0
  34. package/dist/cjs/core/MetaMask.d.ts +24 -0
  35. package/dist/cjs/core/MetaMask.js +159 -0
  36. package/dist/cjs/core/WalletConnect.d.ts +20 -0
  37. package/dist/cjs/core/WalletConnect.js +141 -0
  38. package/dist/cjs/core/index.d.ts +4 -0
  39. package/dist/cjs/core/index.js +20 -0
  40. package/dist/cjs/hooks/index.d.ts +4 -0
  41. package/dist/cjs/hooks/index.js +20 -0
  42. package/dist/cjs/hooks/useEIP6963Connections.d.ts +6 -0
  43. package/dist/cjs/hooks/useEIP6963Connections.js +47 -0
  44. package/dist/cjs/hooks/useFilteredConnections.d.ts +2 -0
  45. package/dist/cjs/hooks/useFilteredConnections.js +7 -0
  46. package/dist/cjs/hooks/useOrderedConnections.d.ts +2 -0
  47. package/dist/cjs/hooks/useOrderedConnections.js +41 -0
  48. package/dist/cjs/hooks/useRecentConnectionMeta.d.ts +15 -0
  49. package/dist/cjs/hooks/useRecentConnectionMeta.js +80 -0
  50. package/dist/cjs/index.d.ts +8 -0
  51. package/dist/cjs/index.js +24 -0
  52. package/dist/cjs/intl/index.d.ts +107 -0
  53. package/dist/cjs/intl/index.js +110 -0
  54. package/dist/cjs/services/EvmWalletService.d.ts +165 -0
  55. package/dist/cjs/services/EvmWalletService.js +430 -0
  56. package/dist/cjs/services/index.d.ts +1 -0
  57. package/dist/cjs/services/index.js +17 -0
  58. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  59. package/dist/cjs/types.d.ts +47 -0
  60. package/dist/cjs/types.js +15 -0
  61. package/dist/cjs/utils/get-evm-provider-platform-link.d.ts +2 -0
  62. package/dist/cjs/utils/get-evm-provider-platform-link.js +14 -0
  63. package/dist/cjs/utils/index.d.ts +2 -0
  64. package/dist/cjs/utils/index.js +18 -0
  65. package/dist/cjs/utils/parse-chain-id.d.ts +1 -0
  66. package/dist/cjs/utils/parse-chain-id.js +7 -0
  67. package/dist/esm/components/EvmConnectButton/index.d.ts +21 -0
  68. package/dist/esm/components/EvmConnectButton/index.js +26 -0
  69. package/dist/esm/components/EvmConnectDialog/index.css +130 -0
  70. package/dist/esm/components/EvmConnectDialog/index.d.ts +11 -0
  71. package/dist/esm/components/EvmConnectDialog/index.js +36 -0
  72. package/dist/esm/components/EvmConnector/index.css +37 -0
  73. package/dist/esm/components/EvmConnector/index.d.ts +20 -0
  74. package/dist/esm/components/EvmConnector/index.js +68 -0
  75. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.css +43 -0
  76. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -0
  77. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.js +35 -0
  78. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.css +54 -0
  79. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +11 -0
  80. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.js +64 -0
  81. package/dist/esm/components/EvmProvidersDispatcher/index.css +13 -0
  82. package/dist/esm/components/EvmProvidersDispatcher/index.d.ts +5 -0
  83. package/dist/esm/components/EvmProvidersDispatcher/index.js +23 -0
  84. package/dist/esm/components/index.d.ts +4 -0
  85. package/dist/esm/components/index.js +4 -0
  86. package/dist/esm/constants.d.ts +1 -0
  87. package/dist/esm/constants.js +1 -0
  88. package/dist/esm/context/EvmWalletProvidersContext.d.ts +20 -0
  89. package/dist/esm/context/EvmWalletProvidersContext.js +68 -0
  90. package/dist/esm/context/EvmWalletServiceContext.d.ts +10 -0
  91. package/dist/esm/context/EvmWalletServiceContext.js +28 -0
  92. package/dist/esm/context/index.d.ts +2 -0
  93. package/dist/esm/context/index.js +2 -0
  94. package/dist/esm/core/EIP6963Connector.d.ts +17 -0
  95. package/dist/esm/core/EIP6963Connector.js +123 -0
  96. package/dist/esm/core/EthereumConnector.d.ts +43 -0
  97. package/dist/esm/core/EthereumConnector.js +186 -0
  98. package/dist/esm/core/MetaMask.d.ts +24 -0
  99. package/dist/esm/core/MetaMask.js +152 -0
  100. package/dist/esm/core/WalletConnect.d.ts +20 -0
  101. package/dist/esm/core/WalletConnect.js +134 -0
  102. package/dist/esm/core/index.d.ts +4 -0
  103. package/dist/esm/core/index.js +4 -0
  104. package/dist/esm/hooks/index.d.ts +4 -0
  105. package/dist/esm/hooks/index.js +4 -0
  106. package/dist/esm/hooks/useEIP6963Connections.d.ts +6 -0
  107. package/dist/esm/hooks/useEIP6963Connections.js +20 -0
  108. package/dist/esm/hooks/useFilteredConnections.d.ts +2 -0
  109. package/dist/esm/hooks/useFilteredConnections.js +3 -0
  110. package/dist/esm/hooks/useOrderedConnections.d.ts +2 -0
  111. package/dist/esm/hooks/useOrderedConnections.js +14 -0
  112. package/dist/esm/hooks/useRecentConnectionMeta.d.ts +15 -0
  113. package/dist/esm/hooks/useRecentConnectionMeta.js +51 -0
  114. package/dist/esm/index.d.ts +8 -0
  115. package/dist/esm/index.js +8 -0
  116. package/dist/esm/intl/index.d.ts +107 -0
  117. package/dist/esm/intl/index.js +108 -0
  118. package/dist/esm/services/EvmWalletService.d.ts +165 -0
  119. package/dist/esm/services/EvmWalletService.js +423 -0
  120. package/dist/esm/services/index.d.ts +1 -0
  121. package/dist/esm/services/index.js +1 -0
  122. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  123. package/dist/esm/types.d.ts +47 -0
  124. package/dist/esm/types.js +12 -0
  125. package/dist/esm/utils/get-evm-provider-platform-link.d.ts +2 -0
  126. package/dist/esm/utils/get-evm-provider-platform-link.js +10 -0
  127. package/dist/esm/utils/index.d.ts +2 -0
  128. package/dist/esm/utils/index.js +2 -0
  129. package/dist/esm/utils/parse-chain-id.d.ts +1 -0
  130. package/dist/esm/utils/parse-chain-id.js +3 -0
  131. package/package.json +82 -0
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.WalletConnect = void 0;
16
+ const js_utils_1 = require("@broxus/js-utils");
17
+ const ethereum_provider_1 = __importDefault(require("@walletconnect/ethereum-provider"));
18
+ const mobx_1 = require("mobx");
19
+ const core_1 = require("../core");
20
+ const types_1 = require("../types");
21
+ class WalletConnect extends core_1.EthereumConnector {
22
+ params;
23
+ type = types_1.ConnectionType.WALLET_CONNECT_V2;
24
+ options;
25
+ constructor(params) {
26
+ super(params);
27
+ this.params = params;
28
+ this.options = params.options;
29
+ (0, mobx_1.makeObservable)(this);
30
+ this.init().catch(js_utils_1.error);
31
+ }
32
+ async connect(chainIdOrParams) {
33
+ const provider = await this.createProvider();
34
+ const desiredChainId = typeof chainIdOrParams === 'number' ? chainIdOrParams : chainIdOrParams?.chainId;
35
+ if (provider.session) {
36
+ if (!desiredChainId || desiredChainId === provider.chainId) {
37
+ return;
38
+ }
39
+ // WalletConnect exposes connected accounts, not chains: `eip155:${chainId}:${address}`
40
+ const eip155Accounts = provider.session.namespaces.eip155.accounts;
41
+ const isConnectedToDesiredChain = eip155Accounts.some(account => account.startsWith(`eip155:${desiredChainId}:`));
42
+ if (!isConnectedToDesiredChain) {
43
+ if (this.options.optionalChains?.includes(desiredChainId)) {
44
+ (0, js_utils_1.throwException)(`Cannot activate an optional chain (${desiredChainId}), as the wallet is not connected to it.\n\tYou should handle this error in application code, as there is no guarantee that a wallet is connected to a chain configured in "optionalChains".`);
45
+ }
46
+ (0, js_utils_1.throwException)(`Unknown chain (${desiredChainId}). Make sure to include any chains you might connect to in the "chains" or "optionalChains" parameters when initializing WalletConnect.`);
47
+ }
48
+ await provider.request({
49
+ method: 'wallet_switchEthereumChain',
50
+ params: [{ chainId: `0x${desiredChainId.toString(16)}` }],
51
+ });
52
+ return;
53
+ }
54
+ try {
55
+ this.setState('isConnecting', true);
56
+ await provider.enable();
57
+ this.setData({ accounts: provider.accounts, chainId: provider.chainId });
58
+ }
59
+ catch (e) {
60
+ (0, js_utils_1.error)('Could not connect to the wallet', e);
61
+ throw e;
62
+ }
63
+ finally {
64
+ this.setState({ isConnecting: false, isInitialized: true });
65
+ }
66
+ }
67
+ async disconnect() {
68
+ if (!this.provider) {
69
+ this.setState('isDisconnecting', false);
70
+ return;
71
+ }
72
+ try {
73
+ (0, js_utils_1.debug)('Disconnect from Wallet Connect connection');
74
+ this.setState('isDisconnecting', true);
75
+ this.provider.removeListener('accountsChanged', this.handleAccountsChanged);
76
+ this.provider.removeListener('chainChanged', this.handleChainChanged);
77
+ this.provider.removeListener('disconnect', this.handleDisconnect);
78
+ await this.provider.disconnect();
79
+ this.setData({ accounts: undefined, chainId: undefined });
80
+ this.setState('isDisconnecting', false);
81
+ this.provider = undefined;
82
+ }
83
+ catch (e) {
84
+ this.setState('isDisconnecting', false);
85
+ throw e;
86
+ }
87
+ }
88
+ async init() {
89
+ this.setState('isInitializing', true);
90
+ try {
91
+ const provider = await this.createProvider();
92
+ if (!provider.session) {
93
+ (0, js_utils_1.throwException)('No active session found. Connect your wallet first.');
94
+ }
95
+ this.setData({ accounts: provider.accounts, chainId: provider.chainId });
96
+ this.setState({ isInitialized: true, isInitializing: false });
97
+ }
98
+ catch (e) {
99
+ await this.disconnect();
100
+ this.setState({ isInitialized: false, isInitializing: false });
101
+ (0, js_utils_1.error)('Wallet Connect could not be pre-connected', e);
102
+ }
103
+ }
104
+ async createProvider() {
105
+ // @ts-ignore
106
+ this.provider = await ethereum_provider_1.default.init(this.options);
107
+ this.provider.on('accountsChanged', this.handleAccountsChanged);
108
+ this.provider.on('chainChanged', this.handleChainChanged);
109
+ this.provider.on('disconnect', this.handleDisconnect);
110
+ return this.provider;
111
+ }
112
+ }
113
+ exports.WalletConnect = WalletConnect;
114
+ __decorate([
115
+ mobx_1.override,
116
+ __metadata("design:type", ethereum_provider_1.default)
117
+ ], WalletConnect.prototype, "provider", void 0);
118
+ __decorate([
119
+ mobx_1.action.bound,
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [Object]),
122
+ __metadata("design:returntype", Promise)
123
+ ], WalletConnect.prototype, "connect", null);
124
+ __decorate([
125
+ mobx_1.action.bound,
126
+ __metadata("design:type", Function),
127
+ __metadata("design:paramtypes", []),
128
+ __metadata("design:returntype", Promise)
129
+ ], WalletConnect.prototype, "disconnect", null);
130
+ __decorate([
131
+ mobx_1.action.bound,
132
+ __metadata("design:type", Function),
133
+ __metadata("design:paramtypes", []),
134
+ __metadata("design:returntype", Promise)
135
+ ], WalletConnect.prototype, "init", null);
136
+ __decorate([
137
+ mobx_1.action.bound,
138
+ __metadata("design:type", Function),
139
+ __metadata("design:paramtypes", []),
140
+ __metadata("design:returntype", Promise)
141
+ ], WalletConnect.prototype, "createProvider", null);
@@ -0,0 +1,4 @@
1
+ export * from '../core/EIP6963Connector';
2
+ export * from '../core/EthereumConnector';
3
+ export * from '../core/MetaMask';
4
+ export * from '../core/WalletConnect';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../core/EIP6963Connector"), exports);
18
+ __exportStar(require("../core/EthereumConnector"), exports);
19
+ __exportStar(require("../core/MetaMask"), exports);
20
+ __exportStar(require("../core/WalletConnect"), exports);
@@ -0,0 +1,4 @@
1
+ export * from '../hooks/useEIP6963Connections';
2
+ export * from '../hooks/useFilteredConnections';
3
+ export * from '../hooks/useOrderedConnections';
4
+ export * from '../hooks/useRecentConnectionMeta';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../hooks/useEIP6963Connections"), exports);
18
+ __exportStar(require("../hooks/useFilteredConnections"), exports);
19
+ __exportStar(require("../hooks/useOrderedConnections"), exports);
20
+ __exportStar(require("../hooks/useRecentConnectionMeta"), exports);
@@ -0,0 +1,6 @@
1
+ import { type EIP6963ProviderDetail } from 'web3/lib/commonjs/web3_eip6963';
2
+ export declare const store: {
3
+ readonly subscribe: (callback: () => void) => () => void;
4
+ readonly value: () => EIP6963ProviderDetail<unknown>[];
5
+ };
6
+ export declare function useEIP6963Connections(): EIP6963ProviderDetail[];
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.useEIP6963Connections = exports.store = void 0;
27
+ const React = __importStar(require("react"));
28
+ const types_1 = require("../types");
29
+ let providers = [];
30
+ exports.store = {
31
+ subscribe: (callback) => {
32
+ const onAnnouncement = (event) => {
33
+ if (providers.map(p => p.info.uuid).includes(event.detail.info.uuid))
34
+ return;
35
+ providers = [...providers, event.detail];
36
+ callback();
37
+ };
38
+ window.addEventListener(types_1.EIP6963Event.ANNOUNCE_PROVIDER, onAnnouncement);
39
+ window.dispatchEvent(new Event(types_1.EIP6963Event.REQUEST_PROVIDER));
40
+ return () => window.removeEventListener(types_1.EIP6963Event.ANNOUNCE_PROVIDER, onAnnouncement);
41
+ },
42
+ value: () => providers,
43
+ };
44
+ function useEIP6963Connections() {
45
+ return React.useSyncExternalStore(exports.store.subscribe, exports.store.value, exports.store.value);
46
+ }
47
+ exports.useEIP6963Connections = useEIP6963Connections;
@@ -0,0 +1,2 @@
1
+ import { type EvmWalletProviderConfig } from '../types';
2
+ export declare function useFilteredConnections(providers: EvmWalletProviderConfig[], ids: string[]): EvmWalletProviderConfig[];
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFilteredConnections = void 0;
4
+ function useFilteredConnections(providers, ids) {
5
+ return providers.filter(provider => ids.includes(provider.id));
6
+ }
7
+ exports.useFilteredConnections = useFilteredConnections;
@@ -0,0 +1,2 @@
1
+ import { type EvmWalletProviderConfig } from '../types';
2
+ export declare function useOrderedConnections(providers: Readonly<EvmWalletProviderConfig[]>): EvmWalletProviderConfig[];
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.useOrderedConnections = void 0;
27
+ const React = __importStar(require("react"));
28
+ const useRecentConnectionMeta_1 = require("../hooks/useRecentConnectionMeta");
29
+ function useOrderedConnections(providers) {
30
+ const [recentMeta] = (0, useRecentConnectionMeta_1.useRecentConnectionMeta)();
31
+ return React.useMemo(() => providers.reduce((acc, provider) => {
32
+ if (provider.id === recentMeta?.providerId) {
33
+ acc.unshift({ ...provider, isRecent: true });
34
+ }
35
+ else {
36
+ acc.push({ ...provider, isRecent: undefined });
37
+ }
38
+ return acc;
39
+ }, []), [providers, recentMeta?.providerId]);
40
+ }
41
+ exports.useOrderedConnections = useOrderedConnections;
@@ -0,0 +1,15 @@
1
+ import { ConnectionType } from '../types';
2
+ export interface RecentConnectionMeta {
3
+ chainId?: string;
4
+ disconnected?: boolean;
5
+ providerId: string;
6
+ type?: ConnectionType;
7
+ }
8
+ export declare function storeRecentConnectionMeta(meta: RecentConnectionMeta | undefined): void;
9
+ export declare function getRecentConnectionMeta(): RecentConnectionMeta | undefined;
10
+ type UseRecentConnectionMeta = [
11
+ value: RecentConnectionMeta | undefined,
12
+ setValue: (meta: RecentConnectionMeta | undefined) => void
13
+ ];
14
+ export declare function useRecentConnectionMeta(): UseRecentConnectionMeta;
15
+ export {};
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.useRecentConnectionMeta = exports.getRecentConnectionMeta = exports.storeRecentConnectionMeta = void 0;
27
+ const js_utils_1 = require("@broxus/js-utils");
28
+ const React = __importStar(require("react"));
29
+ const constants_1 = require("../constants");
30
+ const types_1 = require("../types");
31
+ function isRecentConnectionMeta(value) {
32
+ const meta = { providerId: value.providerId, type: value.type };
33
+ return Boolean(meta.type && types_1.ConnectionType[meta.type] && !!meta.providerId);
34
+ }
35
+ function storeRecentConnectionMeta(meta) {
36
+ if (!meta) {
37
+ js_utils_1.storage.remove(constants_1.EVM_RECENT_CONNECTION);
38
+ return;
39
+ }
40
+ (0, js_utils_1.debug)('Store EVM recent connection', meta);
41
+ js_utils_1.storage.set(constants_1.EVM_RECENT_CONNECTION, JSON.stringify(meta));
42
+ }
43
+ exports.storeRecentConnectionMeta = storeRecentConnectionMeta;
44
+ function getRecentConnectionMeta() {
45
+ const value = js_utils_1.storage.get(constants_1.EVM_RECENT_CONNECTION);
46
+ if (!value) {
47
+ return undefined;
48
+ }
49
+ try {
50
+ const json = JSON.parse(value);
51
+ if (isRecentConnectionMeta(json)) {
52
+ return json;
53
+ }
54
+ }
55
+ catch (e) {
56
+ (0, js_utils_1.debug)(e);
57
+ }
58
+ storeRecentConnectionMeta(undefined);
59
+ return undefined;
60
+ }
61
+ exports.getRecentConnectionMeta = getRecentConnectionMeta;
62
+ function useRecentConnectionMeta() {
63
+ const [meta, setMeta] = React.useState(getRecentConnectionMeta());
64
+ React.useEffect(() => {
65
+ const onStorage = (event) => {
66
+ if (event.key === constants_1.EVM_RECENT_CONNECTION && event.newValue) {
67
+ const json = JSON.parse(event.newValue);
68
+ if (isRecentConnectionMeta(json)) {
69
+ setMeta(json);
70
+ }
71
+ }
72
+ };
73
+ window.addEventListener('storage', onStorage);
74
+ return () => {
75
+ window.removeEventListener('storage', onStorage);
76
+ };
77
+ }, []);
78
+ return [meta, storeRecentConnectionMeta];
79
+ }
80
+ exports.useRecentConnectionMeta = useRecentConnectionMeta;
@@ -0,0 +1,8 @@
1
+ export * from './components';
2
+ export * from './context';
3
+ export * from './core';
4
+ export * from './hooks';
5
+ export * from './services';
6
+ export * from './utils';
7
+ export * from './constants';
8
+ export * from './types';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./components"), exports);
18
+ __exportStar(require("./context"), exports);
19
+ __exportStar(require("./core"), exports);
20
+ __exportStar(require("./hooks"), exports);
21
+ __exportStar(require("./services"), exports);
22
+ __exportStar(require("./utils"), exports);
23
+ __exportStar(require("./constants"), exports);
24
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,107 @@
1
+ declare const _default: {
2
+ EVM_CONNECT_AGREEMENTS_NOTE: {
3
+ defaultMessage: string;
4
+ id: string;
5
+ };
6
+ EVM_CONNECT_NOT_CONNECTED_HINT: {
7
+ defaultMessage: string;
8
+ id: string;
9
+ };
10
+ EVM_CONNECT_INITIALIZING_HINT: {
11
+ defaultMessage: string;
12
+ id: string;
13
+ };
14
+ EVM_CONNECT_CONNECT_BTN_TEXT: {
15
+ defaultMessage: string;
16
+ id: string;
17
+ };
18
+ EVM_CONNECT_DISCONNECT_BTN_TEXT: {
19
+ defaultMessage: string;
20
+ id: string;
21
+ };
22
+ EVM_CONNECT_CHANGE_NETWORK_BTN_TEXT: {
23
+ defaultMessage: string;
24
+ id: string;
25
+ };
26
+ EVM_CONNECT_CHANGE_WALLET_BTN_TEXT: {
27
+ defaultMessage: string;
28
+ id: string;
29
+ };
30
+ EVM_CONNECT_UNSUPPORTED_NETWORK_WARNING: {
31
+ defaultMessage: string;
32
+ id: string;
33
+ };
34
+ EVM_CONNECT_CONNECTOR_BLOCKCHAIN_NAME: {
35
+ defaultMessage: string;
36
+ id: string;
37
+ };
38
+ EVM_CONNECT_CONNECTOR_EXPLORER_HINT: {
39
+ defaultMessage: string;
40
+ id: string;
41
+ };
42
+ EVM_CONNECT_INSTALL_PROVIDER: {
43
+ defaultMessage: string;
44
+ id: string;
45
+ };
46
+ EVM_CONNECT_INSTALL_ANDROID_PLATFORM: {
47
+ defaultMessage: string;
48
+ id: string;
49
+ };
50
+ EVM_CONNECT_INSTALL_IOS_PLATFORM: {
51
+ defaultMessage: string;
52
+ id: string;
53
+ };
54
+ EVM_CONNECT_INSTALL_CHROME_EXTENSION_PLATFORM: {
55
+ defaultMessage: string;
56
+ id: string;
57
+ };
58
+ EVM_CONNECT_INSTALL_FIREFOX_EXTENSION_PLATFORM: {
59
+ defaultMessage: string;
60
+ id: string;
61
+ };
62
+ EVM_CONNECT_INSTALL_SAFARI_EXTENSION_PLATFORM: {
63
+ defaultMessage: string;
64
+ id: string;
65
+ };
66
+ EVM_CONNECT_INSTALL_UNKNOWN_PLATFORM: {
67
+ defaultMessage: string;
68
+ id: string;
69
+ };
70
+ EVM_CONNECT_DISPATCHER_POPUP_TITLE: {
71
+ defaultMessage: string;
72
+ id: string;
73
+ };
74
+ EVM_CONNECT_DISPATCHER_POPUP_NOTE: {
75
+ defaultMessage: string;
76
+ id: string;
77
+ };
78
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE: {
79
+ defaultMessage: string;
80
+ id: string;
81
+ };
82
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE: {
83
+ defaultMessage: string;
84
+ id: string;
85
+ };
86
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE: {
87
+ defaultMessage: string;
88
+ id: string;
89
+ };
90
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE: {
91
+ defaultMessage: string;
92
+ id: string;
93
+ };
94
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT: {
95
+ defaultMessage: string;
96
+ id: string;
97
+ };
98
+ EVM_CONNECT_DISPATCHER_POPUP_CONNECTED_HINT: {
99
+ defaultMessage: string;
100
+ id: string;
101
+ };
102
+ EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT: {
103
+ defaultMessage: string;
104
+ id: string;
105
+ };
106
+ };
107
+ export default _default;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_intl_1 = require("react-intl");
4
+ /* eslint-disable sort-keys */
5
+ exports.default = (0, react_intl_1.defineMessages)({
6
+ EVM_CONNECT_AGREEMENTS_NOTE: {
7
+ defaultMessage: 'By connecting a wallet, you agree to Terms of Service and consent to its Privacy Policy.',
8
+ id: 'EVM_CONNECT_AGREEMENTS_NOTE',
9
+ },
10
+ EVM_CONNECT_NOT_CONNECTED_HINT: {
11
+ defaultMessage: 'Not connected',
12
+ id: 'EVM_CONNECT_NOT_CONNECTED_HINT',
13
+ },
14
+ EVM_CONNECT_INITIALIZING_HINT: {
15
+ defaultMessage: 'Initializing',
16
+ id: 'EVM_CONNECT_INITIALIZING_HINT',
17
+ },
18
+ EVM_CONNECT_CONNECT_BTN_TEXT: {
19
+ defaultMessage: 'Connect',
20
+ id: 'EVM_CONNECT_CONNECT_BTN_TEXT',
21
+ },
22
+ EVM_CONNECT_DISCONNECT_BTN_TEXT: {
23
+ defaultMessage: 'Disconnect',
24
+ id: 'EVM_CONNECT_DISCONNECT_BTN_TEXT',
25
+ },
26
+ EVM_CONNECT_CHANGE_NETWORK_BTN_TEXT: {
27
+ defaultMessage: 'Change network',
28
+ id: 'EVM_CONNECT_CHANGE_NETWORK_BTN_TEXT',
29
+ },
30
+ EVM_CONNECT_CHANGE_WALLET_BTN_TEXT: {
31
+ defaultMessage: 'Change wallet',
32
+ id: 'EVM_CONNECT_CHANGE_WALLET_BTN_TEXT',
33
+ },
34
+ EVM_CONNECT_UNSUPPORTED_NETWORK_WARNING: {
35
+ defaultMessage: 'Unsupported network',
36
+ id: 'EVM_CONNECT_UNSUPPORTED_NETWORK_WARNING',
37
+ },
38
+ EVM_CONNECT_CONNECTOR_BLOCKCHAIN_NAME: {
39
+ defaultMessage: 'Ethereum',
40
+ id: 'EVM_CONNECT_CONNECTOR_BLOCKCHAIN_NAME',
41
+ },
42
+ EVM_CONNECT_CONNECTOR_EXPLORER_HINT: {
43
+ defaultMessage: 'Open in {explorerTitle}',
44
+ id: 'EVM_CONNECT_CONNECTOR_EXPLORER_HINT',
45
+ },
46
+ EVM_CONNECT_INSTALL_PROVIDER: {
47
+ defaultMessage: 'Install {providerName}',
48
+ id: 'EVM_CONNECT_INSTALL_PROVIDER',
49
+ },
50
+ EVM_CONNECT_INSTALL_ANDROID_PLATFORM: {
51
+ defaultMessage: 'Install Android App',
52
+ id: 'EVM_CONNECT_INSTALL_ANDROID_PLATFORM',
53
+ },
54
+ EVM_CONNECT_INSTALL_IOS_PLATFORM: {
55
+ defaultMessage: 'Install iOS App',
56
+ id: 'EVM_CONNECT_INSTALL_IOS_PLATFORM',
57
+ },
58
+ EVM_CONNECT_INSTALL_CHROME_EXTENSION_PLATFORM: {
59
+ defaultMessage: 'Install Chrome extension',
60
+ id: 'EVM_CONNECT_INSTALL_CHROME_EXTENSION_PLATFORM',
61
+ },
62
+ EVM_CONNECT_INSTALL_FIREFOX_EXTENSION_PLATFORM: {
63
+ defaultMessage: 'Install Firefox extension',
64
+ id: 'EVM_CONNECT_INSTALL_FIREFOX_EXTENSION_PLATFORM',
65
+ },
66
+ EVM_CONNECT_INSTALL_SAFARI_EXTENSION_PLATFORM: {
67
+ defaultMessage: 'Install Safari extension',
68
+ id: 'EVM_CONNECT_INSTALL_SAFARI_EXTENSION_PLATFORM',
69
+ },
70
+ EVM_CONNECT_INSTALL_UNKNOWN_PLATFORM: {
71
+ defaultMessage: '&mdash;',
72
+ id: 'EVM_CONNECT_INSTALL_UNKNOWN_PLATFORM',
73
+ },
74
+ EVM_CONNECT_DISPATCHER_POPUP_TITLE: {
75
+ defaultMessage: 'Connect a wallet',
76
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_TITLE',
77
+ },
78
+ EVM_CONNECT_DISPATCHER_POPUP_NOTE: {
79
+ defaultMessage: 'At the moment we only support the wallets below.',
80
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_NOTE',
81
+ },
82
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE: {
83
+ defaultMessage: 'Continue in {title}',
84
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE',
85
+ },
86
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE: {
87
+ defaultMessage: 'Accept connection request in the wallet',
88
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE',
89
+ },
90
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE: {
91
+ defaultMessage: 'Connection failed',
92
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE',
93
+ },
94
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE: {
95
+ defaultMessage: 'Connection can be declined if a previous request is still active',
96
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE',
97
+ },
98
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT: {
99
+ defaultMessage: 'Try again',
100
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT',
101
+ },
102
+ EVM_CONNECT_DISPATCHER_POPUP_CONNECTED_HINT: {
103
+ defaultMessage: 'Connected',
104
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_CONNECTED_HINT',
105
+ },
106
+ EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT: {
107
+ defaultMessage: 'Recent',
108
+ id: 'EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT',
109
+ },
110
+ });