@dynamic-labs/legacy-embedded-wallet-migration 0.0.0 → 5.0.0-rc.2
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 +6718 -0
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/_virtual/_tslib.js +32 -0
- package/package.js +4 -0
- package/package.json +31 -1
- package/src/index.d.ts +11 -0
- package/src/index.js +16 -0
- package/src/lib/constants.d.ts +8 -0
- package/src/lib/constants.js +12 -0
- package/src/lib/export/cleanupExport/cleanupExport.d.ts +4 -0
- package/src/lib/export/cleanupExport/cleanupExport.js +11 -0
- package/src/lib/export/cleanupExport/index.d.ts +1 -0
- package/src/lib/export/exportCredential/exportCredential.d.ts +7 -0
- package/src/lib/export/exportCredential/exportCredential.js +63 -0
- package/src/lib/export/exportCredential/index.d.ts +1 -0
- package/src/lib/export/exportEmbeddedWallet/exportEmbeddedWallet.d.ts +7 -0
- package/src/lib/export/exportEmbeddedWallet/exportEmbeddedWallet.js +21 -0
- package/src/lib/export/exportEmbeddedWallet/index.d.ts +1 -0
- package/src/lib/export/exportTurnkeyWalletCredential/exportTurnkeyWalletCredential.d.ts +9 -0
- package/src/lib/export/exportTurnkeyWalletCredential/exportTurnkeyWalletCredential.js +30 -0
- package/src/lib/export/exportTurnkeyWalletCredential/index.d.ts +1 -0
- package/src/lib/export/extractExportBundle/extractExportBundle.d.ts +5 -0
- package/src/lib/export/extractExportBundle/extractExportBundle.js +13 -0
- package/src/lib/export/extractExportBundle/index.d.ts +1 -0
- package/src/lib/export/handleExportInitCheck/handleExportInitCheck.d.ts +12 -0
- package/src/lib/export/handleExportInitCheck/handleExportInitCheck.js +34 -0
- package/src/lib/export/handleExportInitCheck/index.d.ts +1 -0
- package/src/lib/export/initExport/index.d.ts +1 -0
- package/src/lib/export/initExport/initExport.d.ts +6 -0
- package/src/lib/export/initExport/initExport.js +22 -0
- package/src/lib/getTurnkeyWalletId/getTurnkeyWalletId.d.ts +8 -0
- package/src/lib/getTurnkeyWalletId/getTurnkeyWalletId.js +27 -0
- package/src/lib/getTurnkeyWalletId/index.d.ts +1 -0
- package/src/lib/recovery/addEmailRecovery/addEmailRecovery.d.ts +7 -0
- package/src/lib/recovery/addEmailRecovery/addEmailRecovery.js +50 -0
- package/src/lib/recovery/addEmailRecovery/index.d.ts +1 -0
- package/src/lib/recovery/addNewPasskeyAuthenticator/addNewPasskeyAuthenticator.d.ts +7 -0
- package/src/lib/recovery/addNewPasskeyAuthenticator/addNewPasskeyAuthenticator.js +14 -0
- package/src/lib/recovery/addNewPasskeyAuthenticator/index.d.ts +1 -0
- package/src/lib/recovery/canRestoreEmbeddedWalletSession/canRestoreEmbeddedWalletSession.d.ts +2 -0
- package/src/lib/recovery/canRestoreEmbeddedWalletSession/canRestoreEmbeddedWalletSession.js +24 -0
- package/src/lib/recovery/canRestoreEmbeddedWalletSession/index.d.ts +1 -0
- package/src/lib/recovery/completePasskeyRecovery/completePasskeyRecovery.d.ts +7 -0
- package/src/lib/recovery/completePasskeyRecovery/completePasskeyRecovery.js +26 -0
- package/src/lib/recovery/completePasskeyRecovery/index.d.ts +1 -0
- package/src/lib/recovery/constants.d.ts +3 -0
- package/src/lib/recovery/constants.js +14 -0
- package/src/lib/recovery/index.d.ts +13 -0
- package/src/lib/recovery/initEmbeddedWalletSession/index.d.ts +1 -0
- package/src/lib/recovery/initEmbeddedWalletSession/initEmbeddedWalletSession.d.ts +11 -0
- package/src/lib/recovery/initEmbeddedWalletSession/initEmbeddedWalletSession.js +56 -0
- package/src/lib/recovery/passkeyRecoveryBundleValidation/index.d.ts +1 -0
- package/src/lib/recovery/passkeyRecoveryBundleValidation/passkeyRecoveryBundleValidation.d.ts +7 -0
- package/src/lib/recovery/passkeyRecoveryBundleValidation/passkeyRecoveryBundleValidation.js +32 -0
- package/src/lib/recovery/recoverTurnkeyWallet/index.d.ts +1 -0
- package/src/lib/recovery/recoverTurnkeyWallet/recoverTurnkeyWallet.d.ts +11 -0
- package/src/lib/recovery/recoverTurnkeyWallet/recoverTurnkeyWallet.js +72 -0
- package/src/lib/recovery/resentRecoveryEmail/index.d.ts +1 -0
- package/src/lib/recovery/resentRecoveryEmail/resentRecoveryEmail.d.ts +7 -0
- package/src/lib/recovery/resentRecoveryEmail/resentRecoveryEmail.js +43 -0
- package/src/lib/recovery/restoreEmbeddedWalletSession/index.d.ts +1 -0
- package/src/lib/recovery/restoreEmbeddedWalletSession/restoreEmbeddedWalletSession.d.ts +9 -0
- package/src/lib/recovery/restoreEmbeddedWalletSession/restoreEmbeddedWalletSession.js +33 -0
- package/src/lib/recovery/types.d.ts +5 -0
- package/src/lib/recovery/useEmbeddedWalletAuthenticator/index.d.ts +1 -0
- package/src/lib/recovery/useEmbeddedWalletAuthenticator/useEmbeddedWalletAuthenticator.d.ts +11 -0
- package/src/lib/recovery/useInitEmbeddedWalletAuthMethod/index.d.ts +1 -0
- package/src/lib/recovery/useInitEmbeddedWalletAuthMethod/useInitEmbeddedWalletAuthMethod.d.ts +29 -0
- package/src/lib/recovery/useInitEmbeddedWalletAuthMethod/useInitEmbeddedWalletAuthMethod.js +50 -0
- package/src/lib/recovery/usePasskeyRecovery/index.d.ts +1 -0
- package/src/lib/recovery/usePasskeyRecovery/usePasskeyRecovery.d.ts +32 -0
- package/src/lib/recovery/usePasskeyRecovery/usePasskeyRecovery.js +197 -0
- package/src/lib/restoreEmbeddedWallet/index.d.ts +1 -0
- package/src/lib/restoreEmbeddedWallet/restoreEmbeddedWallet.d.ts +5 -0
- package/src/lib/restoreEmbeddedWallet/restoreEmbeddedWallet.js +21 -0
- package/src/lib/sessionKeys/base64urlDecode/base64urlDecode.d.ts +1 -0
- package/src/lib/sessionKeys/base64urlDecode/base64urlDecode.js +12 -0
- package/src/lib/sessionKeys/base64urlDecode/index.d.ts +1 -0
- package/src/lib/sessionKeys/buf2hex/buf2hex.d.ts +1 -0
- package/src/lib/sessionKeys/buf2hex/buf2hex.js +7 -0
- package/src/lib/sessionKeys/buf2hex/index.d.ts +1 -0
- package/src/lib/sessionKeys/compressRawPublicKey/compressRawPublicKey.d.ts +1 -0
- package/src/lib/sessionKeys/compressRawPublicKey/compressRawPublicKey.js +15 -0
- package/src/lib/sessionKeys/compressRawPublicKey/index.d.ts +1 -0
- package/src/lib/sessionKeys/generateAndSaveSessionKey/generateAndSaveSessionKey.d.ts +7 -0
- package/src/lib/sessionKeys/generateAndSaveSessionKey/generateAndSaveSessionKey.js +19 -0
- package/src/lib/sessionKeys/generateAndSaveSessionKey/index.d.ts +1 -0
- package/src/lib/sessionKeys/generateSessionKey/generateSessionKey.d.ts +13 -0
- package/src/lib/sessionKeys/generateSessionKey/generateSessionKey.js +20 -0
- package/src/lib/sessionKeys/generateSessionKey/index.d.ts +1 -0
- package/src/lib/sessionKeys/getDecodedSessionKeys/getDecodedSessionKeys.d.ts +2 -0
- package/src/lib/sessionKeys/getDecodedSessionKeys/getDecodedSessionKeys.js +28 -0
- package/src/lib/sessionKeys/getDecodedSessionKeys/index.d.ts +1 -0
- package/src/lib/sessionKeys/getSessionNonceHeaders/getSessionNonceHeaders.d.ts +6 -0
- package/src/lib/sessionKeys/getSessionNonceHeaders/getSessionNonceHeaders.js +19 -0
- package/src/lib/sessionKeys/getSessionNonceHeaders/index.d.ts +1 -0
- package/src/lib/sessionKeys/p256Keygen/index.d.ts +1 -0
- package/src/lib/sessionKeys/p256Keygen/p256Keygen.d.ts +11 -0
- package/src/lib/sessionKeys/p256Keygen/p256Keygen.js +26 -0
- package/src/lib/sessionKeys/p256Sign/index.d.ts +1 -0
- package/src/lib/sessionKeys/p256Sign/p256Sign.d.ts +1 -0
- package/src/lib/sessionKeys/p256Sign/p256Sign.js +17 -0
- package/src/lib/sessionKeys/registerSessionKey/index.d.ts +1 -0
- package/src/lib/sessionKeys/registerSessionKey/registerSessionKey.d.ts +8 -0
- package/src/lib/sessionKeys/registerSessionKey/registerSessionKey.js +42 -0
- package/src/lib/sessionKeys/removeSessionKey/index.d.ts +1 -0
- package/src/lib/sessionKeys/removeSessionKey/removeSessionKey.d.ts +1 -0
- package/src/lib/sessionKeys/removeSessionKey/removeSessionKey.js +9 -0
- package/src/lib/sessionKeys/toEncodedFormat/index.d.ts +1 -0
- package/src/lib/sessionKeys/toEncodedFormat/toEncodedFormat.d.ts +1 -0
- package/src/lib/sessionKeys/toEncodedFormat/toEncodedFormat.js +15 -0
- package/src/lib/sessionKeys/useRegisterEmbeddedWalletSessionKey/index.d.ts +1 -0
- package/src/lib/sessionKeys/useRegisterEmbeddedWalletSessionKey/useRegisterEmbeddedWalletSessionKey.d.ts +11 -0
- package/src/lib/sessionKeys/useRegisterEmbeddedWalletSessionKey/useRegisterEmbeddedWalletSessionKey.js +101 -0
- package/src/lib/sessionKeys/useSetTurnkeyConnectorFetchers/index.d.ts +1 -0
- package/src/lib/sessionKeys/useSetTurnkeyConnectorFetchers/useSetTurnkeyConnectorFetchers.d.ts +4 -0
- package/src/lib/sessionKeys/useSetTurnkeyConnectorFetchers/useSetTurnkeyConnectorFetchers.js +18 -0
- package/src/lib/softDeleteEmbeddedWallet/index.d.ts +1 -0
- package/src/lib/softDeleteEmbeddedWallet/softDeleteEmbeddedWallet.d.ts +5 -0
- package/src/lib/softDeleteEmbeddedWallet/softDeleteEmbeddedWallet.js +21 -0
- package/src/lib/ui/AccountUpgradedView/AccountUpgradedView.d.ts +5 -0
- package/src/lib/ui/AccountUpgradedView/AccountUpgradedView.js +44 -0
- package/src/lib/ui/AccountUpgradedView/index.d.ts +1 -0
- package/src/lib/ui/LegacyEmbeddedWalletExport/LegacyEmbeddedWalletExport.d.ts +6 -0
- package/src/lib/ui/LegacyEmbeddedWalletExport/LegacyEmbeddedWalletExport.js +122 -0
- package/src/lib/ui/LegacyEmbeddedWalletExport/index.d.ts +1 -0
- package/src/lib/ui/LegacyWalletExportSheet/LegacyWalletExportSheet.d.ts +17 -0
- package/src/lib/ui/LegacyWalletExportSheet/LegacyWalletExportSheet.js +60 -0
- package/src/lib/ui/LegacyWalletExportSheet/index.d.ts +1 -0
- package/src/lib/ui/LegacyWalletMigrationContext/LegacyWalletMigrationContext.d.ts +42 -0
- package/src/lib/ui/LegacyWalletMigrationContext/LegacyWalletMigrationContext.js +109 -0
- package/src/lib/ui/LegacyWalletMigrationContext/index.d.ts +1 -0
- package/src/lib/ui/LegacyWalletMigrationModal/LegacyWalletMigrationModal.d.ts +15 -0
- package/src/lib/ui/LegacyWalletMigrationModal/LegacyWalletMigrationModal.js +51 -0
- package/src/lib/ui/LegacyWalletMigrationModal/index.d.ts +1 -0
- package/src/lib/ui/LegacyWalletMigrationRecoveryContext/LegacyWalletMigrationRecoveryContext.d.ts +25 -0
- package/src/lib/ui/LegacyWalletMigrationRecoveryContext/LegacyWalletMigrationRecoveryContext.js +213 -0
- package/src/lib/ui/LegacyWalletMigrationRecoveryContext/index.d.ts +1 -0
- package/src/lib/ui/WaasUpgradeView/WaasUpgradeView.d.ts +9 -0
- package/src/lib/ui/WaasUpgradeView/WaasUpgradeView.js +62 -0
- package/src/lib/ui/WaasUpgradeView/index.d.ts +1 -0
- package/src/lib/ui/WalletUpgradeFlowView/WalletUpgradeFlowView.d.ts +12 -0
- package/src/lib/ui/WalletUpgradeFlowView/WalletUpgradeFlowView.js +124 -0
- package/src/lib/ui/WalletUpgradeFlowView/index.d.ts +1 -0
- package/src/lib/ui/recovery/LegacyAddRecoveryEmailView/LegacyAddRecoveryEmailView.d.ts +9 -0
- package/src/lib/ui/recovery/LegacyAddRecoveryEmailView/LegacyAddRecoveryEmailView.js +21 -0
- package/src/lib/ui/recovery/LegacyAddRecoveryEmailView/index.d.ts +1 -0
- package/src/lib/ui/recovery/LegacyEmbeddedAuthChoiceView/LegacyEmbeddedAuthChoiceView.d.ts +9 -0
- package/src/lib/ui/recovery/LegacyEmbeddedAuthChoiceView/LegacyEmbeddedAuthChoiceView.js +29 -0
- package/src/lib/ui/recovery/LegacyEmbeddedAuthChoiceView/index.d.ts +1 -0
- package/src/lib/ui/recovery/LegacyPasskeyBundleRecoveryView/LegacyPasskeyBundleRecoveryView.d.ts +10 -0
- package/src/lib/ui/recovery/LegacyPasskeyBundleRecoveryView/LegacyPasskeyBundleRecoveryView.js +36 -0
- package/src/lib/ui/recovery/LegacyPasskeyBundleRecoveryView/index.d.ts +1 -0
- package/src/lib/ui/recovery/LegacyPasskeyCompleteRecoveryView/LegacyPasskeyCompleteRecoveryView.d.ts +8 -0
- package/src/lib/ui/recovery/LegacyPasskeyCompleteRecoveryView/LegacyPasskeyCompleteRecoveryView.js +22 -0
- package/src/lib/ui/recovery/LegacyPasskeyCompleteRecoveryView/index.d.ts +1 -0
- package/src/lib/ui/recovery/index.d.ts +4 -0
- package/src/lib/ui/useLegacyWalletExport/index.d.ts +1 -0
- package/src/lib/ui/useLegacyWalletExport/useLegacyWalletExport.d.ts +9 -0
- package/src/lib/ui/useLegacyWalletExport/useLegacyWalletExport.js +75 -0
- package/src/lib/upgradeToDynamicWaas/index.d.ts +1 -0
- package/src/lib/upgradeToDynamicWaas/upgradeToDynamicWaas.d.ts +13 -0
- package/src/lib/upgradeToDynamicWaas/upgradeToDynamicWaas.js +72 -0
- package/src/lib/useLegacyWalletsToMigrate/index.d.ts +2 -0
- package/src/lib/useLegacyWalletsToMigrate/useHasLegacyWalletsToMigrate.d.ts +6 -0
- package/src/lib/useLegacyWalletsToMigrate/useHasLegacyWalletsToMigrate.js +14 -0
- package/src/lib/useLegacyWalletsToMigrate/useLegacyWalletsToMigrate.d.ts +10 -0
- package/src/lib/useLegacyWalletsToMigrate/useLegacyWalletsToMigrate.js +32 -0
- package/src/lib/useUpgradeToDynamicWaas/index.d.ts +1 -0
- package/src/lib/useUpgradeToDynamicWaas/useUpgradeToDynamicWaas.d.ts +20 -0
- package/src/lib/useUpgradeToDynamicWaas/useUpgradeToDynamicWaas.js +44 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { iframeElementId } from '../constants.js';
|
|
4
|
+
import { recoverTurnkeyWallet } from '../recoverTurnkeyWallet/recoverTurnkeyWallet.js';
|
|
5
|
+
|
|
6
|
+
const removeIframeElement = () => {
|
|
7
|
+
var _a;
|
|
8
|
+
/* istanbul ignore next -- @preserve: SSR guard, unreachable in jsdom */
|
|
9
|
+
if (typeof window === 'undefined')
|
|
10
|
+
return;
|
|
11
|
+
const elementToRemove = window.document.getElementById(iframeElementId);
|
|
12
|
+
(_a = elementToRemove === null || elementToRemove === void 0 ? void 0 : elementToRemove.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(elementToRemove);
|
|
13
|
+
};
|
|
14
|
+
const completePasskeyRecovery = (_a) => __awaiter(void 0, [_a], void 0, function* ({ user, wallet, }) {
|
|
15
|
+
const { connector, user: updatedUser } = yield recoverTurnkeyWallet({
|
|
16
|
+
addPasskeyAuthenticator: false,
|
|
17
|
+
user,
|
|
18
|
+
wallet,
|
|
19
|
+
});
|
|
20
|
+
// clear iframeStamper and its reference
|
|
21
|
+
connector.getAuthenticatorHandler().clear();
|
|
22
|
+
removeIframeElement();
|
|
23
|
+
return updatedUser;
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export { completePasskeyRecovery };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { completePasskeyRecovery } from './completePasskeyRecovery';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
// These three literals are intentionally duplicated from sdk-react-core for
|
|
3
|
+
// the duration of the recovery-flow migration. They must agree byte-for-byte:
|
|
4
|
+
// - iframeElementId is selected by `iframe[id*='dyn-passkey-recovery-element-id']`
|
|
5
|
+
// in sdk-react-core's `lib/styles/overrides.scss`, which hides the iframe.
|
|
6
|
+
// - EMBEDDED_WALLET_SESSION_SETTINGS is the localStorage key that
|
|
7
|
+
// sdk-react-core's useClearWalletConnectSessions clears on disconnect.
|
|
8
|
+
// Once sdk-react-core's recovery surface is stripped (PR D), the migration
|
|
9
|
+
// copy becomes canonical and the sdk-react-core duplicates go away.
|
|
10
|
+
const iframeContainerId = 'dyn-passkey-recovery-id';
|
|
11
|
+
const iframeElementId = 'dyn-passkey-recovery-element-id';
|
|
12
|
+
const EMBEDDED_WALLET_SESSION_SETTINGS = 'dynamic_embedded_wallet_session_settings';
|
|
13
|
+
|
|
14
|
+
export { EMBEDDED_WALLET_SESSION_SETTINGS, iframeContainerId, iframeElementId };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { addEmailRecovery } from './addEmailRecovery';
|
|
2
|
+
export { addNewPasskeyAuthenticator } from './addNewPasskeyAuthenticator';
|
|
3
|
+
export { canRestoreEmbeddedWalletSession } from './canRestoreEmbeddedWalletSession';
|
|
4
|
+
export { completePasskeyRecovery } from './completePasskeyRecovery';
|
|
5
|
+
export { initEmbeddedWalletSession } from './initEmbeddedWalletSession';
|
|
6
|
+
export { passkeyRecoveryBundleValidation } from './passkeyRecoveryBundleValidation';
|
|
7
|
+
export { resentRecoveryEmail } from './resentRecoveryEmail';
|
|
8
|
+
export { restoreEmbeddedWalletSession } from './restoreEmbeddedWalletSession';
|
|
9
|
+
export { useEmbeddedWalletAuthenticator } from './useEmbeddedWalletAuthenticator';
|
|
10
|
+
export { useInitEmbeddedWalletAuthMethod, type EmbeddedWalletCurrentAction, } from './useInitEmbeddedWalletAuthMethod';
|
|
11
|
+
export { usePasskeyRecovery, type UsePasskeyRecoveryProps, } from './usePasskeyRecovery';
|
|
12
|
+
export { EMBEDDED_WALLET_SESSION_SETTINGS, iframeContainerId, iframeElementId, } from './constants';
|
|
13
|
+
export type { EmbeddedWalletSessionSettings } from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { initEmbeddedWalletSession } from './initEmbeddedWalletSession';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SdkUser } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
3
|
+
import { AuthenticatorType, Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
export declare const initEmbeddedWalletSession: ({ authenticatorType, iframeContainer, iframeElementId, user, wallet, sessionExpiration, }: {
|
|
5
|
+
authenticatorType: AuthenticatorType;
|
|
6
|
+
iframeContainer: HTMLElement;
|
|
7
|
+
iframeElementId: string;
|
|
8
|
+
user: UserProfile | undefined;
|
|
9
|
+
wallet: Wallet | null;
|
|
10
|
+
sessionExpiration?: number;
|
|
11
|
+
}) => Promise<SdkUser | undefined>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { getDefaultClient, getCore, createApiClient } from '@dynamic-labs-sdk/client/core';
|
|
4
|
+
import { DynamicError, InvalidPrimaryWalletOrConnectorError } from '@dynamic-labs/utils';
|
|
5
|
+
import { isPasskeyWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
6
|
+
import { USER_NOT_LOGGED_IN } from '../../constants.js';
|
|
7
|
+
import { addNewPasskeyAuthenticator } from '../addNewPasskeyAuthenticator/addNewPasskeyAuthenticator.js';
|
|
8
|
+
|
|
9
|
+
const initEmbeddedWalletSession = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authenticatorType, iframeContainer, iframeElementId, user, wallet, sessionExpiration, }) {
|
|
10
|
+
var _b;
|
|
11
|
+
if (!user) {
|
|
12
|
+
throw new DynamicError(USER_NOT_LOGGED_IN, USER_NOT_LOGGED_IN);
|
|
13
|
+
}
|
|
14
|
+
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
|
|
15
|
+
!(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
|
|
16
|
+
!isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
|
|
17
|
+
throw new InvalidPrimaryWalletOrConnectorError();
|
|
18
|
+
}
|
|
19
|
+
const turnkeyRecoveryHandler = (_b = wallet.connector) === null || _b === void 0 ? void 0 : _b.getAuthenticatorHandler();
|
|
20
|
+
if (authenticatorType === 'passkey' &&
|
|
21
|
+
turnkeyRecoveryHandler.isSessionActive()) {
|
|
22
|
+
return addNewPasskeyAuthenticator({
|
|
23
|
+
user,
|
|
24
|
+
wallet,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const publicKey = yield turnkeyRecoveryHandler.initRecovery(authenticatorType, iframeContainer, iframeElementId, sessionExpiration);
|
|
28
|
+
if (!publicKey) {
|
|
29
|
+
throw new DynamicError('Something went wrong', 'init_embedded_wallet_session_failed');
|
|
30
|
+
}
|
|
31
|
+
const client = getDefaultClient();
|
|
32
|
+
const core = getCore(client);
|
|
33
|
+
const apiClient = createApiClient({}, client);
|
|
34
|
+
const response = authenticatorType === 'passkey'
|
|
35
|
+
? yield apiClient.initPasskeyRecovery({
|
|
36
|
+
environmentId: core.environmentId,
|
|
37
|
+
initPasskeyRecoveryRequest: {
|
|
38
|
+
turnkeyRecoveryTargetPublicKey: publicKey,
|
|
39
|
+
walletId: wallet.id,
|
|
40
|
+
},
|
|
41
|
+
})
|
|
42
|
+
: yield apiClient.initEmailAuth({
|
|
43
|
+
environmentId: core.environmentId,
|
|
44
|
+
initEmailAuthRequest: {
|
|
45
|
+
turnkeyEmailAuthTargetPublicKey: publicKey,
|
|
46
|
+
walletId: wallet.id,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
turnkeyRecoveryHandler.recoveryUserId =
|
|
50
|
+
authenticatorType === 'passkey'
|
|
51
|
+
? response.turnkeyRecoveryUserId
|
|
52
|
+
: response.turnkeyUserId;
|
|
53
|
+
return;
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export { initEmbeddedWalletSession };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { passkeyRecoveryBundleValidation } from './passkeyRecoveryBundleValidation';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
2
|
+
import { Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
export declare const passkeyRecoveryBundleValidation: ({ user, bundleInput, wallet, }: {
|
|
4
|
+
user: UserProfile | undefined;
|
|
5
|
+
bundleInput: string | undefined;
|
|
6
|
+
wallet: Wallet | null;
|
|
7
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { DynamicError, InvalidPrimaryWalletOrConnectorError, StorageService } from '@dynamic-labs/utils';
|
|
4
|
+
import { isPasskeyWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
|
+
import { USER_NOT_LOGGED_IN } from '../../constants.js';
|
|
6
|
+
import { EMBEDDED_WALLET_SESSION_SETTINGS } from '../constants.js';
|
|
7
|
+
|
|
8
|
+
const passkeyRecoveryBundleValidation = (_a) => __awaiter(void 0, [_a], void 0, function* ({ user, bundleInput, wallet, }) {
|
|
9
|
+
var _b, _c, _d, _e, _f;
|
|
10
|
+
if (!bundleInput) {
|
|
11
|
+
throw new DynamicError('Code must be informed', 'missing_code');
|
|
12
|
+
}
|
|
13
|
+
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
|
|
14
|
+
!(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
|
|
15
|
+
!isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
|
|
16
|
+
throw new InvalidPrimaryWalletOrConnectorError();
|
|
17
|
+
}
|
|
18
|
+
if (!user) {
|
|
19
|
+
throw new DynamicError(USER_NOT_LOGGED_IN, USER_NOT_LOGGED_IN);
|
|
20
|
+
}
|
|
21
|
+
const organizationId = (_e = (_d = (_c = (_b = user.verifiedCredentials) === null || _b === void 0 ? void 0 : _b.find(({ walletName, id }) => (walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey')) && id === wallet.id)) === null || _c === void 0 ? void 0 : _c.walletProperties) === null || _d === void 0 ? void 0 : _d.turnkeySubOrganizationId) !== null && _e !== void 0 ? _e : undefined;
|
|
22
|
+
const turnkeyRecoveryHandler = (_f = wallet.connector) === null || _f === void 0 ? void 0 : _f.getAuthenticatorHandler();
|
|
23
|
+
yield turnkeyRecoveryHandler.verifyRecoveryCode(bundleInput, organizationId !== null && organizationId !== void 0 ? organizationId : undefined);
|
|
24
|
+
const sessionSettings = {
|
|
25
|
+
createdAt: new Date().getTime(),
|
|
26
|
+
emailCode: bundleInput,
|
|
27
|
+
userId: turnkeyRecoveryHandler.recoveryUserId,
|
|
28
|
+
};
|
|
29
|
+
StorageService.setItem(EMBEDDED_WALLET_SESSION_SETTINGS, sessionSettings);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export { passkeyRecoveryBundleValidation };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { recoverTurnkeyWallet } from './recoverTurnkeyWallet';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SdkUser } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
3
|
+
import { IEmailWalletConnector, IPasskeyWalletConnector, Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
export declare const recoverTurnkeyWallet: ({ wallet, user, addPasskeyAuthenticator, }: {
|
|
5
|
+
wallet: Wallet | null;
|
|
6
|
+
user: UserProfile | undefined;
|
|
7
|
+
addPasskeyAuthenticator: boolean;
|
|
8
|
+
}) => Promise<{
|
|
9
|
+
connector: IEmailWalletConnector & IPasskeyWalletConnector;
|
|
10
|
+
user: SdkUser;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { getDefaultClient, getCore, createApiClient, updateAuthFromVerifyResponse } from '@dynamic-labs-sdk/client/core';
|
|
4
|
+
import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';
|
|
5
|
+
import { DynamicError, InvalidPrimaryWalletOrConnectorError } from '@dynamic-labs/utils';
|
|
6
|
+
import { isPasskeyWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
7
|
+
import { USER_NOT_LOGGED_IN } from '../../constants.js';
|
|
8
|
+
|
|
9
|
+
const hasEmbeddedWalletCredential = (user) => {
|
|
10
|
+
var _a;
|
|
11
|
+
return Boolean((_a = user.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.some(({ walletProvider }) => walletProvider === WalletProviderEnum.EmbeddedWallet));
|
|
12
|
+
};
|
|
13
|
+
const recoverTurnkeyWallet = (_a) => __awaiter(void 0, [_a], void 0, function* ({ wallet, user, addPasskeyAuthenticator, }) {
|
|
14
|
+
var _b, _c, _d;
|
|
15
|
+
if (!user) {
|
|
16
|
+
throw new DynamicError(USER_NOT_LOGGED_IN, USER_NOT_LOGGED_IN);
|
|
17
|
+
}
|
|
18
|
+
if (!wallet ||
|
|
19
|
+
!wallet.connector ||
|
|
20
|
+
!wallet.id ||
|
|
21
|
+
!isPasskeyWalletConnector(wallet.connector)) {
|
|
22
|
+
throw new InvalidPrimaryWalletOrConnectorError();
|
|
23
|
+
}
|
|
24
|
+
const connector = wallet.connector;
|
|
25
|
+
connector.setEmail(user.email);
|
|
26
|
+
const turnkeySubOrganizationId = (_d = (_c = (_b = user.verifiedCredentials) === null || _b === void 0 ? void 0 : _b.find(({ walletName, id }) => (walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey')) && id === wallet.id)) === null || _c === void 0 ? void 0 : _c.walletProperties) === null || _d === void 0 ? void 0 : _d.turnkeySubOrganizationId;
|
|
27
|
+
if (!turnkeySubOrganizationId) {
|
|
28
|
+
throw new DynamicError('The authentication token is invalid - turnkeySubOrganizationId is missing', 'invalid_authentication_token');
|
|
29
|
+
}
|
|
30
|
+
const turnkeyRecoveryHandler = wallet.connector.getAuthenticatorHandler();
|
|
31
|
+
const { attestation, challenge } = yield connector.getWebAuthnAttestation();
|
|
32
|
+
if (addPasskeyAuthenticator) {
|
|
33
|
+
yield turnkeyRecoveryHandler.addPasskeyAuthenticator({
|
|
34
|
+
attestation,
|
|
35
|
+
challenge,
|
|
36
|
+
turnkeySubOrganizationId,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
yield turnkeyRecoveryHandler.completeRecovery({
|
|
41
|
+
attestation,
|
|
42
|
+
challenge,
|
|
43
|
+
turnkeySubOrganizationId,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const client = getDefaultClient();
|
|
47
|
+
const core = getCore(client);
|
|
48
|
+
const apiClient = createApiClient({}, client);
|
|
49
|
+
const response = yield apiClient.completePasskeyRecovery({
|
|
50
|
+
completePasskeyRecoveryRequest: {
|
|
51
|
+
attestation: attestation,
|
|
52
|
+
challenge,
|
|
53
|
+
walletId: wallet.id,
|
|
54
|
+
},
|
|
55
|
+
environmentId: core.environmentId,
|
|
56
|
+
});
|
|
57
|
+
updateAuthFromVerifyResponse({ response }, client);
|
|
58
|
+
const updatedUser = response.user;
|
|
59
|
+
if (!updatedUser) {
|
|
60
|
+
throw new DynamicError('No user returned from passkey recovery', 'passkey_recovery_failed');
|
|
61
|
+
}
|
|
62
|
+
if (!hasEmbeddedWalletCredential(updatedUser)) {
|
|
63
|
+
throw new DynamicError('EmbeddedWalletVerifiedCredential not found', 'embedded_wallet_credential_not_found');
|
|
64
|
+
}
|
|
65
|
+
connector.setVerifiedCredentials(updatedUser.verifiedCredentials);
|
|
66
|
+
return {
|
|
67
|
+
connector,
|
|
68
|
+
user: updatedUser,
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
export { recoverTurnkeyWallet };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { resentRecoveryEmail } from './resentRecoveryEmail';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
2
|
+
import { AuthenticatorType, Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
export declare const resentRecoveryEmail: ({ authenticatorType, user, wallet, }: {
|
|
4
|
+
authenticatorType: AuthenticatorType;
|
|
5
|
+
user: UserProfile | undefined;
|
|
6
|
+
wallet: Wallet | null;
|
|
7
|
+
}) => Promise<import("@dynamic-labs/sdk-api-core").InitPasskeyRecoveryResponse | import("@dynamic-labs/sdk-api-core").InitEmailAuthResponse>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { getDefaultClient, getCore, createApiClient } from '@dynamic-labs-sdk/client/core';
|
|
4
|
+
import { DynamicError, InvalidPrimaryWalletOrConnectorError } from '@dynamic-labs/utils';
|
|
5
|
+
import { isPasskeyWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
6
|
+
import { USER_NOT_LOGGED_IN } from '../../constants.js';
|
|
7
|
+
|
|
8
|
+
const resentRecoveryEmail = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authenticatorType, user, wallet, }) {
|
|
9
|
+
var _b;
|
|
10
|
+
if (!user) {
|
|
11
|
+
throw new DynamicError(USER_NOT_LOGGED_IN, USER_NOT_LOGGED_IN);
|
|
12
|
+
}
|
|
13
|
+
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
|
|
14
|
+
!(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
|
|
15
|
+
!isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
|
|
16
|
+
throw new InvalidPrimaryWalletOrConnectorError();
|
|
17
|
+
}
|
|
18
|
+
const publicKey = (_b = wallet.connector) === null || _b === void 0 ? void 0 : _b.getAuthenticatorHandler().publicKey;
|
|
19
|
+
if (!publicKey) {
|
|
20
|
+
throw new DynamicError('Could not proceed with your request. Please restart the process.', 'resend_recovery_email_failed');
|
|
21
|
+
}
|
|
22
|
+
const client = getDefaultClient();
|
|
23
|
+
const core = getCore(client);
|
|
24
|
+
const apiClient = createApiClient({}, client);
|
|
25
|
+
if (authenticatorType === 'passkey') {
|
|
26
|
+
return apiClient.initPasskeyRecovery({
|
|
27
|
+
environmentId: core.environmentId,
|
|
28
|
+
initPasskeyRecoveryRequest: {
|
|
29
|
+
turnkeyRecoveryTargetPublicKey: publicKey,
|
|
30
|
+
walletId: wallet.id,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return apiClient.initEmailAuth({
|
|
35
|
+
environmentId: core.environmentId,
|
|
36
|
+
initEmailAuthRequest: {
|
|
37
|
+
turnkeyEmailAuthTargetPublicKey: publicKey,
|
|
38
|
+
walletId: wallet.id,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export { resentRecoveryEmail };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { restoreEmbeddedWalletSession } from './restoreEmbeddedWalletSession';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
2
|
+
import { Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
export declare const restoreEmbeddedWalletSession: ({ user, iframeContainer, iframeElementId, wallet, sessionExpiration, }: {
|
|
4
|
+
user: UserProfile | undefined;
|
|
5
|
+
iframeContainer: HTMLElement;
|
|
6
|
+
iframeElementId: string;
|
|
7
|
+
wallet: Wallet | null;
|
|
8
|
+
sessionExpiration?: number;
|
|
9
|
+
}) => Promise<boolean>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { DynamicError, InvalidPrimaryWalletOrConnectorError, StorageService } from '@dynamic-labs/utils';
|
|
4
|
+
import { isPasskeyWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
|
+
import { USER_NOT_LOGGED_IN } from '../../constants.js';
|
|
6
|
+
import { EMBEDDED_WALLET_SESSION_SETTINGS } from '../constants.js';
|
|
7
|
+
|
|
8
|
+
const restoreEmbeddedWalletSession = (_a) => __awaiter(void 0, [_a], void 0, function* ({ user, iframeContainer, iframeElementId, wallet, sessionExpiration, }) {
|
|
9
|
+
var _b, _c, _d, _e, _f;
|
|
10
|
+
if (!user) {
|
|
11
|
+
throw new DynamicError(USER_NOT_LOGGED_IN, USER_NOT_LOGGED_IN);
|
|
12
|
+
}
|
|
13
|
+
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
|
|
14
|
+
!(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
|
|
15
|
+
!isPasskeyWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
|
|
16
|
+
throw new InvalidPrimaryWalletOrConnectorError();
|
|
17
|
+
}
|
|
18
|
+
const sessionSettings = StorageService.getItem(EMBEDDED_WALLET_SESSION_SETTINGS);
|
|
19
|
+
const turnkeyRecoveryHandler = (_b = wallet.connector) === null || _b === void 0 ? void 0 : _b.getAuthenticatorHandler();
|
|
20
|
+
if (!sessionSettings || Boolean(turnkeyRecoveryHandler.recoveryUserId)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const publicKey = yield turnkeyRecoveryHandler.initRecovery('email', iframeContainer, iframeElementId, sessionExpiration);
|
|
24
|
+
if (!publicKey) {
|
|
25
|
+
throw new DynamicError('Could not open embedded wallet connection communication', 'restore_embedded_wallet_session_failed');
|
|
26
|
+
}
|
|
27
|
+
turnkeyRecoveryHandler.recoveryUserId = sessionSettings.userId;
|
|
28
|
+
const organizationId = (_f = (_e = (_d = (_c = user.verifiedCredentials) === null || _c === void 0 ? void 0 : _c.find(({ walletName, id }) => (walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey')) && id === wallet.id)) === null || _d === void 0 ? void 0 : _d.walletProperties) === null || _e === void 0 ? void 0 : _e.turnkeySubOrganizationId) !== null && _f !== void 0 ? _f : undefined;
|
|
29
|
+
yield turnkeyRecoveryHandler.verifyRecoveryCode(sessionSettings.emailCode, organizationId !== null && organizationId !== void 0 ? organizationId : undefined);
|
|
30
|
+
return true;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export { restoreEmbeddedWalletSession };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useEmbeddedWalletAuthenticator } from './useEmbeddedWalletAuthenticator';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AuthenticatorType, Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
type UseEmbeddedWalletAuthenticatorProps = {
|
|
3
|
+
initPasskeyRecoveryProcess: (authenticatorType?: AuthenticatorType) => Promise<Wallet>;
|
|
4
|
+
shouldInitRecovery: () => Promise<boolean>;
|
|
5
|
+
onAddRecoveryEmail: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const useEmbeddedWalletAuthenticator: ({ initPasskeyRecoveryProcess, shouldInitRecovery, onAddRecoveryEmail, }: UseEmbeddedWalletAuthenticatorProps) => {
|
|
8
|
+
addEmbeddedWalletRecoveryEmail: () => Promise<void>;
|
|
9
|
+
createOrRefreshAuthenticatorSession: (authenticatorType?: AuthenticatorType) => Promise<Wallet<import("@dynamic-labs/wallet-connector-core").WalletConnectorCore.WalletConnector> | undefined>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useInitEmbeddedWalletAuthMethod, type EmbeddedWalletCurrentAction, } from './useInitEmbeddedWalletAuthMethod';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
2
|
+
import { AuthenticatorType, Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
export type EmbeddedWalletCurrentAction = {
|
|
4
|
+
type: 'signMessage' | 'sendTransaction' | 'helpSession' | 'signTransaction' | 'reveal';
|
|
5
|
+
settings?: {
|
|
6
|
+
goBack?: () => void;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
type InitAuthenticatorMethodProps = {
|
|
10
|
+
authenticatorType: AuthenticatorType;
|
|
11
|
+
iframeContainer: HTMLElement;
|
|
12
|
+
currentAction?: EmbeddedWalletCurrentAction;
|
|
13
|
+
};
|
|
14
|
+
type UseInitEmbeddedWalletAuthMethodProps = {
|
|
15
|
+
user: UserProfile | undefined;
|
|
16
|
+
wallet: Wallet | null;
|
|
17
|
+
sessionExpiration?: number;
|
|
18
|
+
onShowEmailBundle: (args: {
|
|
19
|
+
authenticatorType: AuthenticatorType;
|
|
20
|
+
currentAction?: EmbeddedWalletCurrentAction;
|
|
21
|
+
}) => void;
|
|
22
|
+
onComplete: () => void;
|
|
23
|
+
};
|
|
24
|
+
export declare const useInitEmbeddedWalletAuthMethod: ({ user, wallet, sessionExpiration, onShowEmailBundle, onComplete, }: UseInitEmbeddedWalletAuthMethodProps) => {
|
|
25
|
+
error: unknown;
|
|
26
|
+
initAuthMethod: ({ authenticatorType, iframeContainer, currentAction, }: InitAuthenticatorMethodProps) => Promise<void>;
|
|
27
|
+
isLoading: boolean;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { logger } from '@dynamic-labs/wallet-connector-core';
|
|
5
|
+
import { iframeElementId } from '../constants.js';
|
|
6
|
+
import { initEmbeddedWalletSession } from '../initEmbeddedWalletSession/initEmbeddedWalletSession.js';
|
|
7
|
+
|
|
8
|
+
// This hook needs to be async that's why it's not using useMutation
|
|
9
|
+
const useInitEmbeddedWalletAuthMethod = ({ user, wallet, sessionExpiration, onShowEmailBundle, onComplete, }) => {
|
|
10
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
11
|
+
const [error, setError] = useState();
|
|
12
|
+
const initAuthMethod = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authenticatorType, iframeContainer, currentAction, }) {
|
|
13
|
+
setIsLoading(true);
|
|
14
|
+
const showEmailBundle = authenticatorType === 'email' ||
|
|
15
|
+
!wallet ||
|
|
16
|
+
!wallet.connector
|
|
17
|
+
.getAuthenticatorHandler()
|
|
18
|
+
.isSessionActive();
|
|
19
|
+
try {
|
|
20
|
+
yield initEmbeddedWalletSession({
|
|
21
|
+
authenticatorType,
|
|
22
|
+
iframeContainer,
|
|
23
|
+
iframeElementId,
|
|
24
|
+
sessionExpiration,
|
|
25
|
+
user,
|
|
26
|
+
wallet,
|
|
27
|
+
});
|
|
28
|
+
if (showEmailBundle) {
|
|
29
|
+
onShowEmailBundle({ authenticatorType, currentAction });
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
onComplete();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
setError(err);
|
|
37
|
+
logger.error('Failed to create embedded wallet session', err);
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
setIsLoading(false);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
error,
|
|
45
|
+
initAuthMethod,
|
|
46
|
+
isLoading,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { useInitEmbeddedWalletAuthMethod };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { usePasskeyRecovery, type UsePasskeyRecoveryProps, } from './usePasskeyRecovery';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Duration, SupportedSecurityMethods } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
import { UserProfile } from '@dynamic-labs/types';
|
|
3
|
+
import { AuthenticatorType, Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { EmbeddedWalletCurrentAction } from '../useInitEmbeddedWalletAuthMethod';
|
|
5
|
+
export type UsePasskeyRecoveryProps = {
|
|
6
|
+
user: UserProfile | undefined;
|
|
7
|
+
wallet: Wallet | null;
|
|
8
|
+
primaryWallet: Wallet | null;
|
|
9
|
+
sessionKeyDuration: Duration | undefined;
|
|
10
|
+
supportedSecurityMethods: SupportedSecurityMethods | undefined;
|
|
11
|
+
isTurnkeyWalletWithoutAuthenticator: boolean;
|
|
12
|
+
hasRecoveryEmail: boolean;
|
|
13
|
+
iframeContainer: HTMLElement | null;
|
|
14
|
+
onShowAddRecoveryEmail: () => void;
|
|
15
|
+
onShowAuthChoice: (currentAction?: EmbeddedWalletCurrentAction) => void;
|
|
16
|
+
awaitEmailVerification: (args: {
|
|
17
|
+
email: string;
|
|
18
|
+
verificationUUID: string | undefined;
|
|
19
|
+
}) => Promise<boolean>;
|
|
20
|
+
onShowEmailBundle: (args: {
|
|
21
|
+
authenticatorType: AuthenticatorType;
|
|
22
|
+
currentAction?: EmbeddedWalletCurrentAction;
|
|
23
|
+
}) => void;
|
|
24
|
+
onAuthMethodComplete: () => void;
|
|
25
|
+
onEmailRecoveryComplete?: () => void;
|
|
26
|
+
onEmailRecoveryFailed?: (error: unknown) => void;
|
|
27
|
+
};
|
|
28
|
+
export declare const usePasskeyRecovery: ({ user, wallet, primaryWallet, sessionKeyDuration, supportedSecurityMethods, isTurnkeyWalletWithoutAuthenticator, hasRecoveryEmail, iframeContainer, onShowAddRecoveryEmail, onShowAuthChoice, awaitEmailVerification, onShowEmailBundle, onAuthMethodComplete, onEmailRecoveryComplete, onEmailRecoveryFailed, }: UsePasskeyRecoveryProps) => {
|
|
29
|
+
readonly addRecoveryEmail: (emailInput: string) => Promise<void>;
|
|
30
|
+
readonly initPasskeyRecoveryProcess: (authenticatorType?: AuthenticatorType, currentAction?: EmbeddedWalletCurrentAction) => Promise<void>;
|
|
31
|
+
readonly shouldInitRecovery: () => Promise<boolean>;
|
|
32
|
+
};
|