@dynamic-labs/global-wallet-client 4.19.5 → 4.19.7

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 (79) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +7 -7
  5. package/src/features.cjs +4 -0
  6. package/src/features.d.ts +2 -0
  7. package/src/features.js +2 -0
  8. package/src/lib/client/createClientStore/createClientStore.cjs +1 -0
  9. package/src/lib/client/createClientStore/createClientStore.d.ts +8 -1
  10. package/src/lib/client/createClientStore/createClientStore.js +1 -0
  11. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.cjs +11 -5
  12. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.d.ts +3 -1
  13. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.js +11 -5
  14. package/src/lib/functions/addWebWalletOpenerService/addWebWalletOpenerService.cjs +35 -116
  15. package/src/lib/functions/addWebWalletOpenerService/addWebWalletOpenerService.js +35 -116
  16. package/src/lib/functions/addWebWalletOpenerService/constructUrl.cjs +20 -0
  17. package/src/lib/functions/addWebWalletOpenerService/constructUrl.d.ts +10 -0
  18. package/src/lib/functions/addWebWalletOpenerService/constructUrl.js +16 -0
  19. package/src/lib/functions/addWebWalletOpenerService/methods/iframeWalletOpener.cjs +84 -0
  20. package/src/lib/functions/addWebWalletOpenerService/methods/iframeWalletOpener.d.ts +15 -0
  21. package/src/lib/functions/addWebWalletOpenerService/methods/iframeWalletOpener.js +80 -0
  22. package/src/lib/functions/addWebWalletOpenerService/methods/index.d.ts +2 -0
  23. package/src/lib/functions/addWebWalletOpenerService/methods/popupWalletOpener.cjs +103 -0
  24. package/src/lib/functions/addWebWalletOpenerService/methods/popupWalletOpener.d.ts +18 -0
  25. package/src/lib/functions/addWebWalletOpenerService/methods/popupWalletOpener.js +99 -0
  26. package/src/lib/functions/addWebWalletOpenerService/methods/utils/decodeResponse.cjs +17 -0
  27. package/src/lib/functions/addWebWalletOpenerService/methods/utils/decodeResponse.d.ts +2 -0
  28. package/src/lib/functions/addWebWalletOpenerService/methods/utils/decodeResponse.js +13 -0
  29. package/src/lib/functions/addWebWalletOpenerService/methods/utils/handlePromiseResponse.cjs +33 -0
  30. package/src/lib/functions/addWebWalletOpenerService/methods/utils/handlePromiseResponse.d.ts +10 -0
  31. package/src/lib/functions/addWebWalletOpenerService/methods/utils/handlePromiseResponse.js +29 -0
  32. package/src/lib/functions/addWebWalletOpenerService/methods/utils/index.d.ts +2 -0
  33. package/src/lib/functions/connect/connect.cjs +3 -1
  34. package/src/lib/functions/connect/connect.js +3 -1
  35. package/src/lib/functions/createWalletOpener/createWalletOpener.d.ts +3 -1
  36. package/src/lib/functions/getEoaWalletForSmartWallet/getEoaWalletForSmartWallet.cjs +30 -0
  37. package/src/lib/functions/getEoaWalletForSmartWallet/getEoaWalletForSmartWallet.d.ts +11 -0
  38. package/src/lib/functions/getEoaWalletForSmartWallet/getEoaWalletForSmartWallet.js +26 -0
  39. package/src/lib/functions/getEoaWalletForSmartWallet/index.d.ts +1 -0
  40. package/src/lib/functions/sendTransaction/index.d.ts +1 -0
  41. package/src/lib/functions/sendTransaction/sendTransaction.cjs +49 -0
  42. package/src/lib/functions/sendTransaction/sendTransaction.d.ts +12 -0
  43. package/src/lib/functions/sendTransaction/sendTransaction.js +45 -0
  44. package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.cjs +3 -2
  45. package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.d.ts +1 -1
  46. package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.js +3 -2
  47. package/src/lib/functions/waitForResponse/index.d.ts +1 -0
  48. package/src/lib/functions/{waitForPopupResponse/waitForPopupResponse.cjs → waitForResponse/waitForResponse.cjs} +3 -3
  49. package/src/lib/functions/{waitForPopupResponse/waitForPopupResponse.d.ts → waitForResponse/waitForResponse.d.ts} +3 -3
  50. package/src/lib/functions/{waitForPopupResponse/waitForPopupResponse.js → waitForResponse/waitForResponse.js} +3 -3
  51. package/src/lib/protocol/functions/decodeFromBase64.d.ts +7 -0
  52. package/src/lib/protocol/functions/encodeToBase64.d.ts +7 -0
  53. package/src/lib/protocol/functions/generateNonce.d.ts +6 -0
  54. package/src/lib/protocol/functions/generateRandomHex.d.ts +7 -0
  55. package/src/lib/protocol/functions/walletRequest/addActionToWalletRequest.d.ts +15 -0
  56. package/src/lib/protocol/functions/walletRequest/createWalletRequest.d.ts +7 -0
  57. package/src/lib/protocol/functions/walletRequest/decodeWalletRequest.d.ts +8 -0
  58. package/src/lib/protocol/functions/walletRequest/decryptWalletRequest.d.ts +10 -0
  59. package/src/lib/protocol/functions/walletRequest/encodeWalletRequest.d.ts +8 -0
  60. package/src/lib/protocol/functions/walletRequest/encryptWalletRequest.d.ts +10 -0
  61. package/src/lib/protocol/functions/walletRequest/getActionFromWalletRequest.d.ts +9 -0
  62. package/src/lib/protocol/functions/walletRequest/isEncryptedWalletRequest.d.ts +8 -0
  63. package/src/lib/protocol/functions/walletResponse/addActionErrorToWalletResponse.d.ts +9 -0
  64. package/src/lib/protocol/functions/walletResponse/addActionResultToWalletResponse.d.ts +9 -0
  65. package/src/lib/protocol/functions/walletResponse/addErrorToWalletResponse.d.ts +8 -0
  66. package/src/lib/protocol/functions/walletResponse/addNextNonceToWalletResponse.d.ts +8 -0
  67. package/src/lib/protocol/functions/walletResponse/createWalletResponse.d.ts +8 -0
  68. package/src/lib/protocol/functions/walletResponse/decodeWalletResponse.d.ts +8 -0
  69. package/src/lib/protocol/functions/walletResponse/decryptWalletResponse.d.ts +10 -0
  70. package/src/lib/protocol/functions/walletResponse/encodeWalletResponse.d.ts +8 -0
  71. package/src/lib/protocol/functions/walletResponse/encryptWalletResponse.d.ts +10 -0
  72. package/src/lib/protocol/functions/walletResponse/getActionErrorFromWalletResponse.d.ts +9 -0
  73. package/src/lib/protocol/functions/walletResponse/getActionResultFromWalletResponse.d.ts +10 -0
  74. package/src/lib/protocol/functions/walletResponse/getErrorFromWalletResponse.d.ts +8 -0
  75. package/src/lib/protocol/functions/walletResponse/getNextNonceFromWalletResponse.d.ts +8 -0
  76. package/src/lib/protocol/functions/walletResponse/isEncryptedWalletResponse.d.ts +8 -0
  77. package/src/lib/protocol/index.d.ts +24 -0
  78. package/src/lib/protocol/types.d.ts +48 -0
  79. package/src/lib/functions/waitForPopupResponse/index.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,31 @@
1
1
 
2
+ ### [4.19.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.6...v4.19.7) (2025-06-06)
3
+
4
+
5
+ ### Features
6
+
7
+ * add util to find waas wallets ([#8871](https://github.com/dynamic-labs/dynamic-auth/issues/8871)) ([2d7114e](https://github.com/dynamic-labs/dynamic-auth/commit/2d7114e51f5badf1d04600597f1fd9433fabf3d0))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * make sure smart account is deployed before creating sessions ([#8894](https://github.com/dynamic-labs/dynamic-auth/issues/8894)) ([5ba3d23](https://github.com/dynamic-labs/dynamic-auth/commit/5ba3d23bb8ef7c7438809128c8ef74c390ba1d48))
13
+ * only deploy zksync smart account if not deployed ([#8840](https://github.com/dynamic-labs/dynamic-auth/issues/8840)) ([66a306a](https://github.com/dynamic-labs/dynamic-auth/commit/66a306aaee25c58f685fa050a5d6aea79b196fce))
14
+ * primary wallet loading time when using React 19 ([#8896](https://github.com/dynamic-labs/dynamic-auth/issues/8896)) ([f5690f3](https://github.com/dynamic-labs/dynamic-auth/commit/f5690f31012e8fc6a5650423d4ece6c04f7c1811))
15
+
16
+ ### [4.19.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.5...v4.19.6) (2025-06-04)
17
+
18
+
19
+ ### Features
20
+
21
+ * backup unsuccessful popup when create wallet fails ([#8872](https://github.com/dynamic-labs/dynamic-auth/issues/8872)) ([c8f88f2](https://github.com/dynamic-labs/dynamic-auth/commit/c8f88f2cafdb7856764305764a230e159f09dadf))
22
+ * **global-wallet:** new native api method to return the eoa wallet for a connected smart wallet ([#8864](https://github.com/dynamic-labs/dynamic-auth/issues/8864)) ([5d0e200](https://github.com/dynamic-labs/dynamic-auth/commit/5d0e2002caefb658f6120b102abe145d6caafaf4))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * dont call select endpoint when signing in with 7702 wallet ([#8854](https://github.com/dynamic-labs/dynamic-auth/issues/8854)) ([9828a8f](https://github.com/dynamic-labs/dynamic-auth/commit/9828a8fb758b07dd4dc51cb9eadee483b884defe))
28
+
2
29
  ### [4.19.5](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.4...v4.19.5) (2025-06-02)
3
30
 
4
31
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.19.5";
6
+ var version = "4.19.7";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.19.5";
2
+ var version = "4.19.7";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/global-wallet-client",
3
- "version": "4.19.5",
3
+ "version": "4.19.7",
4
4
  "description": "Core package for building Dynamic's Global Wallet",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -55,12 +55,12 @@
55
55
  },
56
56
  "homepage": "https://www.dynamic.xyz/",
57
57
  "dependencies": {
58
- "@dynamic-labs/assert-package-version": "4.19.5",
59
- "@dynamic-labs/logger": "4.19.5",
60
- "@dynamic-labs/message-transport": "4.19.5",
61
- "@dynamic-labs/store": "4.19.5",
62
- "@dynamic-labs/types": "4.19.5",
63
- "@dynamic-labs/utils": "4.19.5",
58
+ "@dynamic-labs/assert-package-version": "4.19.7",
59
+ "@dynamic-labs/logger": "4.19.7",
60
+ "@dynamic-labs/message-transport": "4.19.7",
61
+ "@dynamic-labs/store": "4.19.7",
62
+ "@dynamic-labs/types": "4.19.7",
63
+ "@dynamic-labs/utils": "4.19.7",
64
64
  "eventemitter3": "5.0.1"
65
65
  },
66
66
  "peerDependencies": {
package/src/features.cjs CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var connect = require('./lib/functions/connect/connect.cjs');
7
7
  var disconnect = require('./lib/functions/disconnect/disconnect.cjs');
8
+ var getEoaWalletForSmartWallet = require('./lib/functions/getEoaWalletForSmartWallet/getEoaWalletForSmartWallet.cjs');
8
9
  var getEthereumWallets = require('./lib/functions/getEthereumWallets/getEthereumWallets.cjs');
9
10
  var getSolanaWallets = require('./lib/functions/getSolanaWallets/getSolanaWallets.cjs');
10
11
  var getSupportedEthereumNetworks = require('./lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.cjs');
@@ -14,11 +15,13 @@ var isSolanaWallet = require('./lib/functions/isSolanaWallet/isSolanaWallet.cjs'
14
15
  var onEvent = require('./lib/functions/onEvent/onEvent.cjs');
15
16
  var signMessage = require('./lib/functions/signMessage/signMessage.cjs');
16
17
  var switchNetwork = require('./lib/functions/switchNetwork/switchNetwork.cjs');
18
+ var sendTransaction = require('./lib/functions/sendTransaction/sendTransaction.cjs');
17
19
 
18
20
 
19
21
 
20
22
  exports.connect = connect.connect;
21
23
  exports.disconnect = disconnect.disconnect;
24
+ exports.getEoaWalletForSmartWallet = getEoaWalletForSmartWallet.getEoaWalletForSmartWallet;
22
25
  exports.getEthereumWallets = getEthereumWallets.getEthereumWallets;
23
26
  exports.getSolanaWallets = getSolanaWallets.getSolanaWallets;
24
27
  exports.getSupportedEthereumNetworks = getSupportedEthereumNetworks.getSupportedEthereumNetworks;
@@ -28,3 +31,4 @@ exports.isSolanaWallet = isSolanaWallet.isSolanaWallet;
28
31
  exports.onEvent = onEvent.onEvent;
29
32
  exports.signMessage = signMessage.signMessage;
30
33
  exports.switchNetwork = switchNetwork.switchNetwork;
34
+ exports.sendTransaction = sendTransaction.sendTransaction;
package/src/features.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { connect } from './lib/functions/connect';
2
2
  export { disconnect } from './lib/functions/disconnect';
3
+ export { getEoaWalletForSmartWallet } from './lib/functions/getEoaWalletForSmartWallet';
3
4
  export { getEthereumWallets } from './lib/functions/getEthereumWallets';
4
5
  export { getSolanaWallets } from './lib/functions/getSolanaWallets';
5
6
  export { getSupportedEthereumNetworks } from './lib/functions/getSupportedEthereumNetworks';
@@ -9,3 +10,4 @@ export { isSolanaWallet } from './lib/functions/isSolanaWallet';
9
10
  export { onEvent } from './lib/functions/onEvent';
10
11
  export { signMessage } from './lib/functions/signMessage';
11
12
  export { switchNetwork } from './lib/functions/switchNetwork';
13
+ export { sendTransaction } from './lib/functions/sendTransaction';
package/src/features.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  export { connect } from './lib/functions/connect/connect.js';
3
3
  export { disconnect } from './lib/functions/disconnect/disconnect.js';
4
+ export { getEoaWalletForSmartWallet } from './lib/functions/getEoaWalletForSmartWallet/getEoaWalletForSmartWallet.js';
4
5
  export { getEthereumWallets } from './lib/functions/getEthereumWallets/getEthereumWallets.js';
5
6
  export { getSolanaWallets } from './lib/functions/getSolanaWallets/getSolanaWallets.js';
6
7
  export { getSupportedEthereumNetworks } from './lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.js';
@@ -10,3 +11,4 @@ export { isSolanaWallet } from './lib/functions/isSolanaWallet/isSolanaWallet.js
10
11
  export { onEvent } from './lib/functions/onEvent/onEvent.js';
11
12
  export { signMessage } from './lib/functions/signMessage/signMessage.js';
12
13
  export { switchNetwork } from './lib/functions/switchNetwork/switchNetwork.js';
14
+ export { sendTransaction } from './lib/functions/sendTransaction/sendTransaction.js';
@@ -12,6 +12,7 @@ const createClientStore = ({ environmentId, storage = localStorage, }) => store.
12
12
  store: store.createStore(() => ({
13
13
  connection: null,
14
14
  ethereum: null,
15
+ settings: {},
15
16
  solana: null,
16
17
  wallets: [],
17
18
  })),
@@ -1,5 +1,5 @@
1
1
  import { StoreApi } from '@dynamic-labs/store';
2
- import { BaseWallet, GlobalWalletConnection } from '@dynamic-labs/types';
2
+ import { type BaseWallet, type GlobalWalletConnection, type Provider } from '@dynamic-labs/types';
3
3
  export type ClientStore = StoreApi<ClientStoreState>;
4
4
  type CreateClientStoreProps = {
5
5
  storage?: Storage;
@@ -18,6 +18,7 @@ export type ClientStoreState = {
18
18
  * Ethereum specific state
19
19
  */
20
20
  ethereum: {
21
+ eoaWallets: Record<string, BaseWallet>;
21
22
  supportedNetworks: {
22
23
  chainId: number;
23
24
  rpcUrl?: string;
@@ -30,6 +31,12 @@ export type ClientStoreState = {
30
31
  solana: {
31
32
  currentNetwork: string;
32
33
  } | null;
34
+ /**
35
+ * providers settings
36
+ */
37
+ settings: {
38
+ zeroDevSettings?: Partial<Provider>;
39
+ };
33
40
  };
34
41
  export declare const createClientStore: ({ environmentId, storage, }: CreateClientStoreProps) => ClientStore;
35
42
  export {};
@@ -8,6 +8,7 @@ const createClientStore = ({ environmentId, storage = localStorage, }) => persis
8
8
  store: createStore(() => ({
9
9
  connection: null,
10
10
  ethereum: null,
11
+ settings: {},
11
12
  solana: null,
12
13
  wallets: [],
13
14
  })),
@@ -24,7 +24,7 @@ var getSupportedEthereumNetworks = require('../../../functions/getSupportedEther
24
24
  var switchEthereumNetwork = require('../../../functions/switchEthereumNetwork/switchEthereumNetwork.cjs');
25
25
  var getActiveConnection = require('../../../functions/getActiveConnection/getActiveConnection.cjs');
26
26
 
27
- const createEIP1193Provider = (client) => {
27
+ const createEIP1193Provider = (client, { sessionId } = {}) => {
28
28
  const eventEmitter = new eventemitter3.EventEmitter();
29
29
  onEvent.onEvent(client, 'connect', () => {
30
30
  const currentNetwork = getCurrentEthereumNetworkId.getCurrentEthereumNetworkId(client);
@@ -46,17 +46,22 @@ const createEIP1193Provider = (client) => {
46
46
  eth_accounts: () => handleEthAccounts(client),
47
47
  eth_chainId: () => handleEthChainId(client),
48
48
  eth_requestAccounts: () => handleEthRequestAccounts(client),
49
- eth_sendTransaction: () => handleMethodInPopup({
49
+ eth_sendTransaction: () => handleMethodInGlobalWallet({
50
50
  client,
51
51
  method: 'eth_sendTransaction',
52
52
  params,
53
+ useIframe: sessionId ? true : false,
53
54
  }),
54
- eth_signTypedData_v4: () => handleMethodInPopup({
55
+ eth_signTypedData_v4: () => handleMethodInGlobalWallet({
55
56
  client,
56
57
  method: 'eth_signTypedData_v4',
57
58
  params,
58
59
  }),
59
- personal_sign: () => handleMethodInPopup({ client, method: 'personal_sign', params }),
60
+ personal_sign: () => handleMethodInGlobalWallet({
61
+ client,
62
+ method: 'personal_sign',
63
+ params,
64
+ }),
60
65
  wallet_requestPermissions: () => handleEthRequestAccounts(client),
61
66
  wallet_revokePermissions: () => handleWalletRevokePermissions(client),
62
67
  wallet_switchEthereumChain: () => handleWalletSwitchEthereumChain(client, eventEmitter, params),
@@ -147,7 +152,7 @@ const handleWalletSwitchEthereumChain = (client, eventEmitter, params) => {
147
152
  eventEmitter.emit('chainChanged', chainId);
148
153
  return null;
149
154
  };
150
- const handleMethodInPopup = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ client, method, params, }) {
155
+ const handleMethodInGlobalWallet = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ client, method, params, useIframe, }) {
151
156
  const currentEthereumNetworkId = getCurrentEthereumNetworkId.getCurrentEthereumNetworkId(client);
152
157
  if (!currentEthereumNetworkId) {
153
158
  throw new Error('No network id found');
@@ -161,6 +166,7 @@ const handleMethodInPopup = (_a) => _tslib.__awaiter(void 0, [_a], void 0, funct
161
166
  },
162
167
  connection: getActiveConnection.getActiveConnection(client),
163
168
  name: 'eth-request',
169
+ useIframe,
164
170
  })
165
171
  .catch(mapErrorToStandard);
166
172
  return data;
@@ -1,3 +1,5 @@
1
1
  import { EIP1193Provider } from 'viem';
2
2
  import { GlobalWalletClient } from '../../../client';
3
- export declare const createEIP1193Provider: (client: GlobalWalletClient) => EIP1193Provider;
3
+ export declare const createEIP1193Provider: (client: GlobalWalletClient, { sessionId }?: {
4
+ sessionId?: string;
5
+ }) => EIP1193Provider;
@@ -20,7 +20,7 @@ import { getSupportedEthereumNetworks } from '../../../functions/getSupportedEth
20
20
  import { switchEthereumNetwork } from '../../../functions/switchEthereumNetwork/switchEthereumNetwork.js';
21
21
  import { getActiveConnection } from '../../../functions/getActiveConnection/getActiveConnection.js';
22
22
 
23
- const createEIP1193Provider = (client) => {
23
+ const createEIP1193Provider = (client, { sessionId } = {}) => {
24
24
  const eventEmitter = new EventEmitter();
25
25
  onEvent(client, 'connect', () => {
26
26
  const currentNetwork = getCurrentEthereumNetworkId(client);
@@ -42,17 +42,22 @@ const createEIP1193Provider = (client) => {
42
42
  eth_accounts: () => handleEthAccounts(client),
43
43
  eth_chainId: () => handleEthChainId(client),
44
44
  eth_requestAccounts: () => handleEthRequestAccounts(client),
45
- eth_sendTransaction: () => handleMethodInPopup({
45
+ eth_sendTransaction: () => handleMethodInGlobalWallet({
46
46
  client,
47
47
  method: 'eth_sendTransaction',
48
48
  params,
49
+ useIframe: sessionId ? true : false,
49
50
  }),
50
- eth_signTypedData_v4: () => handleMethodInPopup({
51
+ eth_signTypedData_v4: () => handleMethodInGlobalWallet({
51
52
  client,
52
53
  method: 'eth_signTypedData_v4',
53
54
  params,
54
55
  }),
55
- personal_sign: () => handleMethodInPopup({ client, method: 'personal_sign', params }),
56
+ personal_sign: () => handleMethodInGlobalWallet({
57
+ client,
58
+ method: 'personal_sign',
59
+ params,
60
+ }),
56
61
  wallet_requestPermissions: () => handleEthRequestAccounts(client),
57
62
  wallet_revokePermissions: () => handleWalletRevokePermissions(client),
58
63
  wallet_switchEthereumChain: () => handleWalletSwitchEthereumChain(client, eventEmitter, params),
@@ -143,7 +148,7 @@ const handleWalletSwitchEthereumChain = (client, eventEmitter, params) => {
143
148
  eventEmitter.emit('chainChanged', chainId);
144
149
  return null;
145
150
  };
146
- const handleMethodInPopup = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, method, params, }) {
151
+ const handleMethodInGlobalWallet = (_a) => __awaiter(void 0, [_a], void 0, function* ({ client, method, params, useIframe, }) {
147
152
  const currentEthereumNetworkId = getCurrentEthereumNetworkId(client);
148
153
  if (!currentEthereumNetworkId) {
149
154
  throw new Error('No network id found');
@@ -157,6 +162,7 @@ const handleMethodInPopup = (_a) => __awaiter(void 0, [_a], void 0, function* ({
157
162
  },
158
163
  connection: getActiveConnection(client),
159
164
  name: 'eth-request',
165
+ useIframe,
160
166
  })
161
167
  .catch(mapErrorToStandard);
162
168
  return data;
@@ -4,21 +4,14 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../_virtual/_tslib.cjs');
7
- var utils = require('@dynamic-labs/utils');
8
7
  require('eventemitter3');
9
8
  require('@dynamic-labs/logger');
10
9
  require('@dynamic-labs/store');
11
10
  require('../../errors/DisconnectError.cjs');
12
- var addVersionPostfixToUrl = require('../addVersionPostfixToUrl/addVersionPostfixToUrl.cjs');
13
- var _package = require('../../../../package.cjs');
14
- var getCenteredPopupFeatures = require('../getCenteredPopupFeatures/getCenteredPopupFeatures.cjs');
15
- var mergeAndEncryptParams = require('../mergeAndEncryptParams/mergeAndEncryptParams.cjs');
16
- var waitForPopupResponse = require('../waitForPopupResponse/waitForPopupResponse.cjs');
17
- var onPopupClose = require('../onPopupClose/onPopupClose.cjs');
18
- var PopupClosedError = require('../../errors/PopupClosedError.cjs');
11
+ var iframeWalletOpener = require('./methods/iframeWalletOpener.cjs');
12
+ var popupWalletOpener = require('./methods/popupWalletOpener.cjs');
19
13
  var getCore = require('../../client/getCore/getCore.cjs');
20
14
 
21
- const popupActionTimeout = 1000;
22
15
  /**
23
16
  * Adds a web wallet opener service to the client.
24
17
  * This service is used to open a popup to connect a wallet
@@ -27,120 +20,46 @@ const popupActionTimeout = 1000;
27
20
  const addWebWalletOpenerService = (client, globalWindow = global.window) => {
28
21
  var _a, _b, _c;
29
22
  const { developmentOptions, popupInfo, logger, registry, environmentId, eventEmitter, } = getCore.getCore(client);
23
+ const popupState = {
24
+ didOpenPopup: false,
25
+ lastActionId: null,
26
+ popup: null,
27
+ };
28
+ const iframeState = {
29
+ iframe: null,
30
+ lastActionId: null,
31
+ };
30
32
  const popupHeight = (_a = popupInfo.height) !== null && _a !== void 0 ? _a : 640;
31
33
  const popupWidth = (_b = popupInfo.width) !== null && _b !== void 0 ? _b : 420;
32
- let popup = null;
33
- let didOpenPopup = false;
34
- let lastActionId = null;
35
- const postfixPopupUrlWithVersion = (_c = developmentOptions.postfixPopupUrlWithVersion) !== null && _c !== void 0 ? _c : true;
36
- const popupUrl = postfixPopupUrlWithVersion
37
- ? addVersionPostfixToUrl.addVersionPostfixToUrl(_package.version, popupInfo.url)
38
- : popupInfo.url;
39
- const closePopup = () => {
40
- logger.logVerboseTroubleshootingMessage('closePopup', { lastActionId });
41
- popup === null || popup === void 0 ? void 0 : popup.close();
42
- popup = null;
43
- didOpenPopup = false;
44
- lastActionId = null;
45
- };
46
- /**
47
- * Close popup on page unload
48
- */
49
- if (typeof globalWindow !== 'undefined') {
50
- globalWindow.addEventListener('beforeunload', closePopup);
51
- }
52
- const popupOpener = (_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ args, name, connection, }) {
53
- logger.logVerboseTroubleshootingMessage('new popup action', {
54
- args,
55
- name,
34
+ const postfixUrlWithVersion = (_c = developmentOptions.postfixPopupUrlWithVersion) !== null && _c !== void 0 ? _c : true;
35
+ const walletOpener = (props) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
36
+ const iframeWalletOpener$1 = iframeWalletOpener.createIframeWalletOpener({
37
+ environmentId,
38
+ eventEmitter,
39
+ globalWindow,
40
+ iframeState,
41
+ logger,
42
+ popupInfo,
43
+ postfixUrlWithVersion,
56
44
  });
57
- // Used as a unique identifier for the action
58
- const actionId = new Date().getTime();
59
- lastActionId = actionId;
60
- const popupFinalUrl = new URL(popupUrl);
61
- const resultDeferredPromise = new utils.DeferredPromise();
62
- // Setup popup URL and data
63
- popupFinalUrl.hash = `/${name}`;
64
- popupFinalUrl.searchParams.set('provider_env_id', environmentId);
65
- // TODO: use PlatformService
66
- popupFinalUrl.searchParams.set('requester_origin', globalWindow.location.origin);
67
- if (popup === null) {
68
- const features = getCenteredPopupFeatures.getCenteredPopupFeatures({
69
- height: popupHeight,
70
- width: popupWidth,
71
- });
72
- // Open popup
73
- popup = globalWindow.open('', '_blank', features);
74
- }
75
- // Encrypt params if active connection is present
76
- if (args) {
77
- yield mergeAndEncryptParams.mergeAndEncryptParams(popupFinalUrl, args, connection);
78
- }
79
- if (popup === null) {
80
- throw new Error('Failed to open popup');
81
- }
82
- waitForPopupResponse.waitForPopupResponse({
83
- decode: (data) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
84
- if (connection && utils.isEncryptedMessage(data)) {
85
- const decryptedData = yield utils.decryptMessage(connection.sharedSecret, data.encryptedMessage, data.iv);
86
- return JSON.parse(decryptedData);
87
- }
88
- return data;
89
- }),
90
- onError: (error) => resultDeferredPromise.reject(error),
91
- onResponse: (response) => resultDeferredPromise.resolve(response.data),
92
- popupUrl: popupFinalUrl.toString(),
93
- });
94
- onPopupClose.onPopupClose(popup, () => {
95
- resultDeferredPromise.reject(new PopupClosedError.PopupClosedError());
45
+ const popupWalletOpener$1 = popupWalletOpener.createPopupWalletOpener({
46
+ environmentId,
47
+ eventEmitter,
48
+ globalWindow,
49
+ logger,
50
+ popupHeight,
51
+ popupInfo,
52
+ popupState,
53
+ popupWidth,
54
+ postfixUrlWithVersion,
96
55
  });
97
- /**
98
- * Assign action to popup
99
- */
100
- if (didOpenPopup) {
101
- popup === null || popup === void 0 ? void 0 : popup.postMessage({
102
- actionPath: popupFinalUrl.search + popupFinalUrl.hash,
103
- event: 'new-action',
104
- }, popupFinalUrl.origin);
56
+ if (props.useIframe) {
57
+ return iframeWalletOpener$1(props);
105
58
  }
106
- else {
107
- // Load popup
108
- popup.location = popupFinalUrl.href;
109
- }
110
- didOpenPopup = true;
111
- return resultDeferredPromise.promise
112
- .then((result) => {
113
- logger.logVerboseTroubleshootingMessage('popup action result', {
114
- actionId,
115
- lastActionId,
116
- result,
117
- });
118
- return result;
119
- })
120
- .catch((err) => {
121
- logger.logVerboseTroubleshootingMessage('popup action error', {
122
- actionId,
123
- err,
124
- lastActionId,
125
- });
126
- eventEmitter.emit('error', err);
127
- closePopup();
128
- throw err;
129
- })
130
- .finally(() => {
131
- /**
132
- * Sets a timeout to close the popup.
133
- * It will only no new actions were fired.
134
- */
135
- setTimeout(() => {
136
- if (lastActionId === actionId) {
137
- closePopup();
138
- }
139
- }, popupActionTimeout);
140
- });
59
+ return popupWalletOpener$1(props);
141
60
  });
142
61
  registry.set('walletOpenerService', {
143
- openWallet: popupOpener,
62
+ openWallet: walletOpener,
144
63
  });
145
64
  };
146
65
 
@@ -1,20 +1,13 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../_virtual/_tslib.js';
3
- import { DeferredPromise, isEncryptedMessage, decryptMessage } from '@dynamic-labs/utils';
4
3
  import 'eventemitter3';
5
4
  import '@dynamic-labs/logger';
6
5
  import '@dynamic-labs/store';
7
6
  import '../../errors/DisconnectError.js';
8
- import { addVersionPostfixToUrl } from '../addVersionPostfixToUrl/addVersionPostfixToUrl.js';
9
- import { version } from '../../../../package.js';
10
- import { getCenteredPopupFeatures } from '../getCenteredPopupFeatures/getCenteredPopupFeatures.js';
11
- import { mergeAndEncryptParams } from '../mergeAndEncryptParams/mergeAndEncryptParams.js';
12
- import { waitForPopupResponse } from '../waitForPopupResponse/waitForPopupResponse.js';
13
- import { onPopupClose } from '../onPopupClose/onPopupClose.js';
14
- import { PopupClosedError } from '../../errors/PopupClosedError.js';
7
+ import { createIframeWalletOpener } from './methods/iframeWalletOpener.js';
8
+ import { createPopupWalletOpener } from './methods/popupWalletOpener.js';
15
9
  import { getCore } from '../../client/getCore/getCore.js';
16
10
 
17
- const popupActionTimeout = 1000;
18
11
  /**
19
12
  * Adds a web wallet opener service to the client.
20
13
  * This service is used to open a popup to connect a wallet
@@ -23,120 +16,46 @@ const popupActionTimeout = 1000;
23
16
  const addWebWalletOpenerService = (client, globalWindow = global.window) => {
24
17
  var _a, _b, _c;
25
18
  const { developmentOptions, popupInfo, logger, registry, environmentId, eventEmitter, } = getCore(client);
19
+ const popupState = {
20
+ didOpenPopup: false,
21
+ lastActionId: null,
22
+ popup: null,
23
+ };
24
+ const iframeState = {
25
+ iframe: null,
26
+ lastActionId: null,
27
+ };
26
28
  const popupHeight = (_a = popupInfo.height) !== null && _a !== void 0 ? _a : 640;
27
29
  const popupWidth = (_b = popupInfo.width) !== null && _b !== void 0 ? _b : 420;
28
- let popup = null;
29
- let didOpenPopup = false;
30
- let lastActionId = null;
31
- const postfixPopupUrlWithVersion = (_c = developmentOptions.postfixPopupUrlWithVersion) !== null && _c !== void 0 ? _c : true;
32
- const popupUrl = postfixPopupUrlWithVersion
33
- ? addVersionPostfixToUrl(version, popupInfo.url)
34
- : popupInfo.url;
35
- const closePopup = () => {
36
- logger.logVerboseTroubleshootingMessage('closePopup', { lastActionId });
37
- popup === null || popup === void 0 ? void 0 : popup.close();
38
- popup = null;
39
- didOpenPopup = false;
40
- lastActionId = null;
41
- };
42
- /**
43
- * Close popup on page unload
44
- */
45
- if (typeof globalWindow !== 'undefined') {
46
- globalWindow.addEventListener('beforeunload', closePopup);
47
- }
48
- const popupOpener = (_d) => __awaiter(void 0, [_d], void 0, function* ({ args, name, connection, }) {
49
- logger.logVerboseTroubleshootingMessage('new popup action', {
50
- args,
51
- name,
30
+ const postfixUrlWithVersion = (_c = developmentOptions.postfixPopupUrlWithVersion) !== null && _c !== void 0 ? _c : true;
31
+ const walletOpener = (props) => __awaiter(void 0, void 0, void 0, function* () {
32
+ const iframeWalletOpener = createIframeWalletOpener({
33
+ environmentId,
34
+ eventEmitter,
35
+ globalWindow,
36
+ iframeState,
37
+ logger,
38
+ popupInfo,
39
+ postfixUrlWithVersion,
52
40
  });
53
- // Used as a unique identifier for the action
54
- const actionId = new Date().getTime();
55
- lastActionId = actionId;
56
- const popupFinalUrl = new URL(popupUrl);
57
- const resultDeferredPromise = new DeferredPromise();
58
- // Setup popup URL and data
59
- popupFinalUrl.hash = `/${name}`;
60
- popupFinalUrl.searchParams.set('provider_env_id', environmentId);
61
- // TODO: use PlatformService
62
- popupFinalUrl.searchParams.set('requester_origin', globalWindow.location.origin);
63
- if (popup === null) {
64
- const features = getCenteredPopupFeatures({
65
- height: popupHeight,
66
- width: popupWidth,
67
- });
68
- // Open popup
69
- popup = globalWindow.open('', '_blank', features);
70
- }
71
- // Encrypt params if active connection is present
72
- if (args) {
73
- yield mergeAndEncryptParams(popupFinalUrl, args, connection);
74
- }
75
- if (popup === null) {
76
- throw new Error('Failed to open popup');
77
- }
78
- waitForPopupResponse({
79
- decode: (data) => __awaiter(void 0, void 0, void 0, function* () {
80
- if (connection && isEncryptedMessage(data)) {
81
- const decryptedData = yield decryptMessage(connection.sharedSecret, data.encryptedMessage, data.iv);
82
- return JSON.parse(decryptedData);
83
- }
84
- return data;
85
- }),
86
- onError: (error) => resultDeferredPromise.reject(error),
87
- onResponse: (response) => resultDeferredPromise.resolve(response.data),
88
- popupUrl: popupFinalUrl.toString(),
89
- });
90
- onPopupClose(popup, () => {
91
- resultDeferredPromise.reject(new PopupClosedError());
41
+ const popupWalletOpener = createPopupWalletOpener({
42
+ environmentId,
43
+ eventEmitter,
44
+ globalWindow,
45
+ logger,
46
+ popupHeight,
47
+ popupInfo,
48
+ popupState,
49
+ popupWidth,
50
+ postfixUrlWithVersion,
92
51
  });
93
- /**
94
- * Assign action to popup
95
- */
96
- if (didOpenPopup) {
97
- popup === null || popup === void 0 ? void 0 : popup.postMessage({
98
- actionPath: popupFinalUrl.search + popupFinalUrl.hash,
99
- event: 'new-action',
100
- }, popupFinalUrl.origin);
52
+ if (props.useIframe) {
53
+ return iframeWalletOpener(props);
101
54
  }
102
- else {
103
- // Load popup
104
- popup.location = popupFinalUrl.href;
105
- }
106
- didOpenPopup = true;
107
- return resultDeferredPromise.promise
108
- .then((result) => {
109
- logger.logVerboseTroubleshootingMessage('popup action result', {
110
- actionId,
111
- lastActionId,
112
- result,
113
- });
114
- return result;
115
- })
116
- .catch((err) => {
117
- logger.logVerboseTroubleshootingMessage('popup action error', {
118
- actionId,
119
- err,
120
- lastActionId,
121
- });
122
- eventEmitter.emit('error', err);
123
- closePopup();
124
- throw err;
125
- })
126
- .finally(() => {
127
- /**
128
- * Sets a timeout to close the popup.
129
- * It will only no new actions were fired.
130
- */
131
- setTimeout(() => {
132
- if (lastActionId === actionId) {
133
- closePopup();
134
- }
135
- }, popupActionTimeout);
136
- });
55
+ return popupWalletOpener(props);
137
56
  });
138
57
  registry.set('walletOpenerService', {
139
- openWallet: popupOpener,
58
+ openWallet: walletOpener,
140
59
  });
141
60
  };
142
61