@dynamic-labs/ethereum-core 4.0.0-alpha.5 → 4.0.0-alpha.51

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 (30) hide show
  1. package/CHANGELOG.md +468 -0
  2. package/package.cjs +8 -0
  3. package/package.js +4 -0
  4. package/package.json +11 -18
  5. package/src/connector/{EthWalletConnector.cjs → EthereumWalletConnector.cjs} +37 -22
  6. package/src/connector/EthereumWalletConnector.d.ts +7714 -0
  7. package/src/connector/{EthWalletConnector.js → EthereumWalletConnector.js} +38 -23
  8. package/src/connector/createConnector/createConnector.cjs +103 -0
  9. package/src/connector/createConnector/createConnector.d.ts +23 -0
  10. package/src/connector/createConnector/createConnector.js +99 -0
  11. package/src/connector/createConnector/index.d.ts +1 -0
  12. package/src/connector/index.d.ts +2 -1
  13. package/src/connector/isEthWalletConnector/isEthWalletConnector.d.ts +2 -2
  14. package/src/index.cjs +7 -3
  15. package/src/index.js +6 -1
  16. package/src/rpc/RpcProvidersEthereum/RpcProvidersEthereum.cjs +2 -7
  17. package/src/rpc/RpcProvidersEthereum/RpcProvidersEthereum.js +2 -7
  18. package/src/rpc/evmProvidersSelector/evmProvidersSelector.cjs +0 -1
  19. package/src/rpc/evmProvidersSelector/evmProvidersSelector.d.ts +1 -1
  20. package/src/rpc/evmProvidersSelector/evmProvidersSelector.js +0 -1
  21. package/src/utils/viem/ViemRpcUiTransaction/ViemRpcUiTransaction.cjs +4 -3
  22. package/src/utils/viem/ViemRpcUiTransaction/ViemRpcUiTransaction.d.ts +1 -1
  23. package/src/utils/viem/ViemRpcUiTransaction/ViemRpcUiTransaction.js +4 -3
  24. package/src/utils/viem/createAccountWithUiConfirmation/createAccountWithUiConfirmation.d.ts +223 -1
  25. package/src/utils/viem/interceptTransport/interceptTransport.cjs +3 -0
  26. package/src/utils/viem/interceptTransport/interceptTransport.js +3 -0
  27. package/src/wallet/EthereumWallet.cjs +20 -1
  28. package/src/wallet/EthereumWallet.d.ts +12 -2
  29. package/src/wallet/EthereumWallet.js +21 -2
  30. package/src/connector/EthWalletConnector.d.ts +0 -3090
@@ -17,7 +17,25 @@ var findEvmNetwork = require('../utils/findEvmNetwork/findEvmNetwork.cjs');
17
17
  var getNameservice = require('../utils/getNameservice/getNameservice.cjs');
18
18
  var EthereumWallet = require('../wallet/EthereumWallet.cjs');
19
19
 
20
- class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
20
+ class EthereumWalletConnector extends walletConnectorCore.WalletConnectorBase {
21
+ constructor(props) {
22
+ var _a;
23
+ super(props);
24
+ this.supportedChains = ['EVM', 'ETH'];
25
+ this.connectedChain = 'EVM';
26
+ this.ChainWallet = EthereumWallet.EthereumWallet;
27
+ this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
28
+ var _a;
29
+ [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
30
+ ? network.privateCustomerRpcUrls
31
+ : network.rpcUrls;
32
+ return acc;
33
+ }, {});
34
+ this.walletUiUtils = props.walletUiUtils;
35
+ this.evmNetworks = utils.parseEvmNetworks(props.evmNetworks);
36
+ this.chainRpcProviders = props.chainRpcProviders;
37
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerEvmProviders();
38
+ }
21
39
  getPublicClient() {
22
40
  return _tslib.__awaiter(this, void 0, void 0, function* () {
23
41
  var _a, _b;
@@ -37,21 +55,6 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
37
55
  return (_b = this.chainRpcProviders.getEvmProviderByChainId(providers, networkId)) === null || _b === void 0 ? void 0 : _b.provider;
38
56
  });
39
57
  }
40
- constructor(props) {
41
- var _a;
42
- super(props);
43
- this.ChainWallet = EthereumWallet.EthereumWallet;
44
- this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
45
- var _a;
46
- [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
47
- ? network.privateCustomerRpcUrls
48
- : network.rpcUrls;
49
- return acc;
50
- }, {});
51
- this.evmNetworks = utils.parseEvmNetworks(props.evmNetworks);
52
- this.chainRpcProviders = props.chainRpcProviders;
53
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerEvmProviders();
54
- }
55
58
  getNetwork() {
56
59
  return _tslib.__awaiter(this, void 0, void 0, function* () {
57
60
  const provider = this.getWalletClient();
@@ -183,7 +186,7 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
183
186
  }
184
187
  providerSwitchNetwork(_a) {
185
188
  return _tslib.__awaiter(this, arguments, void 0, function* ({ network, provider, }) {
186
- var _b, _c, _d, _e;
189
+ var _b, _c, _d, _e, _f;
187
190
  const { chainId } = network;
188
191
  const currentNetworkId = yield this.getNetwork();
189
192
  if (currentNetworkId && currentNetworkId === chainId) {
@@ -204,16 +207,19 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
204
207
  }
205
208
  }
206
209
  catch (error) {
210
+ if ((_b = error.details) === null || _b === void 0 ? void 0 : _b.includes('"wallet_switchEthereumChain" not implemented')) {
211
+ throw new utils.DynamicError('Network switching is not available at this time. The user should manually switch network in their wallet');
212
+ }
207
213
  // we need to check for unrecognized chain error first because it also contains 'rejected' in message
208
214
  if (error.code === 4902 ||
209
- ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Unrecognized chain')) ||
215
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Unrecognized chain')) ||
210
216
  // https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
211
- ((_d = (_c = error.data) === null || _c === void 0 ? void 0 : _c.orginalError) === null || _d === void 0 ? void 0 : _d.code) === 4902) {
217
+ ((_e = (_d = error.data) === null || _d === void 0 ? void 0 : _d.orginalError) === null || _e === void 0 ? void 0 : _e.code) === 4902) {
212
218
  // error code indicates the chain has not been added yet
213
219
  // https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
214
220
  return this.providerAddNetwork({ network, provider });
215
221
  }
216
- else if (((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('rejected')) ||
222
+ else if (((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('rejected')) ||
217
223
  (typeof error === 'string' && error.includes('rejected'))) {
218
224
  throw new utils.DynamicError("User rejected the wallet's request to switch network");
219
225
  }
@@ -227,7 +233,16 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
227
233
  return _tslib.__awaiter(this, arguments, void 0, function* ({ network, provider, }) {
228
234
  var _b;
229
235
  try {
230
- return yield provider.addChain({ chain: getOrMapViemChain.getOrMapViemChain(network) });
236
+ if (utils.isMobile()) {
237
+ yield this.walletUiUtils.addNetwork({
238
+ handler: () => provider.addChain({ chain: getOrMapViemChain.getOrMapViemChain(network) }),
239
+ network,
240
+ walletConnector: this,
241
+ });
242
+ }
243
+ else {
244
+ yield provider.addChain({ chain: getOrMapViemChain.getOrMapViemChain(network) });
245
+ }
231
246
  }
232
247
  catch (error) {
233
248
  if (((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('rejected')) ||
@@ -283,4 +298,4 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
283
298
  }
284
299
  }
285
300
 
286
- exports.EthWalletConnector = EthWalletConnector;
301
+ exports.EthereumWalletConnector = EthereumWalletConnector;