@n1xyz/wallet-widget 0.0.35-alpha.0 → 0.0.35-alpha.1
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/dist/bridge-assist/cctp-solana.d.ts +33 -0
- package/dist/bridge-assist/cctp-solana.js +392 -0
- package/dist/bridge-assist/cctp-solana.js.map +1 -0
- package/dist/main.css +1 -2
- package/dist/src/adapters/evm.d.ts +39 -0
- package/dist/src/adapters/evm.js +338 -0
- package/dist/src/adapters/evm.js.map +1 -0
- package/dist/src/adapters/factory.d.ts +37 -0
- package/dist/src/adapters/factory.js +82 -0
- package/dist/src/adapters/factory.js.map +1 -0
- package/dist/src/adapters/index.d.ts +33 -0
- package/dist/src/adapters/index.js +36 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/adapters/solana.d.ts +37 -0
- package/dist/src/adapters/solana.js +359 -0
- package/dist/src/adapters/solana.js.map +1 -0
- package/dist/src/adapters/types.d.ts +160 -0
- package/dist/src/adapters/types.js +20 -0
- package/dist/src/adapters/types.js.map +1 -0
- package/dist/src/animations/N1Loader.js.map +1 -0
- package/dist/src/animations/N1Loader.json +1 -0
- package/dist/src/animations/Processing.js.map +1 -0
- package/dist/src/animations/Processing.json +1 -0
- package/dist/{components → src/components}/LoadingFallback.d.ts +3 -0
- package/dist/{components → src/components}/LoadingFallback.js +3 -0
- package/dist/src/components/LoadingFallback.js.map +1 -0
- package/dist/{components → src/components}/Logo.d.ts +4 -0
- package/dist/{components → src/components}/Logo.js +4 -0
- package/dist/src/components/Logo.js.map +1 -0
- package/dist/src/components/N1ConnectButton.d.ts +13 -0
- package/dist/src/components/N1ConnectButton.js +66 -0
- package/dist/src/components/N1ConnectButton.js.map +1 -0
- package/dist/src/components/logos/ArbitrumLogo.js.map +1 -0
- package/dist/src/components/logos/BaseLogo.js +6 -0
- package/dist/src/components/logos/BaseLogo.js.map +1 -0
- package/dist/src/components/logos/BeraLogo.js.map +1 -0
- package/dist/src/components/logos/BitcoinLogo.js.map +1 -0
- package/dist/src/components/logos/EthereumLogo.js.map +1 -0
- package/dist/{components → src/components}/logos/HyperliquidLogo.js +1 -1
- package/dist/src/components/logos/HyperliquidLogo.js.map +1 -0
- package/dist/src/components/logos/OptimismLogo.js.map +1 -0
- package/dist/src/components/logos/SolanaLogo.js.map +1 -0
- package/dist/src/components/logos/ZeroOneLogo.js.map +1 -0
- package/dist/src/components/logos/index.js.map +1 -0
- package/dist/src/config/chains.d.ts +18 -0
- package/dist/src/config/chains.js +58 -0
- package/dist/src/config/chains.js.map +1 -0
- package/dist/src/config/dynamic.d.ts +1 -0
- package/dist/src/config/dynamic.js +18 -0
- package/dist/src/config/dynamic.js.map +1 -0
- package/dist/src/config/solana.js.map +1 -0
- package/dist/src/config/turnkey.d.ts +2 -0
- package/dist/src/config/turnkey.js +32 -0
- package/dist/src/config/turnkey.js.map +1 -0
- package/dist/src/context/n1-wallet-context.js.map +1 -0
- package/dist/src/errors/types.d.ts +72 -0
- package/dist/src/errors/types.js +140 -0
- package/dist/src/errors/types.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/N1WalletModal.js +44 -29
- package/dist/src/features/onboarding-flow/N1WalletModal.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.d.ts +2 -1
- package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.js +54 -8
- package/dist/src/features/onboarding-flow/OnboardingFlow.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.d.ts +42 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.js +268 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.d.ts +4 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.js +11 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.d.ts +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.js +2 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.d.ts +5 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.js +28 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.d.ts +35 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js +391 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.d.ts +6 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js +9 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/config.d.ts +16 -0
- package/dist/src/features/onboarding-flow/cctp/config.js +55 -0
- package/dist/src/features/onboarding-flow/cctp/config.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.d.ts +11 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js +85 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.d.ts +1 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js +2 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/types.d.ts +50 -0
- package/dist/src/features/onboarding-flow/cctp/types.js +2 -0
- package/dist/src/features/onboarding-flow/cctp/types.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/ChainButton.d.ts +5 -2
- package/dist/src/features/onboarding-flow/components/ChainButton.js +14 -0
- package/dist/src/features/onboarding-flow/components/ChainButton.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/Header.d.ts +2 -2
- package/dist/src/features/onboarding-flow/components/Header.js +69 -0
- package/dist/src/features/onboarding-flow/components/Header.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/ImageWithFallback.d.ts +2 -5
- package/dist/src/features/onboarding-flow/components/ImageWithFallback.js +33 -0
- package/dist/src/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.js +8 -3
- package/dist/src/features/onboarding-flow/components/TransactionTable.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.d.ts +4 -0
- package/dist/src/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
- package/dist/src/features/onboarding-flow/components/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/errors/depositError.d.ts +36 -0
- package/dist/src/features/onboarding-flow/errors/depositError.js +134 -0
- package/dist/src/features/onboarding-flow/errors/depositError.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.d.ts +35 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js +585 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.d.ts +6 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js +141 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.d.ts +15 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js +83 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.d.ts +6 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js +45 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.d.ts +13 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js +161 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js.map +1 -0
- package/dist/src/features/onboarding-flow/index.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/DepositFlowProvider.d.ts +10 -3
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js +762 -0
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/OnboardingStateProvider.d.ts +5 -0
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js +399 -0
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.d.ts +2 -2
- package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.js +2 -2
- package/dist/src/features/onboarding-flow/providers/StateProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/WalletConnectionProvider.d.ts +8 -0
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js +938 -0
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/debug.js +5 -1
- package/dist/src/features/onboarding-flow/providers/debug.js.map +1 -0
- package/dist/src/features/onboarding-flow/providers/index.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.d.ts +28 -1
- package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.js +38 -4
- package/dist/src/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.d.ts +4 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js +32 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/screens/01-ConnectWalletScreen.js +5 -0
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.d.ts +1 -0
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js +25 -0
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.d.ts +1 -0
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js +25 -0
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +1 -0
- package/dist/{features/onboarding-flow/screens/02-ChainSelectionScreen.d.ts → src/features/onboarding-flow/screens/04-ChainSelectionScreen.d.ts} +11 -11
- package/dist/{features/onboarding-flow/screens/02-ChainSelectionScreen.js → src/features/onboarding-flow/screens/04-ChainSelectionScreen.js} +60 -30
- package/dist/src/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.d.ts +11 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js +585 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js.map +1 -0
- package/dist/{features/onboarding-flow/screens/04-DepositProgressScreen.d.ts → src/features/onboarding-flow/screens/06-DepositProgressScreen.d.ts} +5 -0
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js +367 -0
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +6 -0
- package/dist/{features/onboarding-flow/screens/05-DepositSuccessScreen.js → src/features/onboarding-flow/screens/07-DepositSuccessScreen.js} +12 -6
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +5 -0
- package/dist/{features/onboarding-flow/screens/06-AuthLoadingScreen.js → src/features/onboarding-flow/screens/08-AuthLoadingScreen.js} +6 -2
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.d.ts +5 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js +43 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/index.d.ts +10 -0
- package/dist/src/features/onboarding-flow/screens/index.js +11 -0
- package/dist/src/features/onboarding-flow/screens/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.d.ts +1 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js +2 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/types.d.ts +38 -11
- package/dist/{features → src/features}/onboarding-flow/types.js +5 -0
- package/dist/src/features/onboarding-flow/types.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.d.ts +6 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js +34 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.d.ts +29 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js +82 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.d.ts +5 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js +10 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.d.ts +14 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js +94 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.d.ts +25 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js +212 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.d.ts +37 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js +199 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.d.ts +27 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js +149 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.d.ts +5 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js +121 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js.map +1 -0
- package/dist/{features/onboarding-flow/utils/transaction.d.ts → src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.d.ts} +3 -3
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js +8 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.d.ts +12 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js +150 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.d.ts +52 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js +243 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.d.ts +36 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js +304 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.d.ts +1 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.js +3 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.d.ts +14 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js +44 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/nordUtils.d.ts +8 -0
- package/dist/{features/onboarding-flow/utils/nordUser.js → src/features/onboarding-flow/utils/nordUtils.js} +14 -1
- package/dist/src/features/onboarding-flow/utils/nordUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.d.ts +13 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js +15 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.d.ts +15 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js +94 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/utils/utils.d.ts +9 -2
- package/dist/{features → src/features}/onboarding-flow/utils/utils.js +9 -4
- package/dist/src/features/onboarding-flow/utils/utils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/withImageFallback.d.ts +6 -0
- package/dist/{features → src/features}/onboarding-flow/utils/withImageFallback.js +2 -3
- package/dist/src/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/useN1Wallet.d.ts +12 -0
- package/dist/{hooks → src/hooks}/useN1Wallet.js +10 -0
- package/dist/src/hooks/useN1Wallet.js.map +1 -0
- package/dist/src/hooks/useNordUserInitialization.d.ts +12 -0
- package/dist/{hooks → src/hooks}/useNordUserInitialization.js +74 -33
- package/dist/src/hooks/useNordUserInitialization.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.js +16 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/LazyWalletProvider.d.ts +4 -0
- package/dist/src/providers/LazyWalletProvider.js +404 -0
- package/dist/src/providers/LazyWalletProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.d.ts +28 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.js +273 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.d.ts +113 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.js +319 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.d.ts +88 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js +252 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.d.ts +71 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.js +187 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.d.ts +58 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.js +134 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.d.ts +50 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js +102 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/index.d.ts +21 -0
- package/dist/src/providers/N1WalletProvider/index.js +27 -0
- package/dist/src/providers/N1WalletProvider/index.js.map +1 -0
- package/dist/src/providers/N1WalletProvider.d.ts +17 -0
- package/dist/src/providers/N1WalletProvider.js +102 -0
- package/dist/src/providers/N1WalletProvider.js.map +1 -0
- package/dist/{providers → src/providers}/ShadowRootWrapper.d.ts +4 -0
- package/dist/{providers → src/providers}/ShadowRootWrapper.js +4 -5
- package/dist/src/providers/ShadowRootWrapper.js.map +1 -0
- package/dist/{providers → src/providers}/WalletErrorBoundary.d.ts +7 -2
- package/dist/{providers → src/providers}/WalletErrorBoundary.js +5 -1
- package/dist/src/providers/WalletErrorBoundary.js.map +1 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.d.ts +64 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.js +245 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.js.map +1 -0
- package/dist/src/services/bootstrap/DynamicSdkService.d.ts +62 -0
- package/dist/src/services/bootstrap/DynamicSdkService.js +335 -0
- package/dist/src/services/bootstrap/DynamicSdkService.js.map +1 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.d.ts +78 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.js +280 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.js.map +1 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.d.ts +92 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js +253 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js.map +1 -0
- package/dist/src/services/bootstrap/index.d.ts +13 -0
- package/dist/src/services/bootstrap/index.js +16 -0
- package/dist/src/services/bootstrap/index.js.map +1 -0
- package/dist/src/services/bootstrap/types.d.ts +92 -0
- package/dist/src/services/bootstrap/types.js +7 -0
- package/dist/src/services/bootstrap/types.js.map +1 -0
- package/dist/src/services/storage/StorageService.d.ts +98 -0
- package/dist/src/services/storage/StorageService.js +360 -0
- package/dist/src/services/storage/StorageService.js.map +1 -0
- package/dist/src/services/storage/index.d.ts +9 -0
- package/dist/src/services/storage/index.js +10 -0
- package/dist/src/services/storage/index.js.map +1 -0
- package/dist/src/services/storage/keys.d.ts +28 -0
- package/dist/src/services/storage/keys.js +45 -0
- package/dist/src/services/storage/keys.js.map +1 -0
- package/dist/src/services/storage/types.d.ts +73 -0
- package/dist/src/services/storage/types.js +23 -0
- package/dist/src/services/storage/types.js.map +1 -0
- package/dist/src/store/index.d.ts +8 -0
- package/dist/src/store/index.js +24 -0
- package/dist/src/store/index.js.map +1 -0
- package/dist/src/store/selectors.d.ts +105 -0
- package/dist/src/store/selectors.js +183 -0
- package/dist/src/store/selectors.js.map +1 -0
- package/dist/src/store/slices/bootstrapSlice.d.ts +64 -0
- package/dist/src/store/slices/bootstrapSlice.js +78 -0
- package/dist/src/store/slices/bootstrapSlice.js.map +1 -0
- package/dist/src/store/slices/configSlice.d.ts +7 -0
- package/dist/src/store/slices/configSlice.js +14 -0
- package/dist/src/store/slices/configSlice.js.map +1 -0
- package/dist/src/store/slices/index.d.ts +10 -0
- package/dist/src/store/slices/index.js +10 -0
- package/dist/src/store/slices/index.js.map +1 -0
- package/dist/src/store/slices/sessionSlice.d.ts +7 -0
- package/dist/src/store/slices/sessionSlice.js +17 -0
- package/dist/src/store/slices/sessionSlice.js.map +1 -0
- package/dist/src/store/slices/signingSlice.d.ts +7 -0
- package/dist/src/store/slices/signingSlice.js +14 -0
- package/dist/src/store/slices/signingSlice.js.map +1 -0
- package/dist/src/store/slices/uiSlice.d.ts +9 -0
- package/dist/src/store/slices/uiSlice.js +25 -0
- package/dist/src/store/slices/uiSlice.js.map +1 -0
- package/dist/src/store/slices/walletSlice.d.ts +7 -0
- package/dist/src/store/slices/walletSlice.js +21 -0
- package/dist/src/store/slices/walletSlice.js.map +1 -0
- package/dist/src/store/store.d.ts +50 -0
- package/dist/src/store/store.js +259 -0
- package/dist/src/store/store.js.map +1 -0
- package/dist/src/store/subscriptions/depositPersistence.d.ts +32 -0
- package/dist/src/store/subscriptions/depositPersistence.js +106 -0
- package/dist/src/store/subscriptions/depositPersistence.js.map +1 -0
- package/dist/src/store/subscriptions/index.d.ts +34 -0
- package/dist/src/store/subscriptions/index.js +73 -0
- package/dist/src/store/subscriptions/index.js.map +1 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.d.ts +42 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.js +127 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.js.map +1 -0
- package/dist/src/store/types.d.ts +166 -0
- package/dist/src/store/types.js +7 -0
- package/dist/src/store/types.js.map +1 -0
- package/dist/src/styles/cdn-fonts.d.ts +12 -0
- package/dist/{styles → src/styles}/cdn-fonts.js +20 -2
- package/dist/src/styles/cdn-fonts.js.map +1 -0
- package/dist/src/styles/embedded-main-css.d.ts +2 -0
- package/dist/src/styles/embedded-main-css.js +3 -0
- package/dist/src/styles/embedded-main-css.js.map +1 -0
- package/dist/src/turnkey/TurnkeyProvider.d.ts +21 -0
- package/dist/src/turnkey/TurnkeyProvider.js +695 -0
- package/dist/src/turnkey/TurnkeyProvider.js.map +1 -0
- package/dist/src/turnkey/createTurnkeyWallet.d.ts +39 -0
- package/dist/src/turnkey/createTurnkeyWallet.js +319 -0
- package/dist/src/turnkey/createTurnkeyWallet.js.map +1 -0
- package/dist/src/turnkey/createWalletProvider.d.ts +8 -0
- package/dist/src/turnkey/createWalletProvider.js +286 -0
- package/dist/src/turnkey/createWalletProvider.js.map +1 -0
- package/dist/src/turnkey/index.d.ts +3 -0
- package/dist/src/turnkey/index.js +3 -0
- package/dist/src/turnkey/index.js.map +1 -0
- package/dist/src/turnkey/turnkeySessionMachine.d.ts +39 -0
- package/dist/src/turnkey/turnkeySessionMachine.js +77 -0
- package/dist/src/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/src/turnkey/turnkeySessionStorage.d.ts +48 -0
- package/dist/src/turnkey/turnkeySessionStorage.js +183 -0
- package/dist/src/turnkey/turnkeySessionStorage.js.map +1 -0
- package/dist/src/turnkey/types.d.ts +61 -0
- package/dist/src/turnkey/types.js +12 -0
- package/dist/src/turnkey/types.js.map +1 -0
- package/dist/{types → src/types}/wallet.d.ts +39 -13
- package/dist/src/types/wallet.js.map +1 -0
- package/dist/src/utils/address.d.ts +130 -0
- package/dist/src/utils/address.js +274 -0
- package/dist/src/utils/address.js.map +1 -0
- package/dist/src/utils/chain.d.ts +89 -0
- package/dist/src/utils/chain.js +282 -0
- package/dist/src/utils/chain.js.map +1 -0
- package/dist/{utils → src/utils}/ed25519.d.ts +0 -2
- package/dist/{utils → src/utils}/ed25519.js +5 -20
- package/dist/src/utils/ed25519.js.map +1 -0
- package/dist/src/utils/errors.d.ts +68 -0
- package/dist/src/utils/errors.js +190 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/events.d.ts +124 -0
- package/dist/src/utils/events.js +155 -0
- package/dist/src/utils/events.js.map +1 -0
- package/dist/src/utils/formatAmount.d.ts +4 -0
- package/dist/src/utils/formatAmount.js +9 -0
- package/dist/src/utils/formatAmount.js.map +1 -0
- package/dist/src/utils/logger.d.ts +45 -0
- package/dist/{utils → src/utils}/logger.js +68 -2
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/shortenString.d.ts +5 -0
- package/dist/src/utils/shortenString.js +16 -0
- package/dist/src/utils/shortenString.js.map +1 -0
- package/package.json +45 -29
- package/dist/animations/N1Loader.js.map +0 -1
- package/dist/animations/Processing.js.map +0 -1
- package/dist/components/LoadingFallback.js.map +0 -1
- package/dist/components/Logo.js.map +0 -1
- package/dist/components/N1ConnectButton.d.ts +0 -5
- package/dist/components/N1ConnectButton.js +0 -49
- package/dist/components/N1ConnectButton.js.map +0 -1
- package/dist/components/logos/ArbitrumLogo.js.map +0 -1
- package/dist/components/logos/BaseLogo.js +0 -6
- package/dist/components/logos/BaseLogo.js.map +0 -1
- package/dist/components/logos/BeraLogo.js.map +0 -1
- package/dist/components/logos/BitcoinLogo.js.map +0 -1
- package/dist/components/logos/EthereumLogo.js.map +0 -1
- package/dist/components/logos/HyperliquidLogo.js.map +0 -1
- package/dist/components/logos/OptimismLogo.js.map +0 -1
- package/dist/components/logos/SolanaLogo.js.map +0 -1
- package/dist/components/logos/ZeroOneLogo.js.map +0 -1
- package/dist/components/logos/index.js.map +0 -1
- package/dist/config/chains.d.ts +0 -0
- package/dist/config/chains.js +0 -2
- package/dist/config/chains.js.map +0 -1
- package/dist/config/solana.js.map +0 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.js +0 -3
- package/dist/config.js.map +0 -1
- package/dist/context/n1-wallet-context.js.map +0 -1
- package/dist/errors/types.d.ts +0 -25
- package/dist/errors/types.js +0 -77
- package/dist/errors/types.js.map +0 -1
- package/dist/features/onboarding-flow/N1WalletModal.js.map +0 -1
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +0 -1
- package/dist/features/onboarding-flow/components/ChainButton.js +0 -21
- package/dist/features/onboarding-flow/components/ChainButton.js.map +0 -1
- package/dist/features/onboarding-flow/components/Header.js +0 -45
- package/dist/features/onboarding-flow/components/Header.js.map +0 -1
- package/dist/features/onboarding-flow/components/ImageWithFallback.js +0 -63
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +0 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +0 -1
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +0 -1
- package/dist/features/onboarding-flow/components/index.js.map +0 -1
- package/dist/features/onboarding-flow/index.js.map +0 -1
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +0 -525
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +0 -185
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +0 -394
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/debug.js.map +0 -1
- package/dist/features/onboarding-flow/providers/index.js.map +0 -1
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +0 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.d.ts +0 -6
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +0 -360
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +0 -31
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +0 -14
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/index.d.ts +0 -7
- package/dist/features/onboarding-flow/screens/index.js +0 -8
- package/dist/features/onboarding-flow/screens/index.js.map +0 -1
- package/dist/features/onboarding-flow/types.js.map +0 -1
- package/dist/features/onboarding-flow/utils/depositStorage.d.ts +0 -4
- package/dist/features/onboarding-flow/utils/depositStorage.js +0 -48
- package/dist/features/onboarding-flow/utils/depositStorage.js.map +0 -1
- package/dist/features/onboarding-flow/utils/imageUtils.d.ts +0 -21
- package/dist/features/onboarding-flow/utils/imageUtils.js +0 -110
- package/dist/features/onboarding-flow/utils/imageUtils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/nordUser.d.ts +0 -1
- package/dist/features/onboarding-flow/utils/nordUser.js.map +0 -1
- package/dist/features/onboarding-flow/utils/nordUtils.d.ts +0 -40
- package/dist/features/onboarding-flow/utils/nordUtils.js +0 -64
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/session.d.ts +0 -17
- package/dist/features/onboarding-flow/utils/session.js +0 -69
- package/dist/features/onboarding-flow/utils/session.js.map +0 -1
- package/dist/features/onboarding-flow/utils/transaction.js +0 -8
- package/dist/features/onboarding-flow/utils/transaction.js.map +0 -1
- package/dist/features/onboarding-flow/utils/utils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/withImageFallback.d.ts +0 -7
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useN1Wallet.d.ts +0 -2
- package/dist/hooks/useN1Wallet.js.map +0 -1
- package/dist/hooks/useNordUserInitialization.d.ts +0 -1
- package/dist/hooks/useNordUserInitialization.js.map +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -8
- package/dist/index.js.map +0 -1
- package/dist/polyfills/windowEthereumGuard.d.ts +0 -6
- package/dist/polyfills/windowEthereumGuard.js +0 -28
- package/dist/polyfills/windowEthereumGuard.js.map +0 -1
- package/dist/providers/LazyWalletProvider.d.ts +0 -1
- package/dist/providers/LazyWalletProvider.js +0 -230
- package/dist/providers/LazyWalletProvider.js.map +0 -1
- package/dist/providers/N1WalletProvider.d.ts +0 -3
- package/dist/providers/N1WalletProvider.js +0 -271
- package/dist/providers/N1WalletProvider.js.map +0 -1
- package/dist/providers/ShadowRootWrapper.js.map +0 -1
- package/dist/providers/WalletErrorBoundary.js.map +0 -1
- package/dist/styles/cdn-fonts.d.ts +0 -1
- package/dist/styles/cdn-fonts.js.map +0 -1
- package/dist/styles/embedded-main-css.d.ts +0 -2
- package/dist/styles/embedded-main-css.js +0 -3
- package/dist/styles/embedded-main-css.js.map +0 -1
- package/dist/types/wallet.js.map +0 -1
- package/dist/utils/ed25519.js.map +0 -1
- package/dist/utils/getPseudoName.d.ts +0 -1
- package/dist/utils/getPseudoName.js +0 -5826
- package/dist/utils/getPseudoName.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -21
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/shortenString.d.ts +0 -2
- package/dist/utils/shortenString.js +0 -9
- package/dist/utils/shortenString.js.map +0 -1
- package/dist/utils/words.d.ts +0 -9
- package/dist/utils/words.js +0 -93572
- package/dist/utils/words.js.map +0 -1
- /package/dist/{animations → src/animations}/N1Loader.d.ts +0 -0
- /package/dist/{animations → src/animations}/N1Loader.js +0 -0
- /package/dist/{animations → src/animations}/Processing.d.ts +0 -0
- /package/dist/{animations → src/animations}/Processing.js +0 -0
- /package/dist/{components → src/components}/logos/ArbitrumLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/ArbitrumLogo.js +0 -0
- /package/dist/{components → src/components}/logos/BaseLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BeraLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BeraLogo.js +0 -0
- /package/dist/{components → src/components}/logos/BitcoinLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BitcoinLogo.js +0 -0
- /package/dist/{components → src/components}/logos/EthereumLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/EthereumLogo.js +0 -0
- /package/dist/{components → src/components}/logos/HyperliquidLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/OptimismLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/OptimismLogo.js +0 -0
- /package/dist/{components → src/components}/logos/SolanaLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/SolanaLogo.js +0 -0
- /package/dist/{components → src/components}/logos/ZeroOneLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/ZeroOneLogo.js +0 -0
- /package/dist/{components → src/components}/logos/index.d.ts +0 -0
- /package/dist/{components → src/components}/logos/index.js +0 -0
- /package/dist/{config → src/config}/solana.d.ts +0 -0
- /package/dist/{config → src/config}/solana.js +0 -0
- /package/dist/{context → src/context}/n1-wallet-context.d.ts +0 -0
- /package/dist/{context → src/context}/n1-wallet-context.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/N1WalletModal.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/debug.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/index.js +0 -0
- /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
- /package/dist/{hooks → src/hooks}/index.js +0 -0
- /package/dist/{types → src/types}/wallet.js +0 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Bootstrap Service
|
|
3
|
+
*
|
|
4
|
+
* Handles session key generation, storage, and signing function creation.
|
|
5
|
+
* Extracted from useNordUserInitialization to enable:
|
|
6
|
+
* - Testable pure functions
|
|
7
|
+
* - Clear separation from React lifecycle
|
|
8
|
+
* - Reusable session logic
|
|
9
|
+
*/
|
|
10
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
11
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
12
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
13
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
14
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
15
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
16
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
20
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
21
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
22
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
23
|
+
function step(op) {
|
|
24
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
25
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
26
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
27
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
28
|
+
switch (op[0]) {
|
|
29
|
+
case 0: case 1: t = op; break;
|
|
30
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
31
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
32
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
33
|
+
default:
|
|
34
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
35
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
36
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
37
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
38
|
+
if (t[2]) _.ops.pop();
|
|
39
|
+
_.trys.pop(); continue;
|
|
40
|
+
}
|
|
41
|
+
op = body.call(thisArg, _);
|
|
42
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
43
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
import { logger } from '../../utils/logger';
|
|
47
|
+
// ============================================
|
|
48
|
+
// CONSTANTS
|
|
49
|
+
// ============================================
|
|
50
|
+
var SESSION_KEYS_PREFIX = 'n1_session_keys_';
|
|
51
|
+
var SESSION_ID_PREFIX = 'n1_sessionId_';
|
|
52
|
+
// ============================================
|
|
53
|
+
// STORAGE HELPERS
|
|
54
|
+
// ============================================
|
|
55
|
+
/**
|
|
56
|
+
* Generate storage key for session keys.
|
|
57
|
+
*/
|
|
58
|
+
function getSessionKeysStorageKey(address) {
|
|
59
|
+
return "".concat(SESSION_KEYS_PREFIX).concat(address);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Generate storage key for session ID.
|
|
63
|
+
*/
|
|
64
|
+
function getSessionIdStorageKey(address) {
|
|
65
|
+
return "".concat(SESSION_ID_PREFIX).concat(address);
|
|
66
|
+
}
|
|
67
|
+
// ============================================
|
|
68
|
+
// SESSION KEY MANAGEMENT
|
|
69
|
+
// ============================================
|
|
70
|
+
/**
|
|
71
|
+
* Check if session keys exist for an address.
|
|
72
|
+
*/
|
|
73
|
+
export function hasStoredSessionKeys(address) {
|
|
74
|
+
if (typeof localStorage === 'undefined')
|
|
75
|
+
return false;
|
|
76
|
+
try {
|
|
77
|
+
var key = getSessionKeysStorageKey(address);
|
|
78
|
+
var stored = localStorage.getItem(key);
|
|
79
|
+
if (!stored)
|
|
80
|
+
return false;
|
|
81
|
+
var parsed = JSON.parse(stored);
|
|
82
|
+
return !!((parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PublicKey) && (parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PrivateKey));
|
|
83
|
+
}
|
|
84
|
+
catch (_a) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Read stored session keys for an address.
|
|
90
|
+
*/
|
|
91
|
+
export function readSessionKeys(address) {
|
|
92
|
+
if (typeof localStorage === 'undefined')
|
|
93
|
+
return null;
|
|
94
|
+
try {
|
|
95
|
+
var key = getSessionKeysStorageKey(address);
|
|
96
|
+
var stored = localStorage.getItem(key);
|
|
97
|
+
if (!stored)
|
|
98
|
+
return null;
|
|
99
|
+
var parsed = JSON.parse(stored);
|
|
100
|
+
if (!(parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PublicKey) || !(parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PrivateKey)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// Convert arrays back to Uint8Array
|
|
104
|
+
return {
|
|
105
|
+
ed25519PrivateKey: new Uint8Array(Object.values(parsed.ed25519PrivateKey)),
|
|
106
|
+
ed25519PublicKey: new Uint8Array(Object.values(parsed.ed25519PublicKey)),
|
|
107
|
+
walletPublicKey: parsed.walletPublicKey,
|
|
108
|
+
chainName: parsed.chainName,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
logger.warn('[SessionBootstrapService] Failed to read session keys', { error: error });
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Store session keys for an address.
|
|
118
|
+
*/
|
|
119
|
+
export function storeSessionKeys(params) {
|
|
120
|
+
var _a;
|
|
121
|
+
if (typeof localStorage === 'undefined')
|
|
122
|
+
return;
|
|
123
|
+
try {
|
|
124
|
+
var key = getSessionKeysStorageKey(params.address);
|
|
125
|
+
var data = {
|
|
126
|
+
ed25519PrivateKey: Array.from(params.privateKey),
|
|
127
|
+
ed25519PublicKey: Array.from(params.publicKey),
|
|
128
|
+
walletPublicKey: params.address,
|
|
129
|
+
chainName: (_a = params.chainName) !== null && _a !== void 0 ? _a : 'SOL',
|
|
130
|
+
};
|
|
131
|
+
localStorage.setItem(key, JSON.stringify(data));
|
|
132
|
+
logger.debug('[SessionBootstrapService] Session keys stored');
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
logger.warn('[SessionBootstrapService] Failed to store session keys', { error: error });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Clear session keys for an address.
|
|
140
|
+
*/
|
|
141
|
+
export function clearSessionKeys(address) {
|
|
142
|
+
if (typeof localStorage === 'undefined')
|
|
143
|
+
return;
|
|
144
|
+
try {
|
|
145
|
+
var key = getSessionKeysStorageKey(address);
|
|
146
|
+
localStorage.removeItem(key);
|
|
147
|
+
logger.debug('[SessionBootstrapService] Session keys cleared');
|
|
148
|
+
}
|
|
149
|
+
catch (_a) {
|
|
150
|
+
// Ignore
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// ============================================
|
|
154
|
+
// SESSION ID MANAGEMENT
|
|
155
|
+
// ============================================
|
|
156
|
+
/**
|
|
157
|
+
* Read stored session ID for an address.
|
|
158
|
+
*/
|
|
159
|
+
export function readSessionId(address) {
|
|
160
|
+
if (typeof localStorage === 'undefined')
|
|
161
|
+
return null;
|
|
162
|
+
try {
|
|
163
|
+
var key = getSessionIdStorageKey(address);
|
|
164
|
+
var stored = localStorage.getItem(key);
|
|
165
|
+
if (!stored)
|
|
166
|
+
return null;
|
|
167
|
+
return BigInt(stored);
|
|
168
|
+
}
|
|
169
|
+
catch (_a) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Store session ID for an address.
|
|
175
|
+
*/
|
|
176
|
+
export function storeSessionId(address, sessionId) {
|
|
177
|
+
if (typeof localStorage === 'undefined')
|
|
178
|
+
return;
|
|
179
|
+
try {
|
|
180
|
+
var key = getSessionIdStorageKey(address);
|
|
181
|
+
localStorage.setItem(key, sessionId.toString());
|
|
182
|
+
}
|
|
183
|
+
catch (_a) {
|
|
184
|
+
// Ignore
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Clear session ID for an address.
|
|
189
|
+
*/
|
|
190
|
+
export function clearSessionId(address) {
|
|
191
|
+
if (typeof localStorage === 'undefined')
|
|
192
|
+
return;
|
|
193
|
+
try {
|
|
194
|
+
var key = getSessionIdStorageKey(address);
|
|
195
|
+
localStorage.removeItem(key);
|
|
196
|
+
}
|
|
197
|
+
catch (_a) {
|
|
198
|
+
// Ignore
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// ============================================
|
|
202
|
+
// SESSION INITIALIZATION
|
|
203
|
+
// ============================================
|
|
204
|
+
/**
|
|
205
|
+
* Get or create session key pair for an address.
|
|
206
|
+
*
|
|
207
|
+
* This function:
|
|
208
|
+
* 1. Checks for existing stored keys
|
|
209
|
+
* 2. If found, returns them
|
|
210
|
+
* 3. If not found, generates new keys (caller must provide generator)
|
|
211
|
+
*/
|
|
212
|
+
export function getOrCreateSessionKeyPair(address, generateKeyPair) {
|
|
213
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
214
|
+
var stored, keyPair;
|
|
215
|
+
return __generator(this, function (_a) {
|
|
216
|
+
switch (_a.label) {
|
|
217
|
+
case 0:
|
|
218
|
+
stored = readSessionKeys(address);
|
|
219
|
+
if (stored) {
|
|
220
|
+
logger.debug('[SessionBootstrapService] Using stored session keys');
|
|
221
|
+
return [2 /*return*/, {
|
|
222
|
+
privateKey: stored.ed25519PrivateKey,
|
|
223
|
+
publicKey: stored.ed25519PublicKey,
|
|
224
|
+
}];
|
|
225
|
+
}
|
|
226
|
+
// Generate new keys
|
|
227
|
+
logger.debug('[SessionBootstrapService] Generating new session keys');
|
|
228
|
+
return [4 /*yield*/, generateKeyPair()];
|
|
229
|
+
case 1:
|
|
230
|
+
keyPair = _a.sent();
|
|
231
|
+
// Store for future use
|
|
232
|
+
storeSessionKeys({
|
|
233
|
+
address: address,
|
|
234
|
+
privateKey: keyPair.privateKey,
|
|
235
|
+
publicKey: keyPair.publicKey,
|
|
236
|
+
});
|
|
237
|
+
return [2 /*return*/, keyPair];
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
// ============================================
|
|
243
|
+
// SESSION STATE HELPERS
|
|
244
|
+
// ============================================
|
|
245
|
+
/**
|
|
246
|
+
* Check if a session is fully initialized.
|
|
247
|
+
*/
|
|
248
|
+
export function isSessionReady(params) {
|
|
249
|
+
return !!(params.sessionPubKey &&
|
|
250
|
+
params.signMessageWithSessionKey &&
|
|
251
|
+
params.signMessageWithWalletKey &&
|
|
252
|
+
params.signTransactionWithWalletKey);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Clear all session data for an address.
|
|
256
|
+
*/
|
|
257
|
+
export function clearAllSessionData(address) {
|
|
258
|
+
clearSessionKeys(address);
|
|
259
|
+
clearSessionId(address);
|
|
260
|
+
logger.debug('[SessionBootstrapService] All session data cleared');
|
|
261
|
+
}
|
|
262
|
+
// ============================================
|
|
263
|
+
// VALIDATION
|
|
264
|
+
// ============================================
|
|
265
|
+
/**
|
|
266
|
+
* Validate session keys are usable.
|
|
267
|
+
*/
|
|
268
|
+
export function validateSessionKeys(keys) {
|
|
269
|
+
// Check key lengths
|
|
270
|
+
if (keys.ed25519PrivateKey.length !== 64) {
|
|
271
|
+
logger.warn('[SessionBootstrapService] Invalid private key length');
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
if (keys.ed25519PublicKey.length !== 32) {
|
|
275
|
+
logger.warn('[SessionBootstrapService] Invalid public key length');
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
return true;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=SessionBootstrapService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionBootstrapService.js","sourceRoot":"","sources":["../../../../src/services/bootstrap/SessionBootstrapService.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Session Bootstrap Service\n *\n * Handles session key generation, storage, and signing function creation.\n * Extracted from useNordUserInitialization to enable:\n * - Testable pure functions\n * - Clear separation from React lifecycle\n * - Reusable session logic\n */\n\nimport { logger } from '../../utils/logger';\n\n// ============================================\n// CONSTANTS\n// ============================================\n\nconst SESSION_KEYS_PREFIX = 'n1_session_keys_';\nconst SESSION_ID_PREFIX = 'n1_sessionId_';\n\n// ============================================\n// STORAGE HELPERS\n// ============================================\n\n/**\n * Generate storage key for session keys.\n */\nfunction getSessionKeysStorageKey(address: string): string {\n return `${SESSION_KEYS_PREFIX}${address}`;\n}\n\n/**\n * Generate storage key for session ID.\n */\nfunction getSessionIdStorageKey(address: string): string {\n return `${SESSION_ID_PREFIX}${address}`;\n}\n\n// ============================================\n// SESSION KEY TYPES\n// ============================================\n\nexport interface StoredSessionKeys {\n ed25519PrivateKey: Uint8Array;\n ed25519PublicKey: Uint8Array;\n walletPublicKey: string;\n chainName: string;\n}\n\nexport interface SessionKeyPair {\n privateKey: Uint8Array;\n publicKey: Uint8Array;\n}\n\n// ============================================\n// SESSION KEY MANAGEMENT\n// ============================================\n\n/**\n * Check if session keys exist for an address.\n */\nexport function hasStoredSessionKeys(address: string): boolean {\n if (typeof localStorage === 'undefined') return false;\n\n try {\n const key = getSessionKeysStorageKey(address);\n const stored = localStorage.getItem(key);\n if (!stored) return false;\n\n const parsed = JSON.parse(stored);\n return !!(parsed?.ed25519PublicKey && parsed?.ed25519PrivateKey);\n } catch {\n return false;\n }\n}\n\n/**\n * Read stored session keys for an address.\n */\nexport function readSessionKeys(address: string): StoredSessionKeys | null {\n if (typeof localStorage === 'undefined') return null;\n\n try {\n const key = getSessionKeysStorageKey(address);\n const stored = localStorage.getItem(key);\n if (!stored) return null;\n\n const parsed = JSON.parse(stored);\n if (!parsed?.ed25519PublicKey || !parsed?.ed25519PrivateKey) {\n return null;\n }\n\n // Convert arrays back to Uint8Array\n return {\n ed25519PrivateKey: new Uint8Array(Object.values(parsed.ed25519PrivateKey)),\n ed25519PublicKey: new Uint8Array(Object.values(parsed.ed25519PublicKey)),\n walletPublicKey: parsed.walletPublicKey,\n chainName: parsed.chainName,\n };\n } catch (error) {\n logger.warn('[SessionBootstrapService] Failed to read session keys', { error });\n return null;\n }\n}\n\n/**\n * Store session keys for an address.\n */\nexport function storeSessionKeys(params: {\n address: string;\n privateKey: Uint8Array;\n publicKey: Uint8Array;\n chainName?: string;\n}): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionKeysStorageKey(params.address);\n const data = {\n ed25519PrivateKey: Array.from(params.privateKey),\n ed25519PublicKey: Array.from(params.publicKey),\n walletPublicKey: params.address,\n chainName: params.chainName ?? 'SOL',\n };\n localStorage.setItem(key, JSON.stringify(data));\n logger.debug('[SessionBootstrapService] Session keys stored');\n } catch (error) {\n logger.warn('[SessionBootstrapService] Failed to store session keys', { error });\n }\n}\n\n/**\n * Clear session keys for an address.\n */\nexport function clearSessionKeys(address: string): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionKeysStorageKey(address);\n localStorage.removeItem(key);\n logger.debug('[SessionBootstrapService] Session keys cleared');\n } catch {\n // Ignore\n }\n}\n\n// ============================================\n// SESSION ID MANAGEMENT\n// ============================================\n\n/**\n * Read stored session ID for an address.\n */\nexport function readSessionId(address: string): bigint | null {\n if (typeof localStorage === 'undefined') return null;\n\n try {\n const key = getSessionIdStorageKey(address);\n const stored = localStorage.getItem(key);\n if (!stored) return null;\n\n return BigInt(stored);\n } catch {\n return null;\n }\n}\n\n/**\n * Store session ID for an address.\n */\nexport function storeSessionId(address: string, sessionId: bigint): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionIdStorageKey(address);\n localStorage.setItem(key, sessionId.toString());\n } catch {\n // Ignore\n }\n}\n\n/**\n * Clear session ID for an address.\n */\nexport function clearSessionId(address: string): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionIdStorageKey(address);\n localStorage.removeItem(key);\n } catch {\n // Ignore\n }\n}\n\n// ============================================\n// SESSION INITIALIZATION\n// ============================================\n\n/**\n * Get or create session key pair for an address.\n *\n * This function:\n * 1. Checks for existing stored keys\n * 2. If found, returns them\n * 3. If not found, generates new keys (caller must provide generator)\n */\nexport async function getOrCreateSessionKeyPair(\n address: string,\n generateKeyPair: () => Promise<SessionKeyPair>\n): Promise<SessionKeyPair> {\n // Check for existing keys\n const stored = readSessionKeys(address);\n if (stored) {\n logger.debug('[SessionBootstrapService] Using stored session keys');\n return {\n privateKey: stored.ed25519PrivateKey,\n publicKey: stored.ed25519PublicKey,\n };\n }\n\n // Generate new keys\n logger.debug('[SessionBootstrapService] Generating new session keys');\n const keyPair = await generateKeyPair();\n\n // Store for future use\n storeSessionKeys({\n address,\n privateKey: keyPair.privateKey,\n publicKey: keyPair.publicKey,\n });\n\n return keyPair;\n}\n\n// ============================================\n// SESSION STATE HELPERS\n// ============================================\n\n/**\n * Check if a session is fully initialized.\n */\nexport function isSessionReady(params: {\n sessionPubKey: Uint8Array | null;\n signMessageWithSessionKey: unknown;\n signMessageWithWalletKey: unknown;\n signTransactionWithWalletKey: unknown;\n}): boolean {\n return !!(\n params.sessionPubKey &&\n params.signMessageWithSessionKey &&\n params.signMessageWithWalletKey &&\n params.signTransactionWithWalletKey\n );\n}\n\n/**\n * Clear all session data for an address.\n */\nexport function clearAllSessionData(address: string): void {\n clearSessionKeys(address);\n clearSessionId(address);\n logger.debug('[SessionBootstrapService] All session data cleared');\n}\n\n// ============================================\n// VALIDATION\n// ============================================\n\n/**\n * Validate session keys are usable.\n */\nexport function validateSessionKeys(keys: StoredSessionKeys): boolean {\n // Check key lengths\n if (keys.ed25519PrivateKey.length !== 64) {\n logger.warn('[SessionBootstrapService] Invalid private key length');\n return false;\n }\n\n if (keys.ed25519PublicKey.length !== 32) {\n logger.warn('[SessionBootstrapService] Invalid public key length');\n return false;\n }\n\n return true;\n}\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turnkey Bootstrap Service
|
|
3
|
+
*
|
|
4
|
+
* Handles Turnkey authentication and wallet provisioning.
|
|
5
|
+
* Extracted from TurnkeyProvider to enable:
|
|
6
|
+
* - Testable pure functions
|
|
7
|
+
* - Clear separation from React lifecycle
|
|
8
|
+
* - Reusable bootstrap logic
|
|
9
|
+
*/
|
|
10
|
+
import type { TurnkeySessionData } from './types';
|
|
11
|
+
export declare const TURNKEY_WALLET_NAME = "Nord Turnkey Wallet";
|
|
12
|
+
export declare const SOLANA_ADDRESS_FORMAT = "ADDRESS_FORMAT_SOLANA";
|
|
13
|
+
/**
|
|
14
|
+
* Normalize EVM address to lowercase for consistent comparison.
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeAddress(address?: string | null): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Check if error indicates user rejected the action.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isUserRejectedError(error: unknown): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Check if the stored session belongs to a different user.
|
|
23
|
+
* Returns true if we need to clear the session for the new user.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isSessionForDifferentUser(targetAddress: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if we have a valid stored session for the target address.
|
|
28
|
+
*/
|
|
29
|
+
export declare function hasStoredSession(targetAddress: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get stored session data for the target address.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getStoredSession(targetAddress: string): TurnkeySessionData | null;
|
|
34
|
+
/**
|
|
35
|
+
* Store session data after successful login.
|
|
36
|
+
*/
|
|
37
|
+
export declare function storeSession(targetAddress: string, sessionKey: string, options?: {
|
|
38
|
+
evmAddress?: string | null;
|
|
39
|
+
solanaAccount?: TurnkeySessionData['solanaAccount'];
|
|
40
|
+
session?: unknown;
|
|
41
|
+
}): void;
|
|
42
|
+
/**
|
|
43
|
+
* Update the Solana account for an existing session.
|
|
44
|
+
*/
|
|
45
|
+
export declare function updateSessionSolanaAccount(targetAddress: string, solanaAccount: NonNullable<TurnkeySessionData['solanaAccount']>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Clear session for logout or user switch.
|
|
48
|
+
*/
|
|
49
|
+
export declare function clearSession(targetAddress?: string | null): void;
|
|
50
|
+
/**
|
|
51
|
+
* Find an existing Solana wallet in the list of Turnkey wallets.
|
|
52
|
+
*/
|
|
53
|
+
export declare function findExistingSolanaWallet(wallets: any[]): any | null;
|
|
54
|
+
/**
|
|
55
|
+
* Extract Solana account from a wallet.
|
|
56
|
+
*/
|
|
57
|
+
export declare function extractSolanaAccount(wallet: any): any | null;
|
|
58
|
+
/**
|
|
59
|
+
* Check if stored session has Solana account cached.
|
|
60
|
+
*/
|
|
61
|
+
export declare function hasCachedSolanaAccount(targetAddress: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get cached Solana account from stored session.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getCachedSolanaAccount(targetAddress: string): TurnkeySessionData['solanaAccount'] | null;
|
|
66
|
+
/**
|
|
67
|
+
* Determine next action for Turnkey bootstrap.
|
|
68
|
+
*
|
|
69
|
+
* This is a pure function that determines what should happen next
|
|
70
|
+
* without actually performing the action.
|
|
71
|
+
*/
|
|
72
|
+
export declare function determineBootstrapAction(params: {
|
|
73
|
+
targetAddress: string | null;
|
|
74
|
+
walletNetwork: 'solana' | 'evm' | null;
|
|
75
|
+
hasEvmWallet: boolean;
|
|
76
|
+
hasTurnkeyConfig: boolean;
|
|
77
|
+
}): 'skip' | 'reset' | 'hydrate' | 'login';
|
|
78
|
+
/**
|
|
79
|
+
* Determine next action for Solana wallet provisioning.
|
|
80
|
+
*/
|
|
81
|
+
export declare function determineSolanaProvisionAction(params: {
|
|
82
|
+
targetAddress: string;
|
|
83
|
+
existingWallets: any[];
|
|
84
|
+
}): 'use_cached' | 'use_existing' | 'create';
|
|
85
|
+
/**
|
|
86
|
+
* Categorize a Turnkey error for appropriate handling.
|
|
87
|
+
*/
|
|
88
|
+
export declare function categorizeTurnkeyError(error: unknown): {
|
|
89
|
+
type: 'user_rejected' | 'network' | 'session_expired' | 'unknown';
|
|
90
|
+
message: string;
|
|
91
|
+
recoverable: boolean;
|
|
92
|
+
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turnkey Bootstrap Service
|
|
3
|
+
*
|
|
4
|
+
* Handles Turnkey authentication and wallet provisioning.
|
|
5
|
+
* Extracted from TurnkeyProvider to enable:
|
|
6
|
+
* - Testable pure functions
|
|
7
|
+
* - Clear separation from React lifecycle
|
|
8
|
+
* - Reusable bootstrap logic
|
|
9
|
+
*/
|
|
10
|
+
import { logger } from '../../utils/logger';
|
|
11
|
+
import { StorageService } from '../storage';
|
|
12
|
+
// ============================================
|
|
13
|
+
// CONSTANTS
|
|
14
|
+
// ============================================
|
|
15
|
+
export var TURNKEY_WALLET_NAME = 'Nord Turnkey Wallet';
|
|
16
|
+
export var SOLANA_ADDRESS_FORMAT = 'ADDRESS_FORMAT_SOLANA';
|
|
17
|
+
// ============================================
|
|
18
|
+
// ADDRESS UTILITIES
|
|
19
|
+
// ============================================
|
|
20
|
+
/**
|
|
21
|
+
* Normalize EVM address to lowercase for consistent comparison.
|
|
22
|
+
*/
|
|
23
|
+
export function normalizeAddress(address) {
|
|
24
|
+
if (!address)
|
|
25
|
+
return null;
|
|
26
|
+
return address.toLowerCase();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if error indicates user rejected the action.
|
|
30
|
+
*/
|
|
31
|
+
export function isUserRejectedError(error) {
|
|
32
|
+
var _a, _b, _c, _d, _e, _f;
|
|
33
|
+
var errorObj = error;
|
|
34
|
+
var code = errorObj === null || errorObj === void 0 ? void 0 : errorObj.code;
|
|
35
|
+
var message = (_c = (_b = (_a = errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : '';
|
|
36
|
+
var name = (_f = (_e = (_d = errorObj === null || errorObj === void 0 ? void 0 : errorObj.name) === null || _d === void 0 ? void 0 : _d.toLowerCase) === null || _e === void 0 ? void 0 : _e.call(_d)) !== null && _f !== void 0 ? _f : '';
|
|
37
|
+
// Check for explicit user rejection codes first (most reliable)
|
|
38
|
+
if (code === 'USER_REJECTED' ||
|
|
39
|
+
code === 4001 ||
|
|
40
|
+
code === 'USER_CANCELED' ||
|
|
41
|
+
code === 'USER_CANCELLED') {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
// Check for explicit user rejection in error name
|
|
45
|
+
if (name.includes('user_rejected') ||
|
|
46
|
+
name.includes('user_canceled') ||
|
|
47
|
+
name.includes('user_cancelled')) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
// Check message for explicit "user rejected" patterns
|
|
51
|
+
if (message.includes('user rejected') || message.includes('user rejected the request')) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
// "wallet auth was cancelled" needs BOTH message AND code to be safe
|
|
55
|
+
var cancelledMessage = message.includes('wallet auth was cancelled') ||
|
|
56
|
+
message.includes('wallet authorization was cancelled');
|
|
57
|
+
if (cancelledMessage) {
|
|
58
|
+
if (code === 4001 ||
|
|
59
|
+
code === 'USER_REJECTED' ||
|
|
60
|
+
code === 'USER_CANCELED' ||
|
|
61
|
+
code === 'USER_CANCELLED') {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
// ============================================
|
|
69
|
+
// SESSION MANAGEMENT
|
|
70
|
+
// ============================================
|
|
71
|
+
/**
|
|
72
|
+
* Check if the stored session belongs to a different user.
|
|
73
|
+
* Returns true if we need to clear the session for the new user.
|
|
74
|
+
*/
|
|
75
|
+
export function isSessionForDifferentUser(targetAddress) {
|
|
76
|
+
var storedClientAddress = StorageService.readTurnkeyClientAddress();
|
|
77
|
+
if (!storedClientAddress)
|
|
78
|
+
return false;
|
|
79
|
+
return storedClientAddress.toLowerCase() !== targetAddress.toLowerCase();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Check if we have a valid stored session for the target address.
|
|
83
|
+
*/
|
|
84
|
+
export function hasStoredSession(targetAddress) {
|
|
85
|
+
var session = StorageService.readTurnkeySession(targetAddress);
|
|
86
|
+
return session !== null && !!session.sessionKey;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get stored session data for the target address.
|
|
90
|
+
*/
|
|
91
|
+
export function getStoredSession(targetAddress) {
|
|
92
|
+
var storedSession = StorageService.readTurnkeySession(targetAddress);
|
|
93
|
+
if (!(storedSession === null || storedSession === void 0 ? void 0 : storedSession.sessionKey))
|
|
94
|
+
return null;
|
|
95
|
+
return {
|
|
96
|
+
sessionKey: storedSession.sessionKey,
|
|
97
|
+
evmAddress: storedSession.evmAddress,
|
|
98
|
+
solanaAccount: storedSession.solanaAccount,
|
|
99
|
+
session: storedSession.session,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Store session data after successful login.
|
|
104
|
+
*/
|
|
105
|
+
export function storeSession(targetAddress, sessionKey, options) {
|
|
106
|
+
var _a, _b;
|
|
107
|
+
StorageService.writeTurnkeySession({
|
|
108
|
+
sessionKey: sessionKey,
|
|
109
|
+
evmAddress: (_a = options === null || options === void 0 ? void 0 : options.evmAddress) !== null && _a !== void 0 ? _a : targetAddress,
|
|
110
|
+
solanaAccount: (_b = options === null || options === void 0 ? void 0 : options.solanaAccount) !== null && _b !== void 0 ? _b : null,
|
|
111
|
+
session: options === null || options === void 0 ? void 0 : options.session,
|
|
112
|
+
});
|
|
113
|
+
StorageService.writeTurnkeyClientAddress(targetAddress);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Update the Solana account for an existing session.
|
|
117
|
+
*/
|
|
118
|
+
export function updateSessionSolanaAccount(targetAddress, solanaAccount) {
|
|
119
|
+
StorageService.updateTurnkeySolanaAccount(targetAddress, solanaAccount);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Clear session for logout or user switch.
|
|
123
|
+
*/
|
|
124
|
+
export function clearSession(targetAddress) {
|
|
125
|
+
StorageService.clearTurnkeySession(targetAddress);
|
|
126
|
+
logger.debug('[TurnkeyBootstrapService] Session cleared');
|
|
127
|
+
}
|
|
128
|
+
// ============================================
|
|
129
|
+
// WALLET HELPERS
|
|
130
|
+
// ============================================
|
|
131
|
+
/**
|
|
132
|
+
* Find an existing Solana wallet in the list of Turnkey wallets.
|
|
133
|
+
*/
|
|
134
|
+
export function findExistingSolanaWallet(wallets) {
|
|
135
|
+
var _a;
|
|
136
|
+
return ((_a = wallets.find(function (w) {
|
|
137
|
+
var _a;
|
|
138
|
+
return w.walletName === TURNKEY_WALLET_NAME &&
|
|
139
|
+
((_a = w.accounts) === null || _a === void 0 ? void 0 : _a.some(function (a) { return a.addressFormat === SOLANA_ADDRESS_FORMAT; }));
|
|
140
|
+
})) !== null && _a !== void 0 ? _a : null);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Extract Solana account from a wallet.
|
|
144
|
+
*/
|
|
145
|
+
export function extractSolanaAccount(wallet) {
|
|
146
|
+
var _a;
|
|
147
|
+
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.accounts))
|
|
148
|
+
return null;
|
|
149
|
+
return (_a = wallet.accounts.find(function (a) { return a.addressFormat === SOLANA_ADDRESS_FORMAT; })) !== null && _a !== void 0 ? _a : null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check if stored session has Solana account cached.
|
|
153
|
+
*/
|
|
154
|
+
export function hasCachedSolanaAccount(targetAddress) {
|
|
155
|
+
var _a, _b;
|
|
156
|
+
var session = StorageService.readTurnkeySession(targetAddress);
|
|
157
|
+
return !!((_b = (_a = session === null || session === void 0 ? void 0 : session.solanaAccount) === null || _a === void 0 ? void 0 : _a.account) === null || _b === void 0 ? void 0 : _b.address);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get cached Solana account from stored session.
|
|
161
|
+
*/
|
|
162
|
+
export function getCachedSolanaAccount(targetAddress) {
|
|
163
|
+
var _a;
|
|
164
|
+
var session = StorageService.readTurnkeySession(targetAddress);
|
|
165
|
+
return (_a = session === null || session === void 0 ? void 0 : session.solanaAccount) !== null && _a !== void 0 ? _a : null;
|
|
166
|
+
}
|
|
167
|
+
// ============================================
|
|
168
|
+
// BOOTSTRAP ORCHESTRATION
|
|
169
|
+
// ============================================
|
|
170
|
+
/**
|
|
171
|
+
* Determine next action for Turnkey bootstrap.
|
|
172
|
+
*
|
|
173
|
+
* This is a pure function that determines what should happen next
|
|
174
|
+
* without actually performing the action.
|
|
175
|
+
*/
|
|
176
|
+
export function determineBootstrapAction(params) {
|
|
177
|
+
var targetAddress = params.targetAddress, walletNetwork = params.walletNetwork, hasEvmWallet = params.hasEvmWallet, hasTurnkeyConfig = params.hasTurnkeyConfig;
|
|
178
|
+
// Pre-flight checks
|
|
179
|
+
if (!hasTurnkeyConfig || walletNetwork !== 'evm' || !hasEvmWallet || !targetAddress) {
|
|
180
|
+
return 'skip';
|
|
181
|
+
}
|
|
182
|
+
// Check if user switched accounts
|
|
183
|
+
if (isSessionForDifferentUser(targetAddress)) {
|
|
184
|
+
return 'reset';
|
|
185
|
+
}
|
|
186
|
+
// Check if we have a stored session
|
|
187
|
+
if (hasStoredSession(targetAddress)) {
|
|
188
|
+
return 'hydrate';
|
|
189
|
+
}
|
|
190
|
+
// Need fresh login
|
|
191
|
+
return 'login';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Determine next action for Solana wallet provisioning.
|
|
195
|
+
*/
|
|
196
|
+
export function determineSolanaProvisionAction(params) {
|
|
197
|
+
var targetAddress = params.targetAddress, existingWallets = params.existingWallets;
|
|
198
|
+
// Check cache first
|
|
199
|
+
if (hasCachedSolanaAccount(targetAddress)) {
|
|
200
|
+
return 'use_cached';
|
|
201
|
+
}
|
|
202
|
+
// Check existing wallets
|
|
203
|
+
var existing = findExistingSolanaWallet(existingWallets);
|
|
204
|
+
if (existing && extractSolanaAccount(existing)) {
|
|
205
|
+
return 'use_existing';
|
|
206
|
+
}
|
|
207
|
+
// Need to create
|
|
208
|
+
return 'create';
|
|
209
|
+
}
|
|
210
|
+
// ============================================
|
|
211
|
+
// ERROR HANDLING
|
|
212
|
+
// ============================================
|
|
213
|
+
/**
|
|
214
|
+
* Categorize a Turnkey error for appropriate handling.
|
|
215
|
+
*/
|
|
216
|
+
export function categorizeTurnkeyError(error) {
|
|
217
|
+
var _a;
|
|
218
|
+
if (isUserRejectedError(error)) {
|
|
219
|
+
return {
|
|
220
|
+
type: 'user_rejected',
|
|
221
|
+
message: 'User rejected the request',
|
|
222
|
+
recoverable: true,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
var errorObj = error;
|
|
226
|
+
var message = (_a = errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) !== null && _a !== void 0 ? _a : String(error);
|
|
227
|
+
// Session expired
|
|
228
|
+
if (message.includes('session expired') ||
|
|
229
|
+
message.includes('invalid session') ||
|
|
230
|
+
message.includes('no active session')) {
|
|
231
|
+
return {
|
|
232
|
+
type: 'session_expired',
|
|
233
|
+
message: 'Session expired, please reconnect',
|
|
234
|
+
recoverable: true,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
// Network errors
|
|
238
|
+
if (message.includes('network') ||
|
|
239
|
+
message.includes('fetch') ||
|
|
240
|
+
message.includes('timeout')) {
|
|
241
|
+
return {
|
|
242
|
+
type: 'network',
|
|
243
|
+
message: 'Network error, please try again',
|
|
244
|
+
recoverable: true,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
type: 'unknown',
|
|
249
|
+
message: message || 'An unknown error occurred',
|
|
250
|
+
recoverable: false,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=TurnkeyBootstrapService.js.map
|