thirdweb 5.84.0 → 5.86.0-nightly-89beb3c5d356b17a60b85ed0a2242e779c4d56a2-20250121000314
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/ai/chat.js +29 -3
- package/dist/cjs/ai/chat.js.map +1 -1
- package/dist/cjs/ai/common.js +12 -5
- package/dist/cjs/ai/common.js.map +1 -1
- package/dist/cjs/ai/execute.js +29 -5
- package/dist/cjs/ai/execute.js.map +1 -1
- package/dist/cjs/analytics/track/pay.js +1 -0
- package/dist/cjs/analytics/track/pay.js.map +1 -1
- package/dist/cjs/chains/chain-definitions/mode.js +19 -0
- package/dist/cjs/chains/chain-definitions/mode.js.map +1 -0
- package/dist/cjs/contract/deployment/zksync/implementations.js +4 -0
- package/dist/cjs/contract/deployment/zksync/implementations.js.map +1 -1
- package/dist/cjs/exports/chains.js +3 -1
- package/dist/cjs/exports/chains.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-marketplace.js +21 -2
- package/dist/cjs/extensions/prebuilts/deploy-marketplace.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-published.js +2 -2
- package/dist/cjs/gas/fee-data.js +1 -0
- package/dist/cjs/gas/fee-data.js.map +1 -1
- package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +34 -1
- package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +3 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +3 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -1
- package/dist/cjs/utils/extensions/drops/get-claim-params.js +1 -2
- package/dist/cjs/utils/extensions/drops/get-claim-params.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/connection/autoConnect.js +1 -0
- package/dist/cjs/wallets/connection/autoConnect.js.map +1 -1
- package/dist/esm/ai/chat.js +29 -3
- package/dist/esm/ai/chat.js.map +1 -1
- package/dist/esm/ai/common.js +12 -5
- package/dist/esm/ai/common.js.map +1 -1
- package/dist/esm/ai/execute.js +29 -5
- package/dist/esm/ai/execute.js.map +1 -1
- package/dist/esm/analytics/track/pay.js +1 -0
- package/dist/esm/analytics/track/pay.js.map +1 -1
- package/dist/esm/chains/chain-definitions/mode.js +16 -0
- package/dist/esm/chains/chain-definitions/mode.js.map +1 -0
- package/dist/esm/contract/deployment/zksync/implementations.js +4 -0
- package/dist/esm/contract/deployment/zksync/implementations.js.map +1 -1
- package/dist/esm/exports/chains.js +1 -0
- package/dist/esm/exports/chains.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-marketplace.js +21 -2
- package/dist/esm/extensions/prebuilts/deploy-marketplace.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-published.js +2 -2
- package/dist/esm/gas/fee-data.js +1 -0
- package/dist/esm/gas/fee-data.js.map +1 -1
- package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +34 -1
- package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js +3 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js +3 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -1
- package/dist/esm/utils/extensions/drops/get-claim-params.js +1 -2
- package/dist/esm/utils/extensions/drops/get-claim-params.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/connection/autoConnect.js +1 -0
- package/dist/esm/wallets/connection/autoConnect.js.map +1 -1
- package/dist/types/ai/chat.d.ts +29 -3
- package/dist/types/ai/chat.d.ts.map +1 -1
- package/dist/types/ai/common.d.ts +9 -3
- package/dist/types/ai/common.d.ts.map +1 -1
- package/dist/types/ai/execute.d.ts +29 -5
- package/dist/types/ai/execute.d.ts.map +1 -1
- package/dist/types/analytics/track/pay.d.ts +1 -0
- package/dist/types/analytics/track/pay.d.ts.map +1 -1
- package/dist/types/chains/chain-definitions/mode.d.ts +7 -0
- package/dist/types/chains/chain-definitions/mode.d.ts.map +1 -0
- package/dist/types/contract/deployment/zksync/implementations.d.ts.map +1 -1
- package/dist/types/exports/chains.d.ts +1 -0
- package/dist/types/exports/chains.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-marketplace.d.ts +21 -2
- package/dist/types/extensions/prebuilts/deploy-marketplace.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-published.d.ts +2 -2
- package/dist/types/gas/fee-data.d.ts.map +1 -1
- package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
- 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 +2 -1
- 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 +2 -1
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -1
- package/dist/types/utils/extensions/drops/get-claim-params.d.ts +1 -2
- package/dist/types/utils/extensions/drops/get-claim-params.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/connection/autoConnect.d.ts +1 -0
- package/dist/types/wallets/connection/autoConnect.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/ai/chat.test.ts +16 -5
- package/src/ai/chat.ts +29 -3
- package/src/ai/common.ts +25 -8
- package/src/ai/execute.test.ts +12 -7
- package/src/ai/execute.ts +29 -5
- package/src/analytics/track/pay.ts +2 -0
- package/src/auth/verify-signature.test.ts +11 -6
- package/src/chains/chain-definitions/mode.ts +16 -0
- package/src/contract/deployment/zksync/implementations.ts +4 -0
- package/src/exports/chains.ts +1 -0
- package/src/extensions/ens/resolve-l2-name.test.ts +1 -1
- package/src/extensions/prebuilts/deploy-marketplace.ts +21 -2
- package/src/extensions/prebuilts/deploy-published.ts +2 -2
- package/src/gas/fee-data.ts +1 -0
- package/src/react/core/hooks/transaction/useSendTransaction.ts +34 -1
- package/src/react/web/ui/prebuilt/NFT/description.tsx +1 -0
- package/src/react/web/ui/prebuilt/NFT/media.test.tsx +14 -1
- package/src/react/web/ui/prebuilt/NFT/media.tsx +4 -1
- package/src/react/web/ui/prebuilt/NFT/name.test.tsx +44 -6
- package/src/react/web/ui/prebuilt/NFT/name.tsx +4 -1
- package/src/utils/extensions/drops/get-claim-params.ts +1 -2
- package/src/version.ts +1 -1
- package/src/wallets/connection/autoConnect.ts +1 -0
package/src/ai/execute.ts
CHANGED
@@ -8,22 +8,46 @@ import { type Input, nebulaFetch } from "./common.js";
|
|
8
8
|
*
|
9
9
|
* @param input - The input for the transaction.
|
10
10
|
* @returns The transaction hash.
|
11
|
-
* @beta
|
11
|
+
* @beta This API is in early access and might change in the future.
|
12
12
|
* @nebula
|
13
13
|
*
|
14
14
|
* @example
|
15
15
|
* ```ts
|
16
16
|
* import { Nebula } from "thirdweb/ai";
|
17
17
|
*
|
18
|
+
* const wallet = createWallet("io.metamask");
|
19
|
+
* const account = wallet.connect({ client });
|
20
|
+
*
|
18
21
|
* const result = await Nebula.execute({
|
19
|
-
* client
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
22
|
+
* client,
|
23
|
+
* account, // transactions will be sent from this account
|
24
|
+
* message: "send 0.0001 ETH to vitalik.eth",
|
25
|
+
* contextFilter: {
|
23
26
|
* chains: [sepolia],
|
24
27
|
* },
|
25
28
|
* });
|
26
29
|
* ```
|
30
|
+
*
|
31
|
+
* Multi message prompt:
|
32
|
+
*
|
33
|
+
* ```ts
|
34
|
+
* Nebula.execute({
|
35
|
+
* client,
|
36
|
+
* account,
|
37
|
+
* messages: [
|
38
|
+
* { role: "user", content: "What's the address of vitalik.eth" },
|
39
|
+
* {
|
40
|
+
* role: "assistant",
|
41
|
+
* content:
|
42
|
+
* "The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298",
|
43
|
+
* },
|
44
|
+
* { role: "user", content: "Send them 0.0001 ETH" },
|
45
|
+
* ],
|
46
|
+
* contextFilter: {
|
47
|
+
* chains: [sepolia],
|
48
|
+
* },
|
49
|
+
* });
|
50
|
+
* ```
|
27
51
|
*/
|
28
52
|
export async function execute(
|
29
53
|
input: Input & { account: Account },
|
@@ -17,6 +17,7 @@ export async function trackPayEvent(args: {
|
|
17
17
|
toAmount?: string;
|
18
18
|
chainId?: number;
|
19
19
|
dstChainId?: number;
|
20
|
+
error?: string;
|
20
21
|
}) {
|
21
22
|
return track({
|
22
23
|
client: args.client,
|
@@ -32,6 +33,7 @@ export async function trackPayEvent(args: {
|
|
32
33
|
amountWei: args.fromAmount,
|
33
34
|
dstTokenAddress: args.toToken,
|
34
35
|
dstChainId: args.chainId,
|
36
|
+
errorCode: args.error,
|
35
37
|
},
|
36
38
|
});
|
37
39
|
}
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import * as ox__Bytes from "ox/Bytes";
|
2
|
-
import { describe, expect, it, test } from "vitest";
|
2
|
+
import { beforeAll, describe, expect, it, test } from "vitest";
|
3
3
|
import { FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
|
4
4
|
import { TEST_CLIENT } from "../../test/src/test-clients.js";
|
5
5
|
import { TEST_ACCOUNT_A } from "../../test/src/test-wallets.js";
|
6
6
|
import { ethereum, mainnet } from "../chains/chain-definitions/ethereum.js";
|
7
7
|
import { sepolia } from "../chains/chain-definitions/sepolia.js";
|
8
|
+
import type { Account } from "../wallets/interfaces/wallet.js";
|
8
9
|
import { smartWallet } from "../wallets/smart/smart-wallet.js";
|
9
10
|
import {
|
10
11
|
verifyContractWalletSignature,
|
@@ -64,7 +65,7 @@ describe("verifyEOASignature", () => {
|
|
64
65
|
|
65
66
|
describe.runIf(process.env.TW_SECRET_KEY)(
|
66
67
|
"verifyContractWalletSignature",
|
67
|
-
|
68
|
+
() => {
|
68
69
|
it("should verify a valid signature", async () => {
|
69
70
|
expect(
|
70
71
|
await verifySignature({
|
@@ -107,15 +108,19 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
107
108
|
|
108
109
|
describe.runIf(process.env.TW_SECRET_KEY)(
|
109
110
|
"verifyContractWalletSignature",
|
110
|
-
|
111
|
+
() => {
|
111
112
|
const message = "Hakuna matata";
|
112
113
|
const wallet = smartWallet({
|
113
114
|
chain: ethereum,
|
114
115
|
gasless: true,
|
115
116
|
});
|
116
|
-
|
117
|
-
|
118
|
-
|
117
|
+
let smartAccount: Account;
|
118
|
+
|
119
|
+
beforeAll(async () => {
|
120
|
+
smartAccount = await wallet.connect({
|
121
|
+
client: TEST_CLIENT,
|
122
|
+
personalAccount: TEST_ACCOUNT_A,
|
123
|
+
});
|
119
124
|
});
|
120
125
|
|
121
126
|
test("should verify a smart account signature", async () => {
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { defineChain } from "../utils.js";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @chain
|
5
|
+
*/
|
6
|
+
export const mode = /* @__PURE__ */ defineChain({
|
7
|
+
id: 919,
|
8
|
+
name: "Mode",
|
9
|
+
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
10
|
+
blockExplorers: [
|
11
|
+
{
|
12
|
+
name: "Modescout",
|
13
|
+
url: "https://explorer.mode.network/",
|
14
|
+
},
|
15
|
+
],
|
16
|
+
});
|
@@ -14,6 +14,9 @@ export const ZKSYNC_IMPLEMENTATIONS: Record<number, Record<string, string>> = {
|
|
14
14
|
[37111]: {
|
15
15
|
MarketplaceV3: "0x56Abb6a3f25DCcdaDa106191053b1CC54C196DEE",
|
16
16
|
},
|
17
|
+
[555271]: {
|
18
|
+
MarketplaceV3: "0x9EB0830B0b10010F2a53383517A7D0B75531Bb1b",
|
19
|
+
},
|
17
20
|
};
|
18
21
|
|
19
22
|
export const ZKSYNC_WETH: Record<number, string> = {
|
@@ -21,4 +24,5 @@ export const ZKSYNC_WETH: Record<number, string> = {
|
|
21
24
|
[324]: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
|
22
25
|
[11124]: "0x9EDCde0257F2386Ce177C3a7FCdd97787F0D841d",
|
23
26
|
[37111]: "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16",
|
27
|
+
[555271]: "0xb0b8b267d44c64BA6dD1Daf442949887c85199f6",
|
24
28
|
};
|
package/src/exports/chains.ts
CHANGED
@@ -77,4 +77,5 @@ export { celoAlfajoresTestnet } from "../chains/chain-definitions/celo-alfajores
|
|
77
77
|
export { fraxtalTestnet } from "../chains/chain-definitions/fraxtal-testnet.js";
|
78
78
|
export { metalL2Testnet } from "../chains/chain-definitions/metal-l2-testnet.js";
|
79
79
|
export { modeTestnet } from "../chains/chain-definitions/mode-testnet.js";
|
80
|
+
export { mode } from "../chains/chain-definitions/mode.js";
|
80
81
|
export { soneiumMinato } from "../chains/chain-definitions/soneium-minato.js";
|
@@ -7,7 +7,7 @@ import { resolveL2Name } from "./resolve-l2-name.js";
|
|
7
7
|
// skip this test suite if there is no secret key available to test with
|
8
8
|
// TODO: remove reliance on secret key during unit tests entirely
|
9
9
|
describe.runIf(process.env.TW_SECRET_KEY)("ENS:resolve-l2-name", () => {
|
10
|
-
it("should resolve Basename", async () => {
|
10
|
+
it.skip("should resolve Basename", async () => {
|
11
11
|
const ens = await resolveL2Name({
|
12
12
|
client: TEST_CLIENT,
|
13
13
|
// myk.base.eth
|
@@ -42,8 +42,27 @@ export type DeployMarketplaceContractOptions = Prettify<
|
|
42
42
|
>;
|
43
43
|
|
44
44
|
/**
|
45
|
-
*
|
46
|
-
* @
|
45
|
+
* Deploys a marketplace contract.
|
46
|
+
* @param options - The options for deploying the marketplace contract.
|
47
|
+
*
|
48
|
+
* @extension MARKETPLACE
|
49
|
+
*
|
50
|
+
* @example
|
51
|
+
* ```ts
|
52
|
+
* import { deployMarketplaceContract } from "thirdweb/deploys";
|
53
|
+
*
|
54
|
+
* const address = await deployMarketplaceContract({
|
55
|
+
client,
|
56
|
+
chain,
|
57
|
+
account,
|
58
|
+
params: {
|
59
|
+
name: "MarketplaceV3",
|
60
|
+
description: "MarketplaceV3 deployed using thirdweb SDK",
|
61
|
+
platformFeeRecipient: "0x21d514c90ee4E4e4Cd16Ce9185BF01F0F1eE4A04",
|
62
|
+
platformFeeBps: 1000,
|
63
|
+
},
|
64
|
+
});
|
65
|
+
* ```
|
47
66
|
*/
|
48
67
|
export async function deployMarketplaceContract(
|
49
68
|
options: DeployMarketplaceContractOptions,
|
@@ -50,7 +50,7 @@ export type DeployPublishedContractOptions = {
|
|
50
50
|
* ```ts
|
51
51
|
* import { deployPublishedContract } from "thirdweb/deploys";
|
52
52
|
*
|
53
|
-
* const address = await
|
53
|
+
* const address = await deployPublishedContract({
|
54
54
|
* client,
|
55
55
|
* chain,
|
56
56
|
* account,
|
@@ -68,7 +68,7 @@ export type DeployPublishedContractOptions = {
|
|
68
68
|
* ```ts
|
69
69
|
* import { deployPublishedContract } from "thirdweb/deploys";
|
70
70
|
*
|
71
|
-
* const address = await
|
71
|
+
* const address = await deployPublishedContract({
|
72
72
|
* client,
|
73
73
|
* chain,
|
74
74
|
* account,
|
package/src/gas/fee-data.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { type UseMutationResult, useMutation } from "@tanstack/react-query";
|
2
|
+
import { trackPayEvent } from "../../../../analytics/track/pay.js";
|
2
3
|
import type { Chain } from "../../../../chains/types.js";
|
3
4
|
import type { BuyWithCryptoStatus } from "../../../../pay/buyWithCrypto/getStatus.js";
|
4
5
|
import type { BuyWithFiatStatus } from "../../../../pay/buyWithFiat/getStatus.js";
|
@@ -146,6 +147,13 @@ export function useSendTransactionCore(args: {
|
|
146
147
|
}
|
147
148
|
|
148
149
|
if (!showPayModal) {
|
150
|
+
trackPayEvent({
|
151
|
+
client: tx.client,
|
152
|
+
walletAddress: account.address,
|
153
|
+
walletType: wallet?.id,
|
154
|
+
dstChainId: tx.chain.id,
|
155
|
+
event: "pay_transaction_modal_disabled",
|
156
|
+
});
|
149
157
|
return sendTransaction({
|
150
158
|
transaction: tx,
|
151
159
|
account,
|
@@ -174,7 +182,17 @@ export function useSendTransactionCore(args: {
|
|
174
182
|
await Promise.all([
|
175
183
|
resolvePromisedValue(tx.value),
|
176
184
|
resolvePromisedValue(tx.erc20Value),
|
177
|
-
fetchBuySupportedDestinations(tx.client).catch(() =>
|
185
|
+
fetchBuySupportedDestinations(tx.client).catch((err) => {
|
186
|
+
trackPayEvent({
|
187
|
+
client: tx.client,
|
188
|
+
walletAddress: account.address,
|
189
|
+
walletType: wallet?.id,
|
190
|
+
dstChainId: tx.chain.id,
|
191
|
+
event: "pay_transaction_modal_pay_api_error",
|
192
|
+
error: err?.message,
|
193
|
+
});
|
194
|
+
return null;
|
195
|
+
}),
|
178
196
|
]);
|
179
197
|
|
180
198
|
if (!supportedDestinations) {
|
@@ -198,6 +216,14 @@ export function useSendTransactionCore(args: {
|
|
198
216
|
),
|
199
217
|
))
|
200
218
|
) {
|
219
|
+
trackPayEvent({
|
220
|
+
client: tx.client,
|
221
|
+
walletAddress: account.address,
|
222
|
+
walletType: wallet?.id,
|
223
|
+
dstChainId: tx.chain.id,
|
224
|
+
event: "pay_transaction_modal_chain_token_not_supported",
|
225
|
+
error: `chain ${tx.chain.id} ${_erc20Value ? `/ token ${_erc20Value?.tokenAddress}` : ""} not supported`,
|
226
|
+
});
|
201
227
|
// chain/token not supported, just send the tx
|
202
228
|
sendTx();
|
203
229
|
return;
|
@@ -241,6 +267,13 @@ export function useSendTransactionCore(args: {
|
|
241
267
|
resolveTx: resolve,
|
242
268
|
});
|
243
269
|
} else {
|
270
|
+
trackPayEvent({
|
271
|
+
client: tx.client,
|
272
|
+
walletAddress: account.address,
|
273
|
+
walletType: wallet?.id,
|
274
|
+
dstChainId: tx.chain.id,
|
275
|
+
event: "pay_transaction_modal_has_enough_funds",
|
276
|
+
});
|
244
277
|
sendTx();
|
245
278
|
}
|
246
279
|
} catch (e) {
|
@@ -7,6 +7,8 @@ import {
|
|
7
7
|
import { getFunctionId } from "../../../../../utils/function-id.js";
|
8
8
|
import { fetchNftMedia, getQueryKey } from "./media.js";
|
9
9
|
|
10
|
+
const testContractAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
|
11
|
+
|
10
12
|
describe.runIf(process.env.TW_SECRET_KEY)("NFTMedia", () => {
|
11
13
|
it("fetchNftMedia should work with ERC721", async () => {
|
12
14
|
const desc = await fetchNftMedia({
|
@@ -77,9 +79,16 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTMedia", () => {
|
|
77
79
|
});
|
78
80
|
|
79
81
|
it("getQueryKey should work without mediaResolver", () => {
|
80
|
-
expect(
|
82
|
+
expect(
|
83
|
+
getQueryKey({
|
84
|
+
chainId: 1,
|
85
|
+
tokenId: 1n,
|
86
|
+
contractAddress: testContractAddress,
|
87
|
+
}),
|
88
|
+
).toStrictEqual([
|
81
89
|
"_internal_nft_media_",
|
82
90
|
1,
|
91
|
+
testContractAddress,
|
83
92
|
"1",
|
84
93
|
{
|
85
94
|
resolver: undefined,
|
@@ -90,6 +99,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTMedia", () => {
|
|
90
99
|
it("getQueryKey should work with mediaResolver being an object", () => {
|
91
100
|
expect(
|
92
101
|
getQueryKey({
|
102
|
+
contractAddress: testContractAddress,
|
93
103
|
chainId: 1,
|
94
104
|
tokenId: 1n,
|
95
105
|
mediaResolver: {
|
@@ -100,6 +110,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTMedia", () => {
|
|
100
110
|
).toStrictEqual([
|
101
111
|
"_internal_nft_media_",
|
102
112
|
1,
|
113
|
+
testContractAddress,
|
103
114
|
"1",
|
104
115
|
{
|
105
116
|
resolver: {
|
@@ -119,12 +130,14 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTMedia", () => {
|
|
119
130
|
expect(
|
120
131
|
getQueryKey({
|
121
132
|
chainId: 1,
|
133
|
+
contractAddress: testContractAddress,
|
122
134
|
tokenId: 1n,
|
123
135
|
mediaResolver: fn,
|
124
136
|
}),
|
125
137
|
).toStrictEqual([
|
126
138
|
"_internal_nft_media_",
|
127
139
|
1,
|
140
|
+
testContractAddress,
|
128
141
|
"1",
|
129
142
|
{
|
130
143
|
resolver: fnId,
|
@@ -133,6 +133,7 @@ export function NFTMedia({
|
|
133
133
|
const { contract, tokenId } = useNFTContext();
|
134
134
|
const mediaQuery = useQuery({
|
135
135
|
queryKey: getQueryKey({
|
136
|
+
contractAddress: contract.address,
|
136
137
|
chainId: contract.chain.id,
|
137
138
|
tokenId,
|
138
139
|
mediaResolver,
|
@@ -164,6 +165,7 @@ export function NFTMedia({
|
|
164
165
|
* @internal
|
165
166
|
*/
|
166
167
|
export function getQueryKey(props: {
|
168
|
+
contractAddress: string;
|
167
169
|
chainId: number;
|
168
170
|
tokenId: bigint;
|
169
171
|
mediaResolver?:
|
@@ -171,10 +173,11 @@ export function getQueryKey(props: {
|
|
171
173
|
| (() => NFTMediaInfo)
|
172
174
|
| (() => Promise<NFTMediaInfo>);
|
173
175
|
}) {
|
174
|
-
const { chainId, tokenId, mediaResolver } = props;
|
176
|
+
const { chainId, tokenId, mediaResolver, contractAddress } = props;
|
175
177
|
return [
|
176
178
|
"_internal_nft_media_",
|
177
179
|
chainId,
|
180
|
+
contractAddress,
|
178
181
|
tokenId.toString(),
|
179
182
|
{
|
180
183
|
resolver:
|
@@ -7,6 +7,8 @@ import {
|
|
7
7
|
import { getFunctionId } from "../../../../../utils/function-id.js";
|
8
8
|
import { fetchNftName, getQueryKey } from "./name.js";
|
9
9
|
|
10
|
+
const testContractAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
|
11
|
+
|
10
12
|
describe.runIf(process.env.TW_SECRET_KEY)("NFTName", () => {
|
11
13
|
it("fetchNftName should work with ERC721", async () => {
|
12
14
|
const desc = await fetchNftName({
|
@@ -61,9 +63,16 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTName", () => {
|
|
61
63
|
});
|
62
64
|
|
63
65
|
it("getQueryKey should work without nameResolver", () => {
|
64
|
-
expect(
|
66
|
+
expect(
|
67
|
+
getQueryKey({
|
68
|
+
chainId: 1,
|
69
|
+
tokenId: 1n,
|
70
|
+
contractAddress: testContractAddress,
|
71
|
+
}),
|
72
|
+
).toStrictEqual([
|
65
73
|
"_internal_nft_name_",
|
66
74
|
1,
|
75
|
+
testContractAddress,
|
67
76
|
"1",
|
68
77
|
{ resolver: undefined },
|
69
78
|
]);
|
@@ -71,16 +80,38 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTName", () => {
|
|
71
80
|
|
72
81
|
it("getQueryKey should work with nameResolver being a string", () => {
|
73
82
|
expect(
|
74
|
-
getQueryKey({
|
75
|
-
|
83
|
+
getQueryKey({
|
84
|
+
chainId: 1,
|
85
|
+
tokenId: 1n,
|
86
|
+
nameResolver: "test",
|
87
|
+
contractAddress: testContractAddress,
|
88
|
+
}),
|
89
|
+
).toStrictEqual([
|
90
|
+
"_internal_nft_name_",
|
91
|
+
1,
|
92
|
+
testContractAddress,
|
93
|
+
"1",
|
94
|
+
{ resolver: "test" },
|
95
|
+
]);
|
76
96
|
});
|
77
97
|
|
78
98
|
it("getQueryKey should work with nameResolver being a () => string", () => {
|
79
99
|
const fn = () => "test";
|
80
100
|
const fnId = getFunctionId(fn);
|
81
101
|
expect(
|
82
|
-
getQueryKey({
|
83
|
-
|
102
|
+
getQueryKey({
|
103
|
+
chainId: 1,
|
104
|
+
tokenId: 1n,
|
105
|
+
nameResolver: fn,
|
106
|
+
contractAddress: testContractAddress,
|
107
|
+
}),
|
108
|
+
).toStrictEqual([
|
109
|
+
"_internal_nft_name_",
|
110
|
+
1,
|
111
|
+
testContractAddress,
|
112
|
+
"1",
|
113
|
+
{ resolver: fnId },
|
114
|
+
]);
|
84
115
|
});
|
85
116
|
|
86
117
|
it("getQueryKey should work with nameResolver being a async () => string", () => {
|
@@ -91,7 +122,14 @@ describe.runIf(process.env.TW_SECRET_KEY)("NFTName", () => {
|
|
91
122
|
chainId: 1,
|
92
123
|
tokenId: 1n,
|
93
124
|
nameResolver: fn,
|
125
|
+
contractAddress: testContractAddress,
|
94
126
|
}),
|
95
|
-
).toStrictEqual([
|
127
|
+
).toStrictEqual([
|
128
|
+
"_internal_nft_name_",
|
129
|
+
1,
|
130
|
+
testContractAddress,
|
131
|
+
"1",
|
132
|
+
{ resolver: fnId },
|
133
|
+
]);
|
96
134
|
});
|
97
135
|
});
|
@@ -95,6 +95,7 @@ export function NFTName({
|
|
95
95
|
|
96
96
|
const nameQuery = useQuery({
|
97
97
|
queryKey: getQueryKey({
|
98
|
+
contractAddress: contract.address,
|
98
99
|
chainId: contract.chain.id,
|
99
100
|
tokenId,
|
100
101
|
nameResolver,
|
@@ -118,14 +119,16 @@ export function NFTName({
|
|
118
119
|
* @internal
|
119
120
|
*/
|
120
121
|
export function getQueryKey(props: {
|
122
|
+
contractAddress: string;
|
121
123
|
chainId: number;
|
122
124
|
tokenId: bigint;
|
123
125
|
nameResolver?: string | (() => string) | (() => Promise<string>);
|
124
126
|
}) {
|
125
|
-
const { chainId, tokenId, nameResolver } = props;
|
127
|
+
const { chainId, tokenId, nameResolver, contractAddress } = props;
|
126
128
|
return [
|
127
129
|
"_internal_nft_name_",
|
128
130
|
chainId,
|
131
|
+
contractAddress,
|
129
132
|
tokenId.toString(),
|
130
133
|
{
|
131
134
|
resolver:
|
@@ -32,7 +32,6 @@ export type GetClaimParamsOptions = {
|
|
32
32
|
* Get the claim parameters for a given drop
|
33
33
|
* @param options - The options for getting the claim parameters
|
34
34
|
* @returns The claim parameters
|
35
|
-
* @extension ERC1155
|
36
35
|
* @example
|
37
36
|
* ```ts
|
38
37
|
* import { getClaimParams } from "thirdweb/utils";
|
@@ -45,7 +44,7 @@ export type GetClaimParamsOptions = {
|
|
45
44
|
* tokenId: 0n,
|
46
45
|
* });
|
47
46
|
* ```
|
48
|
-
* @
|
47
|
+
* @utils
|
49
48
|
*/
|
50
49
|
export async function getClaimParams(options: GetClaimParamsOptions) {
|
51
50
|
const cc: ClaimCondition = await (async () => {
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.
|
1
|
+
export const version = "5.86.0-nightly-89beb3c5d356b17a60b85ed0a2242e779c4d56a2-20250121000314";
|
@@ -27,6 +27,7 @@ import type { AutoConnectProps } from "./types.js";
|
|
27
27
|
* @param props - The auto-connect configuration properties
|
28
28
|
* @param props.wallets - Array of wallet instances to consider for auto-connection
|
29
29
|
* @returns {boolean} a promise resolving to true or false depending on whether the auto connect function connected to a wallet or not
|
30
|
+
* @walletConnection
|
30
31
|
*/
|
31
32
|
export const autoConnect = async (
|
32
33
|
props: AutoConnectProps & {
|