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.
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +57 -9
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +72 -13
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +58 -9
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js +34 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-web.js +1 -3
- package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/actions/generate-wallet.enclave.js +1 -1
- package/dist/cjs/wallets/in-app/core/actions/generate-wallet.enclave.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-message.enclave.js +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-message.enclave.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-transaction.enclave.js +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-transaction.enclave.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
- package/dist/cjs/wallets/injected/index.js +14 -20
- package/dist/cjs/wallets/injected/index.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/userop.js +1 -1
- package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js +56 -9
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js +71 -13
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js +57 -9
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/utils.js +32 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/utils.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/coinbase/coinbase-web.js +1 -3
- package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/esm/wallets/in-app/core/actions/generate-wallet.enclave.js +1 -1
- package/dist/esm/wallets/in-app/core/actions/generate-wallet.enclave.js.map +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js.map +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-transaction.enclave.js +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-transaction.enclave.js.map +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
- package/dist/esm/wallets/injected/index.js +14 -20
- package/dist/esm/wallets/injected/index.js.map +1 -1
- package/dist/esm/wallets/smart/lib/userop.js +1 -1
- package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
- package/dist/types/exports/react.d.ts +1 -1
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts +32 -4
- package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts +52 -4
- package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts +33 -4
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/utils.d.ts +7 -0
- package/dist/types/react/web/ui/prebuilt/NFT/utils.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/actions/generate-wallet.enclave.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/actions/sign-message.enclave.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/actions/sign-transaction.enclave.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/react.ts +1 -0
- package/src/react/web/ui/prebuilt/NFT/description.test.tsx +63 -0
- package/src/react/web/ui/prebuilt/NFT/description.tsx +70 -11
- package/src/react/web/ui/prebuilt/NFT/media.test.tsx +77 -0
- package/src/react/web/ui/prebuilt/NFT/media.tsx +106 -20
- package/src/react/web/ui/prebuilt/NFT/name.test.tsx +61 -0
- package/src/react/web/ui/prebuilt/NFT/name.tsx +71 -11
- package/src/react/web/ui/prebuilt/NFT/{NFT.test.tsx → provider.test.tsx} +34 -42
- package/src/react/web/ui/prebuilt/NFT/utils.test.ts +93 -0
- package/src/react/web/ui/prebuilt/NFT/utils.ts +41 -0
- package/src/utils/encoding/hex.test.ts +5 -0
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-web.ts +1 -5
- package/src/wallets/in-app/core/actions/generate-wallet.enclave.ts +3 -1
- package/src/wallets/in-app/core/actions/sign-message.enclave.ts +3 -1
- package/src/wallets/in-app/core/actions/sign-transaction.enclave.ts +3 -1
- package/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts +3 -1
- package/src/wallets/injected/index.ts +14 -19
- package/src/wallets/smart/lib/userop.ts +3 -1
- package/src/wallets/smart/smart-wallet-dev.test.ts +18 -20
- package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js +0 -45
- package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js.map +0 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js +0 -41
- package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js.map +0 -1
- package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts +0 -14
- package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts.map +0 -1
- 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-
|
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(
|
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(
|
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(
|
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(
|
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
|
-
|
352
|
-
} catch (e: any) {
|
351
|
+
} catch {
|
353
352
|
// if chain does not exist, add the chain
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
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(
|
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 {
|
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 =
|
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
|
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
|
-
|
41
|
-
|
42
|
-
|
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
|
69
|
-
await smartAccount.signMessage({
|
70
|
-
|
71
|
-
|
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
|
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
|
-
}
|