@dynamic-labs/client 4.0.0-alpha.0 → 4.0.0-alpha.10

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 (47) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +6 -13
  5. package/src/client/client.cjs +2 -0
  6. package/src/client/client.d.ts +1 -1
  7. package/src/client/client.js +2 -0
  8. package/src/client/core/core.d.ts +6 -5
  9. package/src/client/core/modules/initializationModule/initializationModule.cjs +9 -1
  10. package/src/client/core/modules/initializationModule/initializationModule.js +9 -1
  11. package/src/client/core/modules/manifestModule/manifestModule.cjs +7 -3
  12. package/src/client/core/modules/manifestModule/manifestModule.d.ts +1 -1
  13. package/src/client/core/modules/manifestModule/manifestModule.js +5 -1
  14. package/src/index.cjs +3 -1
  15. package/src/index.d.ts +1 -1
  16. package/src/index.js +4 -0
  17. package/src/modules/authModule/authModule.cjs +8 -1
  18. package/src/modules/authModule/authModule.d.ts +8 -3
  19. package/src/modules/authModule/authModule.js +9 -2
  20. package/src/modules/authModule/emailAuthModule/emailAuthModule.cjs +7 -2
  21. package/src/modules/authModule/emailAuthModule/emailAuthModule.d.ts +3 -2
  22. package/src/modules/authModule/emailAuthModule/emailAuthModule.js +8 -3
  23. package/src/modules/authModule/smsAuthModule/smsAuthModule.cjs +7 -2
  24. package/src/modules/authModule/smsAuthModule/smsAuthModule.d.ts +3 -2
  25. package/src/modules/authModule/smsAuthModule/smsAuthModule.js +8 -3
  26. package/src/modules/networksModule/networksModule.d.ts +1 -1
  27. package/src/modules/userInterfaceModule/userInterfaceModule.cjs +9 -2
  28. package/src/modules/userInterfaceModule/userInterfaceModule.d.ts +33 -4
  29. package/src/modules/userInterfaceModule/userInterfaceModule.js +10 -3
  30. package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.cjs +17 -0
  31. package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.d.ts +14 -0
  32. package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.js +13 -0
  33. package/src/modules/walletsModule/accountAbstractionModule/index.d.ts +1 -0
  34. package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.cjs +31 -0
  35. package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.d.ts +8 -0
  36. package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.js +27 -0
  37. package/src/modules/walletsModule/createWalletListenerMethods/index.d.ts +1 -0
  38. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.cjs +2 -2
  39. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.d.ts +6 -3
  40. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.js +3 -3
  41. package/src/modules/walletsModule/walletsModule.cjs +19 -1
  42. package/src/modules/walletsModule/walletsModule.d.ts +14 -3
  43. package/src/modules/walletsModule/walletsModule.js +20 -2
  44. package/src/types.d.ts +2 -0
  45. package/src/utils/pickListenerActions/pickListenerActions.cjs +9 -3
  46. package/src/utils/pickListenerActions/pickListenerActions.d.ts +2 -1
  47. package/src/utils/pickListenerActions/pickListenerActions.js +9 -3
package/CHANGELOG.md CHANGED
@@ -1,4 +1,136 @@
1
1
 
2
+ ## [4.0.0-alpha.10](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2024-10-15)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * epicgames key name without dash ([#7119](https://github.com/dynamic-labs/dynamic-auth/issues/7119)) ([7388d6c](https://github.com/dynamic-labs/dynamic-auth/commit/7388d6cf98f6ee92e12003549dfd1ad81951119e))
8
+
9
+ ## [4.0.0-alpha.9](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2024-10-11)
10
+
11
+
12
+ ### Features
13
+
14
+ * add support for fordefi wallet ([#7109](https://github.com/dynamic-labs/dynamic-auth/issues/7109)) ([1adb6b1](https://github.com/dynamic-labs/dynamic-auth/commit/1adb6b15b7f8e9156207ac7addf4368d27c1e371))
15
+ * support ability to define additional oauth scopes ([#7105](https://github.com/dynamic-labs/dynamic-auth/issues/7105)) ([b303203](https://github.com/dynamic-labs/dynamic-auth/commit/b303203e8041c0cbf5f8968df0d3cde04ed1b22a))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * add eip6963 for exodus evm ([#7094](https://github.com/dynamic-labs/dynamic-auth/issues/7094)) ([c1ec5ef](https://github.com/dynamic-labs/dynamic-auth/commit/c1ec5ef4b6a531c563be4b690aa5f2bd4e7e6a16))
21
+
22
+ ## [4.0.0-alpha.8](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2024-10-07)
23
+
24
+
25
+ ### Features
26
+
27
+ * add support for dynamic event callbacks in rn ([#6997](https://github.com/dynamic-labs/dynamic-auth/issues/6997)) ([f9ac402](https://github.com/dynamic-labs/dynamic-auth/commit/f9ac40259d9168dfe69dafd5fd44478ba0e69505))
28
+ * add support for dynamic handlers in rn ([#7032](https://github.com/dynamic-labs/dynamic-auth/issues/7032)) ([f61f926](https://github.com/dynamic-labs/dynamic-auth/commit/f61f92666b6df8483dde2c47304fd4fb02690f7d))
29
+ * Support for multi-chain AA ([#6829](https://github.com/dynamic-labs/dynamic-auth/issues/6829)) ([b4a0c0a](https://github.com/dynamic-labs/dynamic-auth/commit/b4a0c0a4de48231a3748826600407c25abf6894d))
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * persist isHardwareWalletEnabled on wallet connector ([#7025](https://github.com/dynamic-labs/dynamic-auth/issues/7025)) ([#7034](https://github.com/dynamic-labs/dynamic-auth/issues/7034)) ([4bfc301](https://github.com/dynamic-labs/dynamic-auth/commit/4bfc301d891f10db8c0bd31e5164c489a882c5c3))
35
+
36
+ ## [4.0.0-alpha.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.6...v4.0.0-alpha.7) (2024-10-03)
37
+
38
+
39
+ ### Features
40
+
41
+ * add account abstraction module to client ([#7002](https://github.com/dynamic-labs/dynamic-auth/issues/7002)) ([2f06975](https://github.com/dynamic-labs/dynamic-auth/commit/2f06975083dfa9d40537ef4a99b414eda1a68e01))
42
+ * add support for wallet events in rn ([#7061](https://github.com/dynamic-labs/dynamic-auth/issues/7061)) ([c7c4ce5](https://github.com/dynamic-labs/dynamic-auth/commit/c7c4ce51f27a2b84a1710c120d7006a00920c1e7))
43
+ * add zerodev extension for react native ([#7028](https://github.com/dynamic-labs/dynamic-auth/issues/7028)) ([858b8a8](https://github.com/dynamic-labs/dynamic-auth/commit/858b8a851cfa0cddc8e4559541b03992cf5ccdfc))
44
+
45
+
46
+ ### Bug Fixes
47
+
48
+ * do not modify sol tx blockhash as tx could have been signed already ([#7050](https://github.com/dynamic-labs/dynamic-auth/issues/7050)) ([770edb4](https://github.com/dynamic-labs/dynamic-auth/commit/770edb49ddc231b75fb45a9f6d563f22e5185df2))
49
+ * ensure the correct auth mode is used on social redirect ([#7047](https://github.com/dynamic-labs/dynamic-auth/issues/7047)) ([7c27172](https://github.com/dynamic-labs/dynamic-auth/commit/7c271721d5ddf19e3fd1bf56ddb1d49e0e2bca07))
50
+ * prevent react native message timeout before sdk is ready ([#7051](https://github.com/dynamic-labs/dynamic-auth/issues/7051)) ([6421237](https://github.com/dynamic-labs/dynamic-auth/commit/6421237d677d788b824d53432c1a75b9d571aa78))
51
+ * update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
52
+ * use project settings sdk network for send flow ([#7011](https://github.com/dynamic-labs/dynamic-auth/issues/7011)) ([983e796](https://github.com/dynamic-labs/dynamic-auth/commit/983e79632762f71ee0502c92057a32ea985ae19c))
53
+
54
+ ## [4.0.0-alpha.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.5...v4.0.0-alpha.6) (2024-10-01)
55
+
56
+
57
+ ### ⚠ BREAKING CHANGES
58
+
59
+ * remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
60
+
61
+ ### Features
62
+
63
+ * global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
64
+
65
+
66
+ ### Bug Fixes
67
+
68
+ * add popper context to send balance ([#7016](https://github.com/dynamic-labs/dynamic-auth/issues/7016)) ([73aa6f1](https://github.com/dynamic-labs/dynamic-auth/commit/73aa6f122afe0db660ebb654f3e018ae7bf445c5))
69
+ * add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
70
+ * don't re-fetch wallet address on network change ([#7019](https://github.com/dynamic-labs/dynamic-auth/issues/7019)) ([4e7900c](https://github.com/dynamic-labs/dynamic-auth/commit/4e7900cc24b3abda736bc81466eda7512cf7fc61))
71
+ * fix sign message with solana wallet standard provider ([#7014](https://github.com/dynamic-labs/dynamic-auth/issues/7014)) ([ffaf972](https://github.com/dynamic-labs/dynamic-auth/commit/ffaf972e8b190b0b8cd0103e0ef67bfdee6c8f7c))
72
+ * update wallet reference when user switches wallet in connect-only ([#7030](https://github.com/dynamic-labs/dynamic-auth/issues/7030)) ([75d9aa6](https://github.com/dynamic-labs/dynamic-auth/commit/75d9aa66f63fc5536caeff12d8b860c0ba86106f))
73
+
74
+
75
+ ## [4.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.4...v4.0.0-alpha.5) (2024-09-25)
76
+
77
+
78
+ ### Features
79
+
80
+ * add isInstalledOnBrowser prop to wallet options in useWalletOptions ([#6976](https://github.com/dynamic-labs/DynamicAuth/issues/6976)) ([0fda409](https://github.com/dynamic-labs/DynamicAuth/commit/0fda409b293c83d73869d791c3d38ac421dcdecb))
81
+
82
+
83
+ ### Bug Fixes
84
+
85
+ * **client:** return user profile when using sign in with external jwt ([#7004](https://github.com/dynamic-labs/DynamicAuth/issues/7004)) ([927cfb6](https://github.com/dynamic-labs/DynamicAuth/commit/927cfb69f3dd7f8b00e3f0f975277a84c99c830b))
86
+ * react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
87
+
88
+ ## [4.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.3...v4.0.0-alpha.4) (2024-09-23)
89
+
90
+
91
+ ### Bug Fixes
92
+
93
+ * issue where builtin stream module was a dependency ([#6968](https://github.com/dynamic-labs/DynamicAuth/issues/6968)) ([0661129](https://github.com/dynamic-labs/DynamicAuth/commit/0661129920ba70ebbcd4d17ee5aa988c51d1b477))
94
+ * update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
95
+
96
+ ## [4.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.2...v4.0.0-alpha.3) (2024-09-20)
97
+
98
+
99
+ ### Features
100
+
101
+ * developers provide global connectivity appkit project id ([#6941](https://github.com/dynamic-labs/DynamicAuth/issues/6941)) ([83760ea](https://github.com/dynamic-labs/DynamicAuth/commit/83760ea57591685b12caee945f173f6a7f9312d1))
102
+
103
+
104
+ ### Bug Fixes
105
+
106
+ * don't try to set up event listeners if wallet provider doesn't support it ([#6943](https://github.com/dynamic-labs/DynamicAuth/issues/6943)) ([439f1bb](https://github.com/dynamic-labs/DynamicAuth/commit/439f1bbb3c765959756cfc6eeb8429e4018e0379))
107
+ * dont verify all signatures for solana embedded multisig tx ([#6953](https://github.com/dynamic-labs/DynamicAuth/issues/6953)) ([7a7973e](https://github.com/dynamic-labs/DynamicAuth/commit/7a7973e05f0960421b348a55c6a00c9fd873b0b7))
108
+
109
+ ## [4.0.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.1...v4.0.0-alpha.2) (2024-09-18)
110
+
111
+
112
+ ### Features
113
+
114
+ * add iconVariant prop to DynamicBridgeWidget ([#6915](https://github.com/dynamic-labs/DynamicAuth/issues/6915)) ([8aa0f3d](https://github.com/dynamic-labs/DynamicAuth/commit/8aa0f3d8d8c41c7b5c4796106f611f208010cb6d))
115
+ * allow to create extra embedded wallets in react-native ([#6923](https://github.com/dynamic-labs/DynamicAuth/issues/6923)) ([ba22f7b](https://github.com/dynamic-labs/DynamicAuth/commit/ba22f7bcf41a444a4df0aff9b6aec257457e9402))
116
+ * **client:** add hide method for auth and userProfile ui modules ([#6928](https://github.com/dynamic-labs/DynamicAuth/issues/6928)) ([a11a4a5](https://github.com/dynamic-labs/DynamicAuth/commit/a11a4a5d6e25ce2a916ebd52f0b341020dc1a7e5))
117
+
118
+ ## [4.0.0-alpha.1](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.0...v4.0.0-alpha.1) (2024-09-17)
119
+
120
+
121
+ ### Features
122
+
123
+ * blockaid website scanning for global connectivity ([#6874](https://github.com/dynamic-labs/DynamicAuth/issues/6874)) ([f8cbabd](https://github.com/dynamic-labs/DynamicAuth/commit/f8cbabd92fd4b5b096f47ff8e24c572ad7720dd8))
124
+
125
+
126
+ ### Bug Fixes
127
+
128
+ * deeplinking on ethereum and bitcoin sats connector ([#6917](https://github.com/dynamic-labs/DynamicAuth/issues/6917)) ([3896c3a](https://github.com/dynamic-labs/DynamicAuth/commit/3896c3a97819459da74dc5b4771796d7991c1f07))
129
+ * emit walletAdded event when createEmbeddedWalletAccount called ([#6922](https://github.com/dynamic-labs/DynamicAuth/issues/6922)) ([2a8bdd6](https://github.com/dynamic-labs/DynamicAuth/commit/2a8bdd68c50efd946c6f9b398dfae2b3585db34f))
130
+ * interface for sendBitcoin on unisat ([37a1bc2](https://github.com/dynamic-labs/DynamicAuth/commit/37a1bc216f43eef817c40e23b9161327f9d29c59))
131
+ * remove ballet crypto and duplicate keplr entry ([#6906](https://github.com/dynamic-labs/DynamicAuth/issues/6906)) ([14aeeea](https://github.com/dynamic-labs/DynamicAuth/commit/14aeeeaa8d906344f4aeddf9e73527df346b9ea0))
132
+ * solana and cosmos signers not working properly ([#6898](https://github.com/dynamic-labs/DynamicAuth/issues/6898)) ([6f07981](https://github.com/dynamic-labs/DynamicAuth/commit/6f079811c0d7e45b97d2dae72f4141268ab4fe0c))
133
+
2
134
  ## [4.0.0-alpha.0](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0...v4.0.0-alpha.0) (2024-09-13)
3
135
 
4
136
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.0.0-alpha.0";
6
+ var version = "4.0.0-alpha.10";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.0.0-alpha.0";
2
+ var version = "4.0.0-alpha.10";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,16 +1,7 @@
1
1
  {
2
2
  "name": "@dynamic-labs/client",
3
- "version": "4.0.0-alpha.0",
4
- "repository": {
5
- "type": "git",
6
- "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
7
- "directory": "packages/client"
8
- },
3
+ "version": "4.0.0-alpha.10",
9
4
  "description": "Core package for utilizing Dynamic's sdk",
10
- "bugs": {
11
- "url": "https://github.com/dynamic-labs/DynamicAuth/issues"
12
- },
13
- "homepage": "https://github.com/dynamic-labs/DynamicAuth/main/packages/client#readme",
14
5
  "author": "Dynamic Labs, Inc.",
15
6
  "license": "MIT",
16
7
  "main": "./src/index.cjs",
@@ -25,11 +16,13 @@
25
16
  },
26
17
  "./package.json": "./package.json"
27
18
  },
19
+ "homepage": "https://www.dynamic.xyz/",
28
20
  "dependencies": {
29
21
  "@vue/reactivity": "3.4.21",
30
- "@dynamic-labs/logger": "4.0.0-alpha.0",
31
- "@dynamic-labs/message-transport": "4.0.0-alpha.0",
32
- "@dynamic-labs/types": "4.0.0-alpha.0",
22
+ "@dynamic-labs/assert-package-version": "4.0.0-alpha.10",
23
+ "@dynamic-labs/logger": "4.0.0-alpha.10",
24
+ "@dynamic-labs/message-transport": "4.0.0-alpha.10",
25
+ "@dynamic-labs/types": "4.0.0-alpha.10",
33
26
  "eventemitter3": "5.0.1"
34
27
  },
35
28
  "peerDependencies": {}
@@ -3,6 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
+ var logger = require('@dynamic-labs/logger');
6
7
  var authModule = require('../modules/authModule/authModule.cjs');
7
8
  var networksModule = require('../modules/networksModule/networksModule.cjs');
8
9
  var sdkModule = require('../modules/sdkModule/sdkModule.cjs');
@@ -20,6 +21,7 @@ const baseClientExtensionName = 'base';
20
21
  * it will be used for.
21
22
  */
22
23
  const createClient = (props) => {
24
+ logger.Logger.setEnvironmentId(props.environmentId);
23
25
  const core$1 = core.createCore(props);
24
26
  const baseExtendable = new Extendable.Extendable(core$1);
25
27
  return baseExtendable.extend(() => {
@@ -19,7 +19,7 @@ export declare const createClient: (props: ClientProps) => {
19
19
  /** Module that gives access over authentication state, such as the auth token and user */
20
20
  auth: import("../modules/authModule").AuthModule;
21
21
  /** Module that provides all the networks configured */
22
- networks: import("dist/packages/message-transport/src").StoreStateGetters<import("dist/packages/message-transport/src").NetworksModuleState> & Pick<import("eventemitter3").EventEmitter<import("dist/packages/message-transport/src").StoreStateEvents<import("dist/packages/message-transport/src").NetworksModuleState>, any>, "on" | "off" | "once">;
22
+ networks: import("dist/packages/message-transport/src").StoreStateGetters<import("dist/packages/message-transport/src").NetworksModuleState> & import("dist/packages/message-transport/src").PickedEventListeners<import("dist/packages/message-transport/src").StoreStateEvents<import("dist/packages/message-transport/src").NetworksModuleState>>;
23
23
  /** Module that gives insight over the state of the SDK */
24
24
  sdk: import("../modules/sdkModule").SdkModule;
25
25
  /** Module that provide access to UI features */
@@ -1,4 +1,5 @@
1
1
  'use client'
2
+ import { Logger } from '@dynamic-labs/logger';
2
3
  import { createAuthModule } from '../modules/authModule/authModule.js';
3
4
  import { createNetworksModule } from '../modules/networksModule/networksModule.js';
4
5
  import { createSdkModule } from '../modules/sdkModule/sdkModule.js';
@@ -16,6 +17,7 @@ const baseClientExtensionName = 'base';
16
17
  * it will be used for.
17
18
  */
18
19
  const createClient = (props) => {
20
+ Logger.setEnvironmentId(props.environmentId);
19
21
  const core = createCore(props);
20
22
  const baseExtendable = new Extendable(core);
21
23
  return baseExtendable.extend(() => {
@@ -22,7 +22,7 @@ export declare const createCore: (props: ClientProps) => {
22
22
  */
23
23
  manifest: {
24
24
  setAppOrigin: (appOrigin: string) => string;
25
- setPlatform: (platform: "browser" | "react-native" | "flutter") => "browser" | "react-native" | "flutter";
25
+ setPlatform: (platform: "browser" | "react-native" | "flutter") => void;
26
26
  setRedirectUrl: (redirectUrl: string) => string;
27
27
  };
28
28
  /**
@@ -32,11 +32,12 @@ export declare const createCore: (props: ClientProps) => {
32
32
  * Note: Doesn't implement forwarding messages to/from webview yet.
33
33
  * The user is expected to extend the client with an Extension that implements that.
34
34
  */
35
- messageTransport: {
35
+ messageTransport: import("@dynamic-labs/message-transport").MessageTransport & {
36
+ emit: (message: import("@dynamic-labs/message-transport").MessageTransportData, options?: {
37
+ onEmit?: VoidFunction | undefined;
38
+ } | undefined) => void;
36
39
  unblock: () => void;
37
- emit: (message: import("@dynamic-labs/message-transport").MessageTransportData) => void;
38
- off: (callback: import("@dynamic-labs/message-transport").MessageTransportCallback) => void;
39
- on: (callback: import("@dynamic-labs/message-transport").MessageTransportCallback) => void;
40
+ isBlocked: boolean;
40
41
  } & {
41
42
  defaultOrigin: "webview" | "host";
42
43
  emit: (message: import("@dynamic-labs/message-transport").MessageTransportDataOptionalOrigin) => void;
@@ -17,7 +17,12 @@ const createInitializationModule = (messageTransport$1) => {
17
17
  if (severity === 'fatal') {
18
18
  state.error = error;
19
19
  }
20
- logger.logger.error(error);
20
+ /**
21
+ * Uses regular console.error to log the error
22
+ * so we dont send the error to the backend twice
23
+ */
24
+ // eslint-disable-next-line no-console
25
+ console.error(error);
21
26
  });
22
27
  return {
23
28
  get error() {
@@ -25,6 +30,9 @@ const createInitializationModule = (messageTransport$1) => {
25
30
  },
26
31
  set error(error) {
27
32
  state.error = error;
33
+ /**
34
+ * Uses the logger so the error is sent to the backend
35
+ */
28
36
  logger.logger.error(state.error);
29
37
  },
30
38
  };
@@ -13,7 +13,12 @@ const createInitializationModule = (messageTransport) => {
13
13
  if (severity === 'fatal') {
14
14
  state.error = error;
15
15
  }
16
- logger.error(error);
16
+ /**
17
+ * Uses regular console.error to log the error
18
+ * so we dont send the error to the backend twice
19
+ */
20
+ // eslint-disable-next-line no-console
21
+ console.error(error);
17
22
  });
18
23
  return {
19
24
  get error() {
@@ -21,6 +26,9 @@ const createInitializationModule = (messageTransport) => {
21
26
  },
22
27
  set error(error) {
23
28
  state.error = error;
29
+ /**
30
+ * Uses the logger so the error is sent to the backend
31
+ */
24
32
  logger.error(state.error);
25
33
  },
26
34
  };
@@ -5,7 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
7
  var messageTransport = require('@dynamic-labs/message-transport');
8
- var logger = require('../../../../utils/logger/logger.cjs');
8
+ var logger = require('@dynamic-labs/logger');
9
+ var logger$1 = require('../../../../utils/logger/logger.cjs');
9
10
  var createPartialManifest = require('./createPartialManifest/createPartialManifest.cjs');
10
11
  var validateManifest = require('./validateManifest/validateManifest.cjs');
11
12
 
@@ -20,7 +21,7 @@ const createManifestModule = (props, messageTransport$1, initializationModule) =
20
21
  return validateManifest.validateManifest(manifest);
21
22
  }
22
23
  catch (error) {
23
- logger.logger.error(error);
24
+ logger$1.logger.error(error);
24
25
  if (error instanceof Error)
25
26
  initializationModule.error = error;
26
27
  throw error;
@@ -28,7 +29,10 @@ const createManifestModule = (props, messageTransport$1, initializationModule) =
28
29
  }));
29
30
  return {
30
31
  setAppOrigin: (appOrigin) => (manifest.appOrigin = appOrigin),
31
- setPlatform: (platform) => (manifest.platform = platform),
32
+ setPlatform: (platform) => {
33
+ logger.Logger.globalMetaData.set('platform', platform);
34
+ manifest.platform = platform;
35
+ },
32
36
  setRedirectUrl: (redirectUrl) => (manifest.redirectUrl = redirectUrl),
33
37
  };
34
38
  };
@@ -6,6 +6,6 @@ import { InitializationModule } from '../initializationModule/initializationModu
6
6
  */
7
7
  export declare const createManifestModule: (props: ClientProps, messageTransport: MessageTransportWithDefaultOrigin, initializationModule: InitializationModule) => {
8
8
  setAppOrigin: (appOrigin: string) => string;
9
- setPlatform: (platform: ClientManifest['platform']) => "browser" | "react-native" | "flutter";
9
+ setPlatform: (platform: ClientManifest['platform']) => void;
10
10
  setRedirectUrl: (redirectUrl: string) => string;
11
11
  };
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { createRequestChannel } from '@dynamic-labs/message-transport';
4
+ import { Logger } from '@dynamic-labs/logger';
4
5
  import { logger } from '../../../../utils/logger/logger.js';
5
6
  import { createPartialManifest } from './createPartialManifest/createPartialManifest.js';
6
7
  import { validateManifest } from './validateManifest/validateManifest.js';
@@ -24,7 +25,10 @@ const createManifestModule = (props, messageTransport, initializationModule) =>
24
25
  }));
25
26
  return {
26
27
  setAppOrigin: (appOrigin) => (manifest.appOrigin = appOrigin),
27
- setPlatform: (platform) => (manifest.platform = platform),
28
+ setPlatform: (platform) => {
29
+ Logger.globalMetaData.set('platform', platform);
30
+ manifest.platform = platform;
31
+ },
28
32
  setRedirectUrl: (redirectUrl) => (manifest.redirectUrl = redirectUrl),
29
33
  };
30
34
  };
package/src/index.cjs CHANGED
@@ -3,11 +3,13 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
+ var assertPackageVersion = require('@dynamic-labs/assert-package-version');
7
+ var _package = require('../package.cjs');
6
8
  var Extendable = require('./utils/Extendable/Extendable.cjs');
7
9
  var hasExtension = require('./utils/Extendable/hasExtension/hasExtension.cjs');
8
10
  var client = require('./client/client.cjs');
9
11
 
10
-
12
+ assertPackageVersion.assertPackageVersion('@dynamic-labs/client', _package.version);
11
13
 
12
14
  exports.Extendable = Extendable.Extendable;
13
15
  exports.hasExtension = hasExtension.hasExtension;
package/src/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { SocialProvider } from '@dynamic-labs/message-transport';
2
- export type { BaseWallet as Wallet } from '@dynamic-labs/types';
3
2
  export { type Core } from './client/core';
3
+ export type { Wallet } from './types';
4
4
  export { Extendable, type Extension } from './utils/Extendable';
5
5
  export { hasExtension } from './utils/Extendable/hasExtension';
6
6
  export { createClient, type BaseClient, type ClientProps, baseClientExtensionName, } from './client';
package/src/index.js CHANGED
@@ -1,4 +1,8 @@
1
1
  'use client'
2
+ import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
3
+ import { version } from '../package.js';
2
4
  export { Extendable } from './utils/Extendable/Extendable.js';
3
5
  export { hasExtension } from './utils/Extendable/hasExtension/hasExtension.js';
4
6
  export { baseClientExtensionName, createClient } from './client/client.js';
7
+
8
+ assertPackageVersion('@dynamic-labs/client', version);
@@ -10,6 +10,7 @@ var externalAuthModule = require('./externalAuthModule/externalAuthModule.cjs');
10
10
  var smsAuthModule = require('./smsAuthModule/smsAuthModule.cjs');
11
11
  var socialAuthModule = require('./socialAuthModule/socialAuthModule.cjs');
12
12
 
13
+ const defaultAuthenticatedUserHandler = () => Promise.resolve();
13
14
  const createAuthModule = (core) => {
14
15
  const store = messageTransport.createStore({
15
16
  initialState: {
@@ -20,15 +21,21 @@ const createAuthModule = (core) => {
20
21
  messageTransport: core.messageTransport,
21
22
  });
22
23
  const messageEvents = messageTransport.createEventEmitterForMessages({
24
+ eventNames: messageTransport.authEventNames,
23
25
  initialEventEmitter: store.eventEmitter,
24
- key: 'auth',
25
26
  messageTransport: core.messageTransport,
26
27
  });
27
28
  const requestChannel = messageTransport.createRequestChannel(core.messageTransport);
29
+ const handlers = {
30
+ userAuthenticated: defaultAuthenticatedUserHandler,
31
+ };
32
+ requestChannel.handle('handleAuthenticatedUser', ({ user }) => handlers.userAuthenticated(user));
28
33
  return Object.assign(store.getters, pickListenerActions.pickListenerActions(messageEvents), {
34
+ clearHandler: () => (handlers.userAuthenticated = defaultAuthenticatedUserHandler),
29
35
  email: emailAuthModule.createEmailAuthModule(core),
30
36
  external: externalAuthModule.createExternalAuthModule(core),
31
37
  logout: () => requestChannel.request('logout'),
38
+ setHandler: (_, handler) => (handlers.userAuthenticated = handler),
32
39
  sms: smsAuthModule.createSmsAuthModule(core),
33
40
  social: socialAuthModule.createSocialAuthModule(core),
34
41
  });
@@ -1,15 +1,20 @@
1
- import { AuthModuleMessages, AuthModuleState, StoreEventListeners } from '@dynamic-labs/message-transport';
1
+ import { AuthModuleMessages, AuthModuleState, StoreEventListeners, PickedEventListeners, authEventNames } from '@dynamic-labs/message-transport';
2
+ import { UserProfile } from '@dynamic-labs/types';
2
3
  import { Core } from '../../client/core';
3
4
  import { EmailAuthModule } from './emailAuthModule';
4
5
  import { ExternalAuthModule } from './externalAuthModule';
5
6
  import { SmsAuthModule } from './smsAuthModule';
6
7
  import { SocialAuthModule } from './socialAuthModule';
7
- type PublicAuthModuleMessages = Pick<AuthModuleMessages, 'logout'>;
8
- export type AuthModule = AuthModuleState & StoreEventListeners<AuthModuleState> & PublicAuthModuleMessages & {
8
+ type PublicAuthModuleMessages = Pick<AuthModuleMessages, typeof authEventNames[number]>;
9
+ export type AuthModule = AuthModuleState & StoreEventListeners<AuthModuleState> & PickedEventListeners<PublicAuthModuleMessages> & {
9
10
  sms: SmsAuthModule;
10
11
  email: EmailAuthModule;
11
12
  social: SocialAuthModule;
12
13
  external: ExternalAuthModule;
14
+ logout: AuthModuleMessages['logout'];
15
+ setHandler: (name: 'userAuthenticated', handler: AuthenticatedUserHandler) => void;
16
+ clearHandler: (name: 'userAuthenticated') => void;
13
17
  };
18
+ type AuthenticatedUserHandler = (user: UserProfile) => Promise<void>;
14
19
  export declare const createAuthModule: (core: Core) => AuthModule;
15
20
  export {};
@@ -1,11 +1,12 @@
1
1
  'use client'
2
- import { createStore, createEventEmitterForMessages, createRequestChannel } from '@dynamic-labs/message-transport';
2
+ import { createStore, createEventEmitterForMessages, authEventNames, createRequestChannel } from '@dynamic-labs/message-transport';
3
3
  import { pickListenerActions } from '../../utils/pickListenerActions/pickListenerActions.js';
4
4
  import { createEmailAuthModule } from './emailAuthModule/emailAuthModule.js';
5
5
  import { createExternalAuthModule } from './externalAuthModule/externalAuthModule.js';
6
6
  import { createSmsAuthModule } from './smsAuthModule/smsAuthModule.js';
7
7
  import { createSocialAuthModule } from './socialAuthModule/socialAuthModule.js';
8
8
 
9
+ const defaultAuthenticatedUserHandler = () => Promise.resolve();
9
10
  const createAuthModule = (core) => {
10
11
  const store = createStore({
11
12
  initialState: {
@@ -16,15 +17,21 @@ const createAuthModule = (core) => {
16
17
  messageTransport: core.messageTransport,
17
18
  });
18
19
  const messageEvents = createEventEmitterForMessages({
20
+ eventNames: authEventNames,
19
21
  initialEventEmitter: store.eventEmitter,
20
- key: 'auth',
21
22
  messageTransport: core.messageTransport,
22
23
  });
23
24
  const requestChannel = createRequestChannel(core.messageTransport);
25
+ const handlers = {
26
+ userAuthenticated: defaultAuthenticatedUserHandler,
27
+ };
28
+ requestChannel.handle('handleAuthenticatedUser', ({ user }) => handlers.userAuthenticated(user));
24
29
  return Object.assign(store.getters, pickListenerActions(messageEvents), {
30
+ clearHandler: () => (handlers.userAuthenticated = defaultAuthenticatedUserHandler),
25
31
  email: createEmailAuthModule(core),
26
32
  external: createExternalAuthModule(core),
27
33
  logout: () => requestChannel.request('logout'),
34
+ setHandler: (_, handler) => (handlers.userAuthenticated = handler),
28
35
  sms: createSmsAuthModule(core),
29
36
  social: createSocialAuthModule(core),
30
37
  });
@@ -4,17 +4,22 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var messageTransport = require('@dynamic-labs/message-transport');
7
+ var pickListenerActions = require('../../../utils/pickListenerActions/pickListenerActions.cjs');
7
8
 
8
9
  const createEmailAuthModule = (core) => {
9
10
  const requestChannel = messageTransport.createRequestChannel(core.messageTransport);
10
- return {
11
+ const messageEvents = messageTransport.createEventEmitterForMessages({
12
+ eventNames: messageTransport.emailEventNames,
13
+ messageTransport: core.messageTransport,
14
+ });
15
+ return Object.assign(pickListenerActions.pickListenerActions(messageEvents), {
11
16
  resendOTP: () => requestChannel.request('resendOTP'),
12
17
  sendOTP: (email) => requestChannel.request('sendOTP', {
13
18
  destination: 'email',
14
19
  target: email,
15
20
  }),
16
21
  verifyOTP: (token) => requestChannel.request('verifyOTP', token),
17
- };
22
+ });
18
23
  };
19
24
 
20
25
  exports.createEmailAuthModule = createEmailAuthModule;
@@ -1,8 +1,9 @@
1
- import { OtpMessages } from '@dynamic-labs/message-transport';
1
+ import { OtpMessages, PickedEventListeners, emailEventNames } from '@dynamic-labs/message-transport';
2
2
  import { Core } from '../../../client/core';
3
- export type EmailAuthModule = {
3
+ export type EmailAuthModule = PickedEventListeners<PublicEmailAuthMessages> & {
4
4
  resendOTP: OtpMessages['resendOTP'];
5
5
  sendOTP: (email: string) => Promise<void>;
6
6
  verifyOTP: OtpMessages['verifyOTP'];
7
7
  };
8
+ export type PublicEmailAuthMessages = Pick<OtpMessages, typeof emailEventNames[number]>;
8
9
  export declare const createEmailAuthModule: (core: Core) => EmailAuthModule;
@@ -1,16 +1,21 @@
1
1
  'use client'
2
- import { createRequestChannel } from '@dynamic-labs/message-transport';
2
+ import { createRequestChannel, createEventEmitterForMessages, emailEventNames } from '@dynamic-labs/message-transport';
3
+ import { pickListenerActions } from '../../../utils/pickListenerActions/pickListenerActions.js';
3
4
 
4
5
  const createEmailAuthModule = (core) => {
5
6
  const requestChannel = createRequestChannel(core.messageTransport);
6
- return {
7
+ const messageEvents = createEventEmitterForMessages({
8
+ eventNames: emailEventNames,
9
+ messageTransport: core.messageTransport,
10
+ });
11
+ return Object.assign(pickListenerActions(messageEvents), {
7
12
  resendOTP: () => requestChannel.request('resendOTP'),
8
13
  sendOTP: (email) => requestChannel.request('sendOTP', {
9
14
  destination: 'email',
10
15
  target: email,
11
16
  }),
12
17
  verifyOTP: (token) => requestChannel.request('verifyOTP', token),
13
- };
18
+ });
14
19
  };
15
20
 
16
21
  export { createEmailAuthModule };
@@ -4,14 +4,19 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var messageTransport = require('@dynamic-labs/message-transport');
7
+ var pickListenerActions = require('../../../utils/pickListenerActions/pickListenerActions.cjs');
7
8
 
8
9
  const createSmsAuthModule = (core) => {
9
10
  const requestChannel = messageTransport.createRequestChannel(core.messageTransport);
10
- return {
11
+ const messageEvents = messageTransport.createEventEmitterForMessages({
12
+ eventNames: messageTransport.smsEventNames,
13
+ messageTransport: core.messageTransport,
14
+ });
15
+ return Object.assign(pickListenerActions.pickListenerActions(messageEvents), {
11
16
  resendOTP: () => requestChannel.request('resendOTP'),
12
17
  sendOTP: (phone) => requestChannel.request('sendOTP', { destination: 'sms', target: phone }),
13
18
  verifyOTP: (token) => requestChannel.request('verifyOTP', token),
14
- };
19
+ });
15
20
  };
16
21
 
17
22
  exports.createSmsAuthModule = createSmsAuthModule;
@@ -1,9 +1,10 @@
1
1
  import { PhoneData } from '@dynamic-labs/types';
2
- import { OtpMessages } from '@dynamic-labs/message-transport';
2
+ import { OtpMessages, PickedEventListeners, smsEventNames } from '@dynamic-labs/message-transport';
3
3
  import { Core } from '../../../client/core';
4
- export type SmsAuthModule = {
4
+ export type SmsAuthModule = PickedEventListeners<PublicSmsAuthMessages> & {
5
5
  resendOTP: OtpMessages['resendOTP'];
6
6
  sendOTP: (phone: PhoneData) => Promise<void>;
7
7
  verifyOTP: OtpMessages['verifyOTP'];
8
8
  };
9
+ export type PublicSmsAuthMessages = Pick<OtpMessages, typeof smsEventNames[number]>;
9
10
  export declare const createSmsAuthModule: (core: Core) => SmsAuthModule;
@@ -1,13 +1,18 @@
1
1
  'use client'
2
- import { createRequestChannel } from '@dynamic-labs/message-transport';
2
+ import { createRequestChannel, createEventEmitterForMessages, smsEventNames } from '@dynamic-labs/message-transport';
3
+ import { pickListenerActions } from '../../../utils/pickListenerActions/pickListenerActions.js';
3
4
 
4
5
  const createSmsAuthModule = (core) => {
5
6
  const requestChannel = createRequestChannel(core.messageTransport);
6
- return {
7
+ const messageEvents = createEventEmitterForMessages({
8
+ eventNames: smsEventNames,
9
+ messageTransport: core.messageTransport,
10
+ });
11
+ return Object.assign(pickListenerActions(messageEvents), {
7
12
  resendOTP: () => requestChannel.request('resendOTP'),
8
13
  sendOTP: (phone) => requestChannel.request('sendOTP', { destination: 'sms', target: phone }),
9
14
  verifyOTP: (token) => requestChannel.request('verifyOTP', token),
10
- };
15
+ });
11
16
  };
12
17
 
13
18
  export { createSmsAuthModule };
@@ -1,3 +1,3 @@
1
1
  import { NetworksModuleState } from '@dynamic-labs/message-transport';
2
2
  import { Core } from '../../client/core';
3
- export declare const createNetworksModule: (core: Core) => import("@dynamic-labs/message-transport").StoreStateGetters<NetworksModuleState> & Pick<import("eventemitter3").EventEmitter<import("@dynamic-labs/message-transport").StoreStateEvents<NetworksModuleState>, any>, "on" | "off" | "once">;
3
+ export declare const createNetworksModule: (core: Core) => import("@dynamic-labs/message-transport").StoreStateGetters<NetworksModuleState> & import("@dynamic-labs/message-transport").PickedEventListeners<import("@dynamic-labs/message-transport").StoreStateEvents<NetworksModuleState>>;
@@ -4,20 +4,27 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var messageTransport = require('@dynamic-labs/message-transport');
7
+ var pickListenerActions = require('../../utils/pickListenerActions/pickListenerActions.cjs');
7
8
 
8
9
  const createUserInterfaceModule = (core) => {
9
10
  const userInterfaceRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
10
- return {
11
+ const messageEvents = messageTransport.createEventEmitterForMessages({
12
+ eventNames: messageTransport.userInterfaceEventNames,
13
+ messageTransport: core.messageTransport,
14
+ });
15
+ return Object.assign(pickListenerActions.pickListenerActions(messageEvents), {
11
16
  auth: {
17
+ hide: () => userInterfaceRequestChannel.emit('hideAuthFlow'),
12
18
  show: () => userInterfaceRequestChannel.emit('openAuthFlow'),
13
19
  },
14
20
  userProfile: {
21
+ hide: () => userInterfaceRequestChannel.emit('hideUserProfile'),
15
22
  show: () => userInterfaceRequestChannel.emit('openUserProfile'),
16
23
  },
17
24
  wallets: {
18
25
  revealEmbeddedWalletKey: (params) => userInterfaceRequestChannel.emit('revealEmbeddedWalletKey', params),
19
26
  },
20
- };
27
+ });
21
28
  };
22
29
 
23
30
  exports.createUserInterfaceModule = createUserInterfaceModule;
@@ -1,14 +1,43 @@
1
- import { UserInterfaceModuleMessages } from '@dynamic-labs/message-transport';
1
+ import { PickedEventListeners, UserInterfaceModuleMessages, userInterfaceEventNames } from '@dynamic-labs/message-transport';
2
2
  import { Core } from '../../client/core';
3
- export type UserInterfaceModule = {
3
+ type UserInterfaceModuleMethods = {
4
4
  auth: {
5
- show: VoidFunction;
5
+ /**
6
+ * Opens the auth flow UI.
7
+ *
8
+ * Resolves when our SDK receives the request.
9
+ * Rejects if the request is not received.
10
+ */
11
+ show: () => Promise<void>;
12
+ /**
13
+ * Closes the auth flow UI.
14
+ *
15
+ * Resolves when our SDK receives the request.
16
+ * Rejects if the request is not received.
17
+ */
18
+ hide: () => Promise<void>;
6
19
  };
7
20
  userProfile: {
8
- show: VoidFunction;
21
+ /**
22
+ * Opens the user profile UI.
23
+ *
24
+ * Resolves when our SDK receives the request.
25
+ * Rejects if the request is not received.
26
+ */
27
+ show: () => Promise<void>;
28
+ /**
29
+ * Closes the user profile UI.
30
+ *
31
+ * Resolves when our SDK receives the request.
32
+ * Rejects if the request is not received.
33
+ */
34
+ hide: () => Promise<void>;
9
35
  };
10
36
  wallets: {
11
37
  revealEmbeddedWalletKey: UserInterfaceModuleMessages['revealEmbeddedWalletKey'];
12
38
  };
13
39
  };
40
+ type PublicUserInterfaceModuleMessages = Pick<UserInterfaceModuleMessages, typeof userInterfaceEventNames[number]>;
41
+ export type UserInterfaceModule = PickedEventListeners<PublicUserInterfaceModuleMessages> & UserInterfaceModuleMethods;
14
42
  export declare const createUserInterfaceModule: (core: Core) => UserInterfaceModule;
43
+ export {};
@@ -1,19 +1,26 @@
1
1
  'use client'
2
- import { createRequestChannel } from '@dynamic-labs/message-transport';
2
+ import { createRequestChannel, createEventEmitterForMessages, userInterfaceEventNames } from '@dynamic-labs/message-transport';
3
+ import { pickListenerActions } from '../../utils/pickListenerActions/pickListenerActions.js';
3
4
 
4
5
  const createUserInterfaceModule = (core) => {
5
6
  const userInterfaceRequestChannel = createRequestChannel(core.messageTransport);
6
- return {
7
+ const messageEvents = createEventEmitterForMessages({
8
+ eventNames: userInterfaceEventNames,
9
+ messageTransport: core.messageTransport,
10
+ });
11
+ return Object.assign(pickListenerActions(messageEvents), {
7
12
  auth: {
13
+ hide: () => userInterfaceRequestChannel.emit('hideAuthFlow'),
8
14
  show: () => userInterfaceRequestChannel.emit('openAuthFlow'),
9
15
  },
10
16
  userProfile: {
17
+ hide: () => userInterfaceRequestChannel.emit('hideUserProfile'),
11
18
  show: () => userInterfaceRequestChannel.emit('openUserProfile'),
12
19
  },
13
20
  wallets: {
14
21
  revealEmbeddedWalletKey: (params) => userInterfaceRequestChannel.emit('revealEmbeddedWalletKey', params),
15
22
  },
16
- };
23
+ });
17
24
  };
18
25
 
19
26
  export { createUserInterfaceModule };
@@ -0,0 +1,17 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var messageTransport = require('@dynamic-labs/message-transport');
7
+
8
+ const createAccountAbstractionModule = (core) => {
9
+ const accountAbstractionRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
10
+ return {
11
+ getEOAWallet: (args) => accountAbstractionRequestChannel.request('getEOAWallet', args),
12
+ getSmartWallet: (args) => accountAbstractionRequestChannel.request('getSmartWallet', args),
13
+ isSmartWallet: (args) => accountAbstractionRequestChannel.request('isSmartWallet', args),
14
+ };
15
+ };
16
+
17
+ exports.createAccountAbstractionModule = createAccountAbstractionModule;
@@ -0,0 +1,14 @@
1
+ import { Core } from '../../../client/core';
2
+ import { Wallet } from '../../../types';
3
+ export type AccountAbstractionModule = {
4
+ isSmartWallet: (args: {
5
+ wallet: Wallet;
6
+ }) => Promise<boolean>;
7
+ getEOAWallet: (args: {
8
+ wallet: Wallet;
9
+ }) => Promise<Wallet | null>;
10
+ getSmartWallet: (args: {
11
+ wallet: Wallet;
12
+ }) => Promise<Wallet | null>;
13
+ };
14
+ export declare const createAccountAbstractionModule: (core: Core) => AccountAbstractionModule;
@@ -0,0 +1,13 @@
1
+ 'use client'
2
+ import { createRequestChannel } from '@dynamic-labs/message-transport';
3
+
4
+ const createAccountAbstractionModule = (core) => {
5
+ const accountAbstractionRequestChannel = createRequestChannel(core.messageTransport);
6
+ return {
7
+ getEOAWallet: (args) => accountAbstractionRequestChannel.request('getEOAWallet', args),
8
+ getSmartWallet: (args) => accountAbstractionRequestChannel.request('getSmartWallet', args),
9
+ isSmartWallet: (args) => accountAbstractionRequestChannel.request('isSmartWallet', args),
10
+ };
11
+ };
12
+
13
+ export { createAccountAbstractionModule };
@@ -0,0 +1 @@
1
+ export { createAccountAbstractionModule, type AccountAbstractionModule, } from './accountAbstractionModule';
@@ -0,0 +1,31 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const createWalletListenerMethods = (requestChannel) => {
7
+ const getWalletListenerKey = (walletId, event) => `${walletId}__${event}`;
8
+ const walletListeners = {};
9
+ const onWalletEvent = (wallet, event, callback) => {
10
+ const listenerKey = getWalletListenerKey(wallet.id, event);
11
+ if (!walletListeners[listenerKey])
12
+ walletListeners[listenerKey] = new Set();
13
+ walletListeners[listenerKey].add(callback);
14
+ };
15
+ const offWalletEvent = (wallet, event, callback) => {
16
+ const listenerKey = getWalletListenerKey(wallet.id, event);
17
+ if (!walletListeners[listenerKey])
18
+ return;
19
+ walletListeners[listenerKey].delete(callback);
20
+ if (walletListeners[listenerKey].size === 0)
21
+ delete walletListeners[listenerKey];
22
+ };
23
+ requestChannel.handle('onWalletEvent', ({ event, eventParams, walletId }) => {
24
+ var _a;
25
+ const listenerKey = getWalletListenerKey(walletId, event);
26
+ (_a = walletListeners[listenerKey]) === null || _a === void 0 ? void 0 : _a.forEach((callback) => callback(...eventParams));
27
+ });
28
+ return { offWalletEvent, onWalletEvent };
29
+ };
30
+
31
+ exports.createWalletListenerMethods = createWalletListenerMethods;
@@ -0,0 +1,8 @@
1
+ import { RequestChannel, WalletEvents, WalletsModuleMessages } from '@dynamic-labs/message-transport';
2
+ import { BaseWallet } from '@dynamic-labs/types';
3
+ export type WalletEventListener = <E extends keyof WalletEvents>(wallet: BaseWallet, event: E, callback: WalletEvents[E]) => void;
4
+ export type CreateWalletListenerMethodsReturn = {
5
+ onWalletEvent: WalletEventListener;
6
+ offWalletEvent: WalletEventListener;
7
+ };
8
+ export declare const createWalletListenerMethods: (requestChannel: RequestChannel<WalletsModuleMessages>) => CreateWalletListenerMethodsReturn;
@@ -0,0 +1,27 @@
1
+ 'use client'
2
+ const createWalletListenerMethods = (requestChannel) => {
3
+ const getWalletListenerKey = (walletId, event) => `${walletId}__${event}`;
4
+ const walletListeners = {};
5
+ const onWalletEvent = (wallet, event, callback) => {
6
+ const listenerKey = getWalletListenerKey(wallet.id, event);
7
+ if (!walletListeners[listenerKey])
8
+ walletListeners[listenerKey] = new Set();
9
+ walletListeners[listenerKey].add(callback);
10
+ };
11
+ const offWalletEvent = (wallet, event, callback) => {
12
+ const listenerKey = getWalletListenerKey(wallet.id, event);
13
+ if (!walletListeners[listenerKey])
14
+ return;
15
+ walletListeners[listenerKey].delete(callback);
16
+ if (walletListeners[listenerKey].size === 0)
17
+ delete walletListeners[listenerKey];
18
+ };
19
+ requestChannel.handle('onWalletEvent', ({ event, eventParams, walletId }) => {
20
+ var _a;
21
+ const listenerKey = getWalletListenerKey(walletId, event);
22
+ (_a = walletListeners[listenerKey]) === null || _a === void 0 ? void 0 : _a.forEach((callback) => callback(...eventParams));
23
+ });
24
+ return { offWalletEvent, onWalletEvent };
25
+ };
26
+
27
+ export { createWalletListenerMethods };
@@ -0,0 +1 @@
1
+ export * from './createWalletListenerMethods';
@@ -15,13 +15,13 @@ const createEmbeddedWalletsModule = (core) => {
15
15
  messageTransport: core.messageTransport,
16
16
  });
17
17
  const messageEvents = messageTransport.createEventEmitterForMessages({
18
+ eventNames: messageTransport.embeddedWalletsEventNames,
18
19
  initialEventEmitter: store.eventEmitter,
19
- key: 'embeddedWallets',
20
20
  messageTransport: core.messageTransport,
21
21
  });
22
22
  const requestChannel = messageTransport.createRequestChannel(core.messageTransport);
23
23
  return Object.assign(store.getters, pickListenerActions.pickListenerActions(messageEvents), {
24
- createWallet: () => requestChannel.request('createWallet'),
24
+ createWallet: (args) => requestChannel.request('createWallet', args),
25
25
  getWallet: () => requestChannel.request('getWallet'),
26
26
  });
27
27
  };
@@ -1,6 +1,9 @@
1
- import { EmbeddedWalletsModuleMessages, EmbeddedWalletsModuleState, StoreEventListeners } from '@dynamic-labs/message-transport';
1
+ import { EmbeddedWalletsModuleMessages, EmbeddedWalletsModuleState, StoreEventListeners, PickedEventListeners } from '@dynamic-labs/message-transport';
2
2
  import { Core } from '../../../client/core';
3
- type PublicEmbeddedWalletsModuleMessages = Pick<EmbeddedWalletsModuleMessages, 'createWallet' | 'getWallet'>;
4
- export type EmbeddedWalletsModule = EmbeddedWalletsModuleState & StoreEventListeners<EmbeddedWalletsModuleState> & PublicEmbeddedWalletsModuleMessages;
3
+ type PublicEmbeddedWalletsModuleMessages = Pick<EmbeddedWalletsModuleMessages, 'embeddedWalletCreated'>;
4
+ export type EmbeddedWalletsModule = EmbeddedWalletsModuleState & StoreEventListeners<EmbeddedWalletsModuleState> & PickedEventListeners<PublicEmbeddedWalletsModuleMessages> & {
5
+ createWallet: EmbeddedWalletsModuleMessages['createWallet'];
6
+ getWallet: EmbeddedWalletsModuleMessages['getWallet'];
7
+ };
5
8
  export declare const createEmbeddedWalletsModule: (core: Core) => EmbeddedWalletsModule;
6
9
  export {};
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- import { createStore, createEventEmitterForMessages, createRequestChannel } from '@dynamic-labs/message-transport';
2
+ import { createStore, createEventEmitterForMessages, embeddedWalletsEventNames, createRequestChannel } from '@dynamic-labs/message-transport';
3
3
  import { pickListenerActions } from '../../../utils/pickListenerActions/pickListenerActions.js';
4
4
 
5
5
  const createEmbeddedWalletsModule = (core) => {
@@ -11,13 +11,13 @@ const createEmbeddedWalletsModule = (core) => {
11
11
  messageTransport: core.messageTransport,
12
12
  });
13
13
  const messageEvents = createEventEmitterForMessages({
14
+ eventNames: embeddedWalletsEventNames,
14
15
  initialEventEmitter: store.eventEmitter,
15
- key: 'embeddedWallets',
16
16
  messageTransport: core.messageTransport,
17
17
  });
18
18
  const requestChannel = createRequestChannel(core.messageTransport);
19
19
  return Object.assign(store.getters, pickListenerActions(messageEvents), {
20
- createWallet: () => requestChannel.request('createWallet'),
20
+ createWallet: (args) => requestChannel.request('createWallet', args),
21
21
  getWallet: () => requestChannel.request('getWallet'),
22
22
  });
23
23
  };
@@ -5,8 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var messageTransport = require('@dynamic-labs/message-transport');
7
7
  var pickListenerActions = require('../../utils/pickListenerActions/pickListenerActions.cjs');
8
+ var accountAbstractionModule = require('./accountAbstractionModule/accountAbstractionModule.cjs');
9
+ var createWalletListenerMethods = require('./createWalletListenerMethods/createWalletListenerMethods.cjs');
8
10
  var embeddedWalletsModule = require('./embeddedWalletsModule/embeddedWalletsModule.cjs');
9
11
 
12
+ const defaultConnectedWalletHandler = () => Promise.resolve(true);
10
13
  const createWalletsModule = (core) => {
11
14
  const requestChannel = messageTransport.createRequestChannel(core.messageTransport);
12
15
  const store = messageTransport.createStore({
@@ -14,15 +17,30 @@ const createWalletsModule = (core) => {
14
17
  key: 'wallets',
15
18
  messageTransport: core.messageTransport,
16
19
  });
20
+ const messageEvents = messageTransport.createEventEmitterForMessages({
21
+ eventNames: messageTransport.userWalletsEventNames,
22
+ initialEventEmitter: store.eventEmitter,
23
+ messageTransport: core.messageTransport,
24
+ });
17
25
  const signMessage = (params) => requestChannel.request('signMessage', params);
18
26
  const getBalance = (params) => requestChannel.request('getBalance', params);
19
27
  const switchNetwork = (params) => requestChannel.request('switchNetwork', params);
20
28
  const getNetwork = (params) => requestChannel.request('getNetwork', params);
21
29
  const setPrimary = (params) => requestChannel.request('setPrimary', params);
22
- return Object.assign(store.getters, pickListenerActions.pickListenerActions(store.eventEmitter), {
30
+ const { offWalletEvent, onWalletEvent } = createWalletListenerMethods.createWalletListenerMethods(requestChannel);
31
+ const handlers = {
32
+ walletConnected: defaultConnectedWalletHandler,
33
+ };
34
+ requestChannel.handle('handleConnectedWallet', (wallet) => handlers.walletConnected(wallet));
35
+ return Object.assign(store.getters, pickListenerActions.pickListenerActions(messageEvents), {
36
+ accountAbstraction: accountAbstractionModule.createAccountAbstractionModule(core),
37
+ clearHandler: () => (handlers.walletConnected = defaultConnectedWalletHandler),
23
38
  embedded: embeddedWalletsModule.createEmbeddedWalletsModule(core),
24
39
  getBalance,
25
40
  getNetwork,
41
+ offWalletEvent,
42
+ onWalletEvent,
43
+ setHandler: (_, handler) => (handlers.walletConnected = handler),
26
44
  setPrimary,
27
45
  signMessage,
28
46
  switchNetwork,
@@ -1,12 +1,23 @@
1
- import { StoreEventListeners, WalletsModuleMessages, WalletsModuleState } from '@dynamic-labs/message-transport';
1
+ import { PickedEventListeners, StoreEventListeners, WalletsModuleMessages, WalletsModuleState, userWalletsEventNames } from '@dynamic-labs/message-transport';
2
+ import { BaseWallet } from '@dynamic-labs/types';
2
3
  import { Core } from '../../client/core';
4
+ import { type AccountAbstractionModule } from './accountAbstractionModule';
5
+ import { WalletEventListener } from './createWalletListenerMethods';
3
6
  import { EmbeddedWalletsModule } from './embeddedWalletsModule';
4
- export type WalletsModule = WalletsModuleState & {
7
+ export type PublicWalletModuleMessages = Pick<WalletsModuleMessages, typeof userWalletsEventNames[number]>;
8
+ export type WalletsModule = WalletsModuleState & PickedEventListeners<PublicWalletModuleMessages> & StoreEventListeners<WalletsModuleState> & {
5
9
  embedded: EmbeddedWalletsModule;
10
+ accountAbstraction: AccountAbstractionModule;
6
11
  signMessage: WalletsModuleMessages['signMessage'];
7
12
  switchNetwork: WalletsModuleMessages['switchNetwork'];
8
13
  getBalance: WalletsModuleMessages['getBalance'];
9
14
  getNetwork: WalletsModuleMessages['getNetwork'];
10
15
  setPrimary: WalletsModuleMessages['setPrimary'];
11
- } & StoreEventListeners<WalletsModuleState>;
16
+ onWalletEvent: WalletEventListener;
17
+ offWalletEvent: WalletEventListener;
18
+ setHandler: (name: 'walletConnected', handler: ConnectedWalletsHandler) => void;
19
+ clearHandler: (name: 'walletConnected') => void;
20
+ };
21
+ type ConnectedWalletsHandler = (wallet: Partial<BaseWallet>) => Promise<boolean>;
12
22
  export declare const createWalletsModule: (core: Core) => WalletsModule;
23
+ export {};
@@ -1,8 +1,11 @@
1
1
  'use client'
2
- import { createRequestChannel, createStore } from '@dynamic-labs/message-transport';
2
+ import { createRequestChannel, createStore, createEventEmitterForMessages, userWalletsEventNames } from '@dynamic-labs/message-transport';
3
3
  import { pickListenerActions } from '../../utils/pickListenerActions/pickListenerActions.js';
4
+ import { createAccountAbstractionModule } from './accountAbstractionModule/accountAbstractionModule.js';
5
+ import { createWalletListenerMethods } from './createWalletListenerMethods/createWalletListenerMethods.js';
4
6
  import { createEmbeddedWalletsModule } from './embeddedWalletsModule/embeddedWalletsModule.js';
5
7
 
8
+ const defaultConnectedWalletHandler = () => Promise.resolve(true);
6
9
  const createWalletsModule = (core) => {
7
10
  const requestChannel = createRequestChannel(core.messageTransport);
8
11
  const store = createStore({
@@ -10,15 +13,30 @@ const createWalletsModule = (core) => {
10
13
  key: 'wallets',
11
14
  messageTransport: core.messageTransport,
12
15
  });
16
+ const messageEvents = createEventEmitterForMessages({
17
+ eventNames: userWalletsEventNames,
18
+ initialEventEmitter: store.eventEmitter,
19
+ messageTransport: core.messageTransport,
20
+ });
13
21
  const signMessage = (params) => requestChannel.request('signMessage', params);
14
22
  const getBalance = (params) => requestChannel.request('getBalance', params);
15
23
  const switchNetwork = (params) => requestChannel.request('switchNetwork', params);
16
24
  const getNetwork = (params) => requestChannel.request('getNetwork', params);
17
25
  const setPrimary = (params) => requestChannel.request('setPrimary', params);
18
- return Object.assign(store.getters, pickListenerActions(store.eventEmitter), {
26
+ const { offWalletEvent, onWalletEvent } = createWalletListenerMethods(requestChannel);
27
+ const handlers = {
28
+ walletConnected: defaultConnectedWalletHandler,
29
+ };
30
+ requestChannel.handle('handleConnectedWallet', (wallet) => handlers.walletConnected(wallet));
31
+ return Object.assign(store.getters, pickListenerActions(messageEvents), {
32
+ accountAbstraction: createAccountAbstractionModule(core),
33
+ clearHandler: () => (handlers.walletConnected = defaultConnectedWalletHandler),
19
34
  embedded: createEmbeddedWalletsModule(core),
20
35
  getBalance,
21
36
  getNetwork,
37
+ offWalletEvent,
38
+ onWalletEvent,
39
+ setHandler: (_, handler) => (handlers.walletConnected = handler),
22
40
  setPrimary,
23
41
  signMessage,
24
42
  switchNetwork,
package/src/types.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import type { BaseWallet } from '@dynamic-labs/types';
2
+ export type Wallet = BaseWallet;
@@ -9,9 +9,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
9
  */
10
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
11
  const pickListenerActions = (emitter) => ({
12
- off: emitter.off.bind(emitter),
13
- on: emitter.on.bind(emitter),
14
- once: emitter.once.bind(emitter),
12
+ off: (eventName, listener) => {
13
+ emitter.off(eventName, listener);
14
+ },
15
+ on: (eventName, listener) => {
16
+ emitter.on(eventName, listener);
17
+ },
18
+ once: (eventName, listener) => {
19
+ emitter.once(eventName, listener);
20
+ },
15
21
  });
16
22
 
17
23
  exports.pickListenerActions = pickListenerActions;
@@ -1,6 +1,7 @@
1
1
  import EventEmitter from 'eventemitter3';
2
+ import { PickedEventListeners } from '@dynamic-labs/message-transport';
2
3
  /**
3
4
  * This only serves to limit the methods of an event emitter to
4
5
  * only the ones necessary for event listening
5
6
  */
6
- export declare const pickListenerActions: <T extends EventEmitter<any, any>>(emitter: T) => Pick<T, 'on' | 'off' | 'once'>;
7
+ export declare const pickListenerActions: <T extends Record<string, any>>(emitter: EventEmitter<T>) => PickedEventListeners<T>;
@@ -5,9 +5,15 @@
5
5
  */
6
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
7
  const pickListenerActions = (emitter) => ({
8
- off: emitter.off.bind(emitter),
9
- on: emitter.on.bind(emitter),
10
- once: emitter.once.bind(emitter),
8
+ off: (eventName, listener) => {
9
+ emitter.off(eventName, listener);
10
+ },
11
+ on: (eventName, listener) => {
12
+ emitter.on(eventName, listener);
13
+ },
14
+ once: (eventName, listener) => {
15
+ emitter.once(eventName, listener);
16
+ },
11
17
  });
12
18
 
13
19
  export { pickListenerActions };