thirdweb 5.99.1-nightly-1985de89aae5196233789221ad06f1b6554d27fc-20250513000404 → 5.99.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/cjs/extensions/erc1155/drops/read/canClaim.js +1 -1
- package/dist/cjs/extensions/erc1155/drops/read/getActiveClaimCondition.js +1 -0
- package/dist/cjs/extensions/erc1155/drops/read/getActiveClaimCondition.js.map +1 -1
- package/dist/cjs/extensions/erc1155/drops/read/getClaimConditions.js +1 -0
- package/dist/cjs/extensions/erc1155/drops/read/getClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/erc1155/drops/write/claimTo.js +1 -0
- package/dist/cjs/extensions/erc1155/drops/write/claimTo.js.map +1 -1
- package/dist/cjs/extensions/erc1155/drops/write/resetClaimEligibility.js +1 -0
- package/dist/cjs/extensions/erc1155/drops/write/resetClaimEligibility.js.map +1 -1
- package/dist/cjs/extensions/erc1155/drops/write/setClaimConditions.js +1 -0
- package/dist/cjs/extensions/erc1155/drops/write/setClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/lazyMint.js +1 -0
- package/dist/cjs/extensions/erc1155/write/lazyMint.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/mintAdditionalSupplyTo.js +1 -0
- package/dist/cjs/extensions/erc1155/write/mintAdditionalSupplyTo.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/mintAdditionalSupplyToBatch.js +1 -0
- package/dist/cjs/extensions/erc1155/write/mintAdditionalSupplyToBatch.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/mintTo.js +1 -0
- package/dist/cjs/extensions/erc1155/write/mintTo.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/mintToBatch.js +1 -0
- package/dist/cjs/extensions/erc1155/write/mintToBatch.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/sigMint.js +1 -0
- package/dist/cjs/extensions/erc1155/write/sigMint.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/updateTokenURI.js +1 -0
- package/dist/cjs/extensions/erc1155/write/updateTokenURI.js.map +1 -1
- package/dist/cjs/extensions/erc20/drops/read/canClaim.js +1 -1
- package/dist/cjs/extensions/erc20/drops/read/getActiveClaimCondition.js +1 -0
- package/dist/cjs/extensions/erc20/drops/read/getActiveClaimCondition.js.map +1 -1
- package/dist/cjs/extensions/erc20/drops/read/getClaimConditions.js +1 -0
- package/dist/cjs/extensions/erc20/drops/read/getClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/erc20/drops/write/claimTo.js +2 -0
- package/dist/cjs/extensions/erc20/drops/write/claimTo.js.map +1 -1
- package/dist/cjs/extensions/erc20/drops/write/resetClaimEligibility.js +1 -0
- package/dist/cjs/extensions/erc20/drops/write/resetClaimEligibility.js.map +1 -1
- package/dist/cjs/extensions/erc20/drops/write/setClaimConditions.js +1 -0
- package/dist/cjs/extensions/erc20/drops/write/setClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/erc20/write/mintTo.js +1 -0
- package/dist/cjs/extensions/erc20/write/mintTo.js.map +1 -1
- package/dist/cjs/extensions/erc20/write/sigMint.js +1 -0
- package/dist/cjs/extensions/erc20/write/sigMint.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/read/canClaim.js +2 -0
- package/dist/cjs/extensions/erc721/drops/read/canClaim.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/read/getActiveClaimCondition.js +4 -0
- package/dist/cjs/extensions/erc721/drops/read/getActiveClaimCondition.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/read/getClaimConditions.js +3 -0
- package/dist/cjs/extensions/erc721/drops/read/getClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/write/claimTo.js +1 -0
- package/dist/cjs/extensions/erc721/drops/write/claimTo.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/write/claimToBatch.js +1 -0
- package/dist/cjs/extensions/erc721/drops/write/claimToBatch.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/write/resetClaimEligibility.js +1 -0
- package/dist/cjs/extensions/erc721/drops/write/resetClaimEligibility.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/write/setClaimConditions.js +1 -0
- package/dist/cjs/extensions/erc721/drops/write/setClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js +1 -0
- package/dist/cjs/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js.map +1 -1
- package/dist/cjs/extensions/erc721/lazyMinting/write/reveal.js +1 -1
- package/dist/cjs/extensions/erc721/write/lazyMint.js +2 -0
- package/dist/cjs/extensions/erc721/write/lazyMint.js.map +1 -1
- package/dist/cjs/extensions/erc721/write/mintTo.js +2 -0
- package/dist/cjs/extensions/erc721/write/mintTo.js.map +1 -1
- package/dist/cjs/extensions/erc721/write/sigMint.js +2 -0
- package/dist/cjs/extensions/erc721/write/sigMint.js.map +1 -1
- package/dist/cjs/extensions/erc721/write/updateTokenURI.js +1 -0
- package/dist/cjs/extensions/erc721/write/updateTokenURI.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +9 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js +6 -39
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js +52 -7
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/in-app.js +76 -30
- package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js +9 -1
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/read/canClaim.js +1 -1
- package/dist/esm/extensions/erc1155/drops/read/getActiveClaimCondition.js +1 -0
- package/dist/esm/extensions/erc1155/drops/read/getActiveClaimCondition.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/read/getClaimConditions.js +1 -0
- package/dist/esm/extensions/erc1155/drops/read/getClaimConditions.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/write/claimTo.js +1 -0
- package/dist/esm/extensions/erc1155/drops/write/claimTo.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/write/resetClaimEligibility.js +1 -0
- package/dist/esm/extensions/erc1155/drops/write/resetClaimEligibility.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/write/setClaimConditions.js +1 -0
- package/dist/esm/extensions/erc1155/drops/write/setClaimConditions.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/lazyMint.js +1 -0
- package/dist/esm/extensions/erc1155/write/lazyMint.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/mintAdditionalSupplyTo.js +1 -0
- package/dist/esm/extensions/erc1155/write/mintAdditionalSupplyTo.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/mintAdditionalSupplyToBatch.js +1 -0
- package/dist/esm/extensions/erc1155/write/mintAdditionalSupplyToBatch.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/mintTo.js +1 -0
- package/dist/esm/extensions/erc1155/write/mintTo.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/mintToBatch.js +1 -0
- package/dist/esm/extensions/erc1155/write/mintToBatch.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/sigMint.js +1 -0
- package/dist/esm/extensions/erc1155/write/sigMint.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/updateTokenURI.js +1 -0
- package/dist/esm/extensions/erc1155/write/updateTokenURI.js.map +1 -1
- package/dist/esm/extensions/erc20/drops/read/canClaim.js +1 -1
- package/dist/esm/extensions/erc20/drops/read/getActiveClaimCondition.js +1 -0
- package/dist/esm/extensions/erc20/drops/read/getActiveClaimCondition.js.map +1 -1
- package/dist/esm/extensions/erc20/drops/read/getClaimConditions.js +1 -0
- package/dist/esm/extensions/erc20/drops/read/getClaimConditions.js.map +1 -1
- package/dist/esm/extensions/erc20/drops/write/claimTo.js +2 -0
- package/dist/esm/extensions/erc20/drops/write/claimTo.js.map +1 -1
- package/dist/esm/extensions/erc20/drops/write/resetClaimEligibility.js +1 -0
- package/dist/esm/extensions/erc20/drops/write/resetClaimEligibility.js.map +1 -1
- package/dist/esm/extensions/erc20/drops/write/setClaimConditions.js +1 -0
- package/dist/esm/extensions/erc20/drops/write/setClaimConditions.js.map +1 -1
- package/dist/esm/extensions/erc20/write/mintTo.js +1 -0
- package/dist/esm/extensions/erc20/write/mintTo.js.map +1 -1
- package/dist/esm/extensions/erc20/write/sigMint.js +1 -0
- package/dist/esm/extensions/erc20/write/sigMint.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/read/canClaim.js +2 -0
- package/dist/esm/extensions/erc721/drops/read/canClaim.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/read/getActiveClaimCondition.js +4 -0
- package/dist/esm/extensions/erc721/drops/read/getActiveClaimCondition.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/read/getClaimConditions.js +3 -0
- package/dist/esm/extensions/erc721/drops/read/getClaimConditions.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/write/claimTo.js +1 -0
- package/dist/esm/extensions/erc721/drops/write/claimTo.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/write/claimToBatch.js +1 -0
- package/dist/esm/extensions/erc721/drops/write/claimToBatch.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/write/resetClaimEligibility.js +1 -0
- package/dist/esm/extensions/erc721/drops/write/resetClaimEligibility.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/write/setClaimConditions.js +1 -0
- package/dist/esm/extensions/erc721/drops/write/setClaimConditions.js.map +1 -1
- package/dist/esm/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js +1 -0
- package/dist/esm/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js.map +1 -1
- package/dist/esm/extensions/erc721/lazyMinting/write/reveal.js +1 -1
- package/dist/esm/extensions/erc721/write/lazyMint.js +2 -0
- package/dist/esm/extensions/erc721/write/lazyMint.js.map +1 -1
- package/dist/esm/extensions/erc721/write/mintTo.js +2 -0
- package/dist/esm/extensions/erc721/write/mintTo.js.map +1 -1
- package/dist/esm/extensions/erc721/write/sigMint.js +2 -0
- package/dist/esm/extensions/erc721/write/sigMint.js.map +1 -1
- package/dist/esm/extensions/erc721/write/updateTokenURI.js +1 -0
- package/dist/esm/extensions/erc721/write/updateTokenURI.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +9 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js +7 -40
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js +51 -6
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/web/in-app.js +76 -30
- package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/web-connector.js +9 -1
- package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/types/extensions/erc1155/drops/read/canClaim.d.ts +1 -1
- package/dist/types/extensions/erc1155/drops/read/getActiveClaimCondition.d.ts +1 -0
- package/dist/types/extensions/erc1155/drops/read/getActiveClaimCondition.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/drops/read/getClaimConditions.d.ts +1 -0
- package/dist/types/extensions/erc1155/drops/read/getClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/drops/write/claimTo.d.ts +1 -0
- package/dist/types/extensions/erc1155/drops/write/claimTo.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/drops/write/resetClaimEligibility.d.ts +1 -0
- package/dist/types/extensions/erc1155/drops/write/resetClaimEligibility.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/drops/write/setClaimConditions.d.ts +1 -0
- package/dist/types/extensions/erc1155/drops/write/setClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/lazyMint.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/lazyMint.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/mintAdditionalSupplyTo.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/mintAdditionalSupplyTo.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/mintAdditionalSupplyToBatch.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/mintAdditionalSupplyToBatch.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/mintTo.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/mintTo.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/mintToBatch.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/mintToBatch.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/sigMint.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/sigMint.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/updateTokenURI.d.ts +1 -0
- package/dist/types/extensions/erc1155/write/updateTokenURI.d.ts.map +1 -1
- package/dist/types/extensions/erc20/drops/read/canClaim.d.ts +1 -1
- package/dist/types/extensions/erc20/drops/read/getActiveClaimCondition.d.ts +1 -0
- package/dist/types/extensions/erc20/drops/read/getActiveClaimCondition.d.ts.map +1 -1
- package/dist/types/extensions/erc20/drops/read/getClaimConditions.d.ts +1 -0
- package/dist/types/extensions/erc20/drops/read/getClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/erc20/drops/write/claimTo.d.ts +2 -0
- package/dist/types/extensions/erc20/drops/write/claimTo.d.ts.map +1 -1
- package/dist/types/extensions/erc20/drops/write/resetClaimEligibility.d.ts +1 -0
- package/dist/types/extensions/erc20/drops/write/resetClaimEligibility.d.ts.map +1 -1
- package/dist/types/extensions/erc20/drops/write/setClaimConditions.d.ts +1 -0
- package/dist/types/extensions/erc20/drops/write/setClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/erc20/write/mintTo.d.ts +1 -0
- package/dist/types/extensions/erc20/write/mintTo.d.ts.map +1 -1
- package/dist/types/extensions/erc20/write/sigMint.d.ts +1 -0
- package/dist/types/extensions/erc20/write/sigMint.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/read/canClaim.d.ts +2 -0
- package/dist/types/extensions/erc721/drops/read/canClaim.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/read/getActiveClaimCondition.d.ts +4 -0
- package/dist/types/extensions/erc721/drops/read/getActiveClaimCondition.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/read/getClaimConditions.d.ts +3 -0
- package/dist/types/extensions/erc721/drops/read/getClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/write/claimTo.d.ts +1 -0
- package/dist/types/extensions/erc721/drops/write/claimTo.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/write/claimToBatch.d.ts +1 -0
- package/dist/types/extensions/erc721/drops/write/claimToBatch.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/write/resetClaimEligibility.d.ts +1 -0
- package/dist/types/extensions/erc721/drops/write/resetClaimEligibility.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/write/setClaimConditions.d.ts +1 -0
- package/dist/types/extensions/erc721/drops/write/setClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.d.ts +1 -0
- package/dist/types/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.d.ts.map +1 -1
- package/dist/types/extensions/erc721/lazyMinting/write/reveal.d.ts +1 -1
- package/dist/types/extensions/erc721/write/lazyMint.d.ts +2 -0
- package/dist/types/extensions/erc721/write/lazyMint.d.ts.map +1 -1
- package/dist/types/extensions/erc721/write/mintTo.d.ts +2 -0
- package/dist/types/extensions/erc721/write/mintTo.d.ts.map +1 -1
- package/dist/types/extensions/erc721/write/sigMint.d.ts +2 -0
- package/dist/types/extensions/erc721/write/sigMint.d.ts.map +1 -1
- package/dist/types/extensions/erc721/write/updateTokenURI.d.ts +1 -0
- package/dist/types/extensions/erc721/write/updateTokenURI.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.d.ts +12 -12
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts +76 -30
- package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/extensions/erc1155/drops/read/canClaim.ts +1 -1
- package/src/extensions/erc1155/drops/read/getActiveClaimCondition.ts +1 -0
- package/src/extensions/erc1155/drops/read/getClaimConditions.ts +1 -0
- package/src/extensions/erc1155/drops/write/claimTo.ts +1 -0
- package/src/extensions/erc1155/drops/write/resetClaimEligibility.ts +1 -0
- package/src/extensions/erc1155/drops/write/setClaimConditions.ts +1 -0
- package/src/extensions/erc1155/write/lazyMint.ts +1 -0
- package/src/extensions/erc1155/write/mintAdditionalSupplyTo.ts +1 -0
- package/src/extensions/erc1155/write/mintAdditionalSupplyToBatch.ts +1 -0
- package/src/extensions/erc1155/write/mintTo.ts +1 -0
- package/src/extensions/erc1155/write/mintToBatch.ts +1 -0
- package/src/extensions/erc1155/write/sigMint.ts +1 -0
- package/src/extensions/erc1155/write/updateTokenURI.ts +1 -0
- package/src/extensions/erc20/drops/read/canClaim.ts +1 -1
- package/src/extensions/erc20/drops/read/getActiveClaimCondition.ts +1 -0
- package/src/extensions/erc20/drops/read/getClaimConditions.ts +1 -0
- package/src/extensions/erc20/drops/write/claimTo.ts +2 -0
- package/src/extensions/erc20/drops/write/resetClaimEligibility.ts +1 -0
- package/src/extensions/erc20/drops/write/setClaimConditions.ts +1 -0
- package/src/extensions/erc20/write/mintTo.ts +1 -0
- package/src/extensions/erc20/write/sigMint.ts +1 -0
- package/src/extensions/erc721/drops/read/canClaim.ts +2 -0
- package/src/extensions/erc721/drops/read/getActiveClaimCondition.ts +4 -0
- package/src/extensions/erc721/drops/read/getClaimConditions.ts +3 -0
- package/src/extensions/erc721/drops/write/claimTo.ts +1 -0
- package/src/extensions/erc721/drops/write/claimToBatch.ts +1 -0
- package/src/extensions/erc721/drops/write/resetClaimEligibility.ts +1 -0
- package/src/extensions/erc721/drops/write/setClaimConditions.ts +1 -0
- package/src/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.ts +1 -0
- package/src/extensions/erc721/lazyMinting/write/reveal.ts +1 -1
- package/src/extensions/erc721/write/lazyMint.ts +2 -0
- package/src/extensions/erc721/write/mintTo.ts +2 -0
- package/src/extensions/erc721/write/sigMint.ts +2 -0
- package/src/extensions/erc721/write/updateTokenURI.ts +1 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +10 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.tsx +7 -47
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/{fetchBalancesForWallet.ts → fetchBalancesForWallet.tsx} +70 -8
- package/src/version.ts +1 -1
- package/src/wallets/in-app/web/in-app.ts +76 -30
- package/src/wallets/in-app/web/lib/in-app-integration.test.ts +112 -0
- package/src/wallets/in-app/web/lib/web-connector.ts +11 -1
- package/src/wallets/in-app/web/lib/in-app-backend.test.ts +0 -27
@@ -4,7 +4,6 @@ import {
|
|
4
4
|
ChevronRightIcon,
|
5
5
|
Cross2Icon,
|
6
6
|
} from "@radix-ui/react-icons";
|
7
|
-
import { useQuery } from "@tanstack/react-query";
|
8
7
|
import { trackPayEvent } from "../../../../../../../analytics/track/pay.js";
|
9
8
|
import type { Chain } from "../../../../../../../chains/types.js";
|
10
9
|
import type { ThirdwebClient } from "../../../../../../../client/client.js";
|
@@ -43,14 +42,9 @@ import { FiatValue } from "./FiatValue.js";
|
|
43
42
|
import { WalletRow } from "./WalletRow.js";
|
44
43
|
import {
|
45
44
|
type TokenBalance,
|
46
|
-
|
45
|
+
useWalletsAndBalances,
|
47
46
|
} from "./fetchBalancesForWallet.js";
|
48
47
|
|
49
|
-
type WalletKey = {
|
50
|
-
id: WalletId;
|
51
|
-
address: string;
|
52
|
-
};
|
53
|
-
|
54
48
|
export function TokenSelectorScreen(props: {
|
55
49
|
client: ThirdwebClient;
|
56
50
|
sourceTokens: SupportedTokens | undefined;
|
@@ -71,46 +65,12 @@ export function TokenSelectorScreen(props: {
|
|
71
65
|
const chainInfo = useChainMetadata(props.toChain);
|
72
66
|
const theme = useCustomTheme();
|
73
67
|
|
74
|
-
const walletsAndBalances =
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
props.tokenAmount,
|
81
|
-
props.mode,
|
82
|
-
activeAccount?.address,
|
83
|
-
connectedWallets.map((w) => w.getAccount()?.address),
|
84
|
-
],
|
85
|
-
enabled: !!props.sourceSupportedTokens && !!chainInfo.data,
|
86
|
-
queryFn: async () => {
|
87
|
-
const entries = await Promise.all(
|
88
|
-
connectedWallets.map(async (wallet) => {
|
89
|
-
const balances = await fetchBalancesForWallet({
|
90
|
-
wallet,
|
91
|
-
accountAddress: activeAccount?.address,
|
92
|
-
sourceSupportedTokens: props.sourceSupportedTokens || [],
|
93
|
-
toChain: props.toChain,
|
94
|
-
toToken: props.toToken,
|
95
|
-
tokenAmount: props.tokenAmount,
|
96
|
-
mode: props.mode,
|
97
|
-
client: props.client,
|
98
|
-
});
|
99
|
-
return [
|
100
|
-
{
|
101
|
-
id: wallet.id,
|
102
|
-
address: wallet.getAccount()?.address || "",
|
103
|
-
} as WalletKey,
|
104
|
-
balances,
|
105
|
-
] as const;
|
106
|
-
}),
|
107
|
-
);
|
108
|
-
const map = new Map<WalletKey, TokenBalance[]>();
|
109
|
-
for (const entry of entries) {
|
110
|
-
map.set(entry[0], entry[1]);
|
111
|
-
}
|
112
|
-
return map;
|
113
|
-
},
|
68
|
+
const walletsAndBalances = useWalletsAndBalances({
|
69
|
+
client: props.client,
|
70
|
+
sourceSupportedTokens: props.sourceSupportedTokens || [],
|
71
|
+
toChain: props.toChain,
|
72
|
+
toToken: props.toToken,
|
73
|
+
mode: props.mode,
|
114
74
|
});
|
115
75
|
|
116
76
|
if (
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
1
2
|
import type { Chain } from "../../../../../../../chains/types.js";
|
2
3
|
import { getCachedChain } from "../../../../../../../chains/utils.js";
|
3
4
|
import type { ThirdwebClient } from "../../../../../../../client/client.js";
|
@@ -9,7 +10,11 @@ import {
|
|
9
10
|
type GetWalletBalanceResult,
|
10
11
|
getWalletBalance,
|
11
12
|
} from "../../../../../../../wallets/utils/getWalletBalance.js";
|
13
|
+
import type { WalletId } from "../../../../../../../wallets/wallet-types.js";
|
12
14
|
import type { PayUIOptions } from "../../../../../../core/hooks/connection/ConnectButtonProps.js";
|
15
|
+
import { useChainMetadata } from "../../../../../../core/hooks/others/useChainQuery.js";
|
16
|
+
import { useActiveAccount } from "../../../../../../core/hooks/wallets/useActiveAccount.js";
|
17
|
+
import { useConnectedWallets } from "../../../../../../core/hooks/wallets/useConnectedWallets.js";
|
13
18
|
import type {
|
14
19
|
SupportedTokens,
|
15
20
|
TokenInfo,
|
@@ -32,7 +37,6 @@ type FetchBalancesParams = {
|
|
32
37
|
sourceSupportedTokens: SupportedTokens;
|
33
38
|
toChain: Chain;
|
34
39
|
toToken: ERC20OrNativeToken;
|
35
|
-
tokenAmount: string;
|
36
40
|
mode: PayUIOptions["mode"];
|
37
41
|
client: ThirdwebClient;
|
38
42
|
};
|
@@ -43,13 +47,70 @@ export type TokenBalance = {
|
|
43
47
|
token: TokenInfo;
|
44
48
|
};
|
45
49
|
|
46
|
-
|
50
|
+
type WalletKey = {
|
51
|
+
id: WalletId;
|
52
|
+
address: string;
|
53
|
+
};
|
54
|
+
|
55
|
+
export function useWalletsAndBalances(props: {
|
56
|
+
sourceSupportedTokens: SupportedTokens;
|
57
|
+
toChain: Chain;
|
58
|
+
toToken: ERC20OrNativeToken;
|
59
|
+
mode: PayUIOptions["mode"];
|
60
|
+
client: ThirdwebClient;
|
61
|
+
}) {
|
62
|
+
const activeAccount = useActiveAccount();
|
63
|
+
const connectedWallets = useConnectedWallets();
|
64
|
+
const chainInfo = useChainMetadata(props.toChain);
|
65
|
+
|
66
|
+
return useQuery({
|
67
|
+
queryKey: [
|
68
|
+
"wallets-and-balances",
|
69
|
+
props.sourceSupportedTokens,
|
70
|
+
props.toChain.id,
|
71
|
+
props.toToken,
|
72
|
+
props.mode,
|
73
|
+
activeAccount?.address,
|
74
|
+
connectedWallets.map((w) => w.getAccount()?.address),
|
75
|
+
],
|
76
|
+
enabled:
|
77
|
+
!!props.sourceSupportedTokens && !!chainInfo.data && !!activeAccount,
|
78
|
+
queryFn: async () => {
|
79
|
+
const entries = await Promise.all(
|
80
|
+
connectedWallets.map(async (wallet) => {
|
81
|
+
const balances = await fetchBalancesForWallet({
|
82
|
+
wallet,
|
83
|
+
accountAddress: activeAccount?.address,
|
84
|
+
sourceSupportedTokens: props.sourceSupportedTokens || [],
|
85
|
+
toChain: props.toChain,
|
86
|
+
toToken: props.toToken,
|
87
|
+
mode: props.mode,
|
88
|
+
client: props.client,
|
89
|
+
});
|
90
|
+
return [
|
91
|
+
{
|
92
|
+
id: wallet.id,
|
93
|
+
address: wallet.getAccount()?.address || "",
|
94
|
+
} as WalletKey,
|
95
|
+
balances,
|
96
|
+
] as const;
|
97
|
+
}),
|
98
|
+
);
|
99
|
+
const map = new Map<WalletKey, TokenBalance[]>();
|
100
|
+
for (const entry of entries) {
|
101
|
+
map.set(entry[0], entry[1]);
|
102
|
+
}
|
103
|
+
return map;
|
104
|
+
},
|
105
|
+
});
|
106
|
+
}
|
107
|
+
|
108
|
+
async function fetchBalancesForWallet({
|
47
109
|
wallet,
|
48
110
|
accountAddress,
|
49
111
|
sourceSupportedTokens,
|
50
112
|
toChain,
|
51
113
|
toToken,
|
52
|
-
tokenAmount,
|
53
114
|
mode,
|
54
115
|
client,
|
55
116
|
}: FetchBalancesParams): Promise<TokenBalance[]> {
|
@@ -133,7 +194,7 @@ export async function fetchBalancesForWallet({
|
|
133
194
|
b.chain.id === chainId &&
|
134
195
|
b.token.address.toLowerCase() === token.address.toLowerCase(),
|
135
196
|
);
|
136
|
-
if (
|
197
|
+
if (isAlreadyFetched && !isNative) {
|
137
198
|
// ERC20 on insight-enabled chain already handled by insight call
|
138
199
|
continue;
|
139
200
|
}
|
@@ -148,11 +209,12 @@ export async function fetchBalancesForWallet({
|
|
148
209
|
});
|
149
210
|
|
150
211
|
const include =
|
151
|
-
token.address ===
|
212
|
+
token.address.toLowerCase() ===
|
213
|
+
destinationToken.address.toLowerCase() &&
|
152
214
|
chain.id === toChain.id
|
153
|
-
?
|
154
|
-
|
155
|
-
|
215
|
+
? !(
|
216
|
+
mode === "fund_wallet" && account.address === accountAddress
|
217
|
+
)
|
156
218
|
: balance.value > 0n;
|
157
219
|
|
158
220
|
if (include) {
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.99.1
|
1
|
+
export const version = "5.99.1";
|
@@ -23,7 +23,7 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
23
23
|
* const account = await wallet.connect({
|
24
24
|
* client,
|
25
25
|
* chain,
|
26
|
-
* strategy: "google",
|
26
|
+
* strategy: "google", // or "apple", "facebook","discord", "github", "twitch", "x", "telegram", "line", "coinbase", etc
|
27
27
|
* });
|
28
28
|
* ```
|
29
29
|
*
|
@@ -31,15 +31,21 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
31
31
|
*
|
32
32
|
* ### Enable smart accounts and sponsor gas for your users:
|
33
33
|
*
|
34
|
+
* With the `executionMode` option, you can enable smart accounts and sponsor gas for your users.
|
35
|
+
*
|
36
|
+
* **Using EIP-7702** (recommended):
|
37
|
+
*
|
38
|
+
* On chains with EIP-7702 enabled, you can upgrade the inapp wallet to a smart account, keeping the same address and performance as the regular EOA.
|
39
|
+
*
|
34
40
|
* ```ts
|
35
41
|
* import { inAppWallet } from "thirdweb/wallets";
|
36
42
|
* import { sepolia } from "thirdweb/chains";
|
37
43
|
*
|
38
44
|
* const wallet = inAppWallet({
|
39
|
-
*
|
40
|
-
*
|
45
|
+
* executionMode: {
|
46
|
+
* mode: "EIP7702",
|
41
47
|
* sponsorGas: true,
|
42
|
-
*
|
48
|
+
* },
|
43
49
|
* });
|
44
50
|
*
|
45
51
|
* // account will be a smart account with sponsored gas enabled
|
@@ -49,8 +55,28 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
49
55
|
* });
|
50
56
|
* ```
|
51
57
|
*
|
58
|
+
* **Using EIP-4337**:
|
59
|
+
*
|
60
|
+
* On chains without EIP-7702 enabled, you can still use smart accounts using EIP-4337, this will return a different address (the smart contract address) than the regular EOA.
|
61
|
+
*
|
62
|
+
* ```ts
|
63
|
+
* import { inAppWallet } from "thirdweb/wallets/in-app";
|
64
|
+
*
|
65
|
+
* const wallet = inAppWallet({
|
66
|
+
* executionMode: {
|
67
|
+
* mode: "EIP4337",
|
68
|
+
* smartAccount: {
|
69
|
+
* chain: sepolia, // chain required for EIP-4337
|
70
|
+
* sponsorGas: true,
|
71
|
+
* }
|
72
|
+
* },
|
73
|
+
* });
|
74
|
+
* ```
|
75
|
+
*
|
52
76
|
* ### Login with email
|
53
77
|
*
|
78
|
+
* To login with email, you can use the `preAuthenticate` function to first send a verification code to the user's email, then login with the verification code.
|
79
|
+
*
|
54
80
|
* ```ts
|
55
81
|
* import { inAppWallet, preAuthenticate } from "thirdweb/wallets/in-app";
|
56
82
|
*
|
@@ -73,22 +99,10 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
73
99
|
* });
|
74
100
|
* ```
|
75
101
|
*
|
76
|
-
* ### Login with
|
77
|
-
* ```ts
|
78
|
-
* import { inAppWallet, createWallet } from "thirdweb/wallets";
|
79
|
-
*
|
80
|
-
* const rabby = createWallet("io.rabby");
|
81
|
-
* const inAppWallet = inAppWallet();
|
102
|
+
* ### Login with phone number
|
82
103
|
*
|
83
|
-
*
|
84
|
-
* strategy: "wallet",
|
85
|
-
* chain: mainnet,
|
86
|
-
* wallet: rabby,
|
87
|
-
* client: MY_CLIENT
|
88
|
-
* });
|
89
|
-
* ```
|
104
|
+
* Similar to email, you can login with a phone number by first sending a verification code to the user's phone number, then login with the verification code.
|
90
105
|
*
|
91
|
-
* ### Login with phone number
|
92
106
|
* ```ts
|
93
107
|
* import { inAppWallet, preAuthenticate } from "thirdweb/wallets/in-app";
|
94
108
|
*
|
@@ -111,8 +125,28 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
111
125
|
* });
|
112
126
|
* ```
|
113
127
|
*
|
128
|
+
* ### Login with another wallet (SIWE)
|
129
|
+
*
|
130
|
+
* You can also login to the in-app wallet with another existing wallet by signing a standard Sign in with Ethereum (SIWE) message.
|
131
|
+
*
|
132
|
+
* ```ts
|
133
|
+
* import { inAppWallet, createWallet } from "thirdweb/wallets";
|
134
|
+
*
|
135
|
+
* const rabby = createWallet("io.rabby");
|
136
|
+
* const inAppWallet = inAppWallet();
|
137
|
+
*
|
138
|
+
* const account = await inAppWallet.connect({
|
139
|
+
* strategy: "wallet",
|
140
|
+
* chain: mainnet,
|
141
|
+
* wallet: rabby,
|
142
|
+
* client: MY_CLIENT
|
143
|
+
* });
|
144
|
+
* ```
|
145
|
+
*
|
114
146
|
* ### Login with passkey
|
115
147
|
*
|
148
|
+
* You can also login with a passkey. This mode requires specifying whether it should create a new passkey, or sign in with an existing passkey. We recommend checking if the user has a passkey stored in their browser to automatically login with it.
|
149
|
+
*
|
116
150
|
* ```ts
|
117
151
|
* import { inAppWallet, hasStoredPasskey } from "thirdweb/wallets/in-app";
|
118
152
|
*
|
@@ -128,6 +162,11 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
128
162
|
* ```
|
129
163
|
*
|
130
164
|
* ### Connect to a guest account
|
165
|
+
*
|
166
|
+
* You can also connect to a guest account, this will create a new account for the user instantly and store it in the browser's local storage.
|
167
|
+
*
|
168
|
+
* You can later "upgrade" this account by linking another auth method, like email or phone for example. This will preserve the account's address and history.
|
169
|
+
*
|
131
170
|
* ```ts
|
132
171
|
* import { inAppWallet } from "thirdweb/wallets";
|
133
172
|
*
|
@@ -141,19 +180,19 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
141
180
|
*
|
142
181
|
* ### Connect to a backend account
|
143
182
|
*
|
144
|
-
*
|
183
|
+
* For usage in backends, you can create wallets with the `backend` strategy and a stable walletSecret.
|
184
|
+
*
|
185
|
+
* Make sure to keep that walletSecret safe as it is the key to access that wallet, never expose it to the client.
|
145
186
|
*
|
146
187
|
* ```ts
|
147
188
|
* import { inAppWallet } from "thirdweb/wallets";
|
148
189
|
*
|
149
|
-
* const wallet = inAppWallet(
|
150
|
-
* storage: inMemoryStorage, // for usage in backends/scripts
|
151
|
-
* });
|
190
|
+
* const wallet = inAppWallet();
|
152
191
|
*
|
153
192
|
* const account = await wallet.connect({
|
154
193
|
* client,
|
155
194
|
* strategy: "backend",
|
156
|
-
* walletSecret: "...", //
|
195
|
+
* walletSecret: "...", // Your own secret, keep it safe
|
157
196
|
* });
|
158
197
|
* ```
|
159
198
|
*
|
@@ -189,16 +228,21 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
189
228
|
* });
|
190
229
|
* ```
|
191
230
|
*
|
192
|
-
* ### Specify a logo for your login page (Connect UI)
|
231
|
+
* ### Specify a logo, icon and name for your login page (Connect UI)
|
232
|
+
*
|
233
|
+
* You can specify a logo, icon and name for your login page to customize how in-app wallets are displayed in the Connect UI components (ConnectButton and ConnectEmbed).
|
234
|
+
*
|
193
235
|
* ```ts
|
194
236
|
* import { inAppWallet } from "thirdweb/wallets";
|
195
237
|
* const wallet = inAppWallet({
|
196
238
|
* metadata: {
|
197
|
-
*
|
198
|
-
*
|
199
|
-
*
|
200
|
-
*
|
201
|
-
*
|
239
|
+
* name: "My App",
|
240
|
+
* icon: "https://example.com/icon.png",
|
241
|
+
* image: {
|
242
|
+
* src: "https://example.com/logo.png",
|
243
|
+
* alt: "My logo",
|
244
|
+
* width: 100,
|
245
|
+
* height: 100,
|
202
246
|
* },
|
203
247
|
* },
|
204
248
|
* });
|
@@ -206,6 +250,8 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
206
250
|
*
|
207
251
|
* ### Hide the ability to export the private key within the Connect Modal UI
|
208
252
|
*
|
253
|
+
* By default, the Connect Modal will show a button to export the private key of the wallet. You can hide this button by setting the `hidePrivateKeyExport` option to `true`.
|
254
|
+
*
|
209
255
|
* ```ts
|
210
256
|
* import { inAppWallet } from "thirdweb/wallets";
|
211
257
|
* const wallet = inAppWallet({
|
@@ -228,7 +274,7 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
228
274
|
*
|
229
275
|
* ### Override storage for the wallet state
|
230
276
|
*
|
231
|
-
* By default, wallet state is stored in the browser's local storage. You can override this behavior by providing a custom storage object, useful for server side integrations.
|
277
|
+
* By default, wallet state is stored in the browser's local storage if in the browser, or in-memory storage if not in the browser. You can override this behavior by providing a custom storage object, useful for server side and CLI integrations.
|
232
278
|
*
|
233
279
|
* ```ts
|
234
280
|
* import { inAppWallet } from "thirdweb/wallets";
|
@@ -0,0 +1,112 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
+
import { sepolia } from "../../../../chains/chain-definitions/sepolia.js";
|
4
|
+
import { parseEventLogs } from "../../../../event/actions/parse-logs.js";
|
5
|
+
import { userOperationEventEvent } from "../../../../extensions/erc4337/__generated__/IEntryPoint/events/UserOperationEvent.js";
|
6
|
+
import { executedEvent } from "../../../../extensions/erc7702/__generated__/MinimalAccount/events/Executed.js";
|
7
|
+
import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
|
8
|
+
import { prepareTransaction } from "../../../../transaction/prepare-transaction.js";
|
9
|
+
import { inAppWallet } from "../in-app.js";
|
10
|
+
describe("InAppWallet Integration Tests", () => {
|
11
|
+
it("should sign a message with backend strategy", async () => {
|
12
|
+
const wallet = inAppWallet();
|
13
|
+
const account = await wallet.connect({
|
14
|
+
client: TEST_CLIENT,
|
15
|
+
strategy: "backend",
|
16
|
+
walletSecret: "test-secret",
|
17
|
+
});
|
18
|
+
expect(account.address).toBeDefined();
|
19
|
+
const message = await account.signMessage({
|
20
|
+
message: "Hello, world!",
|
21
|
+
});
|
22
|
+
expect(message).toBeDefined();
|
23
|
+
});
|
24
|
+
|
25
|
+
it("should sign a message with guest strategy", async () => {
|
26
|
+
const wallet = inAppWallet();
|
27
|
+
const account = await wallet.connect({
|
28
|
+
client: TEST_CLIENT,
|
29
|
+
strategy: "guest",
|
30
|
+
});
|
31
|
+
expect(account.address).toBeDefined();
|
32
|
+
const message = await account.signMessage({
|
33
|
+
message: "Hello, world!",
|
34
|
+
});
|
35
|
+
expect(message).toBeDefined();
|
36
|
+
});
|
37
|
+
|
38
|
+
it("should sponsor gas for a 7702 smart account", async () => {
|
39
|
+
const chain = sepolia;
|
40
|
+
const wallet = inAppWallet({
|
41
|
+
executionMode: {
|
42
|
+
mode: "EIP7702",
|
43
|
+
sponsorGas: true,
|
44
|
+
},
|
45
|
+
});
|
46
|
+
const account = await wallet.connect({
|
47
|
+
client: TEST_CLIENT,
|
48
|
+
strategy: "guest",
|
49
|
+
chain,
|
50
|
+
});
|
51
|
+
expect(account.address).toBeDefined();
|
52
|
+
const tx = await sendAndConfirmTransaction({
|
53
|
+
transaction: prepareTransaction({
|
54
|
+
chain,
|
55
|
+
client: TEST_CLIENT,
|
56
|
+
to: account.address,
|
57
|
+
value: 0n,
|
58
|
+
}),
|
59
|
+
account,
|
60
|
+
});
|
61
|
+
expect(tx.transactionHash).toBeDefined();
|
62
|
+
const logs = parseEventLogs({
|
63
|
+
logs: tx.logs,
|
64
|
+
events: [executedEvent()],
|
65
|
+
});
|
66
|
+
const executedLog = logs[0];
|
67
|
+
if (!executedLog) {
|
68
|
+
throw new Error("No executed log found");
|
69
|
+
}
|
70
|
+
expect(executedLog.args.to).toBe(account.address);
|
71
|
+
expect(executedLog.args.value).toBe(0n);
|
72
|
+
});
|
73
|
+
|
74
|
+
it("should sponsor gas for a 4337 smart account", async () => {
|
75
|
+
const chain = sepolia;
|
76
|
+
const wallet = inAppWallet({
|
77
|
+
executionMode: {
|
78
|
+
mode: "EIP4337",
|
79
|
+
smartAccount: {
|
80
|
+
chain,
|
81
|
+
sponsorGas: true,
|
82
|
+
},
|
83
|
+
},
|
84
|
+
});
|
85
|
+
const account = await wallet.connect({
|
86
|
+
client: TEST_CLIENT,
|
87
|
+
strategy: "guest",
|
88
|
+
chain,
|
89
|
+
});
|
90
|
+
expect(account.address).toBeDefined();
|
91
|
+
const tx = await sendAndConfirmTransaction({
|
92
|
+
transaction: prepareTransaction({
|
93
|
+
chain,
|
94
|
+
client: TEST_CLIENT,
|
95
|
+
to: account.address,
|
96
|
+
value: 0n,
|
97
|
+
}),
|
98
|
+
account,
|
99
|
+
});
|
100
|
+
expect(tx.transactionHash).toBeDefined();
|
101
|
+
const logs = parseEventLogs({
|
102
|
+
logs: tx.logs,
|
103
|
+
events: [userOperationEventEvent()],
|
104
|
+
});
|
105
|
+
const executedLog = logs[0];
|
106
|
+
if (!executedLog) {
|
107
|
+
throw new Error("No executed log found");
|
108
|
+
}
|
109
|
+
expect(executedLog.args.sender).toBe(account.address);
|
110
|
+
expect(executedLog.args.success).toBe(true);
|
111
|
+
});
|
112
|
+
});
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import type { ThirdwebClient } from "../../../../client/client.js";
|
2
2
|
import { getThirdwebBaseUrl } from "../../../../utils/domains.js";
|
3
|
+
import type { AsyncStorage } from "../../../../utils/storage/AsyncStorage.js";
|
4
|
+
import { inMemoryStorage } from "../../../../utils/storage/inMemoryStorage.js";
|
3
5
|
import { webLocalStorage } from "../../../../utils/storage/webStorage.js";
|
4
6
|
import type { SocialAuthOption } from "../../../../wallets/types.js";
|
5
7
|
import type { Account } from "../../../interfaces/wallet.js";
|
@@ -86,7 +88,7 @@ export class InAppWebConnector implements InAppConnector {
|
|
86
88
|
this.ecosystem = ecosystem;
|
87
89
|
this.passkeyDomain = passkeyDomain;
|
88
90
|
this.storage = new ClientScopedStorage({
|
89
|
-
storage: storage ??
|
91
|
+
storage: storage ?? getDefaultStorage(),
|
90
92
|
clientId: client.clientId,
|
91
93
|
ecosystem: ecosystem,
|
92
94
|
});
|
@@ -489,3 +491,11 @@ export class InAppWebConnector implements InAppConnector {
|
|
489
491
|
function assertUnreachable(x: never, message?: string): never {
|
490
492
|
throw new Error(message ?? `Invalid param: ${x}`);
|
491
493
|
}
|
494
|
+
|
495
|
+
function getDefaultStorage(): AsyncStorage {
|
496
|
+
if (typeof window !== "undefined" && window.localStorage) {
|
497
|
+
return webLocalStorage;
|
498
|
+
}
|
499
|
+
// default to in-memory storage if we're not in the browser
|
500
|
+
return inMemoryStorage;
|
501
|
+
}
|
@@ -1,27 +0,0 @@
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
2
|
-
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
-
import { sepolia } from "../../../../chains/chain-definitions/sepolia.js";
|
4
|
-
import { inMemoryStorage } from "../../../../utils/storage/inMemoryStorage.js";
|
5
|
-
import { inAppWallet } from "../in-app.js";
|
6
|
-
|
7
|
-
describe("InAppWallet", () => {
|
8
|
-
it("should sign a message with backend strategy", async () => {
|
9
|
-
const wallet = inAppWallet({
|
10
|
-
smartAccount: {
|
11
|
-
chain: sepolia,
|
12
|
-
sponsorGas: true,
|
13
|
-
},
|
14
|
-
storage: inMemoryStorage,
|
15
|
-
});
|
16
|
-
const account = await wallet.connect({
|
17
|
-
client: TEST_CLIENT,
|
18
|
-
strategy: "backend",
|
19
|
-
walletSecret: "test-secret",
|
20
|
-
});
|
21
|
-
expect(account.address).toBeDefined();
|
22
|
-
const message = await account.signMessage({
|
23
|
-
message: "Hello, world!",
|
24
|
-
});
|
25
|
-
expect(message).toBeDefined();
|
26
|
-
});
|
27
|
-
});
|