@dynamic-labs/message-transport 4.0.0-alpha.7 → 4.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +5 -5
- package/src/index.cjs +11 -0
- package/src/index.d.ts +3 -2
- package/src/index.js +5 -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/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 +14 -0
- package/src/messageTypes/WalletsModuleMessages.js +8 -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/types.d.ts +3 -11
- package/src/types.d.ts +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
|
|
2
|
+
## [4.0.0-alpha.8](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2024-10-07)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* add support for dynamic event callbacks in rn ([#6997](https://github.com/dynamic-labs/dynamic-auth/issues/6997)) ([f9ac402](https://github.com/dynamic-labs/dynamic-auth/commit/f9ac40259d9168dfe69dafd5fd44478ba0e69505))
|
|
8
|
+
* add support for dynamic handlers in rn ([#7032](https://github.com/dynamic-labs/dynamic-auth/issues/7032)) ([f61f926](https://github.com/dynamic-labs/dynamic-auth/commit/f61f92666b6df8483dde2c47304fd4fb02690f7d))
|
|
9
|
+
* Support for multi-chain AA ([#6829](https://github.com/dynamic-labs/dynamic-auth/issues/6829)) ([b4a0c0a](https://github.com/dynamic-labs/dynamic-auth/commit/b4a0c0a4de48231a3748826600407c25abf6894d))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* persist isHardwareWalletEnabled on wallet connector ([#7025](https://github.com/dynamic-labs/dynamic-auth/issues/7025)) ([#7034](https://github.com/dynamic-labs/dynamic-auth/issues/7034)) ([4bfc301](https://github.com/dynamic-labs/dynamic-auth/commit/4bfc301d891f10db8c0bd31e5164c489a882c5c3))
|
|
15
|
+
|
|
2
16
|
## [4.0.0-alpha.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.6...v4.0.0-alpha.7) (2024-10-03)
|
|
3
17
|
|
|
4
18
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/message-transport",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.8",
|
|
4
4
|
"description": "Defines the interface to communicate with dynamic's webview",
|
|
5
5
|
"author": "Dynamic Labs, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@dynamic-labs/sdk-api-core": "0.0.535",
|
|
22
22
|
"@vue/reactivity": "3.4.21",
|
|
23
|
-
"@dynamic-labs/types": "4.0.0-alpha.
|
|
23
|
+
"@dynamic-labs/types": "4.0.0-alpha.8",
|
|
24
24
|
"eventemitter3": "5.0.1"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@dynamic-labs/assert-package-version": "4.0.0-alpha.
|
|
28
|
-
"@dynamic-labs/logger": "4.0.0-alpha.
|
|
29
|
-
"@dynamic-labs/utils": "4.0.0-alpha.
|
|
27
|
+
"@dynamic-labs/assert-package-version": "4.0.0-alpha.8",
|
|
28
|
+
"@dynamic-labs/logger": "4.0.0-alpha.8",
|
|
29
|
+
"@dynamic-labs/utils": "4.0.0-alpha.8"
|
|
30
30
|
}
|
|
31
31
|
}
|
package/src/index.cjs
CHANGED
|
@@ -16,7 +16,12 @@ var serializeErrorForTransport = require('./utils/serializeErrorForTransport/ser
|
|
|
16
16
|
var createEventEmitterForMessages = require('./store/createEventEmitterForMessages/createEventEmitterForMessages.cjs');
|
|
17
17
|
var store = require('./store/store.cjs');
|
|
18
18
|
var storeSetter = require('./store/storeSetter/storeSetter.cjs');
|
|
19
|
+
var AuthModuleMessages = require('./messageTypes/AuthModuleMessages.cjs');
|
|
20
|
+
var EmbeddedWalletsModuleMessages = require('./messageTypes/EmbeddedWalletsModuleMessages.cjs');
|
|
21
|
+
var OtpMessages = require('./messageTypes/OtpMessages.cjs');
|
|
19
22
|
var SdkModuleMessages = require('./messageTypes/SdkModuleMessages.cjs');
|
|
23
|
+
var UserInterfaceModuleMessages = require('./messageTypes/UserInterfaceModuleMessages.cjs');
|
|
24
|
+
var WalletsModuleMessages = require('./messageTypes/WalletsModuleMessages.cjs');
|
|
20
25
|
|
|
21
26
|
assertPackageVersion.assertPackageVersion('@dynamic-labs/message-transport', _package.version);
|
|
22
27
|
|
|
@@ -31,4 +36,10 @@ exports.serializeErrorForTransport = serializeErrorForTransport.serializeErrorFo
|
|
|
31
36
|
exports.createEventEmitterForMessages = createEventEmitterForMessages.createEventEmitterForMessages;
|
|
32
37
|
exports.createStore = store.createStore;
|
|
33
38
|
exports.createStoreSetter = storeSetter.createStoreSetter;
|
|
39
|
+
exports.authEventNames = AuthModuleMessages.authEventNames;
|
|
40
|
+
exports.embeddedWalletsEventNames = EmbeddedWalletsModuleMessages.embeddedWalletsEventNames;
|
|
41
|
+
exports.emailEventNames = OtpMessages.emailEventNames;
|
|
42
|
+
exports.smsEventNames = OtpMessages.smsEventNames;
|
|
34
43
|
exports.sdkHasLoadedEventName = SdkModuleMessages.sdkHasLoadedEventName;
|
|
44
|
+
exports.userInterfaceEventNames = UserInterfaceModuleMessages.userInterfaceEventNames;
|
|
45
|
+
exports.userWalletsEventNames = WalletsModuleMessages.userWalletsEventNames;
|
package/src/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { createRequestChannel, type RequestChannel } from './requestChannel';
|
|
|
3
3
|
export { parseErrorFromTransport } from './utils/parseErrorFromTransport';
|
|
4
4
|
export { parseMessageTransportData } from './utils/parseMessageTransportData';
|
|
5
5
|
export { serializeErrorForTransport } from './utils/serializeErrorForTransport';
|
|
6
|
-
export { createEventEmitterForMessages, createStore, createStoreSetter, type CreateStoreProps,
|
|
6
|
+
export { createEventEmitterForMessages, createStore, createStoreSetter, type CreateStoreProps, } from './store';
|
|
7
7
|
export type { Store, StoreEventListeners, StoreKeys, StoreSetter, StoreStateChangeEvent, StoreStateEvents, StoreStateGetters, } from './store/types';
|
|
8
|
-
export
|
|
8
|
+
export type { PickedEventListeners } from './types';
|
|
9
|
+
export { authEventNames, emailEventNames, embeddedWalletsEventNames, sdkHasLoadedEventName, smsEventNames, userInterfaceEventNames, userWalletsEventNames, type AccountAbstractionGetEOAWalletArgs, type AccountAbstractionGetSmartWalletArgs, type AccountAbstractionIsSmartWalletArgs, type AccountAbstractionMessages, type AuthModuleMessages, type AuthModuleState, type ClientManifest, type ConsoleMessages, type CreateEmbeddedWalletArgs, type EmailOtpParams, type EmbeddedWalletsModuleMessages, type EmbeddedWalletsModuleState, type EthMessages, type EthRequestParams, type EthRequestWithAddressParams, type EthRequestWithChainIdParams, type ExternalAuthMessages, type FetchMessages, type KernelAccountSettings, type NetworksModuleState, type OtpData, type OtpMessages, type PasskeyMessages, type PlatformServiceMessages, type ProjectSettingsMessages, type SdkModuleMessages, type SdkModuleState, type SecureStorageMessages, type SignInWithExternalJwtParams, type SmsOtpParams, type SocialAuthModuleMessages, type SocialProvider, type SolanaMessages, type UserInterfaceModuleMessages, type VerifyWithExternalJwtParams, type WalletEvents, type WalletsModuleMessages, type WalletsModuleState, type WebViewVisibilityMessages, type ZeroDevExtensionMessages, } from './messageTypes';
|
package/src/index.js
CHANGED
|
@@ -12,6 +12,11 @@ export { serializeErrorForTransport } from './utils/serializeErrorForTransport/s
|
|
|
12
12
|
export { createEventEmitterForMessages } from './store/createEventEmitterForMessages/createEventEmitterForMessages.js';
|
|
13
13
|
export { createStore } from './store/store.js';
|
|
14
14
|
export { createStoreSetter } from './store/storeSetter/storeSetter.js';
|
|
15
|
+
export { authEventNames } from './messageTypes/AuthModuleMessages.js';
|
|
16
|
+
export { embeddedWalletsEventNames } from './messageTypes/EmbeddedWalletsModuleMessages.js';
|
|
17
|
+
export { emailEventNames, smsEventNames } from './messageTypes/OtpMessages.js';
|
|
15
18
|
export { sdkHasLoadedEventName } from './messageTypes/SdkModuleMessages.js';
|
|
19
|
+
export { userInterfaceEventNames } from './messageTypes/UserInterfaceModuleMessages.js';
|
|
20
|
+
export { userWalletsEventNames } from './messageTypes/WalletsModuleMessages.js';
|
|
16
21
|
|
|
17
22
|
assertPackageVersion('@dynamic-labs/message-transport', version);
|
|
@@ -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"[];
|
|
@@ -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")[];
|
|
@@ -30,6 +30,19 @@ export type WalletsModuleMessages = {
|
|
|
30
30
|
onWalletEvent: (params: WalletEventArguments & {
|
|
31
31
|
walletId: string;
|
|
32
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;
|
|
33
46
|
};
|
|
34
47
|
export type WalletEvents = {
|
|
35
48
|
chainChange: (props: {
|
|
@@ -42,4 +55,5 @@ type WalletEventArguments = {
|
|
|
42
55
|
eventParams: Parameters<WalletEvents[E]>;
|
|
43
56
|
};
|
|
44
57
|
}[keyof WalletEvents];
|
|
58
|
+
export declare const userWalletsEventNames: ("messageSigned" | "walletAdded" | "walletRemoved")[];
|
|
45
59
|
export {};
|
|
@@ -11,13 +11,12 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
11
11
|
var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
|
|
12
12
|
|
|
13
13
|
// There are way too many "any"s in this file. They are necessary because otherwise the generics won't work
|
|
14
|
-
function createEventEmitterForMessages({ messageTransport, initialEventEmitter,
|
|
14
|
+
function createEventEmitterForMessages({ messageTransport, initialEventEmitter, eventNames, }) {
|
|
15
15
|
const events = initialEventEmitter !== null && initialEventEmitter !== void 0 ? initialEventEmitter : new EventEmitter__default["default"]();
|
|
16
16
|
const requestChannel$1 = requestChannel.createRequestChannel(messageTransport);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
17
|
+
for (const eventName of eventNames) {
|
|
18
|
+
requestChannel$1.handle(eventName, (...payload) => events.emit(eventName, ...payload));
|
|
19
|
+
}
|
|
21
20
|
return events;
|
|
22
21
|
}
|
|
23
22
|
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import EventEmitter from 'eventemitter3';
|
|
2
2
|
import { MessageTransportWithDefaultOrigin } from '../../messageTransport';
|
|
3
|
-
export type MessagesForEventEmitter<T extends Record<string, (...args: any[]) => any>, U extends string> = {
|
|
4
|
-
eventEmitted: <E extends keyof T>(key: U, eventName: E, payload: Parameters<T[E]>) => void;
|
|
5
|
-
};
|
|
6
3
|
/**
|
|
7
4
|
* Use this function when you want to get an event emitter that will raise events for
|
|
8
|
-
* messages
|
|
5
|
+
* messages that have a name inside eventNames
|
|
9
6
|
*/
|
|
10
|
-
export declare function createEventEmitterForMessages<T extends Record<string, (...args: any[]) => any> = never
|
|
7
|
+
export declare function createEventEmitterForMessages<T extends Record<string, (...args: any[]) => any> = never>(params: {
|
|
11
8
|
messageTransport: MessageTransportWithDefaultOrigin;
|
|
12
|
-
|
|
9
|
+
eventNames: string[];
|
|
13
10
|
}): EventEmitter<T>;
|
|
14
11
|
/**
|
|
15
12
|
* Use this function when you want to get an event emitter that will raise events for
|
|
16
13
|
* messages of type MessagesForEventEmitter
|
|
17
14
|
*/
|
|
18
|
-
export declare function createEventEmitterForMessages<T extends Record<string, (...args: any[]) => any> = never,
|
|
15
|
+
export declare function createEventEmitterForMessages<T extends Record<string, (...args: any[]) => any> = never, E extends EventEmitter<any> = never>(params: {
|
|
19
16
|
messageTransport: MessageTransportWithDefaultOrigin;
|
|
20
17
|
initialEventEmitter: E;
|
|
21
|
-
|
|
18
|
+
eventNames: string[];
|
|
22
19
|
}): E extends EventEmitter<infer V> ? EventEmitter<T & V> : never;
|
|
@@ -3,13 +3,12 @@ import EventEmitter from 'eventemitter3';
|
|
|
3
3
|
import { createRequestChannel } from '../../requestChannel/requestChannel.js';
|
|
4
4
|
|
|
5
5
|
// There are way too many "any"s in this file. They are necessary because otherwise the generics won't work
|
|
6
|
-
function createEventEmitterForMessages({ messageTransport, initialEventEmitter,
|
|
6
|
+
function createEventEmitterForMessages({ messageTransport, initialEventEmitter, eventNames, }) {
|
|
7
7
|
const events = initialEventEmitter !== null && initialEventEmitter !== void 0 ? initialEventEmitter : new EventEmitter();
|
|
8
8
|
const requestChannel = createRequestChannel(messageTransport);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
9
|
+
for (const eventName of eventNames) {
|
|
10
|
+
requestChannel.handle(eventName, (...payload) => events.emit(eventName, ...payload));
|
|
11
|
+
}
|
|
13
12
|
return events;
|
|
14
13
|
}
|
|
15
14
|
|
package/src/store/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import EventEmitter from 'eventemitter3';
|
|
2
|
-
|
|
2
|
+
import { PickedEventListeners } from '../types';
|
|
3
|
+
export type StoreKeys = 'auth' | 'sdk' | 'wallets' | 'embeddedWallets' | 'platform' | 'userInterface' | 'otp' | 'networks';
|
|
3
4
|
/**
|
|
4
5
|
* Readonly getters for the store values
|
|
5
6
|
*/
|
|
@@ -38,16 +39,7 @@ export type StoreStateChangeEvent<T extends Record<string, unknown>, K extends E
|
|
|
38
39
|
export type StoreStateEvents<T extends Record<string, unknown>> = {
|
|
39
40
|
[K in Extract<keyof T, string> as StoreStateChangeEvent<T, K>]: (value: T[K]) => void;
|
|
40
41
|
};
|
|
41
|
-
/**
|
|
42
|
-
* Generates the event listener methods for a StoreState.
|
|
43
|
-
* The methods still return the original type of the eventemitter3 class.
|
|
44
|
-
* Use StoreEventListeners instead, which hides these return types.
|
|
45
|
-
*/
|
|
46
|
-
type RawStoreEventListeners<T extends Record<string, unknown>> = Pick<EventEmitter<StoreStateEvents<T>>, 'on' | 'off' | 'once'>;
|
|
47
42
|
/**
|
|
48
43
|
* The event listener methods for a StoreState
|
|
49
44
|
*/
|
|
50
|
-
export type StoreEventListeners<T extends Record<string, unknown>> =
|
|
51
|
-
[M in keyof RawStoreEventListeners<T>]: (...args: Parameters<RawStoreEventListeners<T>[M]>) => void;
|
|
52
|
-
};
|
|
53
|
-
export {};
|
|
45
|
+
export type StoreEventListeners<T extends Record<string, unknown>> = PickedEventListeners<StoreStateEvents<T>>;
|
package/src/types.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type PickedEventListeners<T extends Record<string, unknown>> = {
|
|
2
|
+
on: <K extends keyof T>(eventName: K, listener: T[K]) => void;
|
|
3
|
+
once: <K extends keyof T>(eventName: K, listener: T[K]) => void;
|
|
4
|
+
off: <K extends keyof T>(eventName: K, listener: T[K]) => void;
|
|
5
|
+
};
|