@web3auth/no-modal 10.16.0 → 11.0.0-beta.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/lib.cjs/account-linking/index.js +8 -0
- package/dist/lib.cjs/account-linking/react.js +95 -0
- package/dist/lib.cjs/account-linking/rest.js +54 -0
- package/dist/lib.cjs/account-linking/vue.js +98 -0
- package/dist/lib.cjs/base/analytics.js +13 -1
- package/dist/lib.cjs/base/connector/baseConnector.js +104 -2
- package/dist/lib.cjs/base/connector/connectorStatus.js +2 -0
- package/dist/lib.cjs/base/connector/constants.js +6 -2
- package/dist/lib.cjs/base/connector/utils.js +0 -21
- package/dist/lib.cjs/base/constants.js +4 -0
- package/dist/lib.cjs/base/cookie.js +6 -20
- package/dist/lib.cjs/base/errors/index.js +84 -12
- package/dist/lib.cjs/base/utils.js +22 -11
- package/dist/lib.cjs/base/wallet/index.js +7 -0
- package/dist/lib.cjs/base/wallet/solana.js +83 -0
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +566 -93
- package/dist/lib.cjs/connectors/auth-connector/authSolanaWallet.js +187 -0
- package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +55 -58
- package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
- package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +19 -14
- package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +18 -13
- package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +24 -36
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +350 -131
- package/dist/lib.cjs/connectors/utils.js +8 -2
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -38
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -3
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +111 -73
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +24 -51
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +144 -0
- package/dist/lib.cjs/index.js +55 -83
- package/dist/lib.cjs/noModal.js +957 -169
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +23 -39
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +12 -10
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +8 -6
- package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +47 -44
- package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +1 -3
- package/dist/lib.cjs/providers/base-provider/baseProvider.js +69 -35
- package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +8 -11
- package/dist/lib.cjs/providers/base-provider/index.js +0 -1
- package/dist/lib.cjs/providers/base-provider/jrpcClient.js +18 -19
- package/dist/lib.cjs/providers/base-provider/utils.js +0 -3
- package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +22 -43
- package/dist/lib.cjs/providers/ethereum-provider/rpc/jrpcClient.js +18 -19
- package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMiddleware.js +200 -0
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +9 -18
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
- package/dist/lib.cjs/providers/xrpl-provider/rpc/JrpcClient.js +19 -26
- package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +46 -37
- package/dist/lib.cjs/react/context/WalletServicesInnerContext.js +2 -69
- package/dist/lib.cjs/react/context/Web3AuthInnerContext.js +6 -161
- package/dist/lib.cjs/react/context/useWalletServicesContextValue.js +76 -0
- package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +216 -0
- package/dist/lib.cjs/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
- package/dist/lib.cjs/react/hooks/useCheckout.js +4 -2
- package/dist/lib.cjs/react/hooks/useFunding.js +4 -2
- package/dist/lib.cjs/react/hooks/useReceive.js +4 -2
- package/dist/lib.cjs/react/hooks/useSwap.js +4 -2
- package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +4 -2
- package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +3 -10
- package/dist/lib.cjs/react/hooks/useWalletUI.js +4 -2
- package/dist/lib.cjs/react/hooks/useWallets.js +51 -0
- package/dist/lib.cjs/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.cjs/react/hooks/useWeb3AuthInner.js +4 -2
- package/dist/lib.cjs/react/index.js +12 -2
- package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +22 -4
- package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +20 -2
- package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +22 -3
- package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +34 -51
- package/dist/lib.cjs/react/solana/index.js +2 -0
- package/dist/lib.cjs/react/solana/provider.js +169 -0
- package/dist/lib.cjs/react/wagmi/provider.js +10 -8
- package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
- package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
- package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
- package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
- package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
- package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +26 -5
- package/dist/lib.cjs/types/base/connector/connectorStatus.d.ts +1 -0
- package/dist/lib.cjs/types/base/connector/constants.d.ts +5 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +72 -16
- package/dist/lib.cjs/types/base/connector/utils.d.ts +0 -3
- package/dist/lib.cjs/types/base/constants.d.ts +1 -0
- package/dist/lib.cjs/types/base/cookie.d.ts +0 -7
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +57 -13
- package/dist/lib.cjs/types/base/errors/index.d.ts +15 -3
- package/dist/lib.cjs/types/base/hooks/index.d.ts +2 -2
- package/dist/lib.cjs/types/base/interfaces.d.ts +8 -2
- package/dist/lib.cjs/types/base/utils.d.ts +9 -2
- package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
- package/dist/lib.cjs/types/base/wallet/solana.d.ts +19 -0
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +37 -8
- package/dist/lib.cjs/types/connectors/auth-connector/authSolanaWallet.d.ts +35 -0
- package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
- package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +8 -2
- package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +8 -2
- package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +2 -2
- package/dist/lib.cjs/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +10 -7
- package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +35 -3
- package/dist/lib.cjs/types/connectors/utils.d.ts +2 -0
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.d.ts +0 -1
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/walletConnectV2Utils.d.ts +1 -5
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/wcSolanaWallet.d.ts +26 -0
- package/dist/lib.cjs/types/index.d.ts +1 -0
- package/dist/lib.cjs/types/noModal.d.ts +113 -10
- package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +1 -4
- package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
- package/dist/lib.cjs/types/providers/base-provider/baseProvider.d.ts +7 -0
- package/dist/lib.cjs/types/providers/base-provider/jrpcClient.d.ts +2 -5
- package/dist/lib.cjs/types/providers/base-provider/utils.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/index.d.ts +1 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/jrpcClient.d.ts +2 -5
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMiddleware.d.ts +3 -0
- package/dist/lib.cjs/types/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +0 -1
- package/dist/lib.cjs/types/providers/xrpl-provider/rpc/JrpcClient.d.ts +3 -7
- package/dist/lib.cjs/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +5 -12
- package/dist/lib.cjs/types/react/context/index.d.ts +4 -0
- package/dist/lib.cjs/types/react/context/useWalletServicesContextValue.d.ts +12 -0
- package/dist/lib.cjs/types/react/context/useWeb3AuthInnerContextValue.d.ts +26 -0
- package/dist/lib.cjs/types/react/hooks/index.d.ts +2 -1
- package/dist/lib.cjs/types/react/hooks/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +4 -4
- package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +1 -2
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +2 -2
- package/dist/lib.cjs/types/react/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +7 -2
- package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +8 -3
- package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +17 -4
- package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/solana/provider.d.ts +26 -0
- package/dist/lib.cjs/types/vue/composables/index.d.ts +3 -1
- package/dist/lib.cjs/types/vue/composables/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +3 -3
- package/dist/lib.cjs/types/vue/composables/useInjectedWeb3AuthInnerContext.d.ts +1 -0
- package/dist/lib.cjs/types/vue/composables/useWallets.d.ts +9 -0
- package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +1 -2
- package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +2 -2
- package/dist/lib.cjs/types/vue/index.d.ts +2 -0
- package/dist/lib.cjs/types/vue/interfaces.d.ts +2 -2
- package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +1 -0
- package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +7 -2
- package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +8 -3
- package/dist/lib.cjs/types/vue/solana/composables/useSolanaClient.d.ts +7 -0
- package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +17 -4
- package/dist/lib.cjs/types/vue/solana/constants.d.ts +3 -0
- package/dist/lib.cjs/types/vue/solana/index.d.ts +2 -0
- package/dist/lib.cjs/types/vue/solana/provider.d.ts +8 -0
- package/dist/lib.cjs/types/vue/useWalletServicesInnerContextValue.d.ts +13 -0
- package/dist/lib.cjs/types/vue/useWeb3AuthInnerContextValue.d.ts +26 -0
- package/dist/lib.cjs/types/x402/index.d.ts +43 -0
- package/dist/lib.cjs/types/x402/interfaces.d.ts +11 -0
- package/dist/lib.cjs/types/x402/react.d.ts +17 -0
- package/dist/lib.cjs/types/x402/vue.d.ts +18 -0
- package/dist/lib.cjs/vue/WalletServicesInnerProvider.js +9 -54
- package/dist/lib.cjs/vue/Web3AuthProvider.js +16 -177
- package/dist/lib.cjs/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +10 -8
- package/dist/lib.cjs/vue/composables/useCheckout.js +4 -2
- package/dist/lib.cjs/vue/composables/useEnableMFA.js +4 -2
- package/dist/lib.cjs/vue/composables/useFunding.js +4 -2
- package/dist/lib.cjs/vue/composables/useInjectedWeb3AuthInnerContext.js +29 -0
- package/dist/lib.cjs/vue/composables/useManageMFA.js +4 -2
- package/dist/lib.cjs/vue/composables/useReceive.js +4 -2
- package/dist/lib.cjs/vue/composables/useSwap.js +4 -2
- package/dist/lib.cjs/vue/composables/useSwitchChain.js +4 -2
- package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +4 -2
- package/dist/lib.cjs/vue/composables/useWalletUI.js +4 -2
- package/dist/lib.cjs/vue/composables/useWallets.js +52 -0
- package/dist/lib.cjs/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +6 -4
- package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +4 -2
- package/dist/lib.cjs/vue/composables/useWeb3AuthInner.js +2 -20
- package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +4 -2
- package/dist/lib.cjs/vue/index.js +10 -2
- package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSolanaClient.js +14 -0
- package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +60 -41
- package/dist/lib.cjs/vue/solana/constants.js +5 -0
- package/dist/lib.cjs/vue/solana/index.js +6 -0
- package/dist/lib.cjs/vue/solana/provider.js +110 -0
- package/dist/lib.cjs/vue/useWalletServicesInnerContextValue.js +75 -0
- package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +226 -0
- package/dist/lib.cjs/vue/wagmi/provider.js +28 -12
- package/dist/lib.cjs/x402/index.js +175 -0
- package/dist/lib.cjs/x402/interfaces.js +5 -0
- package/dist/lib.cjs/x402/react.js +64 -0
- package/dist/lib.cjs/x402/vue.js +58 -0
- package/dist/lib.esm/account-linking/index.js +1 -0
- package/dist/lib.esm/account-linking/react.js +74 -0
- package/dist/lib.esm/account-linking/rest.js +51 -0
- package/dist/lib.esm/account-linking/vue.js +78 -0
- package/dist/lib.esm/base/analytics.js +13 -1
- package/dist/lib.esm/base/connector/baseConnector.js +104 -2
- package/dist/lib.esm/base/connector/connectorStatus.js +2 -1
- package/dist/lib.esm/base/connector/constants.js +6 -2
- package/dist/lib.esm/base/connector/utils.js +1 -19
- package/dist/lib.esm/base/constants.js +4 -1
- package/dist/lib.esm/base/cookie.js +7 -20
- package/dist/lib.esm/base/errors/index.js +84 -13
- package/dist/lib.esm/base/utils.js +22 -7
- package/dist/lib.esm/base/wallet/index.js +2 -1
- package/dist/lib.esm/base/wallet/solana.js +81 -0
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +527 -57
- package/dist/lib.esm/connectors/auth-connector/authSolanaWallet.js +175 -0
- package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +55 -58
- package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -13
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +16 -13
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +22 -34
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +366 -132
- package/dist/lib.esm/connectors/utils.js +9 -4
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -31
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -1
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +110 -73
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +21 -49
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +130 -0
- package/dist/lib.esm/index.js +12 -19
- package/dist/lib.esm/noModal.js +975 -177
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +20 -39
- package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -9
- package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +3 -3
- package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +48 -45
- package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +2 -4
- package/dist/lib.esm/providers/base-provider/baseProvider.js +68 -38
- package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +9 -12
- package/dist/lib.esm/providers/base-provider/index.js +1 -1
- package/dist/lib.esm/providers/base-provider/jrpcClient.js +20 -19
- package/dist/lib.esm/providers/base-provider/utils.js +1 -3
- package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +23 -44
- package/dist/lib.esm/providers/ethereum-provider/rpc/jrpcClient.js +20 -19
- package/dist/lib.esm/providers/ethereum-provider/rpc/walletMiddleware.js +201 -0
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +6 -17
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
- package/dist/lib.esm/providers/xrpl-provider/rpc/JrpcClient.js +21 -25
- package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +48 -38
- package/dist/lib.esm/react/context/WalletServicesInnerContext.js +3 -57
- package/dist/lib.esm/react/context/Web3AuthInnerContext.js +7 -152
- package/dist/lib.esm/react/context/useWalletServicesContextValue.js +59 -0
- package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +203 -0
- package/dist/lib.esm/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
- package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +3 -10
- package/dist/lib.esm/react/hooks/useWallets.js +33 -0
- package/dist/lib.esm/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/react/index.js +6 -1
- package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +6 -4
- package/dist/lib.esm/react/solana/hooks/useSignMessage.js +4 -2
- package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +6 -3
- package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +33 -28
- package/dist/lib.esm/react/solana/index.js +1 -0
- package/dist/lib.esm/react/solana/provider.js +153 -0
- package/dist/lib.esm/react/wagmi/provider.js +8 -8
- package/dist/lib.esm/vue/WalletServicesInnerProvider.js +4 -54
- package/dist/lib.esm/vue/Web3AuthProvider.js +7 -179
- package/dist/lib.esm/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +6 -6
- package/dist/lib.esm/vue/composables/useCheckout.js +1 -1
- package/dist/lib.esm/vue/composables/useFunding.js +1 -1
- package/dist/lib.esm/vue/composables/useInjectedWeb3AuthInnerContext.js +11 -0
- package/dist/lib.esm/vue/composables/useReceive.js +1 -1
- package/dist/lib.esm/vue/composables/useSwap.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
- package/dist/lib.esm/vue/composables/useWallets.js +35 -0
- package/dist/lib.esm/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +2 -6
- package/dist/lib.esm/vue/index.js +5 -1
- package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +2 -1
- package/dist/lib.esm/vue/solana/composables/useSignMessage.js +2 -1
- package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +3 -2
- package/dist/lib.esm/vue/solana/composables/useSolanaClient.js +12 -0
- package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +53 -35
- package/dist/lib.esm/vue/solana/constants.js +3 -0
- package/dist/lib.esm/vue/solana/index.js +3 -0
- package/dist/lib.esm/vue/solana/provider.js +99 -0
- package/dist/lib.esm/vue/useWalletServicesInnerContextValue.js +58 -0
- package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +213 -0
- package/dist/lib.esm/vue/wagmi/provider.js +26 -12
- package/dist/lib.esm/x402/index.js +170 -0
- package/dist/lib.esm/x402/interfaces.js +3 -0
- package/dist/lib.esm/x402/react.js +59 -0
- package/dist/lib.esm/x402/vue.js +54 -0
- package/package.json +102 -53
- package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +0 -7
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -224
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -177
- package/dist/lib.cjs/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -21
- package/dist/lib.cjs/providers/ethereum-provider/providers/converter.js +0 -88
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -27
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -383
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -93
- package/dist/lib.cjs/providers/ethereum-provider/providers/utils.js +0 -29
- package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMidddleware.js +0 -251
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -65
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -45
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/utils.js +0 -16
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -103
- package/dist/lib.cjs/providers/solana-provider/rpc/JrpcClient.js +0 -47
- package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -97
- package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +0 -91
- package/dist/lib.cjs/types/connectors/injected-solana-connector/utils.d.ts +0 -3
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +0 -74
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.d.ts +0 -12
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.d.ts +0 -3
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/interfaces.d.ts +0 -15
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/converter.d.ts +0 -14
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.d.ts +0 -16
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.d.ts +0 -28
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/index.d.ts +0 -4
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.d.ts +0 -46
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.d.ts +0 -11
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/utils.d.ts +0 -5
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMidddleware.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/index.d.ts +0 -4
- package/dist/lib.cjs/types/providers/solana-provider/interface.d.ts +0 -22
- package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +0 -16
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/providerHandlers.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/index.d.ts +0 -2
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +0 -9
- package/dist/lib.cjs/types/providers/solana-provider/rpc/JrpcClient.d.ts +0 -9
- package/dist/lib.cjs/types/providers/solana-provider/rpc/index.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/rpc/interfaces.d.ts +0 -27
- package/dist/lib.cjs/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +0 -20
- package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +0 -29
- package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +0 -1
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -206
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -163
- package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -20
- package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +0 -85
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -21
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -378
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -88
- package/dist/lib.esm/providers/ethereum-provider/providers/utils.js +0 -24
- package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +0 -258
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -47
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -43
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/utils.js +0 -14
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -91
- package/dist/lib.esm/providers/solana-provider/rpc/JrpcClient.js +0 -42
- package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -89
- package/dist/lib.esm/providers/solana-provider/solanaWallet.js +0 -92
- package/dist/noModal.umd.min.js +0 -2
- package/dist/noModal.umd.min.js.LICENSE.txt +0 -46
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { shallowRef, ref, watch } from 'vue';
|
|
2
|
+
import { ANALYTICS_INTEGRATION_TYPE } from '../base/analytics.js';
|
|
3
|
+
import { log } from '../base/loglevel.js';
|
|
4
|
+
import { LOGIN_MODE } from '../base/constants.js';
|
|
5
|
+
import { WalletInitializationError } from '../base/errors/index.js';
|
|
6
|
+
import { CONNECTOR_EVENTS, CONNECTOR_STATUS } from '../base/connector/constants.js';
|
|
7
|
+
|
|
8
|
+
function useWeb3AuthInnerContextValue({
|
|
9
|
+
Web3AuthConstructor,
|
|
10
|
+
watchSource,
|
|
11
|
+
getWeb3AuthOptions,
|
|
12
|
+
initialState,
|
|
13
|
+
createConnectionRef = () => ref(null)
|
|
14
|
+
}) {
|
|
15
|
+
const web3Auth = shallowRef(null);
|
|
16
|
+
const connection = createConnectionRef();
|
|
17
|
+
const isMFAEnabled = ref(false);
|
|
18
|
+
const status = ref(null);
|
|
19
|
+
const chainId = ref(null);
|
|
20
|
+
const chainNamespace = ref(null);
|
|
21
|
+
const isInitializing = ref(false);
|
|
22
|
+
const initError = ref(null);
|
|
23
|
+
const isInitialized = ref(false);
|
|
24
|
+
const isConnected = ref(false);
|
|
25
|
+
const isAuthorized = ref(false);
|
|
26
|
+
const getPlugin = name => {
|
|
27
|
+
if (!web3Auth.value) throw WalletInitializationError.notReady();
|
|
28
|
+
return web3Auth.value.getPlugin(name);
|
|
29
|
+
};
|
|
30
|
+
const setIsMFAEnabled = isMfaEnabled => {
|
|
31
|
+
isMFAEnabled.value = isMfaEnabled;
|
|
32
|
+
};
|
|
33
|
+
watch(watchSource, (newSource, _, onInvalidate) => {
|
|
34
|
+
const resetHookState = () => {
|
|
35
|
+
connection.value = null;
|
|
36
|
+
isMFAEnabled.value = false;
|
|
37
|
+
isConnected.value = false;
|
|
38
|
+
isAuthorized.value = false;
|
|
39
|
+
status.value = null;
|
|
40
|
+
chainId.value = null;
|
|
41
|
+
chainNamespace.value = null;
|
|
42
|
+
};
|
|
43
|
+
onInvalidate(() => {
|
|
44
|
+
if (web3Auth.value) {
|
|
45
|
+
web3Auth.value.cleanup();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
resetHookState();
|
|
49
|
+
const web3AuthInstance = new Web3AuthConstructor(getWeb3AuthOptions(newSource), initialState);
|
|
50
|
+
web3AuthInstance.setAnalyticsProperties({
|
|
51
|
+
integration_type: ANALYTICS_INTEGRATION_TYPE.VUE_COMPOSABLES
|
|
52
|
+
});
|
|
53
|
+
web3Auth.value = web3AuthInstance;
|
|
54
|
+
}, {
|
|
55
|
+
immediate: true
|
|
56
|
+
});
|
|
57
|
+
watch(web3Auth, async (newWeb3Auth, _, onInvalidate) => {
|
|
58
|
+
const controller = new AbortController();
|
|
59
|
+
onInvalidate(() => {
|
|
60
|
+
controller.abort();
|
|
61
|
+
});
|
|
62
|
+
if (newWeb3Auth) {
|
|
63
|
+
try {
|
|
64
|
+
initError.value = null;
|
|
65
|
+
isInitializing.value = true;
|
|
66
|
+
await newWeb3Auth.init({
|
|
67
|
+
signal: controller.signal
|
|
68
|
+
});
|
|
69
|
+
} catch (error) {
|
|
70
|
+
log.error("Error initializing web3auth", error);
|
|
71
|
+
initError.value = error;
|
|
72
|
+
} finally {
|
|
73
|
+
isInitializing.value = false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
immediate: true
|
|
78
|
+
});
|
|
79
|
+
watch(web3Auth, (newWeb3Auth, prevWeb3Auth) => {
|
|
80
|
+
const notReadyListener = () => {
|
|
81
|
+
status.value = web3Auth.value.status;
|
|
82
|
+
};
|
|
83
|
+
const readyListener = () => {
|
|
84
|
+
status.value = web3Auth.value.status;
|
|
85
|
+
isInitialized.value = true;
|
|
86
|
+
};
|
|
87
|
+
const connectedListener = data => {
|
|
88
|
+
if (data.pendingUserConsent) return;
|
|
89
|
+
status.value = web3Auth.value.status;
|
|
90
|
+
// We do this because of rehydration issues. status connected is fired first but web3auth sdk is not ready yet.
|
|
91
|
+
if (web3Auth.value.status === CONNECTOR_STATUS.CONNECTED) {
|
|
92
|
+
var _currentChain$chainNa, _currentChain;
|
|
93
|
+
if (!isInitialized.value) isInitialized.value = true;
|
|
94
|
+
isConnected.value = true;
|
|
95
|
+
connection.value = web3Auth.value.connection;
|
|
96
|
+
chainId.value = web3Auth.value.currentChainId;
|
|
97
|
+
chainNamespace.value = (_currentChain$chainNa = (_currentChain = web3Auth.value.currentChain) === null || _currentChain === void 0 ? void 0 : _currentChain.chainNamespace) !== null && _currentChain$chainNa !== void 0 ? _currentChain$chainNa : null;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const authorizedListener = () => {
|
|
101
|
+
status.value = web3Auth.value.status;
|
|
102
|
+
if (web3Auth.value.status === CONNECTOR_STATUS.AUTHORIZED) {
|
|
103
|
+
isAuthorized.value = true;
|
|
104
|
+
isConnected.value = true;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const consentAcceptedListener = () => {
|
|
108
|
+
status.value = web3Auth.value.status;
|
|
109
|
+
if (web3Auth.value.status === CONNECTOR_STATUS.CONNECTED || web3Auth.value.status === CONNECTOR_STATUS.AUTHORIZED) {
|
|
110
|
+
var _currentChain$chainNa2, _currentChain2;
|
|
111
|
+
if (!isInitialized.value) isInitialized.value = true;
|
|
112
|
+
isConnected.value = true;
|
|
113
|
+
connection.value = web3Auth.value.connection;
|
|
114
|
+
chainId.value = web3Auth.value.currentChainId;
|
|
115
|
+
chainNamespace.value = (_currentChain$chainNa2 = (_currentChain2 = web3Auth.value.currentChain) === null || _currentChain2 === void 0 ? void 0 : _currentChain2.chainNamespace) !== null && _currentChain$chainNa2 !== void 0 ? _currentChain$chainNa2 : null;
|
|
116
|
+
if (web3Auth.value.status === CONNECTOR_STATUS.AUTHORIZED) {
|
|
117
|
+
isAuthorized.value = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const disconnectedListener = () => {
|
|
122
|
+
status.value = web3Auth.value.status;
|
|
123
|
+
isConnected.value = false;
|
|
124
|
+
connection.value = null;
|
|
125
|
+
isMFAEnabled.value = false;
|
|
126
|
+
isAuthorized.value = false;
|
|
127
|
+
};
|
|
128
|
+
const connectingListener = () => {
|
|
129
|
+
status.value = web3Auth.value.status;
|
|
130
|
+
};
|
|
131
|
+
const errorListener = () => {
|
|
132
|
+
status.value = web3Auth.value.status;
|
|
133
|
+
};
|
|
134
|
+
const mfaEnabledListener = () => {
|
|
135
|
+
isMFAEnabled.value = true;
|
|
136
|
+
};
|
|
137
|
+
const connectionUpdatedListener = () => {
|
|
138
|
+
var _currentChain$chainNa3, _currentChain3;
|
|
139
|
+
status.value = web3Auth.value.status;
|
|
140
|
+
connection.value = web3Auth.value.connection;
|
|
141
|
+
chainId.value = web3Auth.value.currentChainId;
|
|
142
|
+
chainNamespace.value = (_currentChain$chainNa3 = (_currentChain3 = web3Auth.value.currentChain) === null || _currentChain3 === void 0 ? void 0 : _currentChain3.chainNamespace) !== null && _currentChain$chainNa3 !== void 0 ? _currentChain$chainNa3 : null;
|
|
143
|
+
};
|
|
144
|
+
if (prevWeb3Auth && newWeb3Auth !== prevWeb3Auth) {
|
|
145
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.NOT_READY, notReadyListener);
|
|
146
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.READY, readyListener);
|
|
147
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONNECTED, connectedListener);
|
|
148
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.AUTHORIZED, authorizedListener);
|
|
149
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.DISCONNECTED, disconnectedListener);
|
|
150
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONNECTING, connectingListener);
|
|
151
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.ERRORED, errorListener);
|
|
152
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.REHYDRATION_ERROR, errorListener);
|
|
153
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.MFA_ENABLED, mfaEnabledListener);
|
|
154
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONNECTION_UPDATED, connectionUpdatedListener);
|
|
155
|
+
if (prevWeb3Auth.loginMode === LOGIN_MODE.MODAL) {
|
|
156
|
+
prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONSENT_ACCEPTED, consentAcceptedListener);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (newWeb3Auth && newWeb3Auth !== prevWeb3Auth) {
|
|
160
|
+
status.value = newWeb3Auth.status;
|
|
161
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.NOT_READY, notReadyListener);
|
|
162
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.READY, readyListener);
|
|
163
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.CONNECTED, connectedListener);
|
|
164
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.AUTHORIZED, authorizedListener);
|
|
165
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.DISCONNECTED, disconnectedListener);
|
|
166
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.CONNECTING, connectingListener);
|
|
167
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.ERRORED, errorListener);
|
|
168
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.REHYDRATION_ERROR, errorListener);
|
|
169
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.MFA_ENABLED, mfaEnabledListener);
|
|
170
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.CONNECTION_UPDATED, connectionUpdatedListener);
|
|
171
|
+
if (newWeb3Auth.loginMode === LOGIN_MODE.MODAL) {
|
|
172
|
+
newWeb3Auth.on(CONNECTOR_EVENTS.CONSENT_ACCEPTED, consentAcceptedListener);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}, {
|
|
176
|
+
immediate: true
|
|
177
|
+
});
|
|
178
|
+
watch(connection, (newConnection, prevConnection) => {
|
|
179
|
+
var _prevConnection$ether, _newConnection$ethere;
|
|
180
|
+
const handleChainChange = newChainId => {
|
|
181
|
+
var _web3Auth$value$curre, _web3Auth$value;
|
|
182
|
+
chainId.value = newChainId;
|
|
183
|
+
chainNamespace.value = (_web3Auth$value$curre = (_web3Auth$value = web3Auth.value) === null || _web3Auth$value === void 0 || (_web3Auth$value = _web3Auth$value.currentChain) === null || _web3Auth$value === void 0 ? void 0 : _web3Auth$value.chainNamespace) !== null && _web3Auth$value$curre !== void 0 ? _web3Auth$value$curre : null;
|
|
184
|
+
};
|
|
185
|
+
const prevProvider = (_prevConnection$ether = prevConnection === null || prevConnection === void 0 ? void 0 : prevConnection.ethereumProvider) !== null && _prevConnection$ether !== void 0 ? _prevConnection$ether : null;
|
|
186
|
+
const newProvider = (_newConnection$ethere = newConnection === null || newConnection === void 0 ? void 0 : newConnection.ethereumProvider) !== null && _newConnection$ethere !== void 0 ? _newConnection$ethere : null;
|
|
187
|
+
if (prevProvider && newProvider !== prevProvider) {
|
|
188
|
+
prevProvider.removeListener("chainChanged", handleChainChange);
|
|
189
|
+
}
|
|
190
|
+
if (newProvider && newProvider !== prevProvider) {
|
|
191
|
+
newProvider.on("chainChanged", handleChainChange);
|
|
192
|
+
}
|
|
193
|
+
}, {
|
|
194
|
+
immediate: true
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
web3Auth,
|
|
198
|
+
isConnected,
|
|
199
|
+
isAuthorized,
|
|
200
|
+
connection,
|
|
201
|
+
isInitializing,
|
|
202
|
+
initError,
|
|
203
|
+
isInitialized,
|
|
204
|
+
status,
|
|
205
|
+
isMFAEnabled,
|
|
206
|
+
chainId,
|
|
207
|
+
chainNamespace,
|
|
208
|
+
getPlugin,
|
|
209
|
+
setIsMFAEnabled
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export { useWeb3AuthInnerContextValue };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
2
|
import { hydrate } from '@wagmi/core';
|
|
3
|
-
import { configKey, createConfig, useConfig, useReconnect,
|
|
3
|
+
import { configKey, createConfig, useConfig, useReconnect, useConnectionEffect } from '@wagmi/vue';
|
|
4
4
|
import { injected } from '@wagmi/vue/connectors';
|
|
5
5
|
import { randomId } from '@web3auth/auth';
|
|
6
6
|
import { defineChain, webSocket, http, fallback } from 'viem';
|
|
7
7
|
import { defineComponent, h, shallowRef, ref, watch, provide } from 'vue';
|
|
8
8
|
import { log } from '../../base/loglevel.js';
|
|
9
9
|
import { defaultWagmiConfig } from './constants.js';
|
|
10
|
-
import { useWeb3AuthDisconnect } from '../composables/useWeb3AuthDisconnect.js';
|
|
11
10
|
import { useWeb3Auth } from '../composables/useWeb3Auth.js';
|
|
11
|
+
import { useWeb3AuthDisconnect } from '../composables/useWeb3AuthDisconnect.js';
|
|
12
12
|
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
13
13
|
import { WalletInitializationError } from '../../base/errors/index.js';
|
|
14
14
|
|
|
@@ -78,16 +78,17 @@ const Web3AuthWagmiProvider = defineComponent({
|
|
|
78
78
|
setup() {
|
|
79
79
|
const {
|
|
80
80
|
isConnected,
|
|
81
|
-
|
|
81
|
+
connection
|
|
82
82
|
} = useWeb3Auth();
|
|
83
83
|
const {
|
|
84
84
|
disconnect
|
|
85
85
|
} = useWeb3AuthDisconnect();
|
|
86
86
|
const wagmiConfig = useConfig();
|
|
87
87
|
const {
|
|
88
|
-
reconnect
|
|
88
|
+
mutate: reconnect
|
|
89
89
|
} = useReconnect();
|
|
90
|
-
|
|
90
|
+
const lastSyncedWeb3AuthConnection = shallowRef(null);
|
|
91
|
+
useConnectionEffect({
|
|
91
92
|
onDisconnect: async () => {
|
|
92
93
|
log.info("Disconnected from wagmi");
|
|
93
94
|
if (isConnected.value) await disconnect();
|
|
@@ -99,15 +100,28 @@ const Web3AuthWagmiProvider = defineComponent({
|
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
});
|
|
102
|
-
watch(isConnected, async
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
watch([isConnected, connection], async () => {
|
|
104
|
+
var _newConnection$ethere;
|
|
105
|
+
const newIsConnected = isConnected.value;
|
|
106
|
+
const newConnection = connection.value;
|
|
107
|
+
const newEth = (_newConnection$ethere = newConnection === null || newConnection === void 0 ? void 0 : newConnection.ethereumProvider) !== null && _newConnection$ethere !== void 0 ? _newConnection$ethere : null;
|
|
108
|
+
if (newIsConnected && newConnection && newEth) {
|
|
109
|
+
// Linked-account switches can reuse or replace the underlying wallet provider,
|
|
110
|
+
// so key wagmi resyncs off the Web3Auth connection object instead of provider identity.
|
|
111
|
+
if (lastSyncedWeb3AuthConnection.value !== newConnection) {
|
|
112
|
+
if (getWeb3authConnector(wagmiConfig)) {
|
|
113
|
+
resetConnectorState(wagmiConfig);
|
|
114
|
+
}
|
|
115
|
+
lastSyncedWeb3AuthConnection.value = newConnection;
|
|
116
|
+
const connector = await setupConnector(newEth, wagmiConfig);
|
|
117
|
+
if (!connector) {
|
|
118
|
+
throw new Error("Failed to setup connector");
|
|
119
|
+
}
|
|
120
|
+
await connectWeb3AuthWithWagmi(connector, wagmiConfig);
|
|
121
|
+
reconnect();
|
|
107
122
|
}
|
|
108
|
-
await connectWeb3AuthWithWagmi(connector, wagmiConfig);
|
|
109
|
-
reconnect();
|
|
110
123
|
} else if (!newIsConnected) {
|
|
124
|
+
lastSyncedWeb3AuthConnection.value = null;
|
|
111
125
|
if (wagmiConfig.state.status === "connected") {
|
|
112
126
|
await disconnectWeb3AuthFromWagmi(wagmiConfig);
|
|
113
127
|
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { getBase58Encoder, address } from '@solana/kit';
|
|
2
|
+
import { encodeBase64Url } from '@toruslabs/metadata-helpers';
|
|
3
|
+
import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
4
|
+
import { toClientEvmSigner, ExactEvmScheme } from '@x402/evm';
|
|
5
|
+
import { x402Client, wrapFetchWithPayment } from '@x402/fetch';
|
|
6
|
+
import { ExactSvmScheme, toClientSvmSigner } from '@x402/svm';
|
|
7
|
+
import { createWalletClient, custom } from 'viem';
|
|
8
|
+
import { PAYMENT_REQUIRED_HEADER } from './interfaces.js';
|
|
9
|
+
import { walletSignTransaction } from '../base/wallet/solana.js';
|
|
10
|
+
|
|
11
|
+
const EVM_CAIP2_WILDCARD = "eip155:*";
|
|
12
|
+
const SOLANA_CAIP2_WILDCARD = "solana:*";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* For 402 responses that carry v2 payment requirements in the JSON body instead
|
|
16
|
+
* of the PAYMENT-REQUIRED header, reads the body, promotes the data into the
|
|
17
|
+
* header, and reconstructs the response so downstream code can consume it normally.
|
|
18
|
+
*
|
|
19
|
+
* Returns the original response unchanged when the body is not JSON, is malformed,
|
|
20
|
+
* or does not carry an x402Version \>= 2 payload.
|
|
21
|
+
*/
|
|
22
|
+
async function normalizePaymentRequiredResponse(response) {
|
|
23
|
+
var _response$headers$get;
|
|
24
|
+
const contentType = (_response$headers$get = response.headers.get("Content-Type")) !== null && _response$headers$get !== void 0 ? _response$headers$get : "";
|
|
25
|
+
let body;
|
|
26
|
+
if (contentType.includes("application/json")) {
|
|
27
|
+
body = await response.json();
|
|
28
|
+
} else {
|
|
29
|
+
const data = await response.text();
|
|
30
|
+
body = JSON.parse(data);
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
if (body.x402Version && body.x402Version >= 2) {
|
|
34
|
+
const newHeaders = new Headers(response.headers);
|
|
35
|
+
const jsonData = JSON.stringify(body);
|
|
36
|
+
newHeaders.set(PAYMENT_REQUIRED_HEADER, encodeBase64Url(jsonData));
|
|
37
|
+
return new Response(jsonData, {
|
|
38
|
+
status: response.status,
|
|
39
|
+
statusText: response.statusText,
|
|
40
|
+
headers: newHeaders
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
} catch {
|
|
44
|
+
// Malformed JSON - fall through and return response with the already-consumed body
|
|
45
|
+
}
|
|
46
|
+
return new Response(JSON.stringify(body), {
|
|
47
|
+
status: response.status,
|
|
48
|
+
statusText: response.statusText,
|
|
49
|
+
headers: response.headers
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async function getEvmAddress(provider) {
|
|
53
|
+
var _ref;
|
|
54
|
+
const accounts = await provider.request({
|
|
55
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
56
|
+
});
|
|
57
|
+
return (_ref = accounts === null || accounts === void 0 ? void 0 : accounts[0]) !== null && _ref !== void 0 ? _ref : null;
|
|
58
|
+
}
|
|
59
|
+
function createProviderBackedEvmSigner(provider, address) {
|
|
60
|
+
const walletClient = createWalletClient({
|
|
61
|
+
account: address,
|
|
62
|
+
transport: custom(provider)
|
|
63
|
+
});
|
|
64
|
+
return walletClient;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Wraps a fetch function so that 402 responses whose v2 payment requirements
|
|
69
|
+
* arrive in the response body (instead of the PAYMENT-REQUIRED header) are
|
|
70
|
+
* normalised: the body JSON is base64-encoded and promoted into the
|
|
71
|
+
* PAYMENT-REQUIRED header so that the \@x402/fetch client library can process it.
|
|
72
|
+
*
|
|
73
|
+
* The \@x402/fetch library's body fallback only accepts x402Version === 1;
|
|
74
|
+
* this shim bridges the gap for servers that send v2 data in the body.
|
|
75
|
+
*
|
|
76
|
+
* @param baseFetch - The underlying fetch implementation to wrap
|
|
77
|
+
* @returns A fetch-compatible function with the shim applied
|
|
78
|
+
*/
|
|
79
|
+
function withX402BodyShim(baseFetch) {
|
|
80
|
+
return async (input, init) => {
|
|
81
|
+
const response = await baseFetch(input, init);
|
|
82
|
+
if (response.status === 402 && !response.headers.get(PAYMENT_REQUIRED_HEADER)) {
|
|
83
|
+
return normalizePaymentRequiredResponse(response);
|
|
84
|
+
}
|
|
85
|
+
return response;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Builds a `@x402/svm`-compatible `TransactionPartialSigner` from a web3auth
|
|
91
|
+
* Solana provider.
|
|
92
|
+
*
|
|
93
|
+
* The web3auth `signTransaction` call returns the signer's Ed25519 signature
|
|
94
|
+
* encoded in base58 (64 bytes). We decode it back to bytes and slot it into
|
|
95
|
+
* the signature dictionary that `@solana/kit`'s partial-signing helpers expect.
|
|
96
|
+
*/
|
|
97
|
+
function createSvmSigner(wallet, walletAddress) {
|
|
98
|
+
const base58Encoder = getBase58Encoder();
|
|
99
|
+
const signerAddress = address(walletAddress);
|
|
100
|
+
const clientSvmSigner = toClientSvmSigner({
|
|
101
|
+
address: signerAddress,
|
|
102
|
+
signTransactions: async transactions => {
|
|
103
|
+
const signatureDictionaries = await Promise.all(transactions.map(async tx => {
|
|
104
|
+
const signatureBase58 = await walletSignTransaction(wallet, tx);
|
|
105
|
+
return {
|
|
106
|
+
[signerAddress]: base58Encoder.encode(signatureBase58)
|
|
107
|
+
};
|
|
108
|
+
}));
|
|
109
|
+
return signatureDictionaries;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return clientSvmSigner;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Creates a payment-aware fetch function for a connected Solana wallet.
|
|
117
|
+
* Registers the exact SVM payment scheme and applies the body-shim so that
|
|
118
|
+
* servers returning v2 payment requirements in the response body are handled
|
|
119
|
+
* transparently.
|
|
120
|
+
*
|
|
121
|
+
* @param wallet - Connected Solana wallet (must have an account)
|
|
122
|
+
* @param walletAddress - The wallet's public key as a base58 address string
|
|
123
|
+
* @param rpcUrl - Optional custom Solana RPC URL (defaults to public cluster endpoints)
|
|
124
|
+
* @returns A fetch-compatible function that handles x402 payment flows
|
|
125
|
+
*/
|
|
126
|
+
function createSolanaX402Fetch(wallet, walletAddress, rpcUrl) {
|
|
127
|
+
if (!walletAddress) throw new Error("Wallet address is unavailable.");
|
|
128
|
+
const svmSigner = createSvmSigner(wallet, walletAddress);
|
|
129
|
+
const client = new x402Client().register(SOLANA_CAIP2_WILDCARD, new ExactSvmScheme(svmSigner, rpcUrl ? {
|
|
130
|
+
rpcUrl
|
|
131
|
+
} : undefined));
|
|
132
|
+
return wrapFetchWithPayment(withX402BodyShim(fetch), client);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Creates a payment-aware fetch function for an EVM typed-data signer.
|
|
137
|
+
* Registers the exact EVM payment scheme and applies the body-shim so that
|
|
138
|
+
* servers returning v2 payment requirements in the response body are handled
|
|
139
|
+
* transparently.
|
|
140
|
+
*
|
|
141
|
+
* @param signer - Minimal signer with an address and EIP-712 signTypedData implementation
|
|
142
|
+
* @returns A fetch-compatible function that handles x402 payment flows
|
|
143
|
+
*/
|
|
144
|
+
function createEvmX402Fetch(walletClient) {
|
|
145
|
+
var _walletClient$account;
|
|
146
|
+
const address = (_walletClient$account = walletClient.account) === null || _walletClient$account === void 0 ? void 0 : _walletClient$account.address;
|
|
147
|
+
if (!address) throw new Error("Wallet account is unavailable.");
|
|
148
|
+
const evmSigner = toClientEvmSigner({
|
|
149
|
+
address,
|
|
150
|
+
signTypedData: async params => {
|
|
151
|
+
const {
|
|
152
|
+
domain,
|
|
153
|
+
types,
|
|
154
|
+
primaryType,
|
|
155
|
+
message
|
|
156
|
+
} = params;
|
|
157
|
+
return walletClient.signTypedData({
|
|
158
|
+
account: address,
|
|
159
|
+
domain,
|
|
160
|
+
types,
|
|
161
|
+
primaryType,
|
|
162
|
+
message
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
const client = new x402Client().register(EVM_CAIP2_WILDCARD, new ExactEvmScheme(evmSigner));
|
|
167
|
+
return wrapFetchWithPayment(withX402BodyShim(fetch), client);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export { EVM_CAIP2_WILDCARD, PAYMENT_REQUIRED_HEADER, SOLANA_CAIP2_WILDCARD, createEvmX402Fetch, createProviderBackedEvmSigner, createSolanaX402Fetch, getEvmAddress, withX402BodyShim };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
3
|
+
import { useChain } from '../react/hooks/useChain.js';
|
|
4
|
+
import { useWeb3Auth } from '../react/hooks/useWeb3Auth.js';
|
|
5
|
+
import { createSolanaX402Fetch, getEvmAddress, createProviderBackedEvmSigner, createEvmX402Fetch } from './index.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Web3Auth-integrated x402 fetch hook.
|
|
9
|
+
*
|
|
10
|
+
* Automatically selects the correct payment path based on the currently connected
|
|
11
|
+
* chain namespace:
|
|
12
|
+
* - **Solana** - uses `createSolanaX402Fetch` backed by the web3auth Solana wallet.
|
|
13
|
+
* - **EVM** - uses `createEvmX402Fetch` backed by the web3auth EIP-1193 provider.
|
|
14
|
+
*
|
|
15
|
+
* Callers do not need to pass a signer manually; it is sourced internally.
|
|
16
|
+
* When `address` is provided, it takes precedence over the provider's active account.
|
|
17
|
+
*/
|
|
18
|
+
const useX402Fetch = address => {
|
|
19
|
+
const {
|
|
20
|
+
chainNamespace
|
|
21
|
+
} = useChain();
|
|
22
|
+
const {
|
|
23
|
+
web3Auth,
|
|
24
|
+
isConnected,
|
|
25
|
+
connection
|
|
26
|
+
} = useWeb3Auth();
|
|
27
|
+
// const { solanaWallet, accounts } = useSolanaWallet();
|
|
28
|
+
|
|
29
|
+
const fetchWithPayment = useCallback(async ({
|
|
30
|
+
url,
|
|
31
|
+
options
|
|
32
|
+
}) => {
|
|
33
|
+
if (!isConnected) throw new Error("Wallet not connected");
|
|
34
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {
|
|
35
|
+
var _solanaWallet$account;
|
|
36
|
+
const {
|
|
37
|
+
solanaWallet
|
|
38
|
+
} = connection;
|
|
39
|
+
if (!solanaWallet || !((_solanaWallet$account = solanaWallet.accounts) !== null && _solanaWallet$account !== void 0 && _solanaWallet$account[0])) throw new Error("Solana wallet not available");
|
|
40
|
+
const account = solanaWallet.accounts[0];
|
|
41
|
+
if (!account) throw new Error("Solana account not available");
|
|
42
|
+
return createSolanaX402Fetch(solanaWallet, account.address)(url, options);
|
|
43
|
+
}
|
|
44
|
+
if (chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
45
|
+
const provider = connection === null || connection === void 0 ? void 0 : connection.ethereumProvider;
|
|
46
|
+
if (!provider) throw new Error("EVM provider not available");
|
|
47
|
+
const evmAddress = address !== null && address !== void 0 ? address : await getEvmAddress(provider);
|
|
48
|
+
if (!evmAddress) throw new Error("EVM address not available");
|
|
49
|
+
const signer = createProviderBackedEvmSigner(provider, evmAddress);
|
|
50
|
+
return createEvmX402Fetch(signer)(url, options);
|
|
51
|
+
}
|
|
52
|
+
throw new Error("Unsupported chain namespace");
|
|
53
|
+
}, [web3Auth, isConnected, chainNamespace, address, connection]);
|
|
54
|
+
return {
|
|
55
|
+
fetchWithPayment
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { createEvmX402Fetch, createProviderBackedEvmSigner, createSolanaX402Fetch, getEvmAddress, useX402Fetch };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { toValue } from 'vue';
|
|
2
|
+
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
3
|
+
import { useWeb3Auth } from '../vue/composables/useWeb3Auth.js';
|
|
4
|
+
import { createSolanaX402Fetch, getEvmAddress, createProviderBackedEvmSigner, createEvmX402Fetch } from './index.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Web3Auth-integrated x402 fetch composable.
|
|
8
|
+
*
|
|
9
|
+
* Automatically selects the correct payment path based on the currently connected
|
|
10
|
+
* chain namespace:
|
|
11
|
+
* - **Solana** - uses `createSolanaX402Fetch` backed by the web3auth Solana wallet.
|
|
12
|
+
* - **EVM** - uses `createEvmX402Fetch` backed by the web3auth EIP-1193 provider.
|
|
13
|
+
*
|
|
14
|
+
* Callers do not need to pass a signer manually; it is sourced internally.
|
|
15
|
+
* When `address` is provided, it takes precedence over the provider's active account.
|
|
16
|
+
*/
|
|
17
|
+
const useX402Fetch = address => {
|
|
18
|
+
const {
|
|
19
|
+
isConnected,
|
|
20
|
+
chainNamespace,
|
|
21
|
+
connection
|
|
22
|
+
} = useWeb3Auth();
|
|
23
|
+
const fetchWithPayment = async ({
|
|
24
|
+
url,
|
|
25
|
+
options
|
|
26
|
+
}) => {
|
|
27
|
+
if (!isConnected.value) throw new Error("Wallet not connected");
|
|
28
|
+
if (chainNamespace.value === CHAIN_NAMESPACES.SOLANA) {
|
|
29
|
+
var _solanaWallet$account;
|
|
30
|
+
const {
|
|
31
|
+
solanaWallet
|
|
32
|
+
} = connection.value;
|
|
33
|
+
if (!solanaWallet || !((_solanaWallet$account = solanaWallet.accounts) !== null && _solanaWallet$account !== void 0 && _solanaWallet$account[0])) throw new Error("Solana wallet not available");
|
|
34
|
+
const account = solanaWallet.accounts[0];
|
|
35
|
+
if (!account) throw new Error("Solana account not available");
|
|
36
|
+
return createSolanaX402Fetch(solanaWallet, account.address)(url, options);
|
|
37
|
+
}
|
|
38
|
+
if (chainNamespace.value === CHAIN_NAMESPACES.EIP155) {
|
|
39
|
+
var _connection$value, _toValue;
|
|
40
|
+
const provider = (_connection$value = connection.value) === null || _connection$value === void 0 ? void 0 : _connection$value.ethereumProvider;
|
|
41
|
+
if (!provider) throw new Error("EVM provider not available");
|
|
42
|
+
const evmAddress = (_toValue = toValue(address)) !== null && _toValue !== void 0 ? _toValue : await getEvmAddress(provider);
|
|
43
|
+
if (!evmAddress) throw new Error("EVM address not available");
|
|
44
|
+
const signer = createProviderBackedEvmSigner(provider, evmAddress);
|
|
45
|
+
return createEvmX402Fetch(signer)(url, options);
|
|
46
|
+
}
|
|
47
|
+
throw new Error("Unsupported chain namespace");
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
fetchWithPayment
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { createEvmX402Fetch, createSolanaX402Fetch, useX402Fetch };
|