@dynamic-labs/global-wallet-client 4.19.2 → 4.19.4

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/CHANGELOG.md +9 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +19 -7
  5. package/src/lib/client/createCore/createCore.cjs +8 -15
  6. package/src/lib/client/createCore/createCore.d.ts +7 -2
  7. package/src/lib/client/createCore/createCore.js +8 -15
  8. package/src/lib/client/createGlobalWalletClient/createGlobalWalletClient.cjs +2 -0
  9. package/src/lib/client/createGlobalWalletClient/createGlobalWalletClient.js +2 -0
  10. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.cjs +6 -6
  11. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.js +6 -6
  12. package/src/lib/functions/{createPopupOpener/createPopupOpener.cjs → addWebWalletOpenerService/addWebWalletOpenerService.cjs} +39 -17
  13. package/src/lib/functions/addWebWalletOpenerService/addWebWalletOpenerService.d.ts +7 -0
  14. package/src/lib/functions/{createPopupOpener/createPopupOpener.js → addWebWalletOpenerService/addWebWalletOpenerService.js} +35 -13
  15. package/src/lib/functions/addWebWalletOpenerService/index.d.ts +1 -0
  16. package/src/lib/functions/clearStore/clearStore.cjs +1 -1
  17. package/src/lib/functions/clearStore/clearStore.js +1 -1
  18. package/src/lib/functions/connect/connect.cjs +5 -5
  19. package/src/lib/functions/connect/connect.js +5 -5
  20. package/src/lib/functions/createRegistry/createRegistry.cjs +24 -0
  21. package/src/lib/functions/createRegistry/createRegistry.d.ts +6 -0
  22. package/src/lib/functions/createRegistry/createRegistry.js +20 -0
  23. package/src/lib/functions/createRegistry/index.d.ts +1 -0
  24. package/src/lib/functions/createWalletOpener/createWalletOpener.cjs +11 -0
  25. package/src/lib/functions/createWalletOpener/createWalletOpener.d.ts +12 -0
  26. package/src/lib/functions/createWalletOpener/createWalletOpener.js +7 -0
  27. package/src/lib/functions/createWalletOpener/index.d.ts +1 -0
  28. package/src/lib/functions/createZksyncSession/createZksyncSession.cjs +55 -0
  29. package/src/lib/functions/createZksyncSession/createZksyncSession.d.ts +25 -0
  30. package/src/lib/functions/createZksyncSession/createZksyncSession.js +51 -0
  31. package/src/lib/functions/createZksyncSession/index.d.ts +1 -0
  32. package/src/lib/functions/disconnect/disconnect.cjs +3 -3
  33. package/src/lib/functions/disconnect/disconnect.js +3 -3
  34. package/src/lib/functions/getActiveConnection/getActiveConnection.cjs +2 -2
  35. package/src/lib/functions/getActiveConnection/getActiveConnection.js +2 -2
  36. package/src/lib/functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.cjs +1 -1
  37. package/src/lib/functions/getCurrentEthereumNetworkId/getCurrentEthereumNetworkId.js +1 -1
  38. package/src/lib/functions/getCurrentSolanaNetwork/getCurrentSolanaNetwork.cjs +1 -1
  39. package/src/lib/functions/getCurrentSolanaNetwork/getCurrentSolanaNetwork.js +1 -1
  40. package/src/lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.cjs +1 -1
  41. package/src/lib/functions/getSupportedEthereumNetworks/getSupportedEthereumNetworks.js +1 -1
  42. package/src/lib/functions/getWalletNetwork/getWalletNetwork.cjs +1 -1
  43. package/src/lib/functions/getWalletNetwork/getWalletNetwork.js +1 -1
  44. package/src/lib/functions/listZksyncSessions/index.d.ts +1 -0
  45. package/src/lib/functions/listZksyncSessions/listZksyncSessions.cjs +54 -0
  46. package/src/lib/functions/listZksyncSessions/listZksyncSessions.d.ts +25 -0
  47. package/src/lib/functions/listZksyncSessions/listZksyncSessions.js +50 -0
  48. package/src/lib/functions/onEvent/onEvent.cjs +1 -1
  49. package/src/lib/functions/onEvent/onEvent.js +1 -1
  50. package/src/lib/functions/revokeZksyncSession/index.d.ts +1 -0
  51. package/src/lib/functions/revokeZksyncSession/revokeZksyncSession.cjs +54 -0
  52. package/src/lib/functions/revokeZksyncSession/revokeZksyncSession.d.ts +21 -0
  53. package/src/lib/functions/revokeZksyncSession/revokeZksyncSession.js +50 -0
  54. package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.cjs +1 -1
  55. package/src/lib/functions/setInitialConnectionState/setInitialConnectionState.js +1 -1
  56. package/src/lib/functions/signEthereumMessage/signEthereumMessage.cjs +5 -5
  57. package/src/lib/functions/signEthereumMessage/signEthereumMessage.js +5 -5
  58. package/src/lib/functions/signSolanaMessage/signSolanaMessage.cjs +5 -5
  59. package/src/lib/functions/signSolanaMessage/signSolanaMessage.js +5 -5
  60. package/src/lib/functions/switchEthereumNetwork/switchEthereumNetwork.cjs +2 -2
  61. package/src/lib/functions/switchEthereumNetwork/switchEthereumNetwork.js +2 -2
  62. package/src/lib/functions/switchNetwork/switchNetwork.cjs +1 -1
  63. package/src/lib/functions/switchNetwork/switchNetwork.js +1 -1
  64. package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.cjs +5 -5
  65. package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.js +5 -5
  66. package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.cjs +5 -5
  67. package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.js +5 -5
  68. package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.cjs +5 -5
  69. package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.js +5 -5
  70. package/src/zksync.cjs +14 -0
  71. package/src/zksync.d.ts +3 -0
  72. package/src/zksync.js +4 -0
  73. package/src/lib/functions/createPopupOpener/createPopupOpener.d.ts +0 -18
  74. package/src/lib/functions/createPopupOpener/index.d.ts +0 -1
  75. package/src/lib/functions/createPopupOpener/utils/mapErrorFromPopup.d.ts +0 -4
package/CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
1
 
2
+ ### [4.19.4](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.3...v4.19.4) (2025-05-31)
3
+
4
+ ### [4.19.3](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.2...v4.19.3) (2025-05-28)
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * rerender issue with Slush wallet pop up appearing multiple times ([#8817](https://github.com/dynamic-labs/dynamic-auth/issues/8817)) ([bea0da6](https://github.com/dynamic-labs/dynamic-auth/commit/bea0da647bab983610ebbf18a6ca66ba0ac569bf))
10
+
2
11
  ### [4.19.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.1...v4.19.2) (2025-05-27)
3
12
 
4
13
 
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.2";
6
+ var version = "4.19.4";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.19.2";
2
+ var version = "4.19.4";
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.2",
3
+ "version": "4.19.4",
4
4
  "description": "Core package for building Dynamic's Global Wallet",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -19,6 +19,9 @@
19
19
  ],
20
20
  "features": [
21
21
  "./src/features.d.ts"
22
+ ],
23
+ "zksync": [
24
+ "./src/zksync.d.ts"
22
25
  ]
23
26
  }
24
27
  },
@@ -43,16 +46,21 @@
43
46
  "import": "./src/features.js",
44
47
  "default": "./src/features.cjs"
45
48
  },
49
+ "./zksync": {
50
+ "types": "./src/zksync.d.ts",
51
+ "import": "./src/zksync.js",
52
+ "default": "./src/zksync.cjs"
53
+ },
46
54
  "./package.json": "./package.json"
47
55
  },
48
56
  "homepage": "https://www.dynamic.xyz/",
49
57
  "dependencies": {
50
- "@dynamic-labs/assert-package-version": "4.19.2",
51
- "@dynamic-labs/logger": "4.19.2",
52
- "@dynamic-labs/message-transport": "4.19.2",
53
- "@dynamic-labs/store": "4.19.2",
54
- "@dynamic-labs/types": "4.19.2",
55
- "@dynamic-labs/utils": "4.19.2",
58
+ "@dynamic-labs/assert-package-version": "4.19.4",
59
+ "@dynamic-labs/logger": "4.19.4",
60
+ "@dynamic-labs/message-transport": "4.19.4",
61
+ "@dynamic-labs/store": "4.19.4",
62
+ "@dynamic-labs/types": "4.19.4",
63
+ "@dynamic-labs/utils": "4.19.4",
56
64
  "eventemitter3": "5.0.1"
57
65
  },
58
66
  "peerDependencies": {
@@ -61,12 +69,16 @@
61
69
  "@solana/wallet-standard-features": "^1.2.0",
62
70
  "@wallet-standard/features": "^1.0.3",
63
71
  "@wallet-standard/base": "^1.0.1",
72
+ "zksync-sso": "0.2.0",
64
73
  "@wallet-standard/wallet": "^1.1.0"
65
74
  },
66
75
  "peerDependenciesMeta": {
67
76
  "viem": {
68
77
  "optional": true
69
78
  },
79
+ "zksync-sso": {
80
+ "optional": true
81
+ },
70
82
  "@solana/web3.js": {
71
83
  "optional": true
72
84
  },
@@ -8,32 +8,25 @@ var logger = require('@dynamic-labs/logger');
8
8
  var fakeStorage = require('../../constants/fakeStorage/fakeStorage.cjs');
9
9
  var createClientStore = require('../createClientStore/createClientStore.cjs');
10
10
  var isSSR = require('../../functions/isSSR/isSSR.cjs');
11
- var addVersionPostfixToUrl = require('../../functions/addVersionPostfixToUrl/addVersionPostfixToUrl.cjs');
12
- var _package = require('../../../../package.cjs');
13
- var createPopupOpener = require('../../functions/createPopupOpener/createPopupOpener.cjs');
11
+ var createRegistry = require('../../functions/createRegistry/createRegistry.cjs');
12
+ var createWalletOpener = require('../../functions/createWalletOpener/createWalletOpener.cjs');
14
13
 
15
14
  const createCore = ({ environmentId, popupInfo, developmentOptions, }) => {
16
- var _a;
17
15
  const eventEmitter = new eventemitter3.EventEmitter();
18
16
  const logger$1 = new logger.Logger('@dynamic-labs/global-wallet-client');
17
+ const registry = createRegistry.createRegistry();
19
18
  const store = createClientStore.createClientStore({
20
19
  environmentId,
21
20
  storage: isSSR.isSSR() ? fakeStorage.fakeStorage : localStorage,
22
21
  });
23
- const postfixPopupUrlWithVersion = (_a = developmentOptions.postfixPopupUrlWithVersion) !== null && _a !== void 0 ? _a : true;
24
- const popupUrl = postfixPopupUrlWithVersion
25
- ? addVersionPostfixToUrl.addVersionPostfixToUrl(_package.version, popupInfo.url)
26
- : popupInfo.url;
27
- const request = createPopupOpener.createPopupOpener({
28
- environmentId,
29
- onError: (error) => eventEmitter.emit('error', error),
30
- popupHeight: popupInfo.height,
31
- popupUrl,
32
- popupWidth: popupInfo.width,
33
- });
22
+ const request = createWalletOpener.createWalletOpener(registry);
34
23
  return {
24
+ developmentOptions,
25
+ environmentId,
35
26
  eventEmitter,
36
27
  logger: logger$1,
28
+ popupInfo,
29
+ registry,
37
30
  request,
38
31
  store,
39
32
  };
@@ -3,12 +3,17 @@ import { Logger } from '@dynamic-labs/logger';
3
3
  import { ClientStore } from '../createClientStore';
4
4
  import { ClientEventEmitterEvents } from '../types';
5
5
  import { DevelopmentOptions, PopupInfo } from '../../types';
6
- import { PopupOpener } from '../../functions/createPopupOpener';
6
+ import { Registry } from '../../functions/createRegistry/createRegistry';
7
+ import { type WalletOpener } from '../../functions/createWalletOpener';
7
8
  export type Core = {
8
9
  eventEmitter: EventEmitter<ClientEventEmitterEvents>;
9
10
  logger: Logger;
10
- request: PopupOpener;
11
11
  store: ClientStore;
12
+ popupInfo: PopupInfo;
13
+ developmentOptions: DevelopmentOptions;
14
+ environmentId: string;
15
+ registry: Registry;
16
+ request: WalletOpener;
12
17
  };
13
18
  type CreateCoreProps = {
14
19
  environmentId: string;
@@ -4,32 +4,25 @@ import { Logger } from '@dynamic-labs/logger';
4
4
  import { fakeStorage } from '../../constants/fakeStorage/fakeStorage.js';
5
5
  import { createClientStore } from '../createClientStore/createClientStore.js';
6
6
  import { isSSR } from '../../functions/isSSR/isSSR.js';
7
- import { addVersionPostfixToUrl } from '../../functions/addVersionPostfixToUrl/addVersionPostfixToUrl.js';
8
- import { version } from '../../../../package.js';
9
- import { createPopupOpener } from '../../functions/createPopupOpener/createPopupOpener.js';
7
+ import { createRegistry } from '../../functions/createRegistry/createRegistry.js';
8
+ import { createWalletOpener } from '../../functions/createWalletOpener/createWalletOpener.js';
10
9
 
11
10
  const createCore = ({ environmentId, popupInfo, developmentOptions, }) => {
12
- var _a;
13
11
  const eventEmitter = new EventEmitter();
14
12
  const logger = new Logger('@dynamic-labs/global-wallet-client');
13
+ const registry = createRegistry();
15
14
  const store = createClientStore({
16
15
  environmentId,
17
16
  storage: isSSR() ? fakeStorage : localStorage,
18
17
  });
19
- const postfixPopupUrlWithVersion = (_a = developmentOptions.postfixPopupUrlWithVersion) !== null && _a !== void 0 ? _a : true;
20
- const popupUrl = postfixPopupUrlWithVersion
21
- ? addVersionPostfixToUrl(version, popupInfo.url)
22
- : popupInfo.url;
23
- const request = createPopupOpener({
24
- environmentId,
25
- onError: (error) => eventEmitter.emit('error', error),
26
- popupHeight: popupInfo.height,
27
- popupUrl,
28
- popupWidth: popupInfo.width,
29
- });
18
+ const request = createWalletOpener(registry);
30
19
  return {
20
+ developmentOptions,
21
+ environmentId,
31
22
  eventEmitter,
32
23
  logger,
24
+ popupInfo,
25
+ registry,
33
26
  request,
34
27
  store,
35
28
  };
@@ -9,6 +9,7 @@ var onEvent = require('../../functions/onEvent/onEvent.cjs');
9
9
  var disconnect = require('../../functions/disconnect/disconnect.cjs');
10
10
  var DisconnectError = require('../../errors/DisconnectError.cjs');
11
11
  var assignClient = require('../assignClient/assignClient.cjs');
12
+ var addWebWalletOpenerService = require('../../functions/addWebWalletOpenerService/addWebWalletOpenerService.cjs');
12
13
 
13
14
  const createGlobalWalletClient = ({ environmentId, popup: popupInfo, developmentOptions = {}, }) => {
14
15
  const core = createCore.createCore({
@@ -29,6 +30,7 @@ const createGlobalWalletClient = ({ environmentId, popup: popupInfo, development
29
30
  disconnect.disconnect(clientWithCore);
30
31
  }
31
32
  });
33
+ addWebWalletOpenerService.addWebWalletOpenerService(clientWithCore);
32
34
  return clientWithCore;
33
35
  };
34
36
 
@@ -5,6 +5,7 @@ import { onEvent } from '../../functions/onEvent/onEvent.js';
5
5
  import { disconnect } from '../../functions/disconnect/disconnect.js';
6
6
  import { DisconnectError } from '../../errors/DisconnectError.js';
7
7
  import { assignClient } from '../assignClient/assignClient.js';
8
+ import { addWebWalletOpenerService } from '../../functions/addWebWalletOpenerService/addWebWalletOpenerService.js';
8
9
 
9
10
  const createGlobalWalletClient = ({ environmentId, popup: popupInfo, developmentOptions = {}, }) => {
10
11
  const core = createCore({
@@ -25,6 +26,7 @@ const createGlobalWalletClient = ({ environmentId, popup: popupInfo, development
25
26
  disconnect(clientWithCore);
26
27
  }
27
28
  });
29
+ addWebWalletOpenerService(clientWithCore);
28
30
  return clientWithCore;
29
31
  };
30
32
 
@@ -8,12 +8,12 @@ var viem = require('viem');
8
8
  var eventemitter3 = require('eventemitter3');
9
9
  require('@dynamic-labs/logger');
10
10
  require('@dynamic-labs/store');
11
+ var onEvent = require('../../../functions/onEvent/onEvent.cjs');
12
+ var disconnect = require('../../../functions/disconnect/disconnect.cjs');
13
+ var DisconnectError = require('../../../errors/DisconnectError.cjs');
11
14
  require('@dynamic-labs/utils');
12
15
  var logger = require('../../../constants/logger.cjs');
13
- var DisconnectError = require('../../../errors/DisconnectError.cjs');
14
16
  var PopupClosedError = require('../../../errors/PopupClosedError.cjs');
15
- var onEvent = require('../../../functions/onEvent/onEvent.cjs');
16
- var disconnect = require('../../../functions/disconnect/disconnect.cjs');
17
17
  var getCore = require('../../../client/getCore/getCore.cjs');
18
18
  var isEthereumNetworkSupported = require('../../../functions/isEthereumNetworkSupported/isEthereumNetworkSupported.cjs');
19
19
  var connect = require('../../../functions/connect/connect.cjs');
@@ -154,13 +154,13 @@ const handleMethodInPopup = (_a) => _tslib.__awaiter(void 0, [_a], void 0, funct
154
154
  }
155
155
  const { data } = yield getCore.getCore(client)
156
156
  .request({
157
- connection: getActiveConnection.getActiveConnection(client),
158
- params: {
157
+ args: {
159
158
  chainId: currentEthereumNetworkId,
160
159
  method,
161
160
  params,
162
161
  },
163
- pathname: 'eth-request',
162
+ connection: getActiveConnection.getActiveConnection(client),
163
+ name: 'eth-request',
164
164
  })
165
165
  .catch(mapErrorToStandard);
166
166
  return data;
@@ -4,12 +4,12 @@ import { toHex, ProviderDisconnectedError, http, UnsupportedProviderMethodError,
4
4
  import { EventEmitter } from 'eventemitter3';
5
5
  import '@dynamic-labs/logger';
6
6
  import '@dynamic-labs/store';
7
+ import { onEvent } from '../../../functions/onEvent/onEvent.js';
8
+ import { disconnect } from '../../../functions/disconnect/disconnect.js';
9
+ import { DisconnectError } from '../../../errors/DisconnectError.js';
7
10
  import '@dynamic-labs/utils';
8
11
  import { logger } from '../../../constants/logger.js';
9
- import { DisconnectError } from '../../../errors/DisconnectError.js';
10
12
  import { PopupClosedError } from '../../../errors/PopupClosedError.js';
11
- import { onEvent } from '../../../functions/onEvent/onEvent.js';
12
- import { disconnect } from '../../../functions/disconnect/disconnect.js';
13
13
  import { getCore } from '../../../client/getCore/getCore.js';
14
14
  import { isEthereumNetworkSupported } from '../../../functions/isEthereumNetworkSupported/isEthereumNetworkSupported.js';
15
15
  import { connect } from '../../../functions/connect/connect.js';
@@ -150,13 +150,13 @@ const handleMethodInPopup = (_a) => __awaiter(void 0, [_a], void 0, function* ({
150
150
  }
151
151
  const { data } = yield getCore(client)
152
152
  .request({
153
- connection: getActiveConnection(client),
154
- params: {
153
+ args: {
155
154
  chainId: currentEthereumNetworkId,
156
155
  method,
157
156
  params,
158
157
  },
159
- pathname: 'eth-request',
158
+ connection: getActiveConnection(client),
159
+ name: 'eth-request',
160
160
  })
161
161
  .catch(mapErrorToStandard);
162
162
  return data;
@@ -5,20 +5,39 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../_virtual/_tslib.cjs');
7
7
  var utils = require('@dynamic-labs/utils');
8
+ require('eventemitter3');
9
+ require('@dynamic-labs/logger');
10
+ require('@dynamic-labs/store');
11
+ 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');
8
16
  var waitForPopupResponse = require('../waitForPopupResponse/waitForPopupResponse.cjs');
9
17
  var onPopupClose = require('../onPopupClose/onPopupClose.cjs');
10
- var mergeAndEncryptParams = require('../mergeAndEncryptParams/mergeAndEncryptParams.cjs');
11
- var getCenteredPopupFeatures = require('../getCenteredPopupFeatures/getCenteredPopupFeatures.cjs');
12
18
  var PopupClosedError = require('../../errors/PopupClosedError.cjs');
13
- var logger = require('../../constants/logger.cjs');
19
+ var getCore = require('../../client/getCore/getCore.cjs');
14
20
 
15
- const createPopupOpener = ({ environmentId, popupUrl, popupWidth = 420, popupHeight = 640, popupActionTimeout = 1000, // Wait page up to 1 second for new actions before closing
16
- onError, globalWindow = global.window, }) => {
21
+ const popupActionTimeout = 1000;
22
+ /**
23
+ * Adds a web wallet opener service to the client.
24
+ * This service is used to open a popup to connect a wallet
25
+ * and other wallet-related actions.
26
+ */
27
+ const addWebWalletOpenerService = (client, globalWindow = global.window) => {
28
+ var _a, _b, _c;
29
+ const { developmentOptions, popupInfo, logger, registry, environmentId, eventEmitter, } = getCore.getCore(client);
30
+ const popupHeight = (_a = popupInfo.height) !== null && _a !== void 0 ? _a : 640;
31
+ const popupWidth = (_b = popupInfo.width) !== null && _b !== void 0 ? _b : 420;
17
32
  let popup = null;
18
33
  let didOpenPopup = false;
19
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;
20
39
  const closePopup = () => {
21
- logger.logger.logVerboseTroubleshootingMessage('closePopup', { lastActionId });
40
+ logger.logVerboseTroubleshootingMessage('closePopup', { lastActionId });
22
41
  popup === null || popup === void 0 ? void 0 : popup.close();
23
42
  popup = null;
24
43
  didOpenPopup = false;
@@ -30,10 +49,10 @@ onError, globalWindow = global.window, }) => {
30
49
  if (typeof globalWindow !== 'undefined') {
31
50
  globalWindow.addEventListener('beforeunload', closePopup);
32
51
  }
33
- return (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ params, pathname, connection, }) {
34
- logger.logger.logVerboseTroubleshootingMessage('new popup action', {
35
- params,
36
- pathname,
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,
37
56
  });
38
57
  // Used as a unique identifier for the action
39
58
  const actionId = new Date().getTime();
@@ -41,7 +60,7 @@ onError, globalWindow = global.window, }) => {
41
60
  const popupFinalUrl = new URL(popupUrl);
42
61
  const resultDeferredPromise = new utils.DeferredPromise();
43
62
  // Setup popup URL and data
44
- popupFinalUrl.hash = `/${pathname}`;
63
+ popupFinalUrl.hash = `/${name}`;
45
64
  popupFinalUrl.searchParams.set('provider_env_id', environmentId);
46
65
  // TODO: use PlatformService
47
66
  popupFinalUrl.searchParams.set('requester_origin', globalWindow.location.origin);
@@ -54,8 +73,8 @@ onError, globalWindow = global.window, }) => {
54
73
  popup = globalWindow.open('', '_blank', features);
55
74
  }
56
75
  // Encrypt params if active connection is present
57
- if (params) {
58
- yield mergeAndEncryptParams.mergeAndEncryptParams(popupFinalUrl, params, connection);
76
+ if (args) {
77
+ yield mergeAndEncryptParams.mergeAndEncryptParams(popupFinalUrl, args, connection);
59
78
  }
60
79
  if (popup === null) {
61
80
  throw new Error('Failed to open popup');
@@ -91,7 +110,7 @@ onError, globalWindow = global.window, }) => {
91
110
  didOpenPopup = true;
92
111
  return resultDeferredPromise.promise
93
112
  .then((result) => {
94
- logger.logger.logVerboseTroubleshootingMessage('popup action result', {
113
+ logger.logVerboseTroubleshootingMessage('popup action result', {
95
114
  actionId,
96
115
  lastActionId,
97
116
  result,
@@ -99,12 +118,12 @@ onError, globalWindow = global.window, }) => {
99
118
  return result;
100
119
  })
101
120
  .catch((err) => {
102
- logger.logger.logVerboseTroubleshootingMessage('popup action error', {
121
+ logger.logVerboseTroubleshootingMessage('popup action error', {
103
122
  actionId,
104
123
  err,
105
124
  lastActionId,
106
125
  });
107
- onError === null || onError === void 0 ? void 0 : onError(err);
126
+ eventEmitter.emit('error', err);
108
127
  closePopup();
109
128
  throw err;
110
129
  })
@@ -120,6 +139,9 @@ onError, globalWindow = global.window, }) => {
120
139
  }, popupActionTimeout);
121
140
  });
122
141
  });
142
+ registry.set('walletOpenerService', {
143
+ openWallet: popupOpener,
144
+ });
123
145
  };
124
146
 
125
- exports.createPopupOpener = createPopupOpener;
147
+ exports.addWebWalletOpenerService = addWebWalletOpenerService;
@@ -0,0 +1,7 @@
1
+ import { GlobalWalletClient } from '../../client';
2
+ /**
3
+ * Adds a web wallet opener service to the client.
4
+ * This service is used to open a popup to connect a wallet
5
+ * and other wallet-related actions.
6
+ */
7
+ export declare const addWebWalletOpenerService: (client: GlobalWalletClient, globalWindow?: Window) => void;
@@ -1,18 +1,37 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../_virtual/_tslib.js';
3
3
  import { DeferredPromise, isEncryptedMessage, decryptMessage } from '@dynamic-labs/utils';
4
+ import 'eventemitter3';
5
+ import '@dynamic-labs/logger';
6
+ import '@dynamic-labs/store';
7
+ 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';
4
12
  import { waitForPopupResponse } from '../waitForPopupResponse/waitForPopupResponse.js';
5
13
  import { onPopupClose } from '../onPopupClose/onPopupClose.js';
6
- import { mergeAndEncryptParams } from '../mergeAndEncryptParams/mergeAndEncryptParams.js';
7
- import { getCenteredPopupFeatures } from '../getCenteredPopupFeatures/getCenteredPopupFeatures.js';
8
14
  import { PopupClosedError } from '../../errors/PopupClosedError.js';
9
- import { logger } from '../../constants/logger.js';
15
+ import { getCore } from '../../client/getCore/getCore.js';
10
16
 
11
- const createPopupOpener = ({ environmentId, popupUrl, popupWidth = 420, popupHeight = 640, popupActionTimeout = 1000, // Wait page up to 1 second for new actions before closing
12
- onError, globalWindow = global.window, }) => {
17
+ const popupActionTimeout = 1000;
18
+ /**
19
+ * Adds a web wallet opener service to the client.
20
+ * This service is used to open a popup to connect a wallet
21
+ * and other wallet-related actions.
22
+ */
23
+ const addWebWalletOpenerService = (client, globalWindow = global.window) => {
24
+ var _a, _b, _c;
25
+ const { developmentOptions, popupInfo, logger, registry, environmentId, eventEmitter, } = getCore(client);
26
+ const popupHeight = (_a = popupInfo.height) !== null && _a !== void 0 ? _a : 640;
27
+ const popupWidth = (_b = popupInfo.width) !== null && _b !== void 0 ? _b : 420;
13
28
  let popup = null;
14
29
  let didOpenPopup = false;
15
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;
16
35
  const closePopup = () => {
17
36
  logger.logVerboseTroubleshootingMessage('closePopup', { lastActionId });
18
37
  popup === null || popup === void 0 ? void 0 : popup.close();
@@ -26,10 +45,10 @@ onError, globalWindow = global.window, }) => {
26
45
  if (typeof globalWindow !== 'undefined') {
27
46
  globalWindow.addEventListener('beforeunload', closePopup);
28
47
  }
29
- return (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, pathname, connection, }) {
48
+ const popupOpener = (_d) => __awaiter(void 0, [_d], void 0, function* ({ args, name, connection, }) {
30
49
  logger.logVerboseTroubleshootingMessage('new popup action', {
31
- params,
32
- pathname,
50
+ args,
51
+ name,
33
52
  });
34
53
  // Used as a unique identifier for the action
35
54
  const actionId = new Date().getTime();
@@ -37,7 +56,7 @@ onError, globalWindow = global.window, }) => {
37
56
  const popupFinalUrl = new URL(popupUrl);
38
57
  const resultDeferredPromise = new DeferredPromise();
39
58
  // Setup popup URL and data
40
- popupFinalUrl.hash = `/${pathname}`;
59
+ popupFinalUrl.hash = `/${name}`;
41
60
  popupFinalUrl.searchParams.set('provider_env_id', environmentId);
42
61
  // TODO: use PlatformService
43
62
  popupFinalUrl.searchParams.set('requester_origin', globalWindow.location.origin);
@@ -50,8 +69,8 @@ onError, globalWindow = global.window, }) => {
50
69
  popup = globalWindow.open('', '_blank', features);
51
70
  }
52
71
  // Encrypt params if active connection is present
53
- if (params) {
54
- yield mergeAndEncryptParams(popupFinalUrl, params, connection);
72
+ if (args) {
73
+ yield mergeAndEncryptParams(popupFinalUrl, args, connection);
55
74
  }
56
75
  if (popup === null) {
57
76
  throw new Error('Failed to open popup');
@@ -100,7 +119,7 @@ onError, globalWindow = global.window, }) => {
100
119
  err,
101
120
  lastActionId,
102
121
  });
103
- onError === null || onError === void 0 ? void 0 : onError(err);
122
+ eventEmitter.emit('error', err);
104
123
  closePopup();
105
124
  throw err;
106
125
  })
@@ -116,6 +135,9 @@ onError, globalWindow = global.window, }) => {
116
135
  }, popupActionTimeout);
117
136
  });
118
137
  });
138
+ registry.set('walletOpenerService', {
139
+ openWallet: popupOpener,
140
+ });
119
141
  };
120
142
 
121
- export { createPopupOpener };
143
+ export { addWebWalletOpenerService };
@@ -0,0 +1 @@
1
+ export { addWebWalletOpenerService } from './addWebWalletOpenerService';
@@ -6,10 +6,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  require('eventemitter3');
7
7
  require('@dynamic-labs/logger');
8
8
  require('@dynamic-labs/store');
9
+ require('../../errors/DisconnectError.cjs');
9
10
  require('../../../../_virtual/_tslib.cjs');
10
11
  require('@dynamic-labs/utils');
11
12
  require('../../constants/logger.cjs');
12
- require('../../errors/DisconnectError.cjs');
13
13
  var getCore = require('../../client/getCore/getCore.cjs');
14
14
 
15
15
  /**
@@ -2,10 +2,10 @@
2
2
  import 'eventemitter3';
3
3
  import '@dynamic-labs/logger';
4
4
  import '@dynamic-labs/store';
5
+ import '../../errors/DisconnectError.js';
5
6
  import '../../../../_virtual/_tslib.js';
6
7
  import '@dynamic-labs/utils';
7
8
  import '../../constants/logger.js';
8
- import '../../errors/DisconnectError.js';
9
9
  import { getCore } from '../../client/getCore/getCore.js';
10
10
 
11
11
  /**
@@ -8,11 +8,11 @@ var utils = require('@dynamic-labs/utils');
8
8
  require('eventemitter3');
9
9
  require('@dynamic-labs/logger');
10
10
  require('@dynamic-labs/store');
11
- require('../../constants/logger.cjs');
12
- require('../../errors/DisconnectError.cjs');
13
11
  var clearStore = require('../clearStore/clearStore.cjs');
14
12
  var getActiveConnection = require('../getActiveConnection/getActiveConnection.cjs');
13
+ require('../../errors/DisconnectError.cjs');
15
14
  var assignClient = require('../../client/assignClient/assignClient.cjs');
15
+ require('../../constants/logger.cjs');
16
16
  var getCore = require('../../client/getCore/getCore.cjs');
17
17
  var setInitialConnectionState = require('../setInitialConnectionState/setInitialConnectionState.cjs');
18
18
 
@@ -34,11 +34,11 @@ const connect = (client) => _tslib.__awaiter(void 0, void 0, void 0, function* (
34
34
  clearStore.clearStore(client);
35
35
  const keyPair = yield utils.createKeyPair();
36
36
  const data = yield core.request({
37
- connection: getActiveConnection.getActiveConnection(client),
38
- params: {
37
+ args: {
39
38
  receiver_public_key: yield utils.convertPublicKeyCryptoKeyToHex(keyPair.publicKey),
40
39
  },
41
- pathname: 'connect',
40
+ connection: getActiveConnection.getActiveConnection(client),
41
+ name: 'connect',
42
42
  });
43
43
  const { encryptedMessage, expiresAt, iv, providerPublicKey } = data;
44
44
  const sharedSecret = yield utils.deriveSharedSecret(keyPair.privateKey, yield utils.convertPublicKeyHexToCryptoKey(providerPublicKey));
@@ -4,11 +4,11 @@ import { createKeyPair, convertPublicKeyCryptoKeyToHex, deriveSharedSecret, conv
4
4
  import 'eventemitter3';
5
5
  import '@dynamic-labs/logger';
6
6
  import '@dynamic-labs/store';
7
- import '../../constants/logger.js';
8
- import '../../errors/DisconnectError.js';
9
7
  import { clearStore } from '../clearStore/clearStore.js';
10
8
  import { getActiveConnection } from '../getActiveConnection/getActiveConnection.js';
9
+ import '../../errors/DisconnectError.js';
11
10
  import { assignClient } from '../../client/assignClient/assignClient.js';
11
+ import '../../constants/logger.js';
12
12
  import { getCore } from '../../client/getCore/getCore.js';
13
13
  import { setInitialConnectionState } from '../setInitialConnectionState/setInitialConnectionState.js';
14
14
 
@@ -30,11 +30,11 @@ const connect = (client) => __awaiter(void 0, void 0, void 0, function* () {
30
30
  clearStore(client);
31
31
  const keyPair = yield createKeyPair();
32
32
  const data = yield core.request({
33
- connection: getActiveConnection(client),
34
- params: {
33
+ args: {
35
34
  receiver_public_key: yield convertPublicKeyCryptoKeyToHex(keyPair.publicKey),
36
35
  },
37
- pathname: 'connect',
36
+ connection: getActiveConnection(client),
37
+ name: 'connect',
38
38
  });
39
39
  const { encryptedMessage, expiresAt, iv, providerPublicKey } = data;
40
40
  const sharedSecret = yield deriveSharedSecret(keyPair.privateKey, yield convertPublicKeyHexToCryptoKey(providerPublicKey));
@@ -0,0 +1,24 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const createRegistry = () => {
7
+ const registry = new Map();
8
+ return {
9
+ find: (key) => {
10
+ const value = registry.get(key);
11
+ return value;
12
+ },
13
+ get: (key) => {
14
+ const value = registry.get(key);
15
+ if (!value) {
16
+ throw new Error(`Value not found for key: ${key}`);
17
+ }
18
+ return value;
19
+ },
20
+ set: (key, value) => registry.set(key, value),
21
+ };
22
+ };
23
+
24
+ exports.createRegistry = createRegistry;
@@ -0,0 +1,6 @@
1
+ export type Registry = {
2
+ find: <T>(key: string) => T | null;
3
+ get: <T>(key: string) => T;
4
+ set: <T>(key: string, value: T) => void;
5
+ };
6
+ export declare const createRegistry: () => Registry;