@dynamic-labs/client 4.0.0-alpha.2 → 4.0.0-alpha.21

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 (58) hide show
  1. package/CHANGELOG.md +185 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +7 -14
  5. package/src/client/client.cjs +4 -0
  6. package/src/client/client.d.ts +1 -1
  7. package/src/client/client.js +4 -0
  8. package/src/client/core/core.cjs +42 -40
  9. package/src/client/core/core.d.ts +6 -5
  10. package/src/client/core/core.js +41 -39
  11. package/src/client/core/modules/initializationModule/initializationModule.cjs +24 -1
  12. package/src/client/core/modules/initializationModule/initializationModule.js +24 -1
  13. package/src/client/core/modules/manifestModule/manifestModule.cjs +5 -1
  14. package/src/client/core/modules/manifestModule/manifestModule.d.ts +1 -1
  15. package/src/client/core/modules/manifestModule/manifestModule.js +5 -1
  16. package/src/client/core/modules/manifestModule/validateManifest/validateManifest.cjs +2 -2
  17. package/src/client/core/modules/manifestModule/validateManifest/validateManifest.js +2 -2
  18. package/src/index.cjs +3 -1
  19. package/src/index.d.ts +1 -1
  20. package/src/index.js +4 -0
  21. package/src/modules/authModule/authModule.cjs +8 -1
  22. package/src/modules/authModule/authModule.d.ts +8 -3
  23. package/src/modules/authModule/authModule.js +9 -2
  24. package/src/modules/authModule/emailAuthModule/emailAuthModule.cjs +7 -2
  25. package/src/modules/authModule/emailAuthModule/emailAuthModule.d.ts +3 -2
  26. package/src/modules/authModule/emailAuthModule/emailAuthModule.js +8 -3
  27. package/src/modules/authModule/smsAuthModule/smsAuthModule.cjs +7 -2
  28. package/src/modules/authModule/smsAuthModule/smsAuthModule.d.ts +3 -2
  29. package/src/modules/authModule/smsAuthModule/smsAuthModule.js +8 -3
  30. package/src/modules/networksModule/networksModule.d.ts +1 -1
  31. package/src/modules/sdkModule/sdkModule.cjs +6 -1
  32. package/src/modules/sdkModule/sdkModule.d.ts +6 -2
  33. package/src/modules/sdkModule/sdkModule.js +6 -1
  34. package/src/modules/userInterfaceModule/userInterfaceModule.cjs +7 -2
  35. package/src/modules/userInterfaceModule/userInterfaceModule.d.ts +5 -2
  36. package/src/modules/userInterfaceModule/userInterfaceModule.js +8 -3
  37. package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.cjs +17 -0
  38. package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.d.ts +14 -0
  39. package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.js +13 -0
  40. package/src/modules/walletsModule/accountAbstractionModule/index.d.ts +1 -0
  41. package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.cjs +31 -0
  42. package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.d.ts +8 -0
  43. package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.js +27 -0
  44. package/src/modules/walletsModule/createWalletListenerMethods/index.d.ts +1 -0
  45. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.cjs +1 -1
  46. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.d.ts +6 -3
  47. package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.js +2 -2
  48. package/src/modules/walletsModule/walletsModule.cjs +19 -1
  49. package/src/modules/walletsModule/walletsModule.d.ts +14 -3
  50. package/src/modules/walletsModule/walletsModule.js +20 -2
  51. package/src/types.d.ts +2 -0
  52. package/src/utils/pickListenerActions/pickListenerActions.cjs +9 -3
  53. package/src/utils/pickListenerActions/pickListenerActions.d.ts +2 -1
  54. package/src/utils/pickListenerActions/pickListenerActions.js +9 -3
  55. package/src/utils/setupFetchHandler/index.d.ts +1 -0
  56. package/src/utils/setupFetchHandler/setupFetchHandler.cjs +24 -0
  57. package/src/utils/setupFetchHandler/setupFetchHandler.d.ts +2 -0
  58. package/src/utils/setupFetchHandler/setupFetchHandler.js +20 -0
@@ -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
  };
@@ -10,8 +10,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
10
10
  const mandatoryFields = {
11
11
  clientVersion: "We were unable to retrieve the Dynamic Client's version from your app. Please contact us about this.",
12
12
  environmentId: 'You must provide an environment id to the Dynamic Client.',
13
- platform: 'Missing platform specific extension, like BrowserExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
14
- redirectUrl: 'Missing platform specific extension, like BrowserExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
13
+ platform: 'Missing platform specific extension, like WebExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
14
+ redirectUrl: 'Missing platform specific extension, like WebExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
15
15
  };
16
16
  const validateManifest = (partialManifest) => {
17
17
  /**
@@ -6,8 +6,8 @@
6
6
  const mandatoryFields = {
7
7
  clientVersion: "We were unable to retrieve the Dynamic Client's version from your app. Please contact us about this.",
8
8
  environmentId: 'You must provide an environment id to the Dynamic Client.',
9
- platform: 'Missing platform specific extension, like BrowserExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
10
- redirectUrl: 'Missing platform specific extension, like BrowserExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
9
+ platform: 'Missing platform specific extension, like WebExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
10
+ redirectUrl: 'Missing platform specific extension, like WebExtension or ReactNativeExtension. See how to setup Dynamic Client in our docs for help.',
11
11
  };
12
12
  const validateManifest = (partialManifest) => {
13
13
  /**
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>>;
@@ -3,6 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
+ var reactivity = require('@vue/reactivity');
6
7
  var messageTransport = require('@dynamic-labs/message-transport');
7
8
  var pickListenerActions = require('../../utils/pickListenerActions/pickListenerActions.cjs');
8
9
  var addProperty = require('../../utils/addProperty/addProperty.cjs');
@@ -15,7 +16,11 @@ const createSdkModule = (core) => {
15
16
  key: 'sdk',
16
17
  messageTransport: core.messageTransport,
17
18
  });
18
- const baseModule = Object.assign(store.getters, pickListenerActions.pickListenerActions(store.eventEmitter));
19
+ const eventEmitter = store.eventEmitter;
20
+ const baseModule = Object.assign(store.getters, pickListenerActions.pickListenerActions(eventEmitter));
21
+ reactivity.effect(() => core.initialization.error, {
22
+ scheduler: () => eventEmitter.emit('error', core.initialization.error),
23
+ });
19
24
  return addProperty.addProperty(baseModule, 'error', {
20
25
  get: () => core.initialization.error,
21
26
  });
@@ -1,6 +1,10 @@
1
- import { SdkModuleState, StoreEventListeners } from '@dynamic-labs/message-transport';
1
+ import { PickedEventListeners, SdkModuleState, StoreEventListeners } from '@dynamic-labs/message-transport';
2
2
  import { Core } from '../../client/core';
3
- export type SdkModule = SdkModuleState & StoreEventListeners<SdkModuleState> & {
3
+ type ErrorEvent = {
4
+ error: (error: Error | null) => void;
5
+ };
6
+ export type SdkModule = SdkModuleState & StoreEventListeners<SdkModuleState> & PickedEventListeners<ErrorEvent> & {
4
7
  readonly error: Error | null;
5
8
  };
6
9
  export declare const createSdkModule: (core: Core) => SdkModule;
10
+ export {};
@@ -1,4 +1,5 @@
1
1
  'use client'
2
+ import { effect } from '@vue/reactivity';
2
3
  import { createStore } from '@dynamic-labs/message-transport';
3
4
  import { pickListenerActions } from '../../utils/pickListenerActions/pickListenerActions.js';
4
5
  import { addProperty } from '../../utils/addProperty/addProperty.js';
@@ -11,7 +12,11 @@ const createSdkModule = (core) => {
11
12
  key: 'sdk',
12
13
  messageTransport: core.messageTransport,
13
14
  });
14
- const baseModule = Object.assign(store.getters, pickListenerActions(store.eventEmitter));
15
+ const eventEmitter = store.eventEmitter;
16
+ const baseModule = Object.assign(store.getters, pickListenerActions(eventEmitter));
17
+ effect(() => core.initialization.error, {
18
+ scheduler: () => eventEmitter.emit('error', core.initialization.error),
19
+ });
15
20
  return addProperty(baseModule, 'error', {
16
21
  get: () => core.initialization.error,
17
22
  });
@@ -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 };
@@ -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,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);