thirdweb 5.49.0 → 5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359
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/extensions/ens.js +6 -1
- package/dist/cjs/exports/extensions/ens.js.map +1 -1
- package/dist/cjs/extensions/ens/__generated__/L2Resolver/read/name.js +115 -0
- package/dist/cjs/extensions/ens/__generated__/L2Resolver/read/name.js.map +1 -0
- package/dist/cjs/extensions/ens/constants.js +3 -1
- package/dist/cjs/extensions/ens/constants.js.map +1 -1
- package/dist/cjs/extensions/ens/resolve-address.js +13 -1
- package/dist/cjs/extensions/ens/resolve-address.js.map +1 -1
- package/dist/cjs/extensions/ens/resolve-l2-name.js +80 -0
- package/dist/cjs/extensions/ens/resolve-l2-name.js.map +1 -0
- package/dist/cjs/extensions/ens/resolve-name.js +1 -1
- package/dist/cjs/extensions/ens/resolve-name.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +64 -19
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/exports/extensions/ens.js +2 -0
- package/dist/esm/exports/extensions/ens.js.map +1 -1
- package/dist/esm/extensions/ens/__generated__/L2Resolver/read/name.js +107 -0
- package/dist/esm/extensions/ens/__generated__/L2Resolver/read/name.js.map +1 -0
- package/dist/esm/extensions/ens/constants.js +2 -0
- package/dist/esm/extensions/ens/constants.js.map +1 -1
- package/dist/esm/extensions/ens/resolve-address.js +13 -1
- package/dist/esm/extensions/ens/resolve-address.js.map +1 -1
- package/dist/esm/extensions/ens/resolve-l2-name.js +75 -0
- package/dist/esm/extensions/ens/resolve-l2-name.js.map +1 -0
- package/dist/esm/extensions/ens/resolve-name.js +1 -1
- package/dist/esm/extensions/ens/resolve-name.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +62 -17
- package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/exports/extensions/ens.d.ts +2 -0
- package/dist/types/exports/extensions/ens.d.ts.map +1 -1
- package/dist/types/extensions/ens/__generated__/L2Resolver/read/name.d.ts +84 -0
- package/dist/types/extensions/ens/__generated__/L2Resolver/read/name.d.ts.map +1 -0
- package/dist/types/extensions/ens/constants.d.ts +2 -0
- package/dist/types/extensions/ens/constants.d.ts.map +1 -1
- package/dist/types/extensions/ens/resolve-address.d.ts +12 -0
- package/dist/types/extensions/ens/resolve-address.d.ts.map +1 -1
- package/dist/types/extensions/ens/resolve-l2-name.d.ts +48 -0
- package/dist/types/extensions/ens/resolve-l2-name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/extensions/ens.ts +10 -0
- package/src/extensions/ens/__generated__/L2Resolver/read/name.ts +122 -0
- package/src/extensions/ens/constants.ts +4 -0
- package/src/extensions/ens/resolve-address.test.ts +13 -0
- package/src/extensions/ens/resolve-address.ts +13 -1
- package/src/extensions/ens/resolve-l2-name.test.ts +30 -0
- package/src/extensions/ens/resolve-l2-name.ts +107 -0
- package/src/extensions/ens/resolve-name.ts +1 -1
- package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx +75 -18
- package/src/version.ts +1 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.resolveName = exports.resolveText = exports.resolveAvatar = exports.resolveAddress = void 0;
|
3
|
+
exports.BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS = exports.BASENAME_RESOLVER_ADDRESS = exports.resolveL2Name = exports.resolveName = exports.resolveText = exports.resolveAvatar = exports.resolveAddress = void 0;
|
4
4
|
var resolve_address_js_1 = require("../../extensions/ens/resolve-address.js");
|
5
5
|
Object.defineProperty(exports, "resolveAddress", { enumerable: true, get: function () { return resolve_address_js_1.resolveAddress; } });
|
6
6
|
var resolve_avatar_js_1 = require("../../extensions/ens/resolve-avatar.js");
|
@@ -9,4 +9,9 @@ var resolve_text_js_1 = require("../../extensions/ens/resolve-text.js");
|
|
9
9
|
Object.defineProperty(exports, "resolveText", { enumerable: true, get: function () { return resolve_text_js_1.resolveText; } });
|
10
10
|
var resolve_name_js_1 = require("../../extensions/ens/resolve-name.js");
|
11
11
|
Object.defineProperty(exports, "resolveName", { enumerable: true, get: function () { return resolve_name_js_1.resolveName; } });
|
12
|
+
var resolve_l2_name_js_1 = require("../../extensions/ens/resolve-l2-name.js");
|
13
|
+
Object.defineProperty(exports, "resolveL2Name", { enumerable: true, get: function () { return resolve_l2_name_js_1.resolveL2Name; } });
|
14
|
+
var constants_js_1 = require("../../extensions/ens/constants.js");
|
15
|
+
Object.defineProperty(exports, "BASENAME_RESOLVER_ADDRESS", { enumerable: true, get: function () { return constants_js_1.BASENAME_RESOLVER_ADDRESS; } });
|
16
|
+
Object.defineProperty(exports, "BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS", { enumerable: true, get: function () { return constants_js_1.BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS; } });
|
12
17
|
//# sourceMappingURL=ens.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ens.js","sourceRoot":"","sources":["../../../../src/exports/extensions/ens.ts"],"names":[],"mappings":";;;AAAA,8EAGiD;AAD/C,oHAAA,cAAc,OAAA;AAGhB,4EAGgD;AAD9C,kHAAA,aAAa,OAAA;AAGf,wEAG8C;AAD5C,8GAAA,WAAW,OAAA;AAGb,wEAG8C;AAD5C,8GAAA,WAAW,OAAA"}
|
1
|
+
{"version":3,"file":"ens.js","sourceRoot":"","sources":["../../../../src/exports/extensions/ens.ts"],"names":[],"mappings":";;;AAAA,8EAGiD;AAD/C,oHAAA,cAAc,OAAA;AAGhB,4EAGgD;AAD9C,kHAAA,aAAa,OAAA;AAGf,wEAG8C;AAD5C,8GAAA,WAAW,OAAA;AAGb,wEAG8C;AAD5C,8GAAA,WAAW,OAAA;AAGb,8EAGiD;AAD/C,mHAAA,aAAa,OAAA;AAGf,kEAG2C;AAFzC,yHAAA,yBAAyB,OAAA;AACzB,sIAAA,sCAAsC,OAAA"}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.FN_SELECTOR = void 0;
|
4
|
+
exports.isNameSupported = isNameSupported;
|
5
|
+
exports.encodeNameParams = encodeNameParams;
|
6
|
+
exports.encodeName = encodeName;
|
7
|
+
exports.decodeNameResult = decodeNameResult;
|
8
|
+
exports.name = name;
|
9
|
+
const read_contract_js_1 = require("../../../../../transaction/read-contract.js");
|
10
|
+
const encodeAbiParameters_js_1 = require("../../../../../utils/abi/encodeAbiParameters.js");
|
11
|
+
const viem_1 = require("viem");
|
12
|
+
const detectExtension_js_1 = require("../../../../../utils/bytecode/detectExtension.js");
|
13
|
+
exports.FN_SELECTOR = "0x691f3431";
|
14
|
+
const FN_INPUTS = [
|
15
|
+
{
|
16
|
+
type: "bytes32",
|
17
|
+
name: "node",
|
18
|
+
},
|
19
|
+
];
|
20
|
+
const FN_OUTPUTS = [
|
21
|
+
{
|
22
|
+
type: "string",
|
23
|
+
},
|
24
|
+
];
|
25
|
+
/**
|
26
|
+
* Checks if the `name` method is supported by the given contract.
|
27
|
+
* @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
|
28
|
+
* @returns A boolean indicating if the `name` method is supported.
|
29
|
+
* @extension ENS
|
30
|
+
* @example
|
31
|
+
* ```ts
|
32
|
+
* import { isNameSupported } from "thirdweb/extensions/ens";
|
33
|
+
*
|
34
|
+
* const supported = isNameSupported(["0x..."]);
|
35
|
+
* ```
|
36
|
+
*/
|
37
|
+
function isNameSupported(availableSelectors) {
|
38
|
+
return (0, detectExtension_js_1.detectMethod)({
|
39
|
+
availableSelectors,
|
40
|
+
method: [exports.FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
41
|
+
});
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Encodes the parameters for the "name" function.
|
45
|
+
* @param options - The options for the name function.
|
46
|
+
* @returns The encoded ABI parameters.
|
47
|
+
* @extension ENS
|
48
|
+
* @example
|
49
|
+
* ```ts
|
50
|
+
* import { encodeNameParams } "thirdweb/extensions/ens";
|
51
|
+
* const result = encodeNameParams({
|
52
|
+
* node: ...,
|
53
|
+
* });
|
54
|
+
* ```
|
55
|
+
*/
|
56
|
+
function encodeNameParams(options) {
|
57
|
+
return (0, encodeAbiParameters_js_1.encodeAbiParameters)(FN_INPUTS, [options.node]);
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Encodes the "name" function into a Hex string with its parameters.
|
61
|
+
* @param options - The options for the name function.
|
62
|
+
* @returns The encoded hexadecimal string.
|
63
|
+
* @extension ENS
|
64
|
+
* @example
|
65
|
+
* ```ts
|
66
|
+
* import { encodeName } "thirdweb/extensions/ens";
|
67
|
+
* const result = encodeName({
|
68
|
+
* node: ...,
|
69
|
+
* });
|
70
|
+
* ```
|
71
|
+
*/
|
72
|
+
function encodeName(options) {
|
73
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
74
|
+
// we can do this because we know the specific formats of the values
|
75
|
+
return (exports.FN_SELECTOR +
|
76
|
+
encodeNameParams(options).slice(2));
|
77
|
+
}
|
78
|
+
/**
|
79
|
+
* Decodes the result of the name function call.
|
80
|
+
* @param result - The hexadecimal result to decode.
|
81
|
+
* @returns The decoded result as per the FN_OUTPUTS definition.
|
82
|
+
* @extension ENS
|
83
|
+
* @example
|
84
|
+
* ```ts
|
85
|
+
* import { decodeNameResult } from "thirdweb/extensions/ens";
|
86
|
+
* const result = decodeNameResult("...");
|
87
|
+
* ```
|
88
|
+
*/
|
89
|
+
function decodeNameResult(result) {
|
90
|
+
return (0, viem_1.decodeAbiParameters)(FN_OUTPUTS, result)[0];
|
91
|
+
}
|
92
|
+
/**
|
93
|
+
* Calls the "name" function on the contract.
|
94
|
+
* @param options - The options for the name function.
|
95
|
+
* @returns The parsed result of the function call.
|
96
|
+
* @extension ENS
|
97
|
+
* @example
|
98
|
+
* ```ts
|
99
|
+
* import { name } from "thirdweb/extensions/ens";
|
100
|
+
*
|
101
|
+
* const result = await name({
|
102
|
+
* contract,
|
103
|
+
* node: ...,
|
104
|
+
* });
|
105
|
+
*
|
106
|
+
* ```
|
107
|
+
*/
|
108
|
+
async function name(options) {
|
109
|
+
return (0, read_contract_js_1.readContract)({
|
110
|
+
contract: options.contract,
|
111
|
+
method: [exports.FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
112
|
+
params: [options.node],
|
113
|
+
});
|
114
|
+
}
|
115
|
+
//# sourceMappingURL=name.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../../../../src/extensions/ens/__generated__/L2Resolver/read/name.ts"],"names":[],"mappings":";;;AAwCA,0CAKC;AAeD,4CAEC;AAeD,gCAKC;AAaD,4CAEC;AAkBD,oBAMC;AAxHD,kFAA2E;AAE3E,4FAAsF;AACtF,+BAA2C;AAE3C,yFAAgF;AASnE,QAAA,WAAW,GAAG,YAAqB,CAAC;AACjD,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,MAAM;KACb;CACO,CAAC;AACX,MAAM,UAAU,GAAG;IACjB;QACE,IAAI,EAAE,QAAQ;KACf;CACO,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,kBAA4B;IAC1D,OAAO,IAAA,iCAAY,EAAC;QAClB,kBAAkB;QAClB,MAAM,EAAE,CAAC,mBAAW,EAAE,SAAS,EAAE,UAAU,CAAU;KACtD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,gBAAgB,CAAC,OAAmB;IAClD,OAAO,IAAA,4CAAmB,EAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,UAAU,CAAC,OAAmB;IAC5C,iFAAiF;IACjF,oEAAoE;IACpE,OAAO,CAAC,mBAAW;QACjB,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAqC,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,MAAW;IAC1C,OAAO,IAAA,0BAAmB,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,IAAI,CAAC,OAA2C;IACpE,OAAO,IAAA,+BAAY,EAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,CAAC,mBAAW,EAAE,SAAS,EAAE,UAAU,CAAU;QACrD,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;AACL,CAAC"}
|
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.UNIVERSAL_RESOLVER_ADDRESS = void 0;
|
3
|
+
exports.BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS = exports.BASENAME_RESOLVER_ADDRESS = exports.UNIVERSAL_RESOLVER_ADDRESS = void 0;
|
4
4
|
exports.UNIVERSAL_RESOLVER_ADDRESS = "0xce01f8eee7E479C928F8919abD53E553a36CeF67";
|
5
|
+
exports.BASENAME_RESOLVER_ADDRESS = "0xC6d566A56A1aFf6508b41f6c90ff131615583BCD";
|
6
|
+
exports.BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS = "0x6533C94869D28fAA8dF77cc63f9e2b2D6Cf77eBA";
|
5
7
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/extensions/ens/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GACrC,4CAA4C,CAAC"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/extensions/ens/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GACrC,4CAA4C,CAAC;AAClC,QAAA,yBAAyB,GACpC,4CAA4C,CAAC;AAClC,QAAA,sCAAsC,GACjD,4CAA4C,CAAC"}
|
@@ -22,6 +22,18 @@ const constants_js_1 = require("./constants.js");
|
|
22
22
|
* name: "vitalik.eth",
|
23
23
|
* });
|
24
24
|
* ```
|
25
|
+
*
|
26
|
+
* Resolve an address to a Basename.
|
27
|
+
* ```ts
|
28
|
+
* import { resolveAddress, BASENAME_RESOLVER_ADDRESS } from "thirdweb/extensions/ens";
|
29
|
+
* import { base } from "thirdweb/chains";
|
30
|
+
* const address = await resolveAddress({
|
31
|
+
* client,
|
32
|
+
* name: "myk.base.eth",
|
33
|
+
* resolverAddress: BASENAME_RESOLVER_ADDRESS,
|
34
|
+
* resolverChain: base,
|
35
|
+
* });
|
36
|
+
* ```
|
25
37
|
* @extension ENS
|
26
38
|
* @returns A promise that resolves to the Ethereum address.
|
27
39
|
*/
|
@@ -45,7 +57,7 @@ async function resolveAddress(options) {
|
|
45
57
|
const resolvedAddress = (0, address_js_1.getAddress)(`0x${result[0].slice(-40)}`);
|
46
58
|
return resolvedAddress;
|
47
59
|
}, {
|
48
|
-
cacheKey: `ens:addr:${name}`,
|
60
|
+
cacheKey: `ens:addr:${resolverChain?.id || 1}:${name}`,
|
49
61
|
// 1min cache
|
50
62
|
cacheTime: 60 * 1000,
|
51
63
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolve-address.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-address.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"resolve-address.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-address.ts"],"names":[],"mappings":";;AAiDA,wCA4BC;AA7ED,4EAAsE;AAGtE,4DAAyD;AACzD,uDAA+D;AAC/D,wDAAoD;AACpD,6DAAuD;AACvD,uEAAiE;AACjE,mEAA6D;AAC7D,0EAA0E;AAC1E,kFAA4E;AAC5E,iDAA4D;AAY5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,cAAc,CAAC,OAA8B;IACjE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACjE,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAA,uBAAU,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAA,wBAAS,EACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa,IAAI,sBAAQ;YAChC,OAAO,EAAE,eAAe,IAAI,yCAA0B;SACvD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAO,EAAC;YAC3B,QAAQ;YACR,IAAI,EAAE,IAAA,cAAK,EAAC,IAAA,gCAAa,EAAC,IAAI,CAAC,CAAC;YAChC,IAAI;SACL,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,IAAA,uBAAU,EAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEhE,OAAO,eAAe,CAAC;IACzB,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACtD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.convertReverseNodeToBytes = void 0;
|
4
|
+
exports.resolveL2Name = resolveL2Name;
|
5
|
+
const viem_1 = require("viem");
|
6
|
+
const contract_js_1 = require("../../contract/contract.js");
|
7
|
+
const withCache_js_1 = require("../../utils/promise/withCache.js");
|
8
|
+
const name_js_1 = require("./__generated__/L2Resolver/read/name.js");
|
9
|
+
/**
|
10
|
+
* Convert an address to a reverse node for ENS resolution
|
11
|
+
*
|
12
|
+
* @internal
|
13
|
+
*/
|
14
|
+
const convertReverseNodeToBytes = (address, chainId) => {
|
15
|
+
const addressFormatted = address.toLocaleLowerCase();
|
16
|
+
const addressNode = (0, viem_1.keccak256)(addressFormatted.substring(2));
|
17
|
+
const cointype = (0x80000000 | chainId) >>> 0;
|
18
|
+
const chainCoinType = cointype.toString(16).toLocaleUpperCase();
|
19
|
+
const reverseNode = (0, viem_1.namehash)(`${chainCoinType.toLocaleUpperCase()}.reverse`);
|
20
|
+
const addressReverseNode = (0, viem_1.keccak256)((0, viem_1.encodePacked)(["bytes32", "bytes32"], [reverseNode, addressNode]));
|
21
|
+
return addressReverseNode;
|
22
|
+
};
|
23
|
+
exports.convertReverseNodeToBytes = convertReverseNodeToBytes;
|
24
|
+
/**
|
25
|
+
* Resolves the L2 name for a specified address.
|
26
|
+
* @param options - The options for resolving an L2 ENS address.
|
27
|
+
* @example
|
28
|
+
* ```ts
|
29
|
+
* import { resolveL2Name } from "thirdweb/extensions/ens";
|
30
|
+
* const name = await resolveL2Name({
|
31
|
+
* client,
|
32
|
+
* address: "0x1234...",
|
33
|
+
* resolverAddress: "0x...",
|
34
|
+
* resolverChain: base,
|
35
|
+
* });
|
36
|
+
* ```
|
37
|
+
*
|
38
|
+
* Resolve a Basename.
|
39
|
+
* ```ts
|
40
|
+
* import { resolveL2Name, BASENAME_RESOLVER_ADDRESS } from "thirdweb/extensions/ens";
|
41
|
+
* import { base } from "thirdweb/chains";
|
42
|
+
* const name = await resolveL2Name({
|
43
|
+
* client,
|
44
|
+
* address: "0x1234...",
|
45
|
+
* resolverAddress: BASENAME_RESOLVER_ADDRESS,
|
46
|
+
* resolverChain: base,
|
47
|
+
* });
|
48
|
+
* ```
|
49
|
+
* @extension ENS
|
50
|
+
* @returns A promise that resolves to the Ethereum address.
|
51
|
+
*/
|
52
|
+
async function resolveL2Name(options) {
|
53
|
+
const { client, address, resolverAddress, resolverChain } = options;
|
54
|
+
return (0, withCache_js_1.withCache)(async () => {
|
55
|
+
const contract = (0, contract_js_1.getContract)({
|
56
|
+
client,
|
57
|
+
chain: resolverChain,
|
58
|
+
address: resolverAddress,
|
59
|
+
});
|
60
|
+
const reverseName = (0, exports.convertReverseNodeToBytes)(address, resolverChain.id || 1);
|
61
|
+
const resolvedName = await (0, name_js_1.name)({
|
62
|
+
contract,
|
63
|
+
node: reverseName,
|
64
|
+
}).catch((e) => {
|
65
|
+
if ("data" in e && e.data === "0x7199966d") {
|
66
|
+
return null;
|
67
|
+
}
|
68
|
+
throw e;
|
69
|
+
});
|
70
|
+
if (resolvedName === "") {
|
71
|
+
return null;
|
72
|
+
}
|
73
|
+
return resolvedName;
|
74
|
+
}, {
|
75
|
+
cacheKey: `ens:name:${resolverChain}:${address}`,
|
76
|
+
// 1min cache
|
77
|
+
cacheTime: 60 * 1000,
|
78
|
+
});
|
79
|
+
}
|
80
|
+
//# sourceMappingURL=resolve-l2-name.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"resolve-l2-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-l2-name.ts"],"names":[],"mappings":";;;AAoEA,sCAsCC;AAzGD,+BAAmE;AAGnE,4DAAyD;AACzD,mEAA6D;AAC7D,qEAA+D;AAY/D;;;;GAIG;AACI,MAAM,yBAAyB,GAAG,CACvC,OAAgB,EAChB,OAAe,EACf,EAAE;IACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAa,CAAC;IAChE,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,IAAA,eAAQ,EAAC,GAAG,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAE7E,MAAM,kBAAkB,GAAG,IAAA,gBAAS,EAClC,IAAA,mBAAY,EAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACjE,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAfW,QAAA,yBAAyB,6BAepC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACI,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,IAAA,wBAAS,EACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAA,iCAAyB,EAC3C,OAAO,EACP,aAAa,CAAC,EAAE,IAAI,CAAC,CACtB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAA,cAAI,EAAC;YAC9B,QAAQ;YACR,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,IAAI,OAAO,EAAE;QAChD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolve-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-name.ts"],"names":[],"mappings":";;AAmCA,kCAqCC;AAvED,4EAAsE;AAGtE,4DAAyD;AACzD,wDAAoD;AACpD,uEAAiE;AACjE,mEAA6D;AAC7D,kFAA4E;AAC5E,iDAA4D;AAY5D;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,IAAA,wBAAS,EACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa,IAAI,sBAAQ;YAChC,OAAO,EAAE,eAAe,IAAI,yCAA0B;SACvD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAA,cAAK,EACvB,IAAA,gCAAa,EAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CACpE,CAAC;QAEF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,MAAM,IAAA,oBAAO,EAAC;YAC5C,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,OAAO,EAAE;
|
1
|
+
{"version":3,"file":"resolve-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-name.ts"],"names":[],"mappings":";;AAmCA,kCAqCC;AAvED,4EAAsE;AAGtE,4DAAyD;AACzD,wDAAoD;AACpD,uEAAiE;AACjE,mEAA6D;AAC7D,kFAA4E;AAC5E,iDAA4D;AAY5D;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,IAAA,wBAAS,EACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa,IAAI,sBAAQ;YAChC,OAAO,EAAE,eAAe,IAAI,yCAA0B;SACvD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAA,cAAK,EACvB,IAAA,gCAAa,EAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CACpE,CAAC;QAEF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,MAAM,IAAA,oBAAO,EAAC;YAC5C,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,EAAE,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE;QACzD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
|
@@ -5,7 +5,8 @@ exports.CreateDirectListingButton = CreateDirectListingButton;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
6
6
|
const react_1 = require("react");
|
7
7
|
const contract_js_1 = require("../../../../../../contract/contract.js");
|
8
|
-
const
|
8
|
+
const isERC721_js_1 = require("../../../../../../extensions/erc721/read/isERC721.js");
|
9
|
+
const isERC1155_js_1 = require("../../../../../../extensions/erc1155/read/isERC1155.js");
|
9
10
|
const createListing_js_1 = require("../../../../../../extensions/marketplace/direct-listings/write/createListing.js");
|
10
11
|
const useReadContract_js_1 = require("../../../../../core/hooks/contract/useReadContract.js");
|
11
12
|
const useSendAndConfirmTransaction_js_1 = require("../../../../../core/hooks/transaction/useSendAndConfirmTransaction.js");
|
@@ -49,12 +50,13 @@ function CreateDirectListingButton(props) {
|
|
49
50
|
});
|
50
51
|
const account = (0, useActiveAccount_js_1.useActiveAccount)();
|
51
52
|
const defaultPayModalMetadata = payModal ? payModal.metadata : undefined;
|
53
|
+
const nftContract = (0, contract_js_1.getContract)({
|
54
|
+
address: assetContractAddress,
|
55
|
+
chain,
|
56
|
+
client,
|
57
|
+
});
|
52
58
|
const { data: payMetadata } = (0, useReadContract_js_1.useReadContract)(getPayMetadata, {
|
53
|
-
contract:
|
54
|
-
address: assetContractAddress,
|
55
|
-
chain,
|
56
|
-
client,
|
57
|
-
}),
|
59
|
+
contract: nftContract,
|
58
60
|
tokenId,
|
59
61
|
queryOptions: {
|
60
62
|
enabled: !defaultPayModalMetadata,
|
@@ -65,19 +67,64 @@ function CreateDirectListingButton(props) {
|
|
65
67
|
if (!account) {
|
66
68
|
throw new Error("No account detected");
|
67
69
|
}
|
70
|
+
const [is721, is1155] = await Promise.all([
|
71
|
+
(0, isERC721_js_1.isERC721)({ contract: nftContract }),
|
72
|
+
(0, isERC1155_js_1.isERC1155)({ contract: nftContract }),
|
73
|
+
]);
|
74
|
+
if (!is1155 && !is721) {
|
75
|
+
throw new Error("Asset must either be ERC721 or ERC1155");
|
76
|
+
}
|
77
|
+
// Check for token approval
|
78
|
+
if (is1155) {
|
79
|
+
const [{ isApprovedForAll }, { setApprovalForAll }] = await Promise.all([
|
80
|
+
Promise.resolve().then(() => require("../../../../../../extensions/erc1155/__generated__/IERC1155/read/isApprovedForAll.js")),
|
81
|
+
Promise.resolve().then(() => require("../../../../../../extensions/erc1155/__generated__/IERC1155/write/setApprovalForAll.js")),
|
82
|
+
]);
|
83
|
+
const isApproved = await isApprovedForAll({
|
84
|
+
contract: nftContract,
|
85
|
+
operator: marketplaceContract.address,
|
86
|
+
owner: account.address,
|
87
|
+
});
|
88
|
+
if (!isApproved) {
|
89
|
+
const transaction = setApprovalForAll({
|
90
|
+
contract: nftContract,
|
91
|
+
operator: marketplaceContract.address,
|
92
|
+
approved: true,
|
93
|
+
});
|
94
|
+
await mutateAsync(transaction);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
const [{ isApprovedForAll }, { setApprovalForAll }, { getApproved }] = await Promise.all([
|
99
|
+
Promise.resolve().then(() => require("../../../../../../extensions/erc721/__generated__/IERC721A/read/isApprovedForAll.js")),
|
100
|
+
Promise.resolve().then(() => require("../../../../../../extensions/erc721/__generated__/IERC721A/write/setApprovalForAll.js")),
|
101
|
+
Promise.resolve().then(() => require("../../../../../../extensions/erc721/__generated__/IERC721A/read/getApproved.js")),
|
102
|
+
]);
|
103
|
+
const [isApproved, tokenApproved] = await Promise.all([
|
104
|
+
isApprovedForAll({
|
105
|
+
contract: nftContract,
|
106
|
+
operator: marketplaceContract.address,
|
107
|
+
owner: account.address,
|
108
|
+
}),
|
109
|
+
getApproved({ contract: nftContract, tokenId: props.tokenId }),
|
110
|
+
]);
|
111
|
+
if (!isApproved &&
|
112
|
+
tokenApproved.toLowerCase() !==
|
113
|
+
marketplaceContract.address.toLowerCase()) {
|
114
|
+
const transaction = setApprovalForAll({
|
115
|
+
contract: nftContract,
|
116
|
+
operator: marketplaceContract.address,
|
117
|
+
approved: true,
|
118
|
+
});
|
119
|
+
await mutateAsync(transaction);
|
120
|
+
}
|
121
|
+
}
|
68
122
|
const listingTx = (0, createListing_js_1.createListing)({
|
69
123
|
contract: marketplaceContract,
|
70
124
|
...props,
|
71
125
|
});
|
72
|
-
const approveTx = await (0, getApprovalForTransaction_js_1.getApprovalForTransaction)({
|
73
|
-
transaction: listingTx,
|
74
|
-
account,
|
75
|
-
});
|
76
|
-
if (approveTx) {
|
77
|
-
await mutateAsync(approveTx);
|
78
|
-
}
|
79
126
|
return listingTx;
|
80
|
-
}, [marketplaceContract, props, account, mutateAsync]);
|
127
|
+
}, [marketplaceContract, props, account, mutateAsync, nftContract]);
|
81
128
|
return ((0, jsx_runtime_1.jsx)(index_js_1.TransactionButton, { transaction: () => prepareTransaction(), payModal: {
|
82
129
|
metadata: defaultPayModalMetadata || payMetadata,
|
83
130
|
...payModal,
|
@@ -87,16 +134,14 @@ function CreateDirectListingButton(props) {
|
|
87
134
|
* @internal
|
88
135
|
*/
|
89
136
|
async function getPayMetadata(options) {
|
90
|
-
const [{
|
91
|
-
Promise.resolve().then(() => require("../../../../../../extensions/erc721/read/isERC721.js")),
|
92
|
-
Promise.resolve().then(() => require("../../../../../../extensions/erc1155/read/isERC1155.js")),
|
137
|
+
const [{ getContractMetadata }, { getNFT: getERC721 }, { getNFT: getERC1155 },] = await Promise.all([
|
93
138
|
Promise.resolve().then(() => require("../../../../../../extensions/common/read/getContractMetadata.js")),
|
94
139
|
Promise.resolve().then(() => require("../../../../../../extensions/erc721/read/getNFT.js")),
|
95
140
|
Promise.resolve().then(() => require("../../../../../../extensions/erc1155/read/getNFT.js")),
|
96
141
|
]);
|
97
142
|
const [is721, is1155, contractMetadata] = await Promise.all([
|
98
|
-
isERC721(options),
|
99
|
-
isERC1155(options),
|
143
|
+
(0, isERC721_js_1.isERC721)(options),
|
144
|
+
(0, isERC1155_js_1.isERC1155)(options),
|
100
145
|
getContractMetadata(options),
|
101
146
|
]);
|
102
147
|
if (is721) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx"],"names":[],"mappings":"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"}
|
package/dist/cjs/version.js
CHANGED
package/dist/cjs/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,wEAAwE,CAAC"}
|
@@ -2,4 +2,6 @@ export { resolveAddress, } from "../../extensions/ens/resolve-address.js";
|
|
2
2
|
export { resolveAvatar, } from "../../extensions/ens/resolve-avatar.js";
|
3
3
|
export { resolveText, } from "../../extensions/ens/resolve-text.js";
|
4
4
|
export { resolveName, } from "../../extensions/ens/resolve-name.js";
|
5
|
+
export { resolveL2Name, } from "../../extensions/ens/resolve-l2-name.js";
|
6
|
+
export { BASENAME_RESOLVER_ADDRESS, BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS, } from "../../extensions/ens/constants.js";
|
5
7
|
//# sourceMappingURL=ens.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ens.js","sourceRoot":"","sources":["../../../../src/exports/extensions/ens.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,GACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAEL,aAAa,GACd,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAEL,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,WAAW,GACZ,MAAM,sCAAsC,CAAC"}
|
1
|
+
{"version":3,"file":"ens.js","sourceRoot":"","sources":["../../../../src/exports/extensions/ens.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,GACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAEL,aAAa,GACd,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAEL,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,aAAa,GACd,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,mCAAmC,CAAC"}
|
@@ -0,0 +1,107 @@
|
|
1
|
+
import { readContract } from "../../../../../transaction/read-contract.js";
|
2
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
3
|
+
import { decodeAbiParameters } from "viem";
|
4
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
5
|
+
export const FN_SELECTOR = "0x691f3431";
|
6
|
+
const FN_INPUTS = [
|
7
|
+
{
|
8
|
+
type: "bytes32",
|
9
|
+
name: "node",
|
10
|
+
},
|
11
|
+
];
|
12
|
+
const FN_OUTPUTS = [
|
13
|
+
{
|
14
|
+
type: "string",
|
15
|
+
},
|
16
|
+
];
|
17
|
+
/**
|
18
|
+
* Checks if the `name` method is supported by the given contract.
|
19
|
+
* @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
|
20
|
+
* @returns A boolean indicating if the `name` method is supported.
|
21
|
+
* @extension ENS
|
22
|
+
* @example
|
23
|
+
* ```ts
|
24
|
+
* import { isNameSupported } from "thirdweb/extensions/ens";
|
25
|
+
*
|
26
|
+
* const supported = isNameSupported(["0x..."]);
|
27
|
+
* ```
|
28
|
+
*/
|
29
|
+
export function isNameSupported(availableSelectors) {
|
30
|
+
return detectMethod({
|
31
|
+
availableSelectors,
|
32
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
33
|
+
});
|
34
|
+
}
|
35
|
+
/**
|
36
|
+
* Encodes the parameters for the "name" function.
|
37
|
+
* @param options - The options for the name function.
|
38
|
+
* @returns The encoded ABI parameters.
|
39
|
+
* @extension ENS
|
40
|
+
* @example
|
41
|
+
* ```ts
|
42
|
+
* import { encodeNameParams } "thirdweb/extensions/ens";
|
43
|
+
* const result = encodeNameParams({
|
44
|
+
* node: ...,
|
45
|
+
* });
|
46
|
+
* ```
|
47
|
+
*/
|
48
|
+
export function encodeNameParams(options) {
|
49
|
+
return encodeAbiParameters(FN_INPUTS, [options.node]);
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* Encodes the "name" function into a Hex string with its parameters.
|
53
|
+
* @param options - The options for the name function.
|
54
|
+
* @returns The encoded hexadecimal string.
|
55
|
+
* @extension ENS
|
56
|
+
* @example
|
57
|
+
* ```ts
|
58
|
+
* import { encodeName } "thirdweb/extensions/ens";
|
59
|
+
* const result = encodeName({
|
60
|
+
* node: ...,
|
61
|
+
* });
|
62
|
+
* ```
|
63
|
+
*/
|
64
|
+
export function encodeName(options) {
|
65
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
66
|
+
// we can do this because we know the specific formats of the values
|
67
|
+
return (FN_SELECTOR +
|
68
|
+
encodeNameParams(options).slice(2));
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
* Decodes the result of the name function call.
|
72
|
+
* @param result - The hexadecimal result to decode.
|
73
|
+
* @returns The decoded result as per the FN_OUTPUTS definition.
|
74
|
+
* @extension ENS
|
75
|
+
* @example
|
76
|
+
* ```ts
|
77
|
+
* import { decodeNameResult } from "thirdweb/extensions/ens";
|
78
|
+
* const result = decodeNameResult("...");
|
79
|
+
* ```
|
80
|
+
*/
|
81
|
+
export function decodeNameResult(result) {
|
82
|
+
return decodeAbiParameters(FN_OUTPUTS, result)[0];
|
83
|
+
}
|
84
|
+
/**
|
85
|
+
* Calls the "name" function on the contract.
|
86
|
+
* @param options - The options for the name function.
|
87
|
+
* @returns The parsed result of the function call.
|
88
|
+
* @extension ENS
|
89
|
+
* @example
|
90
|
+
* ```ts
|
91
|
+
* import { name } from "thirdweb/extensions/ens";
|
92
|
+
*
|
93
|
+
* const result = await name({
|
94
|
+
* contract,
|
95
|
+
* node: ...,
|
96
|
+
* });
|
97
|
+
*
|
98
|
+
* ```
|
99
|
+
*/
|
100
|
+
export async function name(options) {
|
101
|
+
return readContract({
|
102
|
+
contract: options.contract,
|
103
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
104
|
+
params: [options.node],
|
105
|
+
});
|
106
|
+
}
|
107
|
+
//# sourceMappingURL=name.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../../../../src/extensions/ens/__generated__/L2Resolver/read/name.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAShF,MAAM,CAAC,MAAM,WAAW,GAAG,YAAqB,CAAC;AACjD,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,MAAM;KACb;CACO,CAAC;AACX,MAAM,UAAU,GAAG;IACjB;QACE,IAAI,EAAE,QAAQ;KACf;CACO,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,kBAA4B;IAC1D,OAAO,YAAY,CAAC;QAClB,kBAAkB;QAClB,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAU;KACtD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,OAAO,mBAAmB,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,iFAAiF;IACjF,oEAAoE;IACpE,OAAO,CAAC,WAAW;QACjB,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAqC,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAW;IAC1C,OAAO,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA2C;IACpE,OAAO,YAAY,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAU;QACrD,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;AACL,CAAC"}
|
@@ -1,2 +1,4 @@
|
|
1
1
|
export const UNIVERSAL_RESOLVER_ADDRESS = "0xce01f8eee7E479C928F8919abD53E553a36CeF67";
|
2
|
+
export const BASENAME_RESOLVER_ADDRESS = "0xC6d566A56A1aFf6508b41f6c90ff131615583BCD";
|
3
|
+
export const BASE_SEPOLIA_BASENAME_RESOLVER_ADDRESS = "0x6533C94869D28fAA8dF77cc63f9e2b2D6Cf77eBA";
|
2
4
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/extensions/ens/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GACrC,4CAA4C,CAAC"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/extensions/ens/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GACrC,4CAA4C,CAAC;AAC/C,MAAM,CAAC,MAAM,yBAAyB,GACpC,4CAA4C,CAAC;AAC/C,MAAM,CAAC,MAAM,sCAAsC,GACjD,4CAA4C,CAAC"}
|
@@ -19,6 +19,18 @@ import { UNIVERSAL_RESOLVER_ADDRESS } from "./constants.js";
|
|
19
19
|
* name: "vitalik.eth",
|
20
20
|
* });
|
21
21
|
* ```
|
22
|
+
*
|
23
|
+
* Resolve an address to a Basename.
|
24
|
+
* ```ts
|
25
|
+
* import { resolveAddress, BASENAME_RESOLVER_ADDRESS } from "thirdweb/extensions/ens";
|
26
|
+
* import { base } from "thirdweb/chains";
|
27
|
+
* const address = await resolveAddress({
|
28
|
+
* client,
|
29
|
+
* name: "myk.base.eth",
|
30
|
+
* resolverAddress: BASENAME_RESOLVER_ADDRESS,
|
31
|
+
* resolverChain: base,
|
32
|
+
* });
|
33
|
+
* ```
|
22
34
|
* @extension ENS
|
23
35
|
* @returns A promise that resolves to the Ethereum address.
|
24
36
|
*/
|
@@ -42,7 +54,7 @@ export async function resolveAddress(options) {
|
|
42
54
|
const resolvedAddress = getAddress(`0x${result[0].slice(-40)}`);
|
43
55
|
return resolvedAddress;
|
44
56
|
}, {
|
45
|
-
cacheKey: `ens:addr:${name}`,
|
57
|
+
cacheKey: `ens:addr:${resolverChain?.id || 1}:${name}`,
|
46
58
|
// 1min cache
|
47
59
|
cacheTime: 60 * 1000,
|
48
60
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolve-address.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,mDAAmD,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAY5D
|
1
|
+
{"version":3,"file":"resolve-address.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,mDAAmD,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAY5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA8B;IACjE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACjE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa,IAAI,QAAQ;YAChC,OAAO,EAAE,eAAe,IAAI,0BAA0B;SACvD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI;SACL,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEhE,OAAO,eAAe,CAAC;IACzB,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACtD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
|