@dynamic-labs/message-transport 4.0.0-alpha.5 → 4.0.0-alpha.51
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 +468 -0
- package/package.cjs +8 -0
- package/package.js +4 -0
- package/package.json +9 -15
- package/src/index.cjs +14 -1
- package/src/index.d.ts +3 -2
- package/src/index.js +9 -0
- package/src/messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.d.ts +4 -9
- package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.cjs +21 -15
- package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.d.ts +16 -8
- package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.js +21 -15
- package/src/messageTypes/AccountAbstractionMessages.d.ts +15 -0
- package/src/messageTypes/AuthModuleMessages.cjs +14 -0
- package/src/messageTypes/AuthModuleMessages.d.ts +12 -1
- package/src/messageTypes/AuthModuleMessages.js +10 -0
- package/src/messageTypes/EmbeddedWalletsModuleMessages.cjs +10 -0
- package/src/messageTypes/EmbeddedWalletsModuleMessages.d.ts +5 -1
- package/src/messageTypes/EmbeddedWalletsModuleMessages.js +6 -0
- package/src/messageTypes/OtpMessages.cjs +14 -0
- package/src/messageTypes/OtpMessages.d.ts +10 -0
- package/src/messageTypes/OtpMessages.js +9 -0
- package/src/messageTypes/PasskeyMessages.d.ts +6 -0
- package/src/messageTypes/ProjectSettingsMessages.d.ts +6 -0
- package/src/messageTypes/SocialAuthModuleMessages.d.ts +13 -1
- package/src/messageTypes/StorageMessages.d.ts +19 -0
- package/src/messageTypes/TurnkeyIframeEventProxyMessages.d.ts +9 -0
- package/src/messageTypes/UserInterfaceModuleMessages.cjs +12 -0
- package/src/messageTypes/UserInterfaceModuleMessages.d.ts +4 -0
- package/src/messageTypes/UserInterfaceModuleMessages.js +8 -0
- package/src/messageTypes/WalletsModuleMessages.cjs +12 -0
- package/src/messageTypes/WalletsModuleMessages.d.ts +29 -0
- package/src/messageTypes/WalletsModuleMessages.js +8 -0
- package/src/messageTypes/ZeroDevExtensionMessages.d.ts +10 -0
- package/src/messageTypes/index.d.ts +5 -1
- package/src/requestChannel/createRequestChannelMessageSender/createRequestChannelMessageSender.cjs +45 -0
- package/src/requestChannel/createRequestChannelMessageSender/createRequestChannelMessageSender.d.ts +18 -0
- package/src/requestChannel/createRequestChannelMessageSender/createRequestChannelMessageSender.js +41 -0
- package/src/requestChannel/createRequestChannelMessageSender/index.d.ts +1 -0
- package/src/requestChannel/index.d.ts +1 -0
- package/src/requestChannel/requestChannel.cjs +46 -76
- package/src/requestChannel/requestChannel.d.ts +3 -69
- package/src/requestChannel/requestChannel.js +42 -68
- package/src/requestChannel/types.d.ts +55 -0
- package/src/requestChannel/utils/index.d.ts +1 -0
- package/src/requestChannel/utils/utils.cjs +33 -0
- package/src/requestChannel/utils/utils.d.ts +16 -0
- package/src/requestChannel/utils/utils.js +25 -0
- package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.cjs +4 -5
- package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.d.ts +5 -8
- package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.js +4 -5
- package/src/store/store.cjs +1 -1
- package/src/store/store.js +1 -1
- package/src/store/types.d.ts +3 -11
- package/src/types.d.ts +5 -0
- package/src/utils/parseErrorFromTransport/parseErrorFromTransport.cjs +11 -0
- package/src/utils/parseErrorFromTransport/parseErrorFromTransport.d.ts +1 -1
- package/src/utils/parseErrorFromTransport/parseErrorFromTransport.js +11 -0
- package/src/utils/serializeErrorForTransport/serializeErrorForTransport.cjs +3 -0
- package/src/utils/serializeErrorForTransport/serializeErrorForTransport.js +3 -0
- package/src/messageTypes/SecureStorageMessages.d.ts +0 -5
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { MessageTransport
|
|
1
|
+
import { MessageTransport } from '../../messageTransport';
|
|
2
2
|
import { BypassBlockCallback } from '../makeWaitForUnblock';
|
|
3
|
-
type MakeWaitForInitEventProps = {
|
|
3
|
+
type MakeWaitForInitEventProps<M extends MessageTransport> = {
|
|
4
4
|
/** MessageTransport to add this decorator to */
|
|
5
|
-
messageTransport:
|
|
5
|
+
messageTransport: M;
|
|
6
6
|
/** Which message type should trigger the initialization */
|
|
7
7
|
initializeMessageType: string;
|
|
8
8
|
/** If true is returned, the message will not be blocked */
|
|
@@ -16,10 +16,5 @@ type MakeWaitForInitEventProps = {
|
|
|
16
16
|
* 2. Any future emit calls will no longer store the message, and instead
|
|
17
17
|
* will emit them right away, as normal.
|
|
18
18
|
*/
|
|
19
|
-
export declare const makeWaitForInitEvent: ({ bypassBlockIf, initializeMessageType, messageTransport, }: MakeWaitForInitEventProps) =>
|
|
20
|
-
unblock: () => void;
|
|
21
|
-
emit: (message: MessageTransportData) => void;
|
|
22
|
-
off: (callback: import("../../messageTransport").MessageTransportCallback) => void;
|
|
23
|
-
on: (callback: import("../../messageTransport").MessageTransportCallback) => void;
|
|
24
|
-
};
|
|
19
|
+
export declare const makeWaitForInitEvent: <M extends MessageTransport>({ bypassBlockIf, initializeMessageType, messageTransport, }: MakeWaitForInitEventProps<M>) => import("../makeWaitForUnblock").WithBlock<M>;
|
|
25
20
|
export {};
|
|
@@ -14,40 +14,46 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
14
14
|
const makeWaitForUnblock = ({ messageTransport, bypassBlockIf = () => false, }) => {
|
|
15
15
|
/** Whether to block any new messages */
|
|
16
16
|
let blocked = true;
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Messages pending to be sent once unblocked, along with their onEmit callbacks
|
|
19
|
+
*/
|
|
18
20
|
let pendingMessages = [];
|
|
19
21
|
/**
|
|
20
22
|
* Ids of incoming message sessions.
|
|
21
23
|
* We don't want to block responses to these messages.
|
|
22
24
|
*/
|
|
23
25
|
const bypassedMessageSessionIds = new Set();
|
|
24
|
-
|
|
25
|
-
emit: (message) => {
|
|
26
|
+
return {
|
|
27
|
+
emit: (message, options) => {
|
|
28
|
+
const { onEmit } = options !== null && options !== void 0 ? options : {};
|
|
26
29
|
if (bypassBlockIf(message) && blocked) {
|
|
27
30
|
bypassedMessageSessionIds.add(message.messageSessionId);
|
|
28
31
|
}
|
|
29
32
|
// Even if blocking, we still want to let through ids of messages that
|
|
30
33
|
// can bypass the block (this includes any responses, since they share the same id)
|
|
31
34
|
if (blocked && !bypassedMessageSessionIds.has(message.messageSessionId)) {
|
|
32
|
-
pendingMessages.push(message);
|
|
35
|
+
pendingMessages.push({ message, onEmit });
|
|
33
36
|
return;
|
|
34
37
|
}
|
|
35
38
|
messageTransport.emit(message);
|
|
39
|
+
onEmit === null || onEmit === void 0 ? void 0 : onEmit();
|
|
36
40
|
},
|
|
41
|
+
isBlocked: () => blocked,
|
|
37
42
|
off: (callback) => messageTransport.off(callback),
|
|
38
43
|
on: (callback) => messageTransport.on(callback),
|
|
44
|
+
unblock: () => {
|
|
45
|
+
if (!blocked)
|
|
46
|
+
return;
|
|
47
|
+
blocked = false;
|
|
48
|
+
// Emit all stored messages
|
|
49
|
+
for (const { message, onEmit } of pendingMessages) {
|
|
50
|
+
messageTransport.emit(message);
|
|
51
|
+
onEmit === null || onEmit === void 0 ? void 0 : onEmit();
|
|
52
|
+
}
|
|
53
|
+
pendingMessages = [];
|
|
54
|
+
bypassedMessageSessionIds.clear();
|
|
55
|
+
},
|
|
39
56
|
};
|
|
40
|
-
const unblock = () => {
|
|
41
|
-
if (!blocked)
|
|
42
|
-
return;
|
|
43
|
-
blocked = false;
|
|
44
|
-
// Emit all stored messages
|
|
45
|
-
for (const message of pendingMessages)
|
|
46
|
-
messageTransport.emit(message);
|
|
47
|
-
pendingMessages = [];
|
|
48
|
-
bypassedMessageSessionIds.clear();
|
|
49
|
-
};
|
|
50
|
-
return Object.assign(Object.assign({}, extendedTransport), { unblock });
|
|
51
57
|
};
|
|
52
58
|
|
|
53
59
|
exports.makeWaitForUnblock = makeWaitForUnblock;
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { MessageTransport, MessageTransportData } from '../../messageTransport';
|
|
2
2
|
export type BypassBlockCallback = (message: MessageTransportData) => boolean;
|
|
3
|
-
type MakeWaitForUnblockProps = {
|
|
3
|
+
type MakeWaitForUnblockProps<M extends MessageTransport> = {
|
|
4
4
|
/** MessageTransport to add this decorator to */
|
|
5
|
-
messageTransport:
|
|
5
|
+
messageTransport: M;
|
|
6
6
|
/** If true is return the message will not be blocked */
|
|
7
7
|
bypassBlockIf?: BypassBlockCallback;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* A message transport that may have its messages blocked until unblock is called.
|
|
11
|
+
*
|
|
12
|
+
* This adds a second param to the emit method that allows triggering a callback when
|
|
13
|
+
* the message is actually emitted.
|
|
14
|
+
*/
|
|
15
|
+
export type WithBlock<M extends MessageTransport> = M & {
|
|
16
|
+
emit: (message: Parameters<M['emit']>[0], options?: {
|
|
17
|
+
onEmit?: VoidFunction;
|
|
18
|
+
}) => void;
|
|
19
|
+
unblock: () => void;
|
|
20
|
+
isBlocked: () => boolean;
|
|
21
|
+
};
|
|
9
22
|
/**
|
|
10
23
|
* Decorator that adds the following features to a MessageTransport:
|
|
11
24
|
* 1. Any emit calls will not emit the message yet. These messages will be stored.
|
|
@@ -14,10 +27,5 @@ type MakeWaitForUnblockProps = {
|
|
|
14
27
|
* 2. Any future emit calls will no longer store the message, and instead
|
|
15
28
|
* will emit them right away, as normal.
|
|
16
29
|
*/
|
|
17
|
-
export declare const makeWaitForUnblock: ({ messageTransport, bypassBlockIf, }: MakeWaitForUnblockProps) =>
|
|
18
|
-
unblock: () => void;
|
|
19
|
-
emit: (message: MessageTransportData) => void;
|
|
20
|
-
off: (callback: import("../../messageTransport").MessageTransportCallback) => void;
|
|
21
|
-
on: (callback: import("../../messageTransport").MessageTransportCallback) => void;
|
|
22
|
-
};
|
|
30
|
+
export declare const makeWaitForUnblock: <M extends MessageTransport>({ messageTransport, bypassBlockIf, }: MakeWaitForUnblockProps<M>) => WithBlock<M>;
|
|
23
31
|
export {};
|
|
@@ -10,40 +10,46 @@
|
|
|
10
10
|
const makeWaitForUnblock = ({ messageTransport, bypassBlockIf = () => false, }) => {
|
|
11
11
|
/** Whether to block any new messages */
|
|
12
12
|
let blocked = true;
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Messages pending to be sent once unblocked, along with their onEmit callbacks
|
|
15
|
+
*/
|
|
14
16
|
let pendingMessages = [];
|
|
15
17
|
/**
|
|
16
18
|
* Ids of incoming message sessions.
|
|
17
19
|
* We don't want to block responses to these messages.
|
|
18
20
|
*/
|
|
19
21
|
const bypassedMessageSessionIds = new Set();
|
|
20
|
-
|
|
21
|
-
emit: (message) => {
|
|
22
|
+
return {
|
|
23
|
+
emit: (message, options) => {
|
|
24
|
+
const { onEmit } = options !== null && options !== void 0 ? options : {};
|
|
22
25
|
if (bypassBlockIf(message) && blocked) {
|
|
23
26
|
bypassedMessageSessionIds.add(message.messageSessionId);
|
|
24
27
|
}
|
|
25
28
|
// Even if blocking, we still want to let through ids of messages that
|
|
26
29
|
// can bypass the block (this includes any responses, since they share the same id)
|
|
27
30
|
if (blocked && !bypassedMessageSessionIds.has(message.messageSessionId)) {
|
|
28
|
-
pendingMessages.push(message);
|
|
31
|
+
pendingMessages.push({ message, onEmit });
|
|
29
32
|
return;
|
|
30
33
|
}
|
|
31
34
|
messageTransport.emit(message);
|
|
35
|
+
onEmit === null || onEmit === void 0 ? void 0 : onEmit();
|
|
32
36
|
},
|
|
37
|
+
isBlocked: () => blocked,
|
|
33
38
|
off: (callback) => messageTransport.off(callback),
|
|
34
39
|
on: (callback) => messageTransport.on(callback),
|
|
40
|
+
unblock: () => {
|
|
41
|
+
if (!blocked)
|
|
42
|
+
return;
|
|
43
|
+
blocked = false;
|
|
44
|
+
// Emit all stored messages
|
|
45
|
+
for (const { message, onEmit } of pendingMessages) {
|
|
46
|
+
messageTransport.emit(message);
|
|
47
|
+
onEmit === null || onEmit === void 0 ? void 0 : onEmit();
|
|
48
|
+
}
|
|
49
|
+
pendingMessages = [];
|
|
50
|
+
bypassedMessageSessionIds.clear();
|
|
51
|
+
},
|
|
35
52
|
};
|
|
36
|
-
const unblock = () => {
|
|
37
|
-
if (!blocked)
|
|
38
|
-
return;
|
|
39
|
-
blocked = false;
|
|
40
|
-
// Emit all stored messages
|
|
41
|
-
for (const message of pendingMessages)
|
|
42
|
-
messageTransport.emit(message);
|
|
43
|
-
pendingMessages = [];
|
|
44
|
-
bypassedMessageSessionIds.clear();
|
|
45
|
-
};
|
|
46
|
-
return Object.assign(Object.assign({}, extendedTransport), { unblock });
|
|
47
53
|
};
|
|
48
54
|
|
|
49
55
|
export { makeWaitForUnblock };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseWallet } from '@dynamic-labs/types';
|
|
2
|
+
export type AccountAbstractionIsSmartWalletArgs = {
|
|
3
|
+
wallet: BaseWallet;
|
|
4
|
+
};
|
|
5
|
+
export type AccountAbstractionGetEOAWalletArgs = {
|
|
6
|
+
wallet: BaseWallet;
|
|
7
|
+
};
|
|
8
|
+
export type AccountAbstractionGetSmartWalletArgs = {
|
|
9
|
+
wallet: BaseWallet;
|
|
10
|
+
};
|
|
11
|
+
export type AccountAbstractionMessages = {
|
|
12
|
+
isSmartWallet: (args: AccountAbstractionIsSmartWalletArgs) => Promise<boolean>;
|
|
13
|
+
getEOAWallet: (args: AccountAbstractionGetEOAWalletArgs) => Promise<BaseWallet | null>;
|
|
14
|
+
getSmartWallet: (args: AccountAbstractionGetSmartWalletArgs) => Promise<BaseWallet | null>;
|
|
15
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
const authEventNames = [
|
|
7
|
+
'authSuccess',
|
|
8
|
+
'authFailed',
|
|
9
|
+
'authInit',
|
|
10
|
+
'loggedOut',
|
|
11
|
+
'userProfileUpdated',
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
exports.authEventNames = authEventNames;
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
import type { UserProfile } from '@dynamic-labs/types';
|
|
1
|
+
import type { AuthEventPayload, UserProfile } from '@dynamic-labs/types';
|
|
2
2
|
export type AuthModuleState = {
|
|
3
3
|
token: string | null;
|
|
4
4
|
authenticatedUser: UserProfile | null;
|
|
5
5
|
};
|
|
6
6
|
export type AuthModuleMessages = {
|
|
7
7
|
logout: () => Promise<void>;
|
|
8
|
+
handleAuthenticatedUser: (params: {
|
|
9
|
+
user: UserProfile;
|
|
10
|
+
}) => Promise<void>;
|
|
11
|
+
authSuccess: (user: UserProfile) => void;
|
|
12
|
+
authFailed: (data: AuthEventPayload, reason: 'user-cancelled' | {
|
|
13
|
+
error: unknown;
|
|
14
|
+
}) => void;
|
|
15
|
+
authInit: (data: AuthEventPayload) => void;
|
|
16
|
+
loggedOut: (user: UserProfile | null) => void;
|
|
17
|
+
userProfileUpdated: (user: UserProfile) => void;
|
|
8
18
|
};
|
|
19
|
+
export declare const authEventNames: ("authSuccess" | "authFailed" | "authInit" | "loggedOut" | "userProfileUpdated")[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EmbeddedWalletChainEnum } from '@dynamic-labs/sdk-api-core';
|
|
1
|
+
import { EmbeddedWalletChainEnum, JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';
|
|
2
2
|
import { BaseWallet } from '@dynamic-labs/types';
|
|
3
3
|
export type CreateEmbeddedWalletArgs = {
|
|
4
4
|
chain?: keyof typeof EmbeddedWalletChainEnum;
|
|
@@ -9,4 +9,8 @@ export type EmbeddedWalletsModuleState = {
|
|
|
9
9
|
export type EmbeddedWalletsModuleMessages = {
|
|
10
10
|
getWallet: () => Promise<BaseWallet | null>;
|
|
11
11
|
createWallet: (args?: CreateEmbeddedWalletArgs) => Promise<BaseWallet>;
|
|
12
|
+
embeddedWalletCreated: (verifiedCredential: JwtVerifiedCredential | null) => void;
|
|
12
13
|
};
|
|
14
|
+
type EmbeddedWalletsEventNames = 'embeddedWalletCreated';
|
|
15
|
+
export declare const embeddedWalletsEventNames: EmbeddedWalletsEventNames[];
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
const emailEventNames = [
|
|
7
|
+
'emailVerificationFinished',
|
|
8
|
+
];
|
|
9
|
+
const smsEventNames = [
|
|
10
|
+
'smsVerificationFinished',
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
exports.emailEventNames = emailEventNames;
|
|
14
|
+
exports.smsEventNames = smsEventNames;
|
|
@@ -15,4 +15,14 @@ export type OtpMessages = {
|
|
|
15
15
|
verifyOTP: (token: string) => Promise<void>;
|
|
16
16
|
/** Re-sends the OTP for verification */
|
|
17
17
|
resendOTP: () => Promise<void>;
|
|
18
|
+
emailVerificationFinished: (params: {
|
|
19
|
+
isSuccess: boolean;
|
|
20
|
+
destination: string;
|
|
21
|
+
}) => void;
|
|
22
|
+
smsVerificationFinished: (params: {
|
|
23
|
+
isSuccess: boolean;
|
|
24
|
+
destination: PhoneData;
|
|
25
|
+
}) => void;
|
|
18
26
|
};
|
|
27
|
+
export declare const emailEventNames: "emailVerificationFinished"[];
|
|
28
|
+
export declare const smsEventNames: "smsVerificationFinished"[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CreateWebauthnCredentialOptions, convertAttestationResultToTurnkey } from '@dynamic-labs/webauthn';
|
|
1
2
|
type CustomPublicKeyCredentialUserEntity = Omit<PublicKeyCredentialUserEntity, 'id'> & {
|
|
2
3
|
id: string;
|
|
3
4
|
};
|
|
@@ -24,6 +25,11 @@ export type PasskeyMessages = {
|
|
|
24
25
|
transports: ('AUTHENTICATOR_TRANSPORT_BLE' | 'AUTHENTICATOR_TRANSPORT_INTERNAL' | 'AUTHENTICATOR_TRANSPORT_NFC' | 'AUTHENTICATOR_TRANSPORT_USB' | 'AUTHENTICATOR_TRANSPORT_HYBRID')[];
|
|
25
26
|
};
|
|
26
27
|
}>;
|
|
28
|
+
createPasskeyOnBrowser: (params: {
|
|
29
|
+
publicKey: CreateWebauthnCredentialOptions;
|
|
30
|
+
}) => Promise<{
|
|
31
|
+
attestation: ReturnType<typeof convertAttestationResultToTurnkey>;
|
|
32
|
+
}>;
|
|
27
33
|
passkeyStamp: (rdId: string, payload: string) => Promise<{
|
|
28
34
|
stampHeaderName: string;
|
|
29
35
|
stampHeaderValue: string;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import { ProviderEnum } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
export type SocialProvider = 'apple' | 'coinbaseSocial' | 'discord' | 'epicgames' | 'facebook' | 'farcaster' | 'github' | 'google' | 'line' | 'telegram' | 'tiktok' | 'twitch' | 'twitter' | 'shopify' | 'spotify';
|
|
3
|
+
type ConnectWithSocialOnHostArgs = {
|
|
4
|
+
clientId?: string;
|
|
5
|
+
oauthLoginUrl: string;
|
|
6
|
+
provider: ProviderEnum;
|
|
7
|
+
state: string;
|
|
8
|
+
};
|
|
2
9
|
export type SocialAuthModuleMessages = {
|
|
3
10
|
connectWithSocial: (args: {
|
|
4
11
|
/**
|
|
@@ -14,4 +21,9 @@ export type SocialAuthModuleMessages = {
|
|
|
14
21
|
*/
|
|
15
22
|
redirectPathname?: string;
|
|
16
23
|
}) => Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Trigger a social auth connection on the host/native side
|
|
26
|
+
*/
|
|
27
|
+
connectWithSocialOnHost: (args: ConnectWithSocialOnHostArgs) => Promise<void>;
|
|
17
28
|
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type StorageMessageSource = 'localStorage' | 'sessionStorage' | 'secureStorage';
|
|
2
|
+
export type GetStorageItemArgs = {
|
|
3
|
+
source: StorageMessageSource;
|
|
4
|
+
key: string;
|
|
5
|
+
};
|
|
6
|
+
export type SetStorageItemArgs = {
|
|
7
|
+
source: StorageMessageSource;
|
|
8
|
+
key: string;
|
|
9
|
+
data: string;
|
|
10
|
+
};
|
|
11
|
+
export type DeleteStorageItemArgs = {
|
|
12
|
+
source: StorageMessageSource;
|
|
13
|
+
key: string;
|
|
14
|
+
};
|
|
15
|
+
export type StorageMessages = {
|
|
16
|
+
getItem: (args: GetStorageItemArgs) => Promise<string | null>;
|
|
17
|
+
setItem: (args: SetStorageItemArgs) => Promise<void>;
|
|
18
|
+
deleteItem: (args: DeleteStorageItemArgs) => Promise<void>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
const userInterfaceEventNames = [
|
|
7
|
+
'authFlowCancelled',
|
|
8
|
+
'authFlowClosed',
|
|
9
|
+
'authFlowOpened',
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
exports.userInterfaceEventNames = userInterfaceEventNames;
|
|
@@ -7,4 +7,8 @@ export type UserInterfaceModuleMessages = {
|
|
|
7
7
|
revealEmbeddedWalletKey: (params: {
|
|
8
8
|
type: 'recovery-phrase' | 'private-key';
|
|
9
9
|
}) => void;
|
|
10
|
+
authFlowCancelled: () => void;
|
|
11
|
+
authFlowClosed: () => void;
|
|
12
|
+
authFlowOpened: () => void;
|
|
10
13
|
};
|
|
14
|
+
export declare const userInterfaceEventNames: ("authFlowCancelled" | "authFlowClosed" | "authFlowOpened")[];
|
|
@@ -27,4 +27,33 @@ export type WalletsModuleMessages = {
|
|
|
27
27
|
setPrimary: (params: {
|
|
28
28
|
walletId: string;
|
|
29
29
|
}) => Promise<void>;
|
|
30
|
+
onWalletEvent: (params: WalletEventArguments & {
|
|
31
|
+
walletId: string;
|
|
32
|
+
}) => void;
|
|
33
|
+
handleConnectedWallet: (wallet: Partial<BaseWallet>) => Promise<boolean>;
|
|
34
|
+
messageSigned: (params: {
|
|
35
|
+
messageToSign: string;
|
|
36
|
+
signedMessage: string;
|
|
37
|
+
}) => void;
|
|
38
|
+
walletAdded: (params: {
|
|
39
|
+
wallet: BaseWallet;
|
|
40
|
+
userWallets: BaseWallet[];
|
|
41
|
+
}) => void;
|
|
42
|
+
walletRemoved: (params: {
|
|
43
|
+
wallet: BaseWallet;
|
|
44
|
+
userWallets: BaseWallet[];
|
|
45
|
+
}) => void;
|
|
46
|
+
};
|
|
47
|
+
export type WalletEvents = {
|
|
48
|
+
chainChange: (props: {
|
|
49
|
+
chain: string;
|
|
50
|
+
}) => void;
|
|
30
51
|
};
|
|
52
|
+
type WalletEventArguments = {
|
|
53
|
+
[E in keyof WalletEvents]: {
|
|
54
|
+
event: E;
|
|
55
|
+
eventParams: Parameters<WalletEvents[E]>;
|
|
56
|
+
};
|
|
57
|
+
}[keyof WalletEvents];
|
|
58
|
+
export declare const userWalletsEventNames: ("messageSigned" | "walletAdded" | "walletRemoved")[];
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type KernelAccountSettings = {
|
|
2
|
+
entryPointAddress: string;
|
|
3
|
+
chainId: number;
|
|
4
|
+
ecdsaProviderType: string | null;
|
|
5
|
+
kernelVersion: string;
|
|
6
|
+
projectId: string;
|
|
7
|
+
};
|
|
8
|
+
export type ZeroDevExtensionMessages = {
|
|
9
|
+
getKernelAccountSettings: () => Promise<KernelAccountSettings>;
|
|
10
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './AccountAbstractionMessages';
|
|
1
2
|
export * from './AuthModuleMessages';
|
|
2
3
|
export * from './ConsoleMessages';
|
|
3
4
|
export * from './EmbeddedWalletsModuleMessages';
|
|
@@ -8,10 +9,13 @@ export * from './NetworksModuleMessages';
|
|
|
8
9
|
export * from './OtpMessages';
|
|
9
10
|
export * from './PasskeyMessages';
|
|
10
11
|
export * from './PlatformServiceMessages';
|
|
12
|
+
export * from './ProjectSettingsMessages';
|
|
11
13
|
export * from './SdkModuleMessages';
|
|
12
|
-
export * from './SecureStorageMessages';
|
|
13
14
|
export * from './SocialAuthModuleMessages';
|
|
14
15
|
export * from './SolanaMessages';
|
|
16
|
+
export * from './StorageMessages';
|
|
17
|
+
export * from './TurnkeyIframeEventProxyMessages';
|
|
15
18
|
export * from './UserInterfaceModuleMessages';
|
|
16
19
|
export * from './WalletsModuleMessages';
|
|
17
20
|
export * from './WebViewVisibilityMessages';
|
|
21
|
+
export * from './ZeroDevExtensionMessages';
|
package/src/requestChannel/createRequestChannelMessageSender/createRequestChannelMessageSender.cjs
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var utils = require('../utils/utils.cjs');
|
|
7
|
+
|
|
8
|
+
const createRequestChannelMessageSender = ({ requestType, messageSessionId, timeoutMap, onReceiveAck, messageTransport, onTimeout, params, }) => {
|
|
9
|
+
const ackMessageType = utils.getAckMessageType(requestType);
|
|
10
|
+
const message = {
|
|
11
|
+
args: params,
|
|
12
|
+
messageSessionId,
|
|
13
|
+
type: requestType,
|
|
14
|
+
};
|
|
15
|
+
// We must listen for acks
|
|
16
|
+
const handleAckMessage = ({ messageSessionId: incomingSessionId, type: incomingType, }) => {
|
|
17
|
+
if (incomingSessionId !== messageSessionId ||
|
|
18
|
+
incomingType !== ackMessageType)
|
|
19
|
+
return;
|
|
20
|
+
clearTimeout(timeoutMap[messageSessionId]);
|
|
21
|
+
delete timeoutMap[messageSessionId];
|
|
22
|
+
onReceiveAck === null || onReceiveAck === void 0 ? void 0 : onReceiveAck();
|
|
23
|
+
};
|
|
24
|
+
const sendMessage = () => {
|
|
25
|
+
const startTimer = () => {
|
|
26
|
+
const timeoutTimer = setTimeout(onTimeout, utils.TIMEOUT_DURATION);
|
|
27
|
+
timeoutMap[messageSessionId] = timeoutTimer;
|
|
28
|
+
};
|
|
29
|
+
// If this message transport is currently blocked, we must only start
|
|
30
|
+
// the timeout once the message is actually emitted
|
|
31
|
+
// We don't just default to this because the onEmit option is only
|
|
32
|
+
// present in the message transport if has the block decorator
|
|
33
|
+
if ('isBlocked' in messageTransport && messageTransport.isBlocked()) {
|
|
34
|
+
messageTransport.emit(message, { onEmit: startTimer });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Now we emit the event to set off the request
|
|
38
|
+
messageTransport.emit(message);
|
|
39
|
+
// We start the timer immediately since the message was not blocked
|
|
40
|
+
startTimer();
|
|
41
|
+
};
|
|
42
|
+
return { handleAckMessage, sendMessage };
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.createRequestChannelMessageSender = createRequestChannelMessageSender;
|
package/src/requestChannel/createRequestChannelMessageSender/createRequestChannelMessageSender.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { MessageTransportData, WithBlock } from '../../messageTransport';
|
|
3
|
+
import { MessageTransportWithDefaultOrigin } from '../../messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin';
|
|
4
|
+
import { RequestTypes } from '../types';
|
|
5
|
+
type RequestChannelMessageSenderParams<T extends RequestTypes, K extends Extract<keyof T, string>> = {
|
|
6
|
+
requestType: K;
|
|
7
|
+
messageSessionId: string;
|
|
8
|
+
timeoutMap: Record<string, NodeJS.Timer>;
|
|
9
|
+
onReceiveAck?: VoidFunction;
|
|
10
|
+
onTimeout: VoidFunction;
|
|
11
|
+
messageTransport: MessageTransportWithDefaultOrigin | WithBlock<MessageTransportWithDefaultOrigin>;
|
|
12
|
+
params: Parameters<T[K]>;
|
|
13
|
+
};
|
|
14
|
+
export declare const createRequestChannelMessageSender: <T extends RequestTypes, K extends Extract<keyof T, string>>({ requestType, messageSessionId, timeoutMap, onReceiveAck, messageTransport, onTimeout, params, }: RequestChannelMessageSenderParams<T, K>) => {
|
|
15
|
+
handleAckMessage: ({ messageSessionId: incomingSessionId, type: incomingType, }: MessageTransportData) => void;
|
|
16
|
+
sendMessage: () => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
package/src/requestChannel/createRequestChannelMessageSender/createRequestChannelMessageSender.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { getAckMessageType, TIMEOUT_DURATION } from '../utils/utils.js';
|
|
3
|
+
|
|
4
|
+
const createRequestChannelMessageSender = ({ requestType, messageSessionId, timeoutMap, onReceiveAck, messageTransport, onTimeout, params, }) => {
|
|
5
|
+
const ackMessageType = getAckMessageType(requestType);
|
|
6
|
+
const message = {
|
|
7
|
+
args: params,
|
|
8
|
+
messageSessionId,
|
|
9
|
+
type: requestType,
|
|
10
|
+
};
|
|
11
|
+
// We must listen for acks
|
|
12
|
+
const handleAckMessage = ({ messageSessionId: incomingSessionId, type: incomingType, }) => {
|
|
13
|
+
if (incomingSessionId !== messageSessionId ||
|
|
14
|
+
incomingType !== ackMessageType)
|
|
15
|
+
return;
|
|
16
|
+
clearTimeout(timeoutMap[messageSessionId]);
|
|
17
|
+
delete timeoutMap[messageSessionId];
|
|
18
|
+
onReceiveAck === null || onReceiveAck === void 0 ? void 0 : onReceiveAck();
|
|
19
|
+
};
|
|
20
|
+
const sendMessage = () => {
|
|
21
|
+
const startTimer = () => {
|
|
22
|
+
const timeoutTimer = setTimeout(onTimeout, TIMEOUT_DURATION);
|
|
23
|
+
timeoutMap[messageSessionId] = timeoutTimer;
|
|
24
|
+
};
|
|
25
|
+
// If this message transport is currently blocked, we must only start
|
|
26
|
+
// the timeout once the message is actually emitted
|
|
27
|
+
// We don't just default to this because the onEmit option is only
|
|
28
|
+
// present in the message transport if has the block decorator
|
|
29
|
+
if ('isBlocked' in messageTransport && messageTransport.isBlocked()) {
|
|
30
|
+
messageTransport.emit(message, { onEmit: startTimer });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Now we emit the event to set off the request
|
|
34
|
+
messageTransport.emit(message);
|
|
35
|
+
// We start the timer immediately since the message was not blocked
|
|
36
|
+
startTimer();
|
|
37
|
+
};
|
|
38
|
+
return { handleAckMessage, sendMessage };
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { createRequestChannelMessageSender };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './createRequestChannelMessageSender';
|