@dynamic-labs/client 4.0.0-alpha.7 → 4.0.0-alpha.8

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 (27) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +5 -5
  5. package/src/client/client.d.ts +1 -1
  6. package/src/modules/authModule/authModule.cjs +8 -1
  7. package/src/modules/authModule/authModule.d.ts +8 -3
  8. package/src/modules/authModule/authModule.js +9 -2
  9. package/src/modules/authModule/emailAuthModule/emailAuthModule.cjs +7 -2
  10. package/src/modules/authModule/emailAuthModule/emailAuthModule.d.ts +3 -2
  11. package/src/modules/authModule/emailAuthModule/emailAuthModule.js +8 -3
  12. package/src/modules/authModule/smsAuthModule/smsAuthModule.cjs +7 -2
  13. package/src/modules/authModule/smsAuthModule/smsAuthModule.d.ts +3 -2
  14. package/src/modules/authModule/smsAuthModule/smsAuthModule.js +8 -3
  15. package/src/modules/networksModule/networksModule.d.ts +1 -1
  16. package/src/modules/userInterfaceModule/userInterfaceModule.cjs +7 -2
  17. package/src/modules/userInterfaceModule/userInterfaceModule.d.ts +5 -2
  18. package/src/modules/userInterfaceModule/userInterfaceModule.js +8 -3
  19. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.cjs +1 -1
  20. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.d.ts +6 -3
  21. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.js +2 -2
  22. package/src/modules/walletsModule/walletsModule.cjs +13 -1
  23. package/src/modules/walletsModule/walletsModule.d.ts +9 -3
  24. package/src/modules/walletsModule/walletsModule.js +14 -2
  25. package/src/utils/pickListenerActions/pickListenerActions.cjs +9 -3
  26. package/src/utils/pickListenerActions/pickListenerActions.d.ts +2 -1
  27. package/src/utils/pickListenerActions/pickListenerActions.js +9 -3
package/CHANGELOG.md CHANGED
@@ -1,4 +1,18 @@
1
1
 
2
+ ## [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)
3
+
4
+
5
+ ### Features
6
+
7
+ * 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))
8
+ * 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))
9
+ * 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))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * 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))
15
+
2
16
  ## [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)
3
17
 
4
18
 
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.7";
6
+ var version = "4.0.0-alpha.8";
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.7";
2
+ var version = "4.0.0-alpha.8";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/client",
3
- "version": "4.0.0-alpha.7",
3
+ "version": "4.0.0-alpha.8",
4
4
  "description": "Core package for utilizing Dynamic's sdk",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -19,10 +19,10 @@
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
21
  "@vue/reactivity": "3.4.21",
22
- "@dynamic-labs/assert-package-version": "4.0.0-alpha.7",
23
- "@dynamic-labs/logger": "4.0.0-alpha.7",
24
- "@dynamic-labs/message-transport": "4.0.0-alpha.7",
25
- "@dynamic-labs/types": "4.0.0-alpha.7",
22
+ "@dynamic-labs/assert-package-version": "4.0.0-alpha.8",
23
+ "@dynamic-labs/logger": "4.0.0-alpha.8",
24
+ "@dynamic-labs/message-transport": "4.0.0-alpha.8",
25
+ "@dynamic-labs/types": "4.0.0-alpha.8",
26
26
  "eventemitter3": "5.0.1"
27
27
  },
28
28
  "peerDependencies": {}
@@ -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 */
@@ -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,10 +4,15 @@
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: {
12
17
  hide: () => userInterfaceRequestChannel.emit('hideAuthFlow'),
13
18
  show: () => userInterfaceRequestChannel.emit('openAuthFlow'),
@@ -19,7 +24,7 @@ const createUserInterfaceModule = (core) => {
19
24
  wallets: {
20
25
  revealEmbeddedWalletKey: (params) => userInterfaceRequestChannel.emit('revealEmbeddedWalletKey', params),
21
26
  },
22
- };
27
+ });
23
28
  };
24
29
 
25
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.
@@ -37,4 +37,7 @@ export type UserInterfaceModule = {
37
37
  revealEmbeddedWalletKey: UserInterfaceModuleMessages['revealEmbeddedWalletKey'];
38
38
  };
39
39
  };
40
+ type PublicUserInterfaceModuleMessages = Pick<UserInterfaceModuleMessages, typeof userInterfaceEventNames[number]>;
41
+ export type UserInterfaceModule = PickedEventListeners<PublicUserInterfaceModuleMessages> & UserInterfaceModuleMethods;
40
42
  export declare const createUserInterfaceModule: (core: Core) => UserInterfaceModule;
43
+ export {};
@@ -1,9 +1,14 @@
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: {
8
13
  hide: () => userInterfaceRequestChannel.emit('hideAuthFlow'),
9
14
  show: () => userInterfaceRequestChannel.emit('openAuthFlow'),
@@ -15,7 +20,7 @@ const createUserInterfaceModule = (core) => {
15
20
  wallets: {
16
21
  revealEmbeddedWalletKey: (params) => userInterfaceRequestChannel.emit('revealEmbeddedWalletKey', params),
17
22
  },
18
- };
23
+ });
19
24
  };
20
25
 
21
26
  export { createUserInterfaceModule };
@@ -15,8 +15,8 @@ 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);
@@ -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,8 +11,8 @@ 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);
@@ -9,6 +9,7 @@ var accountAbstractionModule = require('./accountAbstractionModule/accountAbstra
9
9
  var createWalletListenerMethods = require('./createWalletListenerMethods/createWalletListenerMethods.cjs');
10
10
  var embeddedWalletsModule = require('./embeddedWalletsModule/embeddedWalletsModule.cjs');
11
11
 
12
+ const defaultConnectedWalletHandler = () => Promise.resolve(true);
12
13
  const createWalletsModule = (core) => {
13
14
  const requestChannel = messageTransport.createRequestChannel(core.messageTransport);
14
15
  const store = messageTransport.createStore({
@@ -16,19 +17,30 @@ const createWalletsModule = (core) => {
16
17
  key: 'wallets',
17
18
  messageTransport: core.messageTransport,
18
19
  });
20
+ const messageEvents = messageTransport.createEventEmitterForMessages({
21
+ eventNames: messageTransport.userWalletsEventNames,
22
+ initialEventEmitter: store.eventEmitter,
23
+ messageTransport: core.messageTransport,
24
+ });
19
25
  const signMessage = (params) => requestChannel.request('signMessage', params);
20
26
  const getBalance = (params) => requestChannel.request('getBalance', params);
21
27
  const switchNetwork = (params) => requestChannel.request('switchNetwork', params);
22
28
  const getNetwork = (params) => requestChannel.request('getNetwork', params);
23
29
  const setPrimary = (params) => requestChannel.request('setPrimary', params);
24
30
  const { offWalletEvent, onWalletEvent } = createWalletListenerMethods.createWalletListenerMethods(requestChannel);
25
- return Object.assign(store.getters, pickListenerActions.pickListenerActions(store.eventEmitter), {
31
+ const handlers = {
32
+ walletConnected: defaultConnectedWalletHandler,
33
+ };
34
+ requestChannel.handle('handleConnectedWallet', (wallet) => handlers.walletConnected(wallet));
35
+ return Object.assign(store.getters, pickListenerActions.pickListenerActions(messageEvents), {
26
36
  accountAbstraction: accountAbstractionModule.createAccountAbstractionModule(core),
37
+ clearHandler: () => (handlers.walletConnected = defaultConnectedWalletHandler),
27
38
  embedded: embeddedWalletsModule.createEmbeddedWalletsModule(core),
28
39
  getBalance,
29
40
  getNetwork,
30
41
  offWalletEvent,
31
42
  onWalletEvent,
43
+ setHandler: (_, handler) => (handlers.walletConnected = handler),
32
44
  setPrimary,
33
45
  signMessage,
34
46
  switchNetwork,
@@ -1,9 +1,11 @@
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';
3
4
  import { type AccountAbstractionModule } from './accountAbstractionModule';
4
5
  import { WalletEventListener } from './createWalletListenerMethods';
5
6
  import { EmbeddedWalletsModule } from './embeddedWalletsModule';
6
- export type WalletsModule = WalletsModuleState & {
7
+ export type PublicWalletModuleMessages = Pick<WalletsModuleMessages, typeof userWalletsEventNames[number]>;
8
+ export type WalletsModule = WalletsModuleState & PickedEventListeners<PublicWalletModuleMessages> & StoreEventListeners<WalletsModuleState> & {
7
9
  embedded: EmbeddedWalletsModule;
8
10
  accountAbstraction: AccountAbstractionModule;
9
11
  signMessage: WalletsModuleMessages['signMessage'];
@@ -13,5 +15,9 @@ export type WalletsModule = WalletsModuleState & {
13
15
  setPrimary: WalletsModuleMessages['setPrimary'];
14
16
  onWalletEvent: WalletEventListener;
15
17
  offWalletEvent: WalletEventListener;
16
- } & StoreEventListeners<WalletsModuleState>;
18
+ setHandler: (name: 'walletConnected', handler: ConnectedWalletsHandler) => void;
19
+ clearHandler: (name: 'walletConnected') => void;
20
+ };
21
+ type ConnectedWalletsHandler = (wallet: Partial<BaseWallet>) => Promise<boolean>;
17
22
  export declare const createWalletsModule: (core: Core) => WalletsModule;
23
+ export {};
@@ -1,10 +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
4
  import { createAccountAbstractionModule } from './accountAbstractionModule/accountAbstractionModule.js';
5
5
  import { createWalletListenerMethods } from './createWalletListenerMethods/createWalletListenerMethods.js';
6
6
  import { createEmbeddedWalletsModule } from './embeddedWalletsModule/embeddedWalletsModule.js';
7
7
 
8
+ const defaultConnectedWalletHandler = () => Promise.resolve(true);
8
9
  const createWalletsModule = (core) => {
9
10
  const requestChannel = createRequestChannel(core.messageTransport);
10
11
  const store = createStore({
@@ -12,19 +13,30 @@ const createWalletsModule = (core) => {
12
13
  key: 'wallets',
13
14
  messageTransport: core.messageTransport,
14
15
  });
16
+ const messageEvents = createEventEmitterForMessages({
17
+ eventNames: userWalletsEventNames,
18
+ initialEventEmitter: store.eventEmitter,
19
+ messageTransport: core.messageTransport,
20
+ });
15
21
  const signMessage = (params) => requestChannel.request('signMessage', params);
16
22
  const getBalance = (params) => requestChannel.request('getBalance', params);
17
23
  const switchNetwork = (params) => requestChannel.request('switchNetwork', params);
18
24
  const getNetwork = (params) => requestChannel.request('getNetwork', params);
19
25
  const setPrimary = (params) => requestChannel.request('setPrimary', params);
20
26
  const { offWalletEvent, onWalletEvent } = createWalletListenerMethods(requestChannel);
21
- return Object.assign(store.getters, pickListenerActions(store.eventEmitter), {
27
+ const handlers = {
28
+ walletConnected: defaultConnectedWalletHandler,
29
+ };
30
+ requestChannel.handle('handleConnectedWallet', (wallet) => handlers.walletConnected(wallet));
31
+ return Object.assign(store.getters, pickListenerActions(messageEvents), {
22
32
  accountAbstraction: createAccountAbstractionModule(core),
33
+ clearHandler: () => (handlers.walletConnected = defaultConnectedWalletHandler),
23
34
  embedded: createEmbeddedWalletsModule(core),
24
35
  getBalance,
25
36
  getNetwork,
26
37
  offWalletEvent,
27
38
  onWalletEvent,
39
+ setHandler: (_, handler) => (handlers.walletConnected = handler),
28
40
  setPrimary,
29
41
  signMessage,
30
42
  switchNetwork,
@@ -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 };