@dynamic-labs/client 4.0.0-alpha.1 → 4.0.0-alpha.11

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 +123 -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 +19 -2
  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,127 @@
1
1
 
2
+ ## [4.0.0-alpha.11](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2024-10-15)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * missing null check in property accessor ([#7122](https://github.com/dynamic-labs/dynamic-auth/issues/7122)) ([bbb5e76](https://github.com/dynamic-labs/dynamic-auth/commit/bbb5e76c1284edad2829605444dda24971027a57))
8
+
9
+ ## [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)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * 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))
15
+
16
+ ## [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)
17
+
18
+
19
+ ### Features
20
+
21
+ * 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))
22
+ * 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))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * 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))
28
+
29
+ ## [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)
30
+
31
+
32
+ ### Features
33
+
34
+ * 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))
35
+ * 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))
36
+ * 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))
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * 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))
42
+
43
+ ## [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)
44
+
45
+
46
+ ### Features
47
+
48
+ * 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))
49
+ * 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))
50
+ * 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))
51
+
52
+
53
+ ### Bug Fixes
54
+
55
+ * 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))
56
+ * 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))
57
+ * 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))
58
+ * update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
59
+ * 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))
60
+
61
+ ## [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)
62
+
63
+
64
+ ### ⚠ BREAKING CHANGES
65
+
66
+ * remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
67
+
68
+ ### Features
69
+
70
+ * global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
71
+
72
+
73
+ ### Bug Fixes
74
+
75
+ * 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))
76
+ * add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
77
+ * 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))
78
+ * 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))
79
+ * 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))
80
+
81
+
82
+ ## [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)
83
+
84
+
85
+ ### Features
86
+
87
+ * 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))
88
+
89
+
90
+ ### Bug Fixes
91
+
92
+ * **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))
93
+ * react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
94
+
95
+ ## [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)
96
+
97
+
98
+ ### Bug Fixes
99
+
100
+ * 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))
101
+ * update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
102
+
103
+ ## [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)
104
+
105
+
106
+ ### Features
107
+
108
+ * 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))
109
+
110
+
111
+ ### Bug Fixes
112
+
113
+ * 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))
114
+ * 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))
115
+
116
+ ## [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)
117
+
118
+
119
+ ### Features
120
+
121
+ * add iconVariant prop to DynamicBridgeWidget ([#6915](https://github.com/dynamic-labs/DynamicAuth/issues/6915)) ([8aa0f3d](https://github.com/dynamic-labs/DynamicAuth/commit/8aa0f3d8d8c41c7b5c4796106f611f208010cb6d))
122
+ * 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))
123
+ * **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))
124
+
2
125
  ## [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)
3
126
 
4
127
 
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.1";
6
+ var version = "4.0.0-alpha.11";
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.1";
2
+ var version = "4.0.0-alpha.11";
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.1",
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.11",
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.1",
31
- "@dynamic-labs/message-transport": "4.0.0-alpha.1",
32
- "@dynamic-labs/types": "4.0.0-alpha.1",
22
+ "@dynamic-labs/assert-package-version": "4.0.0-alpha.11",
23
+ "@dynamic-labs/logger": "4.0.0-alpha.11",
24
+ "@dynamic-labs/message-transport": "4.0.0-alpha.11",
25
+ "@dynamic-labs/types": "4.0.0-alpha.11",
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,6 +1,6 @@
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
5
  /**
6
6
  * Opens the auth flow UI.
@@ -9,6 +9,13 @@ export type UserInterfaceModule = {
9
9
  * Rejects if the request is not received.
10
10
  */
11
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>;
12
19
  };
13
20
  userProfile: {
14
21
  /**
@@ -18,9 +25,19 @@ export type UserInterfaceModule = {
18
25
  * Rejects if the request is not received.
19
26
  */
20
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>;
21
35
  };
22
36
  wallets: {
23
37
  revealEmbeddedWalletKey: UserInterfaceModuleMessages['revealEmbeddedWalletKey'];
24
38
  };
25
39
  };
40
+ type PublicUserInterfaceModuleMessages = Pick<UserInterfaceModuleMessages, typeof userInterfaceEventNames[number]>;
41
+ export type UserInterfaceModule = PickedEventListeners<PublicUserInterfaceModuleMessages> & UserInterfaceModuleMethods;
26
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 };