thirdweb 5.61.2 → 5.61.3

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.
@@ -29,7 +29,7 @@ async function getNFT(options) {
29
29
  .catch(() => null)
30
30
  : null,
31
31
  ]);
32
- if (!uri) {
32
+ if (!uri?.trim()) {
33
33
  return (0, parseNft_js_1.parseNFT)({
34
34
  id: options.tokenId,
35
35
  type: "ERC721",
@@ -1 +1 @@
1
- {"version":3,"file":"getNFT.js","sourceRoot":"","sources":["../../../../../src/extensions/erc721/read/getNFT.ts"],"names":[],"mappings":";;;AAsCA,wBA6CC;AAlFD,oFAA8E;AAC9E,gEAAoE;AAEpE,4EAGoD;AAEpD,0EAAsG;AAA7F,gHAAA,mBAAmB,OAAqB;AAejD;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,MAAM,CAC1B,OAA6C;IAE7C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrC,IAAA,sBAAQ,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,qCAAO,2CAA2C,GAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,IAAI;KACT,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAA,sBAAQ,EACb;YACE,EAAE,EAAE,OAAO,CAAC,OAAO;YACnB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,EAAE;SACR,EACD;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,CACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,sBAAQ,EACb,MAAM,IAAA,0CAAkB,EAAC;QACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACd,EAAE,EAAE,OAAO,CAAC,OAAO;QACnB,IAAI,EAAE,QAAQ;QACd,GAAG;KACJ,CAAC,CAAC,EACH;QACE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,QAAQ;QACd,KAAK;KACN,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getNFT.js","sourceRoot":"","sources":["../../../../../src/extensions/erc721/read/getNFT.ts"],"names":[],"mappings":";;;AAsCA,wBA6CC;AAlFD,oFAA8E;AAC9E,gEAAoE;AAEpE,4EAGoD;AAEpD,0EAAsG;AAA7F,gHAAA,mBAAmB,OAAqB;AAejD;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,MAAM,CAC1B,OAA6C;IAE7C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrC,IAAA,sBAAQ,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,qCAAO,2CAA2C,GAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,IAAI;KACT,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,IAAA,sBAAQ,EACb;YACE,EAAE,EAAE,OAAO,CAAC,OAAO;YACnB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,EAAE;SACR,EACD;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,CACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,sBAAQ,EACb,MAAM,IAAA,0CAAkB,EAAC;QACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACd,EAAE,EAAE,OAAO,CAAC,OAAO;QACnB,IAAI,EAAE,QAAQ;QACd,GAAG;KACJ,CAAC,CAAC,EACH;QACE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,QAAQ;QACd,KAAK;KACN,CACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = "5.61.2";
4
+ exports.version = "5.61.3";
5
5
  //# sourceMappingURL=version.js.map
@@ -34,11 +34,13 @@ async function predictAddress(args) {
34
34
  if (!adminAddress) {
35
35
  throw new Error("Account address is required to predict the smart wallet address.");
36
36
  }
37
- const extraData = (0, hex_js_1.stringToHex)(accountSalt ?? "");
37
+ const saltHex = accountSalt && (0, hex_js_1.isHex)(accountSalt)
38
+ ? accountSalt
39
+ : (0, hex_js_1.stringToHex)(accountSalt ?? "");
38
40
  return (0, read_contract_js_1.readContract)({
39
41
  contract: factoryContract,
40
42
  method: "function getAddress(address, bytes) returns (address)",
41
- params: [adminAddress, extraData],
43
+ params: [adminAddress, saltHex],
42
44
  });
43
45
  }
44
46
  /**
@@ -49,10 +51,13 @@ function prepareCreateAccount(args) {
49
51
  if (createAccount) {
50
52
  return createAccount(factoryContract);
51
53
  }
54
+ const saltHex = accountSalt && (0, hex_js_1.isHex)(accountSalt)
55
+ ? accountSalt
56
+ : (0, hex_js_1.stringToHex)(accountSalt ?? "");
52
57
  return (0, prepare_contract_call_js_1.prepareContractCall)({
53
58
  contract: factoryContract,
54
59
  method: "function createAccount(address, bytes) returns (address)",
55
- params: [adminAddress, (0, hex_js_1.stringToHex)(accountSalt ?? "")],
60
+ params: [adminAddress, saltHex],
56
61
  });
57
62
  }
58
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/calls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/calls.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export async function getNFT(options) {
25
25
  .catch(() => null)
26
26
  : null,
27
27
  ]);
28
- if (!uri) {
28
+ if (!uri?.trim()) {
29
29
  return parseNFT({
30
30
  id: options.tokenId,
31
31
  type: "ERC721",
@@ -1 +1 @@
1
- {"version":3,"file":"getNFT.js","sourceRoot":"","sources":["../../../../../src/extensions/erc721/read/getNFT.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAY,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAEL,QAAQ,GACT,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,mBAAmB,IAAI,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAetG;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAA6C;IAE7C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,MAAM,CAAC,2CAA2C,CAAC;iBAChD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,IAAI;KACT,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,QAAQ,CACb;YACE,EAAE,EAAE,OAAO,CAAC,OAAO;YACnB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,EAAE;SACR,EACD;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,CACF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CACb,MAAM,kBAAkB,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACd,EAAE,EAAE,OAAO,CAAC,OAAO;QACnB,IAAI,EAAE,QAAQ;QACd,GAAG;KACJ,CAAC,CAAC,EACH;QACE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,QAAQ;QACd,KAAK;KACN,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getNFT.js","sourceRoot":"","sources":["../../../../../src/extensions/erc721/read/getNFT.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAY,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAEL,QAAQ,GACT,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,mBAAmB,IAAI,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAetG;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAA6C;IAE7C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,MAAM,CAAC,2CAA2C,CAAC;iBAChD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,IAAI;KACT,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,QAAQ,CACb;YACE,EAAE,EAAE,OAAO,CAAC,OAAO;YACnB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,EAAE;SACR,EACD;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,CACF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CACb,MAAM,kBAAkB,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACd,EAAE,EAAE,OAAO,CAAC,OAAO;QACnB,IAAI,EAAE,QAAQ;QACd,GAAG;KACJ,CAAC,CAAC,EACH;QACE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,QAAQ;QACd,KAAK;KACN,CACF,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- export const version = "5.61.2";
1
+ export const version = "5.61.3";
2
2
  //# sourceMappingURL=version.js.map
@@ -1,6 +1,6 @@
1
1
  import { prepareContractCall } from "../../../transaction/prepare-contract-call.js";
2
2
  import { readContract } from "../../../transaction/read-contract.js";
3
- import { stringToHex } from "../../../utils/encoding/hex.js";
3
+ import { isHex, stringToHex } from "../../../utils/encoding/hex.js";
4
4
  /**
5
5
  * Predict the address of a smart account.
6
6
  * @param args - The options for predicting the address of a smart account.
@@ -28,11 +28,13 @@ export async function predictAddress(args) {
28
28
  if (!adminAddress) {
29
29
  throw new Error("Account address is required to predict the smart wallet address.");
30
30
  }
31
- const extraData = stringToHex(accountSalt ?? "");
31
+ const saltHex = accountSalt && isHex(accountSalt)
32
+ ? accountSalt
33
+ : stringToHex(accountSalt ?? "");
32
34
  return readContract({
33
35
  contract: factoryContract,
34
36
  method: "function getAddress(address, bytes) returns (address)",
35
- params: [adminAddress, extraData],
37
+ params: [adminAddress, saltHex],
36
38
  });
37
39
  }
38
40
  /**
@@ -43,10 +45,13 @@ export function prepareCreateAccount(args) {
43
45
  if (createAccount) {
44
46
  return createAccount(factoryContract);
45
47
  }
48
+ const saltHex = accountSalt && isHex(accountSalt)
49
+ ? accountSalt
50
+ : stringToHex(accountSalt ?? "");
46
51
  return prepareContractCall({
47
52
  contract: factoryContract,
48
53
  method: "function createAccount(address, bytes) returns (address)",
49
- params: [adminAddress, stringToHex(accountSalt ?? "")],
54
+ params: [adminAddress, saltHex],
50
55
  });
51
56
  }
52
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/calls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/calls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAGpE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAQpC;IACC,MAAM,EACJ,eAAe,EACf,sBAAsB,EAAE,cAAc,EACtC,YAAY,EACZ,WAAW,EACX,cAAc,GACf,GAAG,IAAI,CAAC;IACT,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GACX,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC;QAC/B,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,YAAY,CAAC;QAClB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,uDAAuD;QAC/D,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAOpC;IACC,MAAM,EACJ,YAAY,EACZ,eAAe,EACf,qBAAqB,EAAE,aAAa,EACpC,WAAW,GACZ,GAAG,IAAI,CAAC;IACT,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,OAAO,GACX,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC;QAC/B,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,mBAAmB,CAAC;QACzB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,0DAA0D;QAClE,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAO9B;IACC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,mBAAmB,CAAC;QACzB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,2CAA2C;QACnD,MAAM,EAAE;YACN,WAAW,CAAC,EAAE,IAAI,EAAE;YACpB,WAAW,CAAC,KAAK,IAAI,EAAE;YACvB,WAAW,CAAC,IAAI,IAAI,IAAI;SACzB;QACD,0GAA0G;QAC1G,gEAAgE;QAChE,iEAAiE;QACjE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAOnC;IACC,MAAM,EACJ,eAAe,EACf,YAAY,EACZ,oBAAoB,EAAE,YAAY,GACnC,GAAG,IAAI,CAAC;IACT,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,mBAAmB,CAAC;QACzB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,sDAAsD;QAC9D,MAAM,EAAE;YACN,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;YACrC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC;SAC1C;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.61.2";
1
+ export declare const version = "5.61.3";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAGvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,eAAe,EAAE,gBAAgB,CAAC;IAClC,sBAAsB,CAAC,EAAE,CACvB,eAAe,EAAE,gBAAgB,KAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,eAAe,EAAE,gBAAgB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,CACtB,eAAe,EAAE,gBAAgB,KAC9B,mBAAmB,CAAC;CAC1B,GAAG,mBAAmB,CAetB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,eAAe,EAAE,gBAAgB,CAAC;IAClC,WAAW,EAAE,qBAAqB,CAAC;IACnC,eAAe,CAAC,EAAE,CAChB,eAAe,EAAE,gBAAgB,EACjC,WAAW,EAAE,qBAAqB,KAC/B,mBAAmB,CAAC;CAC1B,GAAG,mBAAmB,CAkBtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,eAAe,EAAE,gBAAgB,CAAC;IAClC,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,oBAAoB,CAAC,EAAE,CACrB,eAAe,EAAE,gBAAgB,EACjC,YAAY,EAAE,qBAAqB,EAAE,KAClC,mBAAmB,CAAC;CAC1B,GAAG,mBAAmB,CAkBtB"}
1
+ {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAGvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,eAAe,EAAE,gBAAgB,CAAC;IAClC,sBAAsB,CAAC,EAAE,CACvB,eAAe,EAAE,gBAAgB,KAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,eAAe,EAAE,gBAAgB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,CACtB,eAAe,EAAE,gBAAgB,KAC9B,mBAAmB,CAAC;CAC1B,GAAG,mBAAmB,CAmBtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,eAAe,EAAE,gBAAgB,CAAC;IAClC,WAAW,EAAE,qBAAqB,CAAC;IACnC,eAAe,CAAC,EAAE,CAChB,eAAe,EAAE,gBAAgB,EACjC,WAAW,EAAE,qBAAqB,KAC/B,mBAAmB,CAAC;CAC1B,GAAG,mBAAmB,CAkBtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,eAAe,EAAE,gBAAgB,CAAC;IAClC,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,oBAAoB,CAAC,EAAE,CACrB,eAAe,EAAE,gBAAgB,EACjC,YAAY,EAAE,qBAAqB,EAAE,KAClC,mBAAmB,CAAC;CAC1B,GAAG,mBAAmB,CAkBtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.61.2",
3
+ "version": "5.61.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -1,6 +1,16 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
 
3
+ import { ANVIL_CHAIN } from "~test/chains.js";
4
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
5
+ import { TEST_CLIENT } from "~test/test-clients.js";
3
6
  import { DOODLES_CONTRACT } from "~test/test-contracts.js";
7
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
8
+ import { getContract } from "../../../contract/contract.js";
9
+ import { deployERC721Contract } from "../../../extensions/prebuilts/deploy-erc721.js";
10
+ import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and-confirm-transaction.js";
11
+ import { parseNFT } from "../../../utils/nft/parseNft.js";
12
+ import { setTokenURI } from "../__generated__/INFTMetadata/write/setTokenURI.js";
13
+ import { mintTo } from "../write/mintTo.js";
4
14
  import { getNFT } from "./getNFT.js";
5
15
 
6
16
  describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
@@ -89,4 +99,60 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
89
99
  }
90
100
  `);
91
101
  });
102
+
103
+ it("should return a default value if the URI of the token doesn't exist", async () => {
104
+ /**
105
+ * To create this test scenario, we first deploy an NFTCollection/Edition contract,
106
+ * mint a token, then purposefully change that token's URI to an empty string, using setTokenURI
107
+ */
108
+ const contract = getContract({
109
+ address: await deployERC721Contract({
110
+ chain: ANVIL_CHAIN,
111
+ client: TEST_CLIENT,
112
+ account: TEST_ACCOUNT_A,
113
+ type: "TokenERC721",
114
+ params: {
115
+ name: "",
116
+ contractURI: TEST_CONTRACT_URI,
117
+ },
118
+ }),
119
+ chain: ANVIL_CHAIN,
120
+ client: TEST_CLIENT,
121
+ });
122
+
123
+ await sendAndConfirmTransaction({
124
+ transaction: mintTo({
125
+ contract,
126
+ nft: { name: "token 0" },
127
+ to: TEST_ACCOUNT_A.address,
128
+ }),
129
+ account: TEST_ACCOUNT_A,
130
+ });
131
+
132
+ await sendAndConfirmTransaction({
133
+ transaction: setTokenURI({
134
+ contract,
135
+ tokenId: 0n,
136
+ // Need to have some spaces because NFTMetadata.sol does not allow to update an empty valud
137
+ uri: " ",
138
+ }),
139
+ account: TEST_ACCOUNT_A,
140
+ });
141
+
142
+ expect(await getNFT({ contract, tokenId: 0n })).toStrictEqual(
143
+ parseNFT(
144
+ {
145
+ id: 0n,
146
+ type: "ERC721",
147
+ uri: "",
148
+ },
149
+ {
150
+ tokenId: 0n,
151
+ tokenUri: "",
152
+ type: "ERC721",
153
+ owner: null,
154
+ },
155
+ ),
156
+ );
157
+ });
92
158
  });
@@ -48,7 +48,7 @@ export async function getNFT(
48
48
  : null,
49
49
  ]);
50
50
 
51
- if (!uri) {
51
+ if (!uri?.trim()) {
52
52
  return parseNFT(
53
53
  {
54
54
  id: options.tokenId,
@@ -1,6 +1,17 @@
1
+ import { type Abi, toFunctionSelector } from "viem";
1
2
  import { describe, expect, it } from "vitest";
2
-
3
- import { DOODLES_CONTRACT } from "~test/test-contracts.js";
3
+ import { ANVIL_CHAIN } from "~test/chains.js";
4
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
5
+ import { TEST_CLIENT } from "~test/test-clients.js";
6
+ import {
7
+ DOODLES_CONTRACT,
8
+ UNISWAPV3_FACTORY_CONTRACT,
9
+ } from "~test/test-contracts.js";
10
+ import { TEST_ACCOUNT_B } from "~test/test-wallets.js";
11
+ import { resolveContractAbi } from "../../../contract/actions/resolve-abi.js";
12
+ import { getContract } from "../../../contract/contract.js";
13
+ import { deployERC721Contract } from "../../../extensions/prebuilts/deploy-erc721.js";
14
+ import { isGetNFTSupported } from "./getNFT.js";
4
15
  import { getNFTs } from "./getNFTs.js";
5
16
 
6
17
  describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFTs", () => {
@@ -185,4 +196,35 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFTs", () => {
185
196
  it.todo("works for a contract with `1` indexed NFTs", async () => {
186
197
  // TODO find a contract that we can use that has "1 indexed" NFTs, then re-enable this test
187
198
  });
199
+
200
+ it("isGetNFTsSupported should work", async () => {
201
+ const contract = getContract({
202
+ address: await deployERC721Contract({
203
+ chain: ANVIL_CHAIN,
204
+ client: TEST_CLIENT,
205
+ type: "TokenERC721",
206
+ params: {
207
+ name: "",
208
+ contractURI: TEST_CONTRACT_URI,
209
+ },
210
+ account: TEST_ACCOUNT_B,
211
+ }),
212
+ chain: ANVIL_CHAIN,
213
+ client: TEST_CLIENT,
214
+ });
215
+
216
+ const abi = await resolveContractAbi<Abi>(contract);
217
+ const selectors = abi
218
+ .filter((f) => f.type === "function")
219
+ .map((f) => toFunctionSelector(f));
220
+ expect(isGetNFTSupported(selectors)).toBe(true);
221
+ });
222
+
223
+ it("should throw error if totalSupply and nextTokenIdToMint are not supported", async () => {
224
+ await expect(() =>
225
+ getNFTs({ contract: UNISWAPV3_FACTORY_CONTRACT }),
226
+ ).rejects.toThrowError(
227
+ "Contract requires either `nextTokenIdToMint` or `totalSupply` function available to determine the next token ID to mint",
228
+ );
229
+ });
188
230
  });
@@ -1,5 +1,9 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { DOODLES_CONTRACT } from "~test/test-contracts.js";
2
+ import {
3
+ DOODLES_CONTRACT,
4
+ UNISWAPV3_FACTORY_CONTRACT,
5
+ } from "~test/test-contracts.js";
6
+ import { TEST_ACCOUNT_B } from "~test/test-wallets.js";
3
7
  import { getOwnedTokenIds } from "./getOwnedTokenIds.js";
4
8
 
5
9
  describe.runIf(process.env.TW_SECRET_KEY)("erc721.getOwnedTokenIds", () => {
@@ -14,4 +18,14 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getOwnedTokenIds", () => {
14
18
  // so the data should not change
15
19
  expect(tokenIds.length).toBe(81);
16
20
  });
21
+
22
+ it("should throw if tokenOfOwnerByIndex or tokensOfOwner not supported", async () => {
23
+ // We know current Lens contract on Polygon doesn't have this.
24
+ const contract = UNISWAPV3_FACTORY_CONTRACT;
25
+ await expect(() =>
26
+ getOwnedTokenIds({ contract, owner: TEST_ACCOUNT_B.address }),
27
+ ).rejects.toThrowError(
28
+ `The contract at ${contract.address} on chain ${contract.chain.id} does not support the tokenOfOwnerByIndex or tokensOfOwner interface`,
29
+ );
30
+ });
17
31
  });
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.61.2";
1
+ export const version = "5.61.3";
@@ -2,7 +2,7 @@ import type { ThirdwebContract } from "../../../contract/contract.js";
2
2
  import { prepareContractCall } from "../../../transaction/prepare-contract-call.js";
3
3
  import type { PreparedTransaction } from "../../../transaction/prepare-transaction.js";
4
4
  import { readContract } from "../../../transaction/read-contract.js";
5
- import { stringToHex } from "../../../utils/encoding/hex.js";
5
+ import { isHex, stringToHex } from "../../../utils/encoding/hex.js";
6
6
  import type { SendTransactionOption } from "../../interfaces/wallet.js";
7
7
 
8
8
  /**
@@ -48,11 +48,14 @@ export async function predictAddress(args: {
48
48
  "Account address is required to predict the smart wallet address.",
49
49
  );
50
50
  }
51
- const extraData = stringToHex(accountSalt ?? "");
51
+ const saltHex =
52
+ accountSalt && isHex(accountSalt)
53
+ ? accountSalt
54
+ : stringToHex(accountSalt ?? "");
52
55
  return readContract({
53
56
  contract: factoryContract,
54
57
  method: "function getAddress(address, bytes) returns (address)",
55
- params: [adminAddress, extraData],
58
+ params: [adminAddress, saltHex],
56
59
  });
57
60
  }
58
61
 
@@ -76,10 +79,14 @@ export function prepareCreateAccount(args: {
76
79
  if (createAccount) {
77
80
  return createAccount(factoryContract);
78
81
  }
82
+ const saltHex =
83
+ accountSalt && isHex(accountSalt)
84
+ ? accountSalt
85
+ : stringToHex(accountSalt ?? "");
79
86
  return prepareContractCall({
80
87
  contract: factoryContract,
81
88
  method: "function createAccount(address, bytes) returns (address)",
82
- params: [adminAddress, stringToHex(accountSalt ?? "")],
89
+ params: [adminAddress, saltHex],
83
90
  });
84
91
  }
85
92
 
@@ -225,14 +225,12 @@ describe.runIf(process.env.TW_SECRET_KEY).sequential(
225
225
  client,
226
226
  });
227
227
  expect(isValidV1).toEqual(true);
228
- const isValidV2 = await checkContractWalletSignature({
228
+ const isValidV2 = await verifySignature({
229
229
  message,
230
230
  signature,
231
- contract: getContract({
232
- address: newAccount.address,
233
- chain,
234
- client,
235
- }),
231
+ address: newAccount.address,
232
+ chain,
233
+ client,
236
234
  });
237
235
  expect(isValidV2).toEqual(true);
238
236