thirdweb 5.115.3 → 5.115.4
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/utils/base64/base64.js +4 -2
- package/dist/cjs/utils/base64/base64.js.map +1 -1
- package/dist/cjs/utils/contract/fetchContractMetadata.js +10 -0
- package/dist/cjs/utils/contract/fetchContractMetadata.js.map +1 -1
- package/dist/cjs/utils/nft/fetchTokenMetadata.js +10 -0
- package/dist/cjs/utils/nft/fetchTokenMetadata.js.map +1 -1
- package/dist/cjs/utils/utf8/utf8.js +43 -0
- package/dist/cjs/utils/utf8/utf8.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/utils/getWalletBalance.js +6 -1
- package/dist/cjs/wallets/utils/getWalletBalance.js.map +1 -1
- package/dist/esm/utils/base64/base64.js +4 -2
- package/dist/esm/utils/base64/base64.js.map +1 -1
- package/dist/esm/utils/contract/fetchContractMetadata.js +10 -0
- package/dist/esm/utils/contract/fetchContractMetadata.js.map +1 -1
- package/dist/esm/utils/nft/fetchTokenMetadata.js +10 -0
- package/dist/esm/utils/nft/fetchTokenMetadata.js.map +1 -1
- package/dist/esm/utils/utf8/utf8.js +39 -0
- package/dist/esm/utils/utf8/utf8.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/utils/getWalletBalance.js +6 -1
- package/dist/esm/wallets/utils/getWalletBalance.js.map +1 -1
- package/dist/scripts/bridge-widget.js +67 -67
- package/dist/types/utils/base64/base64.d.ts +2 -2
- package/dist/types/utils/base64/base64.d.ts.map +1 -1
- package/dist/types/utils/contract/fetchContractMetadata.d.ts.map +1 -1
- package/dist/types/utils/nft/fetchTokenMetadata.d.ts.map +1 -1
- package/dist/types/utils/utf8/utf8.d.ts +26 -0
- package/dist/types/utils/utf8/utf8.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/utils/getWalletBalance.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/base64/base64.ts +5 -4
- package/src/utils/contract/fetchContractMetadata.ts +13 -0
- package/src/utils/nft/fetch-token-metadata.test.ts +38 -0
- package/src/utils/nft/fetchTokenMetadata.ts +13 -0
- package/src/utils/utf8/utf8.test.ts +93 -0
- package/src/utils/utf8/utf8.ts +40 -0
- package/src/version.ts +1 -1
- package/src/wallets/utils/getWalletBalance.ts +9 -1
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.isBase64JSON = isBase64JSON;
|
|
4
4
|
exports.parseBase64String = parseBase64String;
|
|
5
5
|
const uint8_array_js_1 = require("../uint8-array.js");
|
|
6
|
+
const Base64Prefix = "data:application/json;base64";
|
|
6
7
|
/**
|
|
7
8
|
* Checks if a given string is a base64 encoded JSON string.
|
|
8
9
|
* @param input - The string to be checked.
|
|
@@ -14,7 +15,7 @@ const uint8_array_js_1 = require("../uint8-array.js");
|
|
|
14
15
|
* ```
|
|
15
16
|
*/
|
|
16
17
|
function isBase64JSON(input) {
|
|
17
|
-
if (input.startsWith(
|
|
18
|
+
if (input.toLowerCase().startsWith(Base64Prefix)) {
|
|
18
19
|
return true;
|
|
19
20
|
}
|
|
20
21
|
return false;
|
|
@@ -30,7 +31,8 @@ function isBase64JSON(input) {
|
|
|
30
31
|
* ```
|
|
31
32
|
*/
|
|
32
33
|
function parseBase64String(input) {
|
|
33
|
-
const
|
|
34
|
+
const commaIndex = input.indexOf(",");
|
|
35
|
+
const base64 = input.slice(commaIndex + 1);
|
|
34
36
|
return (0, uint8_array_js_1.base64ToString)(base64);
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=base64.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../../src/utils/base64/base64.ts"],"names":[],"mappings":";;AAeA,oCAKC;AAYD,
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../../src/utils/base64/base64.ts"],"names":[],"mappings":";;AAeA,oCAKC;AAYD,8CAIC;AApCD,sDAAmD;AAEnD,MAAM,YAAY,GAAG,8BAAuC,CAAC;AAG7D;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,KAAmB;IACnD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAA,+BAAc,EAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchContractMetadata = fetchContractMetadata;
|
|
4
4
|
const base64_js_1 = require("../base64/base64.js");
|
|
5
|
+
const utf8_js_1 = require("../utf8/utf8.js");
|
|
5
6
|
/**
|
|
6
7
|
* Fetches the metadata for a token.
|
|
7
8
|
*
|
|
@@ -21,6 +22,15 @@ async function fetchContractMetadata(options) {
|
|
|
21
22
|
return undefined;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
if ((0, utf8_js_1.isUTF8JSONString)(uri)) {
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse((0, utf8_js_1.parseUTF8String)(uri));
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.error("Failed to fetch utf8 encoded contract metadata", { uri }, e);
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
24
34
|
// in all other cases we will need the `download` function from storage
|
|
25
35
|
const { download } = await Promise.resolve().then(() => require("../../storage/download.js"));
|
|
26
36
|
return await (await download({ client, uri })).json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchContractMetadata.js","sourceRoot":"","sources":["../../../../src/utils/contract/fetchContractMetadata.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fetchContractMetadata.js","sourceRoot":"","sources":["../../../../src/utils/contract/fetchContractMetadata.ts"],"names":[],"mappings":";;AAmBA,sDAmCC;AArDD,mDAAsE;AACtE,6CAAoE;AAUpE;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CACzC,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhC,qDAAqD;IACrD,IAAI,IAAA,wBAAY,EAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,6BAAiB,EAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,mDAAmD,EACnD,EAAE,GAAG,EAAE,EACP,CAAC,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,IAAA,0BAAgB,EAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,yBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,gDAAgD,EAChD,EAAE,GAAG,EAAE,EACP,CAAC,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,uEAAuE;IAEvE,MAAM,EAAE,QAAQ,EAAE,GAAG,2CAAa,2BAA2B,EAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.fetchTokenMetadata = fetchTokenMetadata;
|
|
4
4
|
const base64_js_1 = require("../base64/base64.js");
|
|
5
5
|
const hex_js_1 = require("../encoding/hex.js");
|
|
6
|
+
const utf8_js_1 = require("../utf8/utf8.js");
|
|
6
7
|
/**
|
|
7
8
|
* Fetches the metadata for a token.
|
|
8
9
|
*
|
|
@@ -22,6 +23,15 @@ async function fetchTokenMetadata(options) {
|
|
|
22
23
|
throw e;
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
if ((0, utf8_js_1.isUTF8JSONString)(tokenUri)) {
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse((0, utf8_js_1.parseUTF8String)(tokenUri));
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
console.error("Failed to fetch utf8 encoded NFT", { tokenId, tokenUri }, e);
|
|
32
|
+
throw e;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
25
35
|
// in all other cases we will need the `download` function from storage
|
|
26
36
|
const { download } = await Promise.resolve().then(() => require("../../storage/download.js"));
|
|
27
37
|
// handle non-dynamic uris (most common case -> skip the other checks)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTokenMetadata.js","sourceRoot":"","sources":["../../../../src/utils/nft/fetchTokenMetadata.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fetchTokenMetadata.js","sourceRoot":"","sources":["../../../../src/utils/nft/fetchTokenMetadata.ts"],"names":[],"mappings":";;AAsBA,gDAqEC;AA1FD,mDAAsE;AACtE,+CAAiD;AACjD,6CAAoE;AAYpE;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC9C,mEAAmE;IACnE,IAAI,IAAA,wBAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,6BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,oCAAoC,EACpC,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,CACF,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,IAAI,IAAA,0BAAgB,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,yBAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,kCAAkC,EAClC,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,CACF,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,2CAAa,2BAA2B,EAAC,CAAC;IAE/D,sEAAsE;IACtE,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,CAAC;IACV,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC;QACH,IAAI,CAAC;YACH,8BAA8B;YAC9B,OAAO,MAAM,CACX,MAAM,QAAQ,CAAC;gBACb,MAAM;gBACN,GAAG,EAAE,QAAQ,CAAC,OAAO,CACnB,MAAM,EACN,IAAA,oBAAW,EAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C;aACF,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;YACtC,OAAO,MAAM,CACX,MAAM,QAAQ,CAAC;gBACb,MAAM;gBACN,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;aAClD,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isUTF8JSONString = isUTF8JSONString;
|
|
4
|
+
exports.parseUTF8String = parseUTF8String;
|
|
5
|
+
const UTF8Prefix = "data:application/json;utf-8";
|
|
6
|
+
/**
|
|
7
|
+
* Checks if a given string is a UTF-8 encoded JSON string.
|
|
8
|
+
* @param input - The string to be checked.
|
|
9
|
+
* @returns True if the input string starts with "data:application/json;utf-8", false otherwise.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* isUTF8JSONString("data:application/json;utf-8,{ \"test\": \"utf8\" }")
|
|
13
|
+
* // true
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function isUTF8JSONString(input) {
|
|
17
|
+
if (input.toLowerCase().startsWith(UTF8Prefix)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parses a UTF-8 string and returns the decoded string.
|
|
24
|
+
* @param input - The UTF-8 string to parse.
|
|
25
|
+
* @returns The decoded string.
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* parseUTF8String("data:application/json;utf-8,{ \"test\": \"utf8\" }")
|
|
29
|
+
* // '{"test":"utf8"}'
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function parseUTF8String(input) {
|
|
33
|
+
const commaIndex = input.indexOf(",");
|
|
34
|
+
const utf8 = input.slice(commaIndex + 1);
|
|
35
|
+
try {
|
|
36
|
+
// try to decode the UTF-8 string, if it fails, return the original string
|
|
37
|
+
return decodeURIComponent(utf8);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return utf8;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=utf8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../../../src/utils/utf8/utf8.ts"],"names":[],"mappings":";;AAaA,4CAKC;AAYD,0CASC;AAvCD,MAAM,UAAU,GAAG,6BAAsC,CAAC;AAG1D;;;;;;;;;GASG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,0EAA0E;QAC1E,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/cjs/version.js
CHANGED
|
@@ -24,7 +24,12 @@ const units_js_1 = require("../../utils/units.js");
|
|
|
24
24
|
* @walletUtils
|
|
25
25
|
*/
|
|
26
26
|
async function getWalletBalance(options) {
|
|
27
|
-
const { address, client, chain
|
|
27
|
+
const { address, client, chain } = options;
|
|
28
|
+
// Scipper chain (42429) uses a wrapped native token for balance queries
|
|
29
|
+
const tokenAddress = options.tokenAddress ||
|
|
30
|
+
(chain.id === 42429
|
|
31
|
+
? "0x20c0000000000000000000000000000000000000"
|
|
32
|
+
: undefined);
|
|
28
33
|
// erc20 case
|
|
29
34
|
if (tokenAddress &&
|
|
30
35
|
(0, address_js_1.getAddress)(tokenAddress) !== (0, address_js_1.getAddress)(addresses_js_1.NATIVE_TOKEN_ADDRESS)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWalletBalance.js","sourceRoot":"","sources":["../../../../src/wallets/utils/getWalletBalance.ts"],"names":[],"mappings":";;AA0CA,
|
|
1
|
+
{"version":3,"file":"getWalletBalance.js","sourceRoot":"","sources":["../../../../src/wallets/utils/getWalletBalance.ts"],"names":[],"mappings":";;AA0CA,4CA8CC;AAvFD,oDAI+B;AAE/B,+DAAoE;AACpE,4DAAyD;AAEzD,2EAAqE;AACrE,6CAAgD;AAChD,uDAAoD;AACpD,mDAAgD;AAchD;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,gBAAgB,CACpC,OAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE3C,wEAAwE;IACxE,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY;QACpB,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK;YACjB,CAAC,CAAC,4CAA4C;YAC9C,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,aAAa;IACb,IACE,YAAY;QACZ,IAAA,uBAAU,EAAC,YAAY,CAAC,KAAK,IAAA,uBAAU,EAAC,mCAAoB,CAAC,EAC7D,CAAC;QACD,0DAA0D;QAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,2CACrB,2CAA2C,EAC5C,CAAC;QACF,OAAO,UAAU,CAAC;YAChB,OAAO;YACP,QAAQ,EAAE,IAAA,yBAAW,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB;IACpB,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnD,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GAC7D,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,IAAA,yBAAc,EAAC,KAAK,CAAC;QACrB,IAAA,2BAAgB,EAAC,KAAK,CAAC;QACvB,IAAA,qCAA0B,EAAC,KAAK,CAAC;QACjC,IAAA,kCAAc,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC;KACxC,CAAC,CAAC;IAEL,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,QAAQ,EAAE,cAAc;QACxB,YAAY,EAAE,IAAA,mBAAQ,EAAC,aAAa,EAAE,cAAc,CAAC;QACrD,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,YAAY,IAAI,mCAAoB;QAClD,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { base64ToString } from "../uint8-array.js";
|
|
2
|
+
const Base64Prefix = "data:application/json;base64";
|
|
2
3
|
/**
|
|
3
4
|
* Checks if a given string is a base64 encoded JSON string.
|
|
4
5
|
* @param input - The string to be checked.
|
|
@@ -10,7 +11,7 @@ import { base64ToString } from "../uint8-array.js";
|
|
|
10
11
|
* ```
|
|
11
12
|
*/
|
|
12
13
|
export function isBase64JSON(input) {
|
|
13
|
-
if (input.startsWith(
|
|
14
|
+
if (input.toLowerCase().startsWith(Base64Prefix)) {
|
|
14
15
|
return true;
|
|
15
16
|
}
|
|
16
17
|
return false;
|
|
@@ -26,7 +27,8 @@ export function isBase64JSON(input) {
|
|
|
26
27
|
* ```
|
|
27
28
|
*/
|
|
28
29
|
export function parseBase64String(input) {
|
|
29
|
-
const
|
|
30
|
+
const commaIndex = input.indexOf(",");
|
|
31
|
+
const base64 = input.slice(commaIndex + 1);
|
|
30
32
|
return base64ToString(base64);
|
|
31
33
|
}
|
|
32
34
|
//# sourceMappingURL=base64.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../../src/utils/base64/base64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../../src/utils/base64/base64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,YAAY,GAAG,8BAAuC,CAAC;AAG7D;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACnD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isBase64JSON, parseBase64String } from "../base64/base64.js";
|
|
2
|
+
import { isUTF8JSONString, parseUTF8String } from "../utf8/utf8.js";
|
|
2
3
|
/**
|
|
3
4
|
* Fetches the metadata for a token.
|
|
4
5
|
*
|
|
@@ -18,6 +19,15 @@ export async function fetchContractMetadata(options) {
|
|
|
18
19
|
return undefined;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
if (isUTF8JSONString(uri)) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(parseUTF8String(uri));
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.error("Failed to fetch utf8 encoded contract metadata", { uri }, e);
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
21
31
|
// in all other cases we will need the `download` function from storage
|
|
22
32
|
const { download } = await import("../../storage/download.js");
|
|
23
33
|
return await (await download({ client, uri })).json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchContractMetadata.js","sourceRoot":"","sources":["../../../../src/utils/contract/fetchContractMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchContractMetadata.js","sourceRoot":"","sources":["../../../../src/utils/contract/fetchContractMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAUpE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhC,qDAAqD;IACrD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,mDAAmD,EACnD,EAAE,GAAG,EAAE,EACP,CAAC,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,gDAAgD,EAChD,EAAE,GAAG,EAAE,EACP,CAAC,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,uEAAuE;IAEvE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isBase64JSON, parseBase64String } from "../base64/base64.js";
|
|
2
2
|
import { numberToHex } from "../encoding/hex.js";
|
|
3
|
+
import { isUTF8JSONString, parseUTF8String } from "../utf8/utf8.js";
|
|
3
4
|
/**
|
|
4
5
|
* Fetches the metadata for a token.
|
|
5
6
|
*
|
|
@@ -19,6 +20,15 @@ export async function fetchTokenMetadata(options) {
|
|
|
19
20
|
throw e;
|
|
20
21
|
}
|
|
21
22
|
}
|
|
23
|
+
if (isUTF8JSONString(tokenUri)) {
|
|
24
|
+
try {
|
|
25
|
+
return JSON.parse(parseUTF8String(tokenUri));
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.error("Failed to fetch utf8 encoded NFT", { tokenId, tokenUri }, e);
|
|
29
|
+
throw e;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
22
32
|
// in all other cases we will need the `download` function from storage
|
|
23
33
|
const { download } = await import("../../storage/download.js");
|
|
24
34
|
// handle non-dynamic uris (most common case -> skip the other checks)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTokenMetadata.js","sourceRoot":"","sources":["../../../../src/utils/nft/fetchTokenMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchTokenMetadata.js","sourceRoot":"","sources":["../../../../src/utils/nft/fetchTokenMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAYpE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC9C,mEAAmE;IACnE,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,oCAAoC,EACpC,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,CACF,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,kCAAkC,EAClC,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,CACF,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAE/D,sEAAsE;IACtE,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,CAAC;IACV,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC;QACH,IAAI,CAAC;YACH,8BAA8B;YAC9B,OAAO,MAAM,CACX,MAAM,QAAQ,CAAC;gBACb,MAAM;gBACN,GAAG,EAAE,QAAQ,CAAC,OAAO,CACnB,MAAM,EACN,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C;aACF,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;YACtC,OAAO,MAAM,CACX,MAAM,QAAQ,CAAC;gBACb,MAAM;gBACN,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;aAClD,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const UTF8Prefix = "data:application/json;utf-8";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a given string is a UTF-8 encoded JSON string.
|
|
4
|
+
* @param input - The string to be checked.
|
|
5
|
+
* @returns True if the input string starts with "data:application/json;utf-8", false otherwise.
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* isUTF8JSONString("data:application/json;utf-8,{ \"test\": \"utf8\" }")
|
|
9
|
+
* // true
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export function isUTF8JSONString(input) {
|
|
13
|
+
if (input.toLowerCase().startsWith(UTF8Prefix)) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parses a UTF-8 string and returns the decoded string.
|
|
20
|
+
* @param input - The UTF-8 string to parse.
|
|
21
|
+
* @returns The decoded string.
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* parseUTF8String("data:application/json;utf-8,{ \"test\": \"utf8\" }")
|
|
25
|
+
* // '{"test":"utf8"}'
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function parseUTF8String(input) {
|
|
29
|
+
const commaIndex = input.indexOf(",");
|
|
30
|
+
const utf8 = input.slice(commaIndex + 1);
|
|
31
|
+
try {
|
|
32
|
+
// try to decode the UTF-8 string, if it fails, return the original string
|
|
33
|
+
return decodeURIComponent(utf8);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return utf8;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=utf8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../../../src/utils/utf8/utf8.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,6BAAsC,CAAC;AAG1D;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,0EAA0E;QAC1E,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = "5.115.
|
|
1
|
+
export const version = "5.115.4";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -21,7 +21,12 @@ import { toTokens } from "../../utils/units.js";
|
|
|
21
21
|
* @walletUtils
|
|
22
22
|
*/
|
|
23
23
|
export async function getWalletBalance(options) {
|
|
24
|
-
const { address, client, chain
|
|
24
|
+
const { address, client, chain } = options;
|
|
25
|
+
// Scipper chain (42429) uses a wrapped native token for balance queries
|
|
26
|
+
const tokenAddress = options.tokenAddress ||
|
|
27
|
+
(chain.id === 42429
|
|
28
|
+
? "0x20c0000000000000000000000000000000000000"
|
|
29
|
+
: undefined);
|
|
25
30
|
// erc20 case
|
|
26
31
|
if (tokenAddress &&
|
|
27
32
|
getAddress(tokenAddress) !== getAddress(NATIVE_TOKEN_ADDRESS)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWalletBalance.js","sourceRoot":"","sources":["../../../../src/wallets/utils/getWalletBalance.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"getWalletBalance.js","sourceRoot":"","sources":["../../../../src/wallets/utils/getWalletBalance.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE3C,wEAAwE;IACxE,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY;QACpB,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK;YACjB,CAAC,CAAC,4CAA4C;YAC9C,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,aAAa;IACb,IACE,YAAY;QACZ,UAAU,CAAC,YAAY,CAAC,KAAK,UAAU,CAAC,oBAAoB,CAAC,EAC7D,CAAC;QACD,0DAA0D;QAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CACjC,2CAA2C,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC;YAChB,OAAO;YACP,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB;IACpB,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnD,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GAC7D,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,cAAc,CAAC,KAAK,CAAC;QACrB,gBAAgB,CAAC,KAAK,CAAC;QACvB,0BAA0B,CAAC,KAAK,CAAC;QACjC,cAAc,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC;KACxC,CAAC,CAAC;IAEL,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,QAAQ,EAAE,cAAc;QACxB,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;QACrD,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,YAAY,IAAI,oBAAoB;QAClD,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC"}
|