@spacesops/wdk-react-native-core 1.0.0-beta.40
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/README.md +551 -0
- package/dist/__mocks__/react.d.ts +40 -0
- package/dist/__mocks__/react.js +33 -0
- package/dist/__mocks__/react.js.map +1 -0
- package/dist/__mocks__/secureStorage.d.ts +26 -0
- package/dist/__mocks__/secureStorage.js +80 -0
- package/dist/__mocks__/secureStorage.js.map +1 -0
- package/dist/__tests__/hooks/useBalance.test.d.ts +6 -0
- package/dist/__tests__/hooks/useBalance.test.js +217 -0
- package/dist/__tests__/hooks/useBalance.test.js.map +1 -0
- package/dist/__tests__/hooks/useWallet.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWallet.test.js +105 -0
- package/dist/__tests__/hooks/useWallet.test.js.map +1 -0
- package/dist/__tests__/hooks/useWalletManager.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWalletManager.test.js +193 -0
- package/dist/__tests__/hooks/useWalletManager.test.js.map +1 -0
- package/dist/__tests__/hooks/useWdkApp.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWdkApp.test.js +55 -0
- package/dist/__tests__/hooks/useWdkApp.test.js.map +1 -0
- package/dist/__tests__/hooks/useWorklet.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWorklet.test.js +168 -0
- package/dist/__tests__/hooks/useWorklet.test.js.map +1 -0
- package/dist/__tests__/provider/WdkAppProvider.test.d.ts +6 -0
- package/dist/__tests__/provider/WdkAppProvider.test.js +57 -0
- package/dist/__tests__/provider/WdkAppProvider.test.js.map +1 -0
- package/dist/__tests__/services/accountService.test.d.ts +6 -0
- package/dist/__tests__/services/accountService.test.js +216 -0
- package/dist/__tests__/services/accountService.test.js.map +1 -0
- package/dist/__tests__/services/addressService.test.d.ts +6 -0
- package/dist/__tests__/services/addressService.test.js +246 -0
- package/dist/__tests__/services/addressService.test.js.map +1 -0
- package/dist/__tests__/services/balanceService.test.d.ts +6 -0
- package/dist/__tests__/services/balanceService.test.js +333 -0
- package/dist/__tests__/services/balanceService.test.js.map +1 -0
- package/dist/__tests__/services/walletSetupService.test.d.ts +6 -0
- package/dist/__tests__/services/walletSetupService.test.js +304 -0
- package/dist/__tests__/services/walletSetupService.test.js.map +1 -0
- package/dist/__tests__/services/walletSwitchingService.test.d.ts +6 -0
- package/dist/__tests__/services/walletSwitchingService.test.js +209 -0
- package/dist/__tests__/services/walletSwitchingService.test.js.map +1 -0
- package/dist/__tests__/services/workletLifecycleService.test.d.ts +6 -0
- package/dist/__tests__/services/workletLifecycleService.test.js +451 -0
- package/dist/__tests__/services/workletLifecycleService.test.js.map +1 -0
- package/dist/__tests__/setup.d.ts +7 -0
- package/dist/__tests__/setup.js +49 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/storage/mmkvStorage.test.d.ts +6 -0
- package/dist/__tests__/storage/mmkvStorage.test.js +213 -0
- package/dist/__tests__/storage/mmkvStorage.test.js.map +1 -0
- package/dist/__tests__/store/walletStore.test.d.ts +4 -0
- package/dist/__tests__/store/walletStore.test.js +86 -0
- package/dist/__tests__/store/walletStore.test.js.map +1 -0
- package/dist/__tests__/store/workletStore.test.d.ts +4 -0
- package/dist/__tests__/store/workletStore.test.js +255 -0
- package/dist/__tests__/store/workletStore.test.js.map +1 -0
- package/dist/__tests__/types/hrpc.test.d.ts +4 -0
- package/dist/__tests__/types/hrpc.test.js +99 -0
- package/dist/__tests__/types/hrpc.test.js.map +1 -0
- package/dist/__tests__/utils/balanceUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/balanceUtils.test.js +133 -0
- package/dist/__tests__/utils/balanceUtils.test.js.map +1 -0
- package/dist/__tests__/utils/errorHandling.test.d.ts +6 -0
- package/dist/__tests__/utils/errorHandling.test.js +119 -0
- package/dist/__tests__/utils/errorHandling.test.js.map +1 -0
- package/dist/__tests__/utils/errorUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/errorUtils.test.js +133 -0
- package/dist/__tests__/utils/errorUtils.test.js.map +1 -0
- package/dist/__tests__/utils/initializationState.test.d.ts +6 -0
- package/dist/__tests__/utils/initializationState.test.js +243 -0
- package/dist/__tests__/utils/initializationState.test.js.map +1 -0
- package/dist/__tests__/utils/jsonUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/jsonUtils.test.js +118 -0
- package/dist/__tests__/utils/jsonUtils.test.js.map +1 -0
- package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +6 -0
- package/dist/__tests__/utils/mmkvKeyManager.test.js +158 -0
- package/dist/__tests__/utils/mmkvKeyManager.test.js.map +1 -0
- package/dist/__tests__/utils/mnemonicUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/mnemonicUtils.test.js +40 -0
- package/dist/__tests__/utils/mnemonicUtils.test.js.map +1 -0
- package/dist/__tests__/utils/raceConditions.test.d.ts +6 -0
- package/dist/__tests__/utils/raceConditions.test.js +239 -0
- package/dist/__tests__/utils/raceConditions.test.js.map +1 -0
- package/dist/__tests__/utils/result.test.d.ts +4 -0
- package/dist/__tests__/utils/result.test.js +66 -0
- package/dist/__tests__/utils/result.test.js.map +1 -0
- package/dist/__tests__/utils/schemas.test.d.ts +4 -0
- package/dist/__tests__/utils/schemas.test.js +66 -0
- package/dist/__tests__/utils/schemas.test.js.map +1 -0
- package/dist/__tests__/utils/storeHelpers.test.d.ts +4 -0
- package/dist/__tests__/utils/storeHelpers.test.js +227 -0
- package/dist/__tests__/utils/storeHelpers.test.js.map +1 -0
- package/dist/__tests__/utils/typeGuards.test.d.ts +4 -0
- package/dist/__tests__/utils/typeGuards.test.js +175 -0
- package/dist/__tests__/utils/typeGuards.test.js.map +1 -0
- package/dist/__tests__/utils/validation.test.d.ts +4 -0
- package/dist/__tests__/utils/validation.test.js +126 -0
- package/dist/__tests__/utils/validation.test.js.map +1 -0
- package/dist/__tests__/utils/walletUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/walletUtils.test.js +156 -0
- package/dist/__tests__/utils/walletUtils.test.js.map +1 -0
- package/dist/hooks/useBalance.d.ts +170 -0
- package/dist/hooks/useBalance.js +442 -0
- package/dist/hooks/useBalance.js.map +1 -0
- package/dist/hooks/useWallet.d.ts +43 -0
- package/dist/hooks/useWallet.js +193 -0
- package/dist/hooks/useWallet.js.map +1 -0
- package/dist/hooks/useWalletManager.d.ts +100 -0
- package/dist/hooks/useWalletManager.js +526 -0
- package/dist/hooks/useWalletManager.js.map +1 -0
- package/dist/hooks/useWdkApp.d.ts +66 -0
- package/dist/hooks/useWdkApp.js +74 -0
- package/dist/hooks/useWdkApp.js.map +1 -0
- package/dist/hooks/useWorklet.d.ts +66 -0
- package/dist/hooks/useWorklet.js +42 -0
- package/dist/hooks/useWorklet.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/WdkAppProvider.d.ts +112 -0
- package/dist/provider/WdkAppProvider.js +558 -0
- package/dist/provider/WdkAppProvider.js.map +1 -0
- package/dist/services/accountService.d.ts +52 -0
- package/dist/services/accountService.js +119 -0
- package/dist/services/accountService.js.map +1 -0
- package/dist/services/addressService.d.ts +22 -0
- package/dist/services/addressService.js +110 -0
- package/dist/services/addressService.js.map +1 -0
- package/dist/services/balanceService.d.ts +114 -0
- package/dist/services/balanceService.js +208 -0
- package/dist/services/balanceService.js.map +1 -0
- package/dist/services/walletSetupService.d.ts +217 -0
- package/dist/services/walletSetupService.js +535 -0
- package/dist/services/walletSetupService.js.map +1 -0
- package/dist/services/walletSwitchingService.d.ts +48 -0
- package/dist/services/walletSwitchingService.js +143 -0
- package/dist/services/walletSwitchingService.js.map +1 -0
- package/dist/services/workletLifecycleService.d.ts +117 -0
- package/dist/services/workletLifecycleService.js +433 -0
- package/dist/services/workletLifecycleService.js.map +1 -0
- package/dist/storage/mmkvStorage.d.ts +44 -0
- package/dist/storage/mmkvStorage.js +348 -0
- package/dist/storage/mmkvStorage.js.map +1 -0
- package/dist/store/walletStore.d.ts +130 -0
- package/dist/store/walletStore.js +204 -0
- package/dist/store/walletStore.js.map +1 -0
- package/dist/store/workletStore.d.ts +121 -0
- package/dist/store/workletStore.js +256 -0
- package/dist/store/workletStore.js.map +1 -0
- package/dist/types/hrpc.d.ts +60 -0
- package/dist/types/hrpc.js +26 -0
- package/dist/types/hrpc.js.map +1 -0
- package/dist/types.d.ts +168 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/balanceUtils.d.ts +30 -0
- package/dist/utils/balanceUtils.js +86 -0
- package/dist/utils/balanceUtils.js.map +1 -0
- package/dist/utils/constants.d.ts +66 -0
- package/dist/utils/constants.js +73 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +47 -0
- package/dist/utils/errorHandling.js +54 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/errorUtils.d.ts +89 -0
- package/dist/utils/errorUtils.js +264 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/utils/initializationState.d.ts +129 -0
- package/dist/utils/initializationState.js +220 -0
- package/dist/utils/initializationState.js.map +1 -0
- package/dist/utils/jsonUtils.d.ts +21 -0
- package/dist/utils/jsonUtils.js +67 -0
- package/dist/utils/jsonUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mmkvKeyManager.d.ts +57 -0
- package/dist/utils/mmkvKeyManager.js +214 -0
- package/dist/utils/mmkvKeyManager.js.map +1 -0
- package/dist/utils/mnemonicUtils.d.ts +17 -0
- package/dist/utils/mnemonicUtils.js +28 -0
- package/dist/utils/mnemonicUtils.js.map +1 -0
- package/dist/utils/operationMutex.d.ts +69 -0
- package/dist/utils/operationMutex.js +150 -0
- package/dist/utils/operationMutex.js.map +1 -0
- package/dist/utils/result.d.ts +34 -0
- package/dist/utils/result.js +43 -0
- package/dist/utils/result.js.map +1 -0
- package/dist/utils/schemas.d.ts +365 -0
- package/dist/utils/schemas.js +152 -0
- package/dist/utils/schemas.js.map +1 -0
- package/dist/utils/storeHelpers.d.ts +112 -0
- package/dist/utils/storeHelpers.js +198 -0
- package/dist/utils/storeHelpers.js.map +1 -0
- package/dist/utils/typeGuards.d.ts +70 -0
- package/dist/utils/typeGuards.js +95 -0
- package/dist/utils/typeGuards.js.map +1 -0
- package/dist/utils/validation.d.ts +53 -0
- package/dist/utils/validation.js +152 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/walletStateHelpers.d.ts +62 -0
- package/dist/utils/walletStateHelpers.js +81 -0
- package/dist/utils/walletStateHelpers.js.map +1 -0
- package/dist/utils/walletUtils.d.ts +38 -0
- package/dist/utils/walletUtils.js +87 -0
- package/dist/utils/walletUtils.js.map +1 -0
- package/package.json +79 -0
- package/src/__mocks__/react.ts +34 -0
- package/src/__mocks__/secureStorage.ts +87 -0
- package/src/__tests__/hooks/useBalance.test.ts +286 -0
- package/src/__tests__/hooks/useWallet.test.ts +122 -0
- package/src/__tests__/hooks/useWalletManager.test.ts +271 -0
- package/src/__tests__/hooks/useWdkApp.test.tsx +59 -0
- package/src/__tests__/hooks/useWorklet.test.ts +195 -0
- package/src/__tests__/provider/WdkAppProvider.test.tsx +67 -0
- package/src/__tests__/services/accountService.test.ts +337 -0
- package/src/__tests__/services/addressService.test.ts +312 -0
- package/src/__tests__/services/balanceService.test.ts +411 -0
- package/src/__tests__/services/walletSetupService.test.ts +463 -0
- package/src/__tests__/services/walletSwitchingService.test.ts +258 -0
- package/src/__tests__/services/workletLifecycleService.test.ts +514 -0
- package/src/__tests__/setup.ts +54 -0
- package/src/__tests__/storage/mmkvStorage.test.ts +325 -0
- package/src/__tests__/store/walletStore.test.ts +101 -0
- package/src/__tests__/store/workletStore.test.ts +329 -0
- package/src/__tests__/types/hrpc.test.ts +125 -0
- package/src/__tests__/utils/balanceUtils.test.ts +151 -0
- package/src/__tests__/utils/errorHandling.test.ts +147 -0
- package/src/__tests__/utils/errorUtils.test.ts +170 -0
- package/src/__tests__/utils/initializationState.test.ts +337 -0
- package/src/__tests__/utils/jsonUtils.test.ts +131 -0
- package/src/__tests__/utils/mmkvKeyManager.test.ts +205 -0
- package/src/__tests__/utils/mnemonicUtils.test.ts +48 -0
- package/src/__tests__/utils/raceConditions.test.ts +292 -0
- package/src/__tests__/utils/result.test.ts +73 -0
- package/src/__tests__/utils/schemas.test.ts +82 -0
- package/src/__tests__/utils/storeHelpers.test.ts +323 -0
- package/src/__tests__/utils/typeGuards.test.ts +209 -0
- package/src/__tests__/utils/validation.test.ts +152 -0
- package/src/__tests__/utils/walletUtils.test.ts +195 -0
- package/src/hooks/useBalance.ts +597 -0
- package/src/hooks/useWallet.ts +288 -0
- package/src/hooks/useWalletManager.ts +654 -0
- package/src/hooks/useWdkApp.ts +78 -0
- package/src/hooks/useWorklet.ts +109 -0
- package/src/index.ts +112 -0
- package/src/provider/WdkAppProvider.tsx +764 -0
- package/src/services/accountService.ts +134 -0
- package/src/services/addressService.ts +125 -0
- package/src/services/balanceService.ts +291 -0
- package/src/services/walletSetupService.ts +695 -0
- package/src/services/walletSwitchingService.ts +157 -0
- package/src/services/workletLifecycleService.ts +561 -0
- package/src/storage/mmkvStorage.ts +417 -0
- package/src/store/walletStore.ts +301 -0
- package/src/store/workletStore.ts +340 -0
- package/src/types/hrpc.ts +78 -0
- package/src/types.ts +188 -0
- package/src/utils/balanceUtils.ts +96 -0
- package/src/utils/constants.ts +84 -0
- package/src/utils/errorHandling.md +163 -0
- package/src/utils/errorHandling.ts +61 -0
- package/src/utils/errorUtils.ts +300 -0
- package/src/utils/initializationState.ts +242 -0
- package/src/utils/jsonUtils.ts +75 -0
- package/src/utils/logger.ts +54 -0
- package/src/utils/mmkvKeyManager.ts +256 -0
- package/src/utils/mnemonicUtils.ts +35 -0
- package/src/utils/operationMutex.ts +181 -0
- package/src/utils/result.ts +57 -0
- package/src/utils/schemas.ts +190 -0
- package/src/utils/storeHelpers.ts +236 -0
- package/src/utils/typeGuards.ts +129 -0
- package/src/utils/validation.ts +174 -0
- package/src/utils/walletStateHelpers.ts +104 -0
- package/src/utils/walletUtils.ts +107 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet Switching Service
|
|
3
|
+
*
|
|
4
|
+
* Handles wallet switching operations: checking wallet existence, loading credentials,
|
|
5
|
+
* and initializing WDK with the new wallet.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - This service is the single source of truth for wallet switching logic
|
|
9
|
+
* - Used by useWallet hook for automatic wallet switching
|
|
10
|
+
* - Can be used by other components that need to switch wallets programmatically
|
|
11
|
+
*/
|
|
12
|
+
import { WalletSetupService } from './walletSetupService';
|
|
13
|
+
import { WorkletLifecycleService } from './workletLifecycleService';
|
|
14
|
+
import { getWalletStore } from '../store/walletStore';
|
|
15
|
+
import { updateWalletLoadingState, getWalletIdFromLoadingState } from '../store/walletStore';
|
|
16
|
+
import { withOperationMutex } from '../utils/operationMutex';
|
|
17
|
+
import { normalizeError } from '../utils/errorUtils';
|
|
18
|
+
import { log, logError } from '../utils/logger';
|
|
19
|
+
/**
|
|
20
|
+
* Wallet Switching Service
|
|
21
|
+
*
|
|
22
|
+
* Provides methods for switching between wallets.
|
|
23
|
+
*/
|
|
24
|
+
export class WalletSwitchingService {
|
|
25
|
+
/**
|
|
26
|
+
* Switch to a wallet by identifier
|
|
27
|
+
*
|
|
28
|
+
* This method:
|
|
29
|
+
* 1. Checks if the wallet exists (fail fast)
|
|
30
|
+
* 2. Ensures worklet is started
|
|
31
|
+
* 3. Loads credentials for the wallet
|
|
32
|
+
* 4. Initializes WDK with the credentials
|
|
33
|
+
* 5. Updates activeWalletId in the store
|
|
34
|
+
*
|
|
35
|
+
* @param walletId - Wallet identifier to switch to
|
|
36
|
+
* @param options - Optional configuration
|
|
37
|
+
* @param options.autoStartWorklet - If true, start worklet if not started (default: false)
|
|
38
|
+
* @throws Error if wallet doesn't exist or switching fails
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* await WalletSwitchingService.switchToWallet('user@example.com')
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
static async switchToWallet(walletId, options) {
|
|
46
|
+
return withOperationMutex(`switchToWallet:${walletId}`, async () => {
|
|
47
|
+
const walletStore = getWalletStore();
|
|
48
|
+
const activeWalletId = walletStore.getState().activeWalletId;
|
|
49
|
+
// Check if already on this wallet
|
|
50
|
+
if (activeWalletId === walletId) {
|
|
51
|
+
log('[WalletSwitchingService] Already on wallet', { walletId });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
// Update loading state
|
|
56
|
+
walletStore.setState((prev) => updateWalletLoadingState(prev, {
|
|
57
|
+
type: 'loading',
|
|
58
|
+
identifier: walletId,
|
|
59
|
+
walletExists: true,
|
|
60
|
+
}));
|
|
61
|
+
// Check if wallet exists first (fail fast)
|
|
62
|
+
const walletExists = await WalletSetupService.hasWallet(walletId);
|
|
63
|
+
if (!walletExists) {
|
|
64
|
+
throw new Error(`Wallet with identifier "${walletId}" does not exist`);
|
|
65
|
+
}
|
|
66
|
+
// Ensure worklet is started
|
|
67
|
+
await WorkletLifecycleService.ensureWorkletStarted(undefined, {
|
|
68
|
+
autoStart: options?.autoStartWorklet ?? false,
|
|
69
|
+
});
|
|
70
|
+
// Note: We don't clear previous wallet's credentials cache when switching
|
|
71
|
+
// The LRU eviction policy in workletStore will handle cache management
|
|
72
|
+
// This allows users to switch back to recently used wallets without re-authentication
|
|
73
|
+
if (activeWalletId !== null && activeWalletId !== walletId) {
|
|
74
|
+
log('[WalletSwitchingService] Switching wallets', {
|
|
75
|
+
from: activeWalletId,
|
|
76
|
+
to: walletId,
|
|
77
|
+
});
|
|
78
|
+
// Cache is managed by LRU eviction - no need to clear here
|
|
79
|
+
}
|
|
80
|
+
// Load credentials for the wallet
|
|
81
|
+
const credentials = await WalletSetupService.loadExistingWallet(walletId);
|
|
82
|
+
// Switch worklet to this wallet
|
|
83
|
+
await WorkletLifecycleService.initializeWDK({
|
|
84
|
+
encryptionKey: credentials.encryptionKey,
|
|
85
|
+
encryptedSeed: credentials.encryptedSeed,
|
|
86
|
+
});
|
|
87
|
+
// Update activeWalletId in store and mark as ready
|
|
88
|
+
walletStore.setState((prev) => ({
|
|
89
|
+
...updateWalletLoadingState(prev, {
|
|
90
|
+
type: 'ready',
|
|
91
|
+
identifier: walletId,
|
|
92
|
+
}),
|
|
93
|
+
activeWalletId: walletId,
|
|
94
|
+
}));
|
|
95
|
+
log('[WalletSwitchingService] Successfully switched to wallet', { walletId });
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
// Cleanup state on error
|
|
99
|
+
const normalizedError = normalizeError(error, false, {
|
|
100
|
+
component: 'WalletSwitchingService',
|
|
101
|
+
operation: 'switchToWallet',
|
|
102
|
+
walletId,
|
|
103
|
+
});
|
|
104
|
+
logError('[WalletSwitchingService] Failed to switch wallet, cleaning up state', normalizedError);
|
|
105
|
+
walletStore.setState((prev) => {
|
|
106
|
+
const currentWalletId = getWalletIdFromLoadingState(prev.walletLoadingState);
|
|
107
|
+
// Only update error state if we were loading this wallet
|
|
108
|
+
if (currentWalletId === walletId || prev.walletLoadingState.type === 'loading') {
|
|
109
|
+
return updateWalletLoadingState(prev, {
|
|
110
|
+
type: 'error',
|
|
111
|
+
identifier: walletId,
|
|
112
|
+
error: normalizedError,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return prev;
|
|
116
|
+
});
|
|
117
|
+
throw normalizedError;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if a wallet can be switched to
|
|
123
|
+
*
|
|
124
|
+
* @param walletId - Wallet identifier to check
|
|
125
|
+
* @returns Promise resolving to true if wallet exists and can be switched to
|
|
126
|
+
*/
|
|
127
|
+
static async canSwitchToWallet(walletId) {
|
|
128
|
+
try {
|
|
129
|
+
return await WalletSetupService.hasWallet(walletId);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// Log error but don't throw - this is a non-critical check
|
|
133
|
+
const normalizedError = normalizeError(error, false, {
|
|
134
|
+
component: 'WalletSwitchingService',
|
|
135
|
+
operation: 'canSwitchToWallet',
|
|
136
|
+
walletId,
|
|
137
|
+
});
|
|
138
|
+
logError('[WalletSwitchingService] Failed to check wallet:', normalizedError);
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=walletSwitchingService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletSwitchingService.js","sourceRoot":"","sources":["../../src/services/walletSwitchingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worklet Lifecycle Service
|
|
3
|
+
*
|
|
4
|
+
* Handles worklet lifecycle operations: starting, initializing, and cleaning up worklets.
|
|
5
|
+
* This service is focused solely on worklet lifecycle management.
|
|
6
|
+
*/
|
|
7
|
+
import type { NetworkConfigs } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Worklet Lifecycle Service
|
|
10
|
+
*
|
|
11
|
+
* Provides methods for managing worklet lifecycle: start, initialize, cleanup, reset.
|
|
12
|
+
*/
|
|
13
|
+
export declare class WorkletLifecycleService {
|
|
14
|
+
/**
|
|
15
|
+
* Cleanup a resource by trying cleanup methods in order
|
|
16
|
+
* Handles cleanup gracefully, continuing even if individual steps fail
|
|
17
|
+
*/
|
|
18
|
+
private static cleanupResource;
|
|
19
|
+
/**
|
|
20
|
+
* Cleanup worklet resources (HRPC and Worklet instances)
|
|
21
|
+
* Handles cleanup gracefully, continuing even if individual steps fail
|
|
22
|
+
*/
|
|
23
|
+
private static cleanupWorkletResources;
|
|
24
|
+
/**
|
|
25
|
+
* Start the worklet with network configurations
|
|
26
|
+
*/
|
|
27
|
+
static startWorklet(networkConfigs: NetworkConfigs): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Ensure worklet is started, starting it if needed
|
|
30
|
+
*
|
|
31
|
+
* @param networkConfigs - Network configs (required if autoStart=true)
|
|
32
|
+
* @param options - Options
|
|
33
|
+
* @param options.autoStart - If true, start worklet if not started (default: false)
|
|
34
|
+
* @throws Error if worklet not started and autoStart=false or networkConfigs not provided
|
|
35
|
+
*/
|
|
36
|
+
static ensureWorkletStarted(networkConfigs?: NetworkConfigs, options?: {
|
|
37
|
+
autoStart?: boolean;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Initialize WDK with encrypted seed (ONLY encrypted approach)
|
|
41
|
+
*/
|
|
42
|
+
static initializeWDK(options: {
|
|
43
|
+
encryptionKey: string;
|
|
44
|
+
encryptedSeed: string;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Generate entropy and encrypt (for creating new wallets)
|
|
48
|
+
*/
|
|
49
|
+
static generateEntropyAndEncrypt(wordCount?: 12 | 24): Promise<{
|
|
50
|
+
encryptionKey: string;
|
|
51
|
+
encryptedSeedBuffer: string;
|
|
52
|
+
encryptedEntropyBuffer: string;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Get mnemonic from encrypted entropy (for display purposes only - never stored)
|
|
56
|
+
*/
|
|
57
|
+
static getMnemonicFromEntropy(encryptedEntropy: string, encryptionKey: string): Promise<{
|
|
58
|
+
mnemonic: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Get seed and entropy from mnemonic phrase (for importing existing wallets)
|
|
62
|
+
*/
|
|
63
|
+
static getSeedAndEntropyFromMnemonic(mnemonic: string): Promise<{
|
|
64
|
+
encryptionKey: string;
|
|
65
|
+
encryptedSeedBuffer: string;
|
|
66
|
+
encryptedEntropyBuffer: string;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Initialize both worklet and WDK in one call (convenience method) - ONLY encrypted
|
|
70
|
+
*/
|
|
71
|
+
static initializeWorklet(options: {
|
|
72
|
+
encryptionKey: string;
|
|
73
|
+
encryptedSeed: string;
|
|
74
|
+
networkConfigs: NetworkConfigs;
|
|
75
|
+
}): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Handle error for methods that throw with a message prefix
|
|
78
|
+
* Normalizes error, logs it, and throws a new error with operation context
|
|
79
|
+
*/
|
|
80
|
+
private static handleAndThrowError;
|
|
81
|
+
/**
|
|
82
|
+
* Handle error for methods that update store state
|
|
83
|
+
* Normalizes error, updates store state, and re-throws
|
|
84
|
+
*/
|
|
85
|
+
private static handleErrorWithStateUpdate;
|
|
86
|
+
/**
|
|
87
|
+
* Extract WDK initialization result status
|
|
88
|
+
* Safely extracts status from result object
|
|
89
|
+
*/
|
|
90
|
+
private static extractWdkInitResult;
|
|
91
|
+
/**
|
|
92
|
+
* Reset both worklet and wallet stores
|
|
93
|
+
*/
|
|
94
|
+
private static resetStores;
|
|
95
|
+
/**
|
|
96
|
+
* Cleanup worklet resources
|
|
97
|
+
* Clears only addresses, seed, and WDK instance - does NOT terminate the worklet
|
|
98
|
+
* The worklet continues running for faster re-initialization
|
|
99
|
+
*/
|
|
100
|
+
static cleanup(): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Reset worklet state (synchronous)
|
|
103
|
+
* Clears only addresses, seed, and WDK instance - does NOT terminate the worklet
|
|
104
|
+
* The worklet continues running for faster re-initialization
|
|
105
|
+
* For async cleanup, use cleanup() instead
|
|
106
|
+
*/
|
|
107
|
+
static reset(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Clear error state
|
|
110
|
+
*/
|
|
111
|
+
static clearError(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Check if wallet is initialized
|
|
114
|
+
* Returns true if worklet is started and WDK is initialized
|
|
115
|
+
*/
|
|
116
|
+
static isInitialized(): boolean;
|
|
117
|
+
}
|