thirdweb 5.76.0-nightly-8234dbae8fcf73ca83bbda31d929aa57ca521a53-20241208000407 → 5.76.0-nightly-485dcc6020089a80d994c24882f389c24a0af039-20241210000351

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 (93) hide show
  1. package/dist/cjs/exports/react.js.map +1 -1
  2. package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +57 -9
  3. package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -1
  4. package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +72 -13
  5. package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -1
  6. package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +58 -9
  7. package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -1
  8. package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js +34 -0
  9. package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js.map +1 -0
  10. package/dist/cjs/version.js +1 -1
  11. package/dist/cjs/wallets/coinbase/coinbase-web.js +1 -3
  12. package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
  13. package/dist/cjs/wallets/in-app/core/actions/generate-wallet.enclave.js +1 -1
  14. package/dist/cjs/wallets/in-app/core/actions/generate-wallet.enclave.js.map +1 -1
  15. package/dist/cjs/wallets/in-app/core/actions/sign-message.enclave.js +1 -1
  16. package/dist/cjs/wallets/in-app/core/actions/sign-message.enclave.js.map +1 -1
  17. package/dist/cjs/wallets/in-app/core/actions/sign-transaction.enclave.js +1 -1
  18. package/dist/cjs/wallets/in-app/core/actions/sign-transaction.enclave.js.map +1 -1
  19. package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js +1 -1
  20. package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
  21. package/dist/cjs/wallets/injected/index.js +14 -20
  22. package/dist/cjs/wallets/injected/index.js.map +1 -1
  23. package/dist/cjs/wallets/smart/lib/userop.js +1 -1
  24. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  25. package/dist/esm/exports/react.js.map +1 -1
  26. package/dist/esm/react/web/ui/prebuilt/NFT/description.js +56 -9
  27. package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -1
  28. package/dist/esm/react/web/ui/prebuilt/NFT/media.js +71 -13
  29. package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -1
  30. package/dist/esm/react/web/ui/prebuilt/NFT/name.js +57 -9
  31. package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -1
  32. package/dist/esm/react/web/ui/prebuilt/NFT/utils.js +32 -0
  33. package/dist/esm/react/web/ui/prebuilt/NFT/utils.js.map +1 -0
  34. package/dist/esm/version.js +1 -1
  35. package/dist/esm/wallets/coinbase/coinbase-web.js +1 -3
  36. package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
  37. package/dist/esm/wallets/in-app/core/actions/generate-wallet.enclave.js +1 -1
  38. package/dist/esm/wallets/in-app/core/actions/generate-wallet.enclave.js.map +1 -1
  39. package/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js +1 -1
  40. package/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js.map +1 -1
  41. package/dist/esm/wallets/in-app/core/actions/sign-transaction.enclave.js +1 -1
  42. package/dist/esm/wallets/in-app/core/actions/sign-transaction.enclave.js.map +1 -1
  43. package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js +1 -1
  44. package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
  45. package/dist/esm/wallets/injected/index.js +14 -20
  46. package/dist/esm/wallets/injected/index.js.map +1 -1
  47. package/dist/esm/wallets/smart/lib/userop.js +1 -1
  48. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  49. package/dist/types/exports/react.d.ts +1 -1
  50. package/dist/types/exports/react.d.ts.map +1 -1
  51. package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts +32 -4
  52. package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts.map +1 -1
  53. package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts +52 -4
  54. package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts.map +1 -1
  55. package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts +33 -4
  56. package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -1
  57. package/dist/types/react/web/ui/prebuilt/NFT/utils.d.ts +7 -0
  58. package/dist/types/react/web/ui/prebuilt/NFT/utils.d.ts.map +1 -0
  59. package/dist/types/version.d.ts +1 -1
  60. package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
  61. package/dist/types/wallets/in-app/core/actions/generate-wallet.enclave.d.ts.map +1 -1
  62. package/dist/types/wallets/in-app/core/actions/sign-message.enclave.d.ts.map +1 -1
  63. package/dist/types/wallets/in-app/core/actions/sign-transaction.enclave.d.ts.map +1 -1
  64. package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts.map +1 -1
  65. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  66. package/package.json +1 -1
  67. package/src/exports/react.ts +1 -0
  68. package/src/react/web/ui/prebuilt/NFT/description.test.tsx +63 -0
  69. package/src/react/web/ui/prebuilt/NFT/description.tsx +70 -11
  70. package/src/react/web/ui/prebuilt/NFT/media.test.tsx +77 -0
  71. package/src/react/web/ui/prebuilt/NFT/media.tsx +106 -20
  72. package/src/react/web/ui/prebuilt/NFT/name.test.tsx +61 -0
  73. package/src/react/web/ui/prebuilt/NFT/name.tsx +71 -11
  74. package/src/react/web/ui/prebuilt/NFT/{NFT.test.tsx → provider.test.tsx} +34 -42
  75. package/src/react/web/ui/prebuilt/NFT/utils.test.ts +93 -0
  76. package/src/react/web/ui/prebuilt/NFT/utils.ts +41 -0
  77. package/src/utils/encoding/hex.test.ts +5 -0
  78. package/src/version.ts +1 -1
  79. package/src/wallets/coinbase/coinbase-web.ts +1 -5
  80. package/src/wallets/in-app/core/actions/generate-wallet.enclave.ts +3 -1
  81. package/src/wallets/in-app/core/actions/sign-message.enclave.ts +3 -1
  82. package/src/wallets/in-app/core/actions/sign-transaction.enclave.ts +3 -1
  83. package/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts +3 -1
  84. package/src/wallets/injected/index.ts +14 -19
  85. package/src/wallets/smart/lib/userop.ts +3 -1
  86. package/src/wallets/smart/smart-wallet-dev.test.ts +18 -20
  87. package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js +0 -45
  88. package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js.map +0 -1
  89. package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js +0 -41
  90. package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js.map +0 -1
  91. package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts +0 -14
  92. package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts.map +0 -1
  93. package/src/react/web/ui/prebuilt/NFT/hooks.tsx +0 -53
@@ -0,0 +1,93 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import {
3
+ DOODLES_CONTRACT,
4
+ DROP1155_CONTRACT,
5
+ UNISWAPV3_FACTORY_CONTRACT,
6
+ } from "~test/test-contracts.js";
7
+ import { getNFTInfo } from "./utils.js";
8
+
9
+ describe.runIf(process.env.TW_SECRET_KEY)("getNFTInfo", () => {
10
+ it("should work with ERC721", async () => {
11
+ const nft = await getNFTInfo({
12
+ contract: DOODLES_CONTRACT,
13
+ tokenId: 0n,
14
+ });
15
+ expect(nft).toStrictEqual({
16
+ id: 0n,
17
+ metadata: {
18
+ attributes: [
19
+ {
20
+ trait_type: "face",
21
+ value: "mustache",
22
+ },
23
+ {
24
+ trait_type: "hair",
25
+ value: "purple long",
26
+ },
27
+ {
28
+ trait_type: "body",
29
+ value: "blue and yellow jacket",
30
+ },
31
+ {
32
+ trait_type: "background",
33
+ value: "green",
34
+ },
35
+ {
36
+ trait_type: "head",
37
+ value: "tan",
38
+ },
39
+ ],
40
+ description:
41
+ "A community-driven collectibles project featuring art by Burnt Toast. Doodles come in a joyful range of colors, traits and sizes with a collection size of 10,000. Each Doodle allows its owner to vote for experiences and activations paid for by the Doodles Community Treasury. Burnt Toast is the working alias for Scott Martin, a Canadian–based illustrator, designer, animator and muralist.",
42
+ image: "ipfs://QmUEfFfwAh4wyB5UfHCVPUxis4j4Q4kJXtm5x5p3g1fVUn",
43
+ name: "Doodle #0",
44
+ },
45
+ owner: null,
46
+ tokenURI: "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/0",
47
+ type: "ERC721",
48
+ });
49
+ });
50
+
51
+ it("should work with ERC1155", async () => {
52
+ const nft = await getNFTInfo({
53
+ contract: DROP1155_CONTRACT,
54
+ tokenId: 0n,
55
+ });
56
+ expect(nft).toStrictEqual({
57
+ id: 0n,
58
+ metadata: {
59
+ animation_url:
60
+ "ipfs://QmeGCqV1mSHTZrvuFzW1XZdCRRGXB6AmSotTqHoxA2xfDo/1.mp4",
61
+ attributes: [
62
+ {
63
+ trait_type: "Revenue Share",
64
+ value: "40%",
65
+ },
66
+ {
67
+ trait_type: "Max Supply",
68
+ value: "50",
69
+ },
70
+ {
71
+ trait_type: "Max Per Wallet",
72
+ value: "1",
73
+ },
74
+ ],
75
+ background_color: "",
76
+ description: "",
77
+ external_url: "https://auraexchange.org",
78
+ image: "ipfs://QmeGCqV1mSHTZrvuFzW1XZdCRRGXB6AmSotTqHoxA2xfDo/0.png",
79
+ name: "Aura OG",
80
+ },
81
+ owner: null,
82
+ supply: 33n,
83
+ tokenURI: "ipfs://QmNgevzVNwJWJdErFY2B7KsuKdJz3gVuBraNKaSxPktLh5/0",
84
+ type: "ERC1155",
85
+ });
86
+ });
87
+
88
+ it("should throw error if failed to load nft info", async () => {
89
+ await expect(() =>
90
+ getNFTInfo({ contract: UNISWAPV3_FACTORY_CONTRACT, tokenId: 0n }),
91
+ ).rejects.toThrowError("Failed to load NFT metadata");
92
+ });
93
+ });
@@ -0,0 +1,41 @@
1
+ import {} from "@tanstack/react-query";
2
+ import { getNFT as getNFT721 } from "../../../../../extensions/erc721/read/getNFT.js";
3
+ import { getNFT as getNFT1155 } from "../../../../../extensions/erc1155/read/getNFT.js";
4
+ import type { NFT } from "../../../../../utils/nft/parseNft.js";
5
+ import { withCache } from "../../../../../utils/promise/withCache.js";
6
+ import type { NFTProviderProps } from "./provider.js";
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ export async function getNFTInfo(options: NFTProviderProps): Promise<NFT> {
12
+ return withCache(
13
+ async () => {
14
+ const nft = await Promise.allSettled([
15
+ getNFT721(options),
16
+ getNFT1155(options),
17
+ ]).then(([possibleNFT721, possibleNFT1155]) => {
18
+ // getNFT extension always return an NFT object
19
+ // so we need to check if the tokenURI exists
20
+ if (
21
+ possibleNFT721.status === "fulfilled" &&
22
+ possibleNFT721.value.tokenURI
23
+ ) {
24
+ return possibleNFT721.value;
25
+ }
26
+ if (
27
+ possibleNFT1155.status === "fulfilled" &&
28
+ possibleNFT1155.value.tokenURI
29
+ ) {
30
+ return possibleNFT1155.value;
31
+ }
32
+ throw new Error("Failed to load NFT metadata");
33
+ });
34
+ return nft;
35
+ },
36
+ {
37
+ cacheKey: `nft_info:${options.contract.chain.id}:${options.contract.address}:${options.tokenId.toString()}`,
38
+ cacheTime: 15 * 60 * 1000,
39
+ },
40
+ );
41
+ }
@@ -2,6 +2,11 @@ import { describe, expect, it } from "vitest";
2
2
  import { numberToHex } from "./hex.js";
3
3
 
4
4
  describe("hex.ts", () => {
5
+ it("should convert number with no padding", () => {
6
+ const result = numberToHex(1);
7
+ expect(result).toBe("0x1");
8
+ });
9
+
5
10
  it("should convert", () => {
6
11
  const result = numberToHex(100n, { size: 32, signed: false });
7
12
  expect(result).toBe(
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.76.0-nightly-8234dbae8fcf73ca83bbda31d929aa57ca521a53-20241208000407";
1
+ export const version = "5.76.0-nightly-485dcc6020089a80d994c24882f389c24a0af039-20241210000351";
@@ -463,11 +463,7 @@ export async function connectCoinbaseWalletSDK(
463
463
  ? options.chain
464
464
  : getCachedChain(chainId);
465
465
  // Switch to chain if provided
466
- if (
467
- connectedChainId &&
468
- options?.chain &&
469
- connectedChainId !== options?.chain.id
470
- ) {
466
+ if (chainId && options?.chain && chainId !== options?.chain.id) {
471
467
  await switchChainCoinbaseWalletSDK(provider, options.chain);
472
468
  chain = options.chain;
473
469
  }
@@ -31,7 +31,9 @@ export async function generateWallet({
31
31
  );
32
32
 
33
33
  if (!response.ok) {
34
- throw new Error("Failed to generate wallet");
34
+ throw new Error(
35
+ `Failed to generate wallet - ${response.status} ${response.statusText}`,
36
+ );
35
37
  }
36
38
 
37
39
  const { wallet } = (await response.json()) as {
@@ -43,7 +43,9 @@ export async function signMessage({
43
43
  );
44
44
 
45
45
  if (!response.ok) {
46
- throw new Error("Failed to sign message");
46
+ throw new Error(
47
+ `Failed to sign message - ${response.status} ${response.statusText}`,
48
+ );
47
49
  }
48
50
 
49
51
  const signedMessage = (await response.json()) as {
@@ -38,7 +38,9 @@ export async function signTransaction({
38
38
  );
39
39
 
40
40
  if (!response.ok) {
41
- throw new Error("Failed to sign transaction");
41
+ throw new Error(
42
+ `Failed to sign transaction - ${response.status} ${response.statusText}`,
43
+ );
42
44
  }
43
45
 
44
46
  const signedTransaction = (await response.json()) as {
@@ -41,7 +41,9 @@ export async function signTypedData<
41
41
  );
42
42
 
43
43
  if (!response.ok) {
44
- throw new Error("Failed to sign typed data");
44
+ throw new Error(
45
+ `Failed to sign typed data - ${response.status} ${response.statusText}`,
46
+ );
45
47
  }
46
48
 
47
49
  const signedTypedData = (await response.json()) as {
@@ -348,25 +348,20 @@ async function switchChain(provider: EIP1193Provider, chain: Chain) {
348
348
  method: "wallet_switchEthereumChain",
349
349
  params: [{ chainId: hexChainId }],
350
350
  });
351
- // biome-ignore lint/suspicious/noExplicitAny: TODO: fix any
352
- } catch (e: any) {
351
+ } catch {
353
352
  // if chain does not exist, add the chain
354
- if (e?.code === 4902 || e?.data?.originalError?.code === 4902) {
355
- const apiChain = await getChainMetadata(chain);
356
- await provider.request({
357
- method: "wallet_addEthereumChain",
358
- params: [
359
- {
360
- chainId: hexChainId,
361
- chainName: apiChain.name,
362
- nativeCurrency: apiChain.nativeCurrency,
363
- rpcUrls: getValidPublicRPCUrl(apiChain), // no client id on purpose here
364
- blockExplorerUrls: apiChain.explorers?.map((x) => x.url),
365
- },
366
- ],
367
- });
368
- } else {
369
- throw e;
370
- }
353
+ const apiChain = await getChainMetadata(chain);
354
+ await provider.request({
355
+ method: "wallet_addEthereumChain",
356
+ params: [
357
+ {
358
+ chainId: hexChainId,
359
+ chainName: apiChain.name,
360
+ nativeCurrency: apiChain.nativeCurrency,
361
+ rpcUrls: getValidPublicRPCUrl(apiChain), // no client id on purpose here
362
+ blockExplorerUrls: apiChain.explorers?.map((x) => x.url),
363
+ },
364
+ ],
365
+ });
371
366
  }
372
367
  }
@@ -103,7 +103,9 @@ export async function waitForUserOpReceipt(
103
103
  }
104
104
  await new Promise((resolve) => setTimeout(resolve, interval));
105
105
  }
106
- throw new Error("Timeout waiting for userOp to be mined");
106
+ throw new Error(
107
+ `Timeout waiting for userOp to be mined on chain ${args.chain.id} with UserOp hash: ${args.userOpHash}`,
108
+ );
107
109
  }
108
110
 
109
111
  /**
@@ -1,7 +1,6 @@
1
1
  import { beforeAll, describe, expect, it } from "vitest";
2
2
  import { TEST_CLIENT } from "../../../test/src/test-clients.js";
3
- import { TEST_ACCOUNT_A } from "../../../test/src/test-wallets.js";
4
- import { defineChain } from "../../chains/utils.js";
3
+ import { arbitrumSepolia } from "../../chains/chain-definitions/arbitrum.js";
5
4
  import { type ThirdwebContract, getContract } from "../../contract/contract.js";
6
5
  import { balanceOf } from "../../extensions/erc1155/__generated__/IERC1155/read/balanceOf.js";
7
6
  import { claimTo } from "../../extensions/erc1155/drops/write/claimTo.js";
@@ -11,17 +10,16 @@ import { sendTransaction } from "../../transaction/actions/send-transaction.js";
11
10
  import { prepareTransaction } from "../../transaction/prepare-transaction.js";
12
11
  import type { Address } from "../../utils/address.js";
13
12
  import { isContractDeployed } from "../../utils/bytecode/is-contract-deployed.js";
14
- import { setThirdwebDomains } from "../../utils/domains.js";
15
13
  import type { Account, Wallet } from "../interfaces/wallet.js";
14
+ import { generateAccount } from "../utils/generateAccount.js";
16
15
  import { smartWallet } from "./smart-wallet.js";
17
-
18
16
  let wallet: Wallet;
19
17
  let smartAccount: Account;
20
18
  let smartWalletAddress: Address;
21
19
  let personalAccount: Account;
22
20
  let accountContract: ThirdwebContract;
23
21
 
24
- const chain = defineChain(531050104);
22
+ const chain = arbitrumSepolia;
25
23
  const client = TEST_CLIENT;
26
24
  const contract = getContract({
27
25
  client,
@@ -29,22 +27,21 @@ const contract = getContract({
29
27
  address: "0x6A7a26c9a595E6893C255C9dF0b593e77518e0c3",
30
28
  });
31
29
  describe.runIf(process.env.TW_SECRET_KEY).skip.sequential(
32
- "SmartWallet policy tests",
30
+ "SmartWallet dev tests",
33
31
  {
34
32
  retry: 0,
35
33
  timeout: 240_000,
36
34
  },
37
35
  () => {
38
36
  beforeAll(async () => {
39
- setThirdwebDomains({
40
- rpc: "rpc.thirdweb-dev.com",
41
- storage: "storage.thirdweb-dev.com",
42
- bundler: "bundler.thirdweb-dev.com",
43
- });
44
- personalAccount = TEST_ACCOUNT_A;
45
- // personalAccount = await generateAccount({
46
- // client,
37
+ // setThirdwebDomains({
38
+ // rpc: "rpc.thirdweb-dev.com",
39
+ // storage: "storage.thirdweb-dev.com",
40
+ // bundler: "bundler.thirdweb-dev.com",
47
41
  // });
42
+ personalAccount = await generateAccount({
43
+ client,
44
+ });
48
45
  wallet = smartWallet({
49
46
  chain,
50
47
  gasless: true,
@@ -65,13 +62,14 @@ describe.runIf(process.env.TW_SECRET_KEY).skip.sequential(
65
62
  expect(smartWalletAddress).toHaveLength(42);
66
63
  });
67
64
 
68
- it.skip("can sign a msg", async () => {
69
- await smartAccount.signMessage({ message: "hello world" });
70
- const isDeployed = await isContractDeployed(accountContract);
71
- expect(isDeployed).toEqual(true);
65
+ it("can sign a msg", async () => {
66
+ const signature = await smartAccount.signMessage({
67
+ message: "hello world",
68
+ });
69
+ expect(signature.length).toBeGreaterThan(0);
72
70
  });
73
71
 
74
- it.skip("should send a transaction", async () => {
72
+ it("should send a transaction", async () => {
75
73
  const tx = prepareTransaction({
76
74
  client,
77
75
  chain,
@@ -106,7 +104,7 @@ describe.runIf(process.env.TW_SECRET_KEY).skip.sequential(
106
104
  expect(balance).toEqual(1n);
107
105
  });
108
106
 
109
- it("should deploy a published autofactory contract", async () => {
107
+ it.skip("should deploy a published autofactory contract", async () => {
110
108
  const address = await deployPublishedContract({
111
109
  client: TEST_CLIENT,
112
110
  chain,
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useNftInfo = useNftInfo;
4
- exports.getNFTInfo = getNFTInfo;
5
- const react_query_1 = require("@tanstack/react-query");
6
- const getNFT_js_1 = require("../../../../../extensions/erc721/read/getNFT.js");
7
- const getNFT_js_2 = require("../../../../../extensions/erc1155/read/getNFT.js");
8
- /**
9
- * @internal Only used for the NFT prebuilt components
10
- */
11
- function useNftInfo(props) {
12
- return (0, react_query_1.useQuery)({
13
- queryKey: [
14
- "__nft_component_internal__",
15
- props.contract.chain.id,
16
- props.contract.address,
17
- props.tokenId.toString(),
18
- ],
19
- queryFn: () => getNFTInfo({ contract: props.contract, tokenId: props.tokenId }),
20
- ...props.queryOptions,
21
- });
22
- }
23
- /**
24
- * @internal
25
- */
26
- async function getNFTInfo(options) {
27
- const nft = await Promise.allSettled([
28
- (0, getNFT_js_1.getNFT)(options),
29
- (0, getNFT_js_2.getNFT)(options),
30
- ]).then(([possibleNFT721, possibleNFT1155]) => {
31
- // getNFT extension always return an NFT object
32
- // so we need to check if the tokenURI exists
33
- if (possibleNFT721.status === "fulfilled" &&
34
- possibleNFT721.value.tokenURI) {
35
- return possibleNFT721.value;
36
- }
37
- if (possibleNFT1155.status === "fulfilled" &&
38
- possibleNFT1155.value.tokenURI) {
39
- return possibleNFT1155.value;
40
- }
41
- throw new Error("Failed to load NFT metadata");
42
- });
43
- return nft;
44
- }
45
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/hooks.tsx"],"names":[],"mappings":";;AASA,gCAgBC;AAKD,gCAsBC;AApDD,uDAAuE;AACvE,+EAAsF;AACtF,gFAAwF;AAIxF;;GAEG;AACH,SAAgB,UAAU,CACxB,KAEC;IAED,OAAO,IAAA,sBAAQ,EAAC;QACd,QAAQ,EAAE;YACR,4BAA4B;YAC5B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvB,KAAK,CAAC,QAAQ,CAAC,OAAO;YACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;SACzB;QACD,OAAO,EAAE,GAAG,EAAE,CACZ,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,GAAG,KAAK,CAAC,YAAY;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,OAAyB;IACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QACnC,IAAA,kBAAS,EAAC,OAAO,CAAC;QAClB,IAAA,kBAAU,EAAC,OAAO,CAAC;KACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,EAAE;QAC5C,+CAA+C;QAC/C,6CAA6C;QAC7C,IACE,cAAc,CAAC,MAAM,KAAK,WAAW;YACrC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAC7B,CAAC;YACD,OAAO,cAAc,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,IACE,eAAe,CAAC,MAAM,KAAK,WAAW;YACtC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAC9B,CAAC;YACD,OAAO,eAAe,CAAC,KAAK,CAAC;QAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,41 +0,0 @@
1
- import { useQuery } from "@tanstack/react-query";
2
- import { getNFT as getNFT721 } from "../../../../../extensions/erc721/read/getNFT.js";
3
- import { getNFT as getNFT1155 } from "../../../../../extensions/erc1155/read/getNFT.js";
4
- /**
5
- * @internal Only used for the NFT prebuilt components
6
- */
7
- export function useNftInfo(props) {
8
- return useQuery({
9
- queryKey: [
10
- "__nft_component_internal__",
11
- props.contract.chain.id,
12
- props.contract.address,
13
- props.tokenId.toString(),
14
- ],
15
- queryFn: () => getNFTInfo({ contract: props.contract, tokenId: props.tokenId }),
16
- ...props.queryOptions,
17
- });
18
- }
19
- /**
20
- * @internal
21
- */
22
- export async function getNFTInfo(options) {
23
- const nft = await Promise.allSettled([
24
- getNFT721(options),
25
- getNFT1155(options),
26
- ]).then(([possibleNFT721, possibleNFT1155]) => {
27
- // getNFT extension always return an NFT object
28
- // so we need to check if the tokenURI exists
29
- if (possibleNFT721.status === "fulfilled" &&
30
- possibleNFT721.value.tokenURI) {
31
- return possibleNFT721.value;
32
- }
33
- if (possibleNFT1155.status === "fulfilled" &&
34
- possibleNFT1155.value.tokenURI) {
35
- return possibleNFT1155.value;
36
- }
37
- throw new Error("Failed to load NFT metadata");
38
- });
39
- return nft;
40
- }
41
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kDAAkD,CAAC;AAIxF;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAEC;IAED,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE;YACR,4BAA4B;YAC5B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvB,KAAK,CAAC,QAAQ,CAAC,OAAO;YACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;SACzB;QACD,OAAO,EAAE,GAAG,EAAE,CACZ,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,GAAG,KAAK,CAAC,YAAY;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAyB;IACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QACnC,SAAS,CAAC,OAAO,CAAC;QAClB,UAAU,CAAC,OAAO,CAAC;KACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,EAAE;QAC5C,+CAA+C;QAC/C,6CAA6C;QAC7C,IACE,cAAc,CAAC,MAAM,KAAK,WAAW;YACrC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAC7B,CAAC;YACD,OAAO,cAAc,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,IACE,eAAe,CAAC,MAAM,KAAK,WAAW;YACtC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAC9B,CAAC;YACD,OAAO,eAAe,CAAC,KAAK,CAAC;QAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,14 +0,0 @@
1
- import { type UseQueryOptions } from "@tanstack/react-query";
2
- import type { NFT } from "../../../../../utils/nft/parseNft.js";
3
- import type { NFTProviderProps } from "./provider.js";
4
- /**
5
- * @internal Only used for the NFT prebuilt components
6
- */
7
- export declare function useNftInfo(props: NFTProviderProps & {
8
- queryOptions?: Omit<UseQueryOptions<NFT>, "queryFn" | "queryKey">;
9
- }): import("@tanstack/react-query").UseQueryResult<NFT, Error>;
10
- /**
11
- * @internal
12
- */
13
- export declare function getNFTInfo(options: NFTProviderProps): Promise<NFT>;
14
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/NFT/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AAGvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,gBAAgB,GAAG;IACxB,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;CACnE,8DAaF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAsBxE"}
@@ -1,53 +0,0 @@
1
- import { type UseQueryOptions, useQuery } from "@tanstack/react-query";
2
- import { getNFT as getNFT721 } from "../../../../../extensions/erc721/read/getNFT.js";
3
- import { getNFT as getNFT1155 } from "../../../../../extensions/erc1155/read/getNFT.js";
4
- import type { NFT } from "../../../../../utils/nft/parseNft.js";
5
- import type { NFTProviderProps } from "./provider.js";
6
-
7
- /**
8
- * @internal Only used for the NFT prebuilt components
9
- */
10
- export function useNftInfo(
11
- props: NFTProviderProps & {
12
- queryOptions?: Omit<UseQueryOptions<NFT>, "queryFn" | "queryKey">;
13
- },
14
- ) {
15
- return useQuery({
16
- queryKey: [
17
- "__nft_component_internal__",
18
- props.contract.chain.id,
19
- props.contract.address,
20
- props.tokenId.toString(),
21
- ],
22
- queryFn: () =>
23
- getNFTInfo({ contract: props.contract, tokenId: props.tokenId }),
24
- ...props.queryOptions,
25
- });
26
- }
27
-
28
- /**
29
- * @internal
30
- */
31
- export async function getNFTInfo(options: NFTProviderProps): Promise<NFT> {
32
- const nft = await Promise.allSettled([
33
- getNFT721(options),
34
- getNFT1155(options),
35
- ]).then(([possibleNFT721, possibleNFT1155]) => {
36
- // getNFT extension always return an NFT object
37
- // so we need to check if the tokenURI exists
38
- if (
39
- possibleNFT721.status === "fulfilled" &&
40
- possibleNFT721.value.tokenURI
41
- ) {
42
- return possibleNFT721.value;
43
- }
44
- if (
45
- possibleNFT1155.status === "fulfilled" &&
46
- possibleNFT1155.value.tokenURI
47
- ) {
48
- return possibleNFT1155.value;
49
- }
50
- throw new Error("Failed to load NFT metadata");
51
- });
52
- return nft;
53
- }