@dynamic-labs/client 4.0.0-alpha.6 → 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.
- package/CHANGELOG.md +32 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +5 -5
- package/src/client/client.d.ts +1 -1
- package/src/client/core/core.d.ts +5 -4
- package/src/index.d.ts +1 -1
- package/src/modules/authModule/authModule.cjs +8 -1
- package/src/modules/authModule/authModule.d.ts +8 -3
- package/src/modules/authModule/authModule.js +9 -2
- package/src/modules/authModule/emailAuthModule/emailAuthModule.cjs +7 -2
- package/src/modules/authModule/emailAuthModule/emailAuthModule.d.ts +3 -2
- package/src/modules/authModule/emailAuthModule/emailAuthModule.js +8 -3
- package/src/modules/authModule/smsAuthModule/smsAuthModule.cjs +7 -2
- package/src/modules/authModule/smsAuthModule/smsAuthModule.d.ts +3 -2
- package/src/modules/authModule/smsAuthModule/smsAuthModule.js +8 -3
- package/src/modules/networksModule/networksModule.d.ts +1 -1
- package/src/modules/userInterfaceModule/userInterfaceModule.cjs +7 -2
- package/src/modules/userInterfaceModule/userInterfaceModule.d.ts +5 -2
- package/src/modules/userInterfaceModule/userInterfaceModule.js +8 -3
- package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.cjs +17 -0
- package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.d.ts +14 -0
- package/src/modules/walletsModule/accountAbstractionModule/accountAbstractionModule.js +13 -0
- package/src/modules/walletsModule/accountAbstractionModule/index.d.ts +1 -0
- package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.cjs +31 -0
- package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.d.ts +8 -0
- package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.js +27 -0
- package/src/modules/walletsModule/createWalletListenerMethods/index.d.ts +1 -0
- package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.cjs +1 -1
- package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.d.ts +6 -3
- package/src/modules/walletsModule/embeddedWalletsModule/embeddedWalletsModule.js +2 -2
- package/src/modules/walletsModule/walletsModule.cjs +19 -1
- package/src/modules/walletsModule/walletsModule.d.ts +14 -3
- package/src/modules/walletsModule/walletsModule.js +20 -2
- package/src/types.d.ts +2 -0
- package/src/utils/pickListenerActions/pickListenerActions.cjs +9 -3
- package/src/utils/pickListenerActions/pickListenerActions.d.ts +2 -1
- package/src/utils/pickListenerActions/pickListenerActions.js +9 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,36 @@
|
|
|
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
|
+
|
|
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)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* 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))
|
|
22
|
+
* 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))
|
|
23
|
+
* 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))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* 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))
|
|
29
|
+
* 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))
|
|
30
|
+
* 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))
|
|
31
|
+
* update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
|
|
32
|
+
* 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))
|
|
33
|
+
|
|
2
34
|
## [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)
|
|
3
35
|
|
|
4
36
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/client",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
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.
|
|
23
|
-
"@dynamic-labs/logger": "4.0.0-alpha.
|
|
24
|
-
"@dynamic-labs/message-transport": "4.0.0-alpha.
|
|
25
|
-
"@dynamic-labs/types": "4.0.0-alpha.
|
|
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": {}
|
package/src/client/client.d.ts
CHANGED
|
@@ -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> &
|
|
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 */
|
|
@@ -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
|
-
|
|
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;
|
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';
|
|
@@ -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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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> &
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
package/src/modules/walletsModule/createWalletListenerMethods/createWalletListenerMethods.d.ts
ADDED
|
@@ -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, '
|
|
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);
|
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
@@ -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:
|
|
13
|
-
|
|
14
|
-
|
|
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
|
|
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:
|
|
9
|
-
|
|
10
|
-
|
|
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 };
|