thirdweb 5.53.0-nightly-7dd2869e240522a467c73f0017f080ee118c5bf0-20240908000435 → 5.53.0

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.
Files changed (108) hide show
  1. package/dist/cjs/chains/chain-definitions/assetchain-testnet.js +25 -0
  2. package/dist/cjs/chains/chain-definitions/assetchain-testnet.js.map +1 -0
  3. package/dist/cjs/exports/react.native.js +4 -1
  4. package/dist/cjs/exports/react.native.js.map +1 -1
  5. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +4 -2
  6. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  7. package/dist/cjs/react/core/utils/walletIcon.js +2 -3
  8. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  9. package/dist/cjs/react/native/ui/components/WalletImage.js +6 -5
  10. package/dist/cjs/react/native/ui/components/WalletImage.js.map +1 -1
  11. package/dist/cjs/react/native/ui/connect/ConnectModal.js +1 -2
  12. package/dist/cjs/react/native/ui/connect/ConnectModal.js.map +1 -1
  13. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js +3 -3
  14. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  15. package/dist/cjs/react/native/ui/icons/svgs.js +12 -1
  16. package/dist/cjs/react/native/ui/icons/svgs.js.map +1 -1
  17. package/dist/cjs/social/profiles.js.map +1 -1
  18. package/dist/cjs/utils/bytecode/resolveImplementation.js +17 -10
  19. package/dist/cjs/utils/bytecode/resolveImplementation.js.map +1 -1
  20. package/dist/cjs/version.js +1 -1
  21. package/dist/cjs/version.js.map +1 -1
  22. package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js +52 -24
  23. package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js.map +1 -1
  24. package/dist/cjs/wallets/coinbase/coinbaseWebSDK.js.map +1 -1
  25. package/dist/cjs/wallets/coinbase/utils.js +1 -1
  26. package/dist/cjs/wallets/coinbase/utils.js.map +1 -1
  27. package/dist/esm/chains/chain-definitions/assetchain-testnet.js +22 -0
  28. package/dist/esm/chains/chain-definitions/assetchain-testnet.js.map +1 -0
  29. package/dist/esm/exports/react.native.js +2 -0
  30. package/dist/esm/exports/react.native.js.map +1 -1
  31. package/dist/esm/exports/social.js +0 -1
  32. package/dist/esm/exports/social.js.map +1 -1
  33. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +4 -2
  34. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  35. package/dist/esm/react/core/utils/walletIcon.js +1 -2
  36. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  37. package/dist/esm/react/native/ui/components/WalletImage.js +7 -6
  38. package/dist/esm/react/native/ui/components/WalletImage.js.map +1 -1
  39. package/dist/esm/react/native/ui/connect/ConnectModal.js +2 -3
  40. package/dist/esm/react/native/ui/connect/ConnectModal.js.map +1 -1
  41. package/dist/esm/react/native/ui/connect/InAppWalletUI.js +3 -3
  42. package/dist/esm/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  43. package/dist/esm/react/native/ui/icons/svgs.js +11 -0
  44. package/dist/esm/react/native/ui/icons/svgs.js.map +1 -1
  45. package/dist/esm/social/profiles.js.map +1 -1
  46. package/dist/esm/utils/bytecode/resolveImplementation.js +17 -10
  47. package/dist/esm/utils/bytecode/resolveImplementation.js.map +1 -1
  48. package/dist/esm/version.js +1 -1
  49. package/dist/esm/version.js.map +1 -1
  50. package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js +50 -22
  51. package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js.map +1 -1
  52. package/dist/esm/wallets/coinbase/coinbaseWebSDK.js.map +1 -1
  53. package/dist/esm/wallets/coinbase/utils.js +1 -1
  54. package/dist/esm/wallets/coinbase/utils.js.map +1 -1
  55. package/dist/types/chains/chain-definitions/assetchain-testnet.d.ts +7 -0
  56. package/dist/types/chains/chain-definitions/assetchain-testnet.d.ts.map +1 -0
  57. package/dist/types/exports/react.d.ts +1 -0
  58. package/dist/types/exports/react.d.ts.map +1 -1
  59. package/dist/types/exports/react.native.d.ts +2 -0
  60. package/dist/types/exports/react.native.d.ts.map +1 -1
  61. package/dist/types/exports/social.d.ts +1 -1
  62. package/dist/types/exports/social.d.ts.map +1 -1
  63. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  64. package/dist/types/react/core/social/useSocialProfiles.d.ts +1 -1
  65. package/dist/types/react/core/social/useSocialProfiles.d.ts.map +1 -1
  66. package/dist/types/react/core/utils/wallet.d.ts +1 -1
  67. package/dist/types/react/core/utils/walletIcon.d.ts +0 -2
  68. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  69. package/dist/types/react/native/ui/components/WalletImage.d.ts +1 -1
  70. package/dist/types/react/native/ui/components/WalletImage.d.ts.map +1 -1
  71. package/dist/types/react/native/ui/connect/ConnectModal.d.ts.map +1 -1
  72. package/dist/types/react/native/ui/connect/InAppWalletUI.d.ts.map +1 -1
  73. package/dist/types/react/native/ui/icons/svgs.d.ts +1 -0
  74. package/dist/types/react/native/ui/icons/svgs.d.ts.map +1 -1
  75. package/dist/types/social/profiles.d.ts +2 -2
  76. package/dist/types/social/profiles.d.ts.map +1 -1
  77. package/dist/types/social/types.d.ts +2 -2
  78. package/dist/types/social/types.d.ts.map +1 -1
  79. package/dist/types/version.d.ts +1 -1
  80. package/dist/types/version.d.ts.map +1 -1
  81. package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts +2 -3
  82. package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts.map +1 -1
  83. package/dist/types/wallets/coinbase/coinbaseWebSDK.d.ts.map +1 -1
  84. package/package.json +14 -1
  85. package/src/chains/chain-definitions/assetchain-testnet.ts +22 -0
  86. package/src/event/actions/get-events.test.ts +13 -0
  87. package/src/exports/react.native.ts +9 -0
  88. package/src/exports/react.ts +6 -0
  89. package/src/exports/social.ts +6 -1
  90. package/src/extensions/modules/ClaimableERC1155/claimableERC1155.test.ts +1 -1
  91. package/src/extensions/modules/ClaimableERC20/claimableERC20.test.ts +1 -1
  92. package/src/extensions/modules/ClaimableERC721/claimableERC721.test.ts +1 -1
  93. package/src/extensions/modules/OpenEditionMetadataERC721/openEditionERC721.test.ts +1 -1
  94. package/src/extensions/prebuilts/deploy-modular-core.test.ts +1 -1
  95. package/src/react/core/hooks/transaction/useSendTransaction.ts +4 -2
  96. package/src/react/core/utils/walletIcon.ts +1 -6
  97. package/src/react/native/ui/components/WalletImage.tsx +9 -5
  98. package/src/react/native/ui/connect/ConnectModal.tsx +2 -3
  99. package/src/react/native/ui/connect/InAppWalletUI.tsx +10 -5
  100. package/src/react/native/ui/icons/svgs.ts +12 -0
  101. package/src/social/profiles.ts +3 -3
  102. package/src/social/types.ts +2 -2
  103. package/src/utils/bytecode/resolveImplementation.test.ts +9 -0
  104. package/src/utils/bytecode/resolveImplementation.ts +21 -13
  105. package/src/version.ts +1 -1
  106. package/src/wallets/coinbase/coinbaseMobileSDK.ts +66 -35
  107. package/src/wallets/coinbase/coinbaseWebSDK.ts +0 -1
  108. package/src/wallets/coinbase/utils.ts +1 -1
@@ -1,9 +1,5 @@
1
- import { configure, handleResponse } from "@coinbase/wallet-mobile-sdk";
2
1
  import type { ProviderInterface } from "@coinbase/wallet-sdk";
3
- import { Linking } from "react-native";
4
- import type { Chain } from "../../chains/types.js";
5
- import type { COINBASE } from "../constants.js";
6
- import type { CreateWalletArgs } from "../wallet-types.js";
2
+ import type { CoinbaseWalletCreationOptions } from "./coinbaseWebSDK.js";
7
3
 
8
4
  let _provider: ProviderInterface | undefined;
9
5
 
@@ -11,44 +7,78 @@ let _provider: ProviderInterface | undefined;
11
7
  * @internal
12
8
  */
13
9
  export async function getCoinbaseMobileProvider(
14
- options?: CreateWalletArgs<typeof COINBASE>[1],
10
+ options?: CoinbaseWalletCreationOptions,
15
11
  ): Promise<ProviderInterface> {
16
12
  if (!_provider) {
17
- const callbackURL = new URL(
18
- options?.mobileConfig?.callbackURL || "https://thirdweb.com/wsegue",
19
- );
20
- const mobileProvider: ProviderInterface = (await initMobileProvider({
21
- chain: options?.chains ? options.chains[0] : undefined,
22
- ...options?.mobileConfig,
23
- })) as unknown as ProviderInterface;
24
- _provider = mobileProvider;
25
- Linking.addEventListener("url", ({ url }) => {
26
- const incomingUrl = new URL(url);
27
- if (
28
- callbackURL &&
29
- incomingUrl.host === callbackURL.host &&
30
- incomingUrl.protocol === callbackURL.protocol &&
31
- incomingUrl.hostname === callbackURL.hostname
32
- ) {
13
+ // if explicitly set to smart wallet only, use the smart wallet provider
14
+ const useSmartWallet = options?.walletConfig?.options === "smartWalletOnly";
15
+ let mobileProvider: ProviderInterface;
16
+ if (useSmartWallet) {
17
+ mobileProvider = (await initSmartWalletProvider(
18
+ options,
19
+ )) as unknown as ProviderInterface;
20
+ const ExpoLinking = await import("expo-linking");
21
+ const { handleResponse } = await import("@mobile-wallet-protocol/client");
22
+ ExpoLinking.addEventListener("url", ({ url }) => {
23
+ handleResponse(url);
24
+ });
25
+ } else {
26
+ // otherwise, use the coinbase app provider
27
+ // TODO: remove this path once the new @mobile-wallet-protocol/client supports it
28
+ mobileProvider = (await initCoinbaseAppProvider(
29
+ options,
30
+ )) as unknown as ProviderInterface;
31
+ const ExpoLinking = await import("expo-linking");
32
+ const { handleResponse } = await import("@coinbase/wallet-mobile-sdk");
33
+ ExpoLinking.addEventListener("url", ({ url }) => {
33
34
  // @ts-expect-error - Passing a URL object to handleResponse crashes the function
34
35
  handleResponse(url);
35
- }
36
- });
36
+ });
37
+ }
38
+ _provider = mobileProvider;
37
39
  return mobileProvider;
38
40
  }
39
41
  return _provider;
40
42
  }
41
43
 
42
- async function initMobileProvider(args: {
43
- chain?: Chain;
44
- callbackURL?: string;
45
- hostURL?: string;
46
- hostPackageName?: string;
47
- }) {
44
+ async function initSmartWalletProvider(
45
+ options?: CoinbaseWalletCreationOptions,
46
+ ) {
47
+ const { EIP1193Provider, Wallets } = await import(
48
+ "@mobile-wallet-protocol/client"
49
+ );
50
+ const appDeeplinkUrl = options?.mobileConfig?.callbackURL;
51
+ if (!appDeeplinkUrl) {
52
+ throw new Error(
53
+ "callbackURL is required. Set it when creating the coinbase wallet. Ex: createWallet('com.coinbase.wallet', { mobileConfig: { callbackUrl: 'https://example.com' }}",
54
+ );
55
+ }
56
+ const sdk = new EIP1193Provider({
57
+ metadata: {
58
+ appName: options?.appMetadata?.name || "thirdweb powered app",
59
+ appChainIds: options?.chains?.map((c) => c.id),
60
+ appDeeplinkUrl,
61
+ appLogoUrl: options?.appMetadata?.logoUrl,
62
+ },
63
+ wallet: Wallets.CoinbaseSmartWallet, // TODO support both smart and EOA once the SDK supports it
64
+ });
65
+ return sdk;
66
+ }
67
+
68
+ async function initCoinbaseAppProvider(
69
+ options?: CoinbaseWalletCreationOptions,
70
+ ) {
71
+ const appDeeplinkUrl = options?.mobileConfig?.callbackURL;
72
+ if (!appDeeplinkUrl) {
73
+ throw new Error(
74
+ "callbackURL is required. Set it when creating the coinbase wallet. Ex: createWallet('com.coinbase.wallet', { mobileConfig: { callbackUrl: 'https://example.com' }}",
75
+ );
76
+ }
77
+ const { configure } = await import("@coinbase/wallet-mobile-sdk");
48
78
  configure({
49
- callbackURL: new URL(args.callbackURL || "https://thirdweb.com/wsegue"),
50
- hostURL: new URL(args.hostURL || "https://wallet.coinbase.com/wsegue"),
51
- hostPackageName: args.hostPackageName || "org.toshi",
79
+ callbackURL: new URL(appDeeplinkUrl),
80
+ hostURL: new URL("https://wallet.coinbase.com/wsegue"),
81
+ hostPackageName: "org.toshi",
52
82
  });
53
83
  let CoinbaseWalletMobileSDK = (
54
84
  await import(
@@ -67,8 +97,9 @@ async function initMobileProvider(args: {
67
97
  }
68
98
  ).default;
69
99
  }
100
+ const chain = options.chains?.[0];
70
101
  return new CoinbaseWalletMobileSDK({
71
- jsonRpcUrl: args.chain?.rpc,
72
- chainId: args.chain?.id,
102
+ jsonRpcUrl: chain?.rpc,
103
+ chainId: chain?.id,
73
104
  });
74
105
  }
@@ -295,7 +295,6 @@ function createAccount(provider: ProviderInterface, _address: string) {
295
295
  },
296
296
  ],
297
297
  })) as Hex;
298
-
299
298
  return {
300
299
  transactionHash,
301
300
  };
@@ -2,5 +2,5 @@ import type { ProviderInterface } from "@coinbase/wallet-sdk";
2
2
 
3
3
  export async function showCoinbasePopup(provider: ProviderInterface) {
4
4
  // biome-ignore lint/suspicious/noExplicitAny: based on the latest CB SDK - scary but works
5
- await (provider as any)?.communicator?.waitForPopupLoaded();
5
+ await (provider as any)?.communicator?.waitForPopupLoaded?.();
6
6
  }