@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
@@ -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 };
@@ -0,0 +1 @@
1
+ export { setupFetchHandler } from './setupFetchHandler';
@@ -0,0 +1,24 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../_virtual/_tslib.cjs');
7
+ var messageTransport = require('@dynamic-labs/message-transport');
8
+
9
+ const setupFetchHandler = (core) => {
10
+ const fetchRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
11
+ fetchRequestChannel.handle('fetch', (input, init) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
12
+ const response = yield fetch(input, init);
13
+ const responseBody = yield response.text();
14
+ return {
15
+ body: responseBody,
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ headers: Object.fromEntries(response.headers.entries()),
18
+ status: response.status,
19
+ statusText: response.statusText,
20
+ };
21
+ }));
22
+ };
23
+
24
+ exports.setupFetchHandler = setupFetchHandler;
@@ -0,0 +1,2 @@
1
+ import type { Core } from '../../client/core';
2
+ export declare const setupFetchHandler: (core: Core) => void;
@@ -0,0 +1,20 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../_virtual/_tslib.js';
3
+ import { createRequestChannel } from '@dynamic-labs/message-transport';
4
+
5
+ const setupFetchHandler = (core) => {
6
+ const fetchRequestChannel = createRequestChannel(core.messageTransport);
7
+ fetchRequestChannel.handle('fetch', (input, init) => __awaiter(void 0, void 0, void 0, function* () {
8
+ const response = yield fetch(input, init);
9
+ const responseBody = yield response.text();
10
+ return {
11
+ body: responseBody,
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ headers: Object.fromEntries(response.headers.entries()),
14
+ status: response.status,
15
+ statusText: response.statusText,
16
+ };
17
+ }));
18
+ };
19
+
20
+ export { setupFetchHandler };