thirdweb 5.37.0 → 5.37.1-nightly-26d825bc4f0475523ea761aa18ab979557295c28-20240722000339
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/lens.js +98 -0
- package/dist/cjs/exports/extensions/lens.js.map +1 -0
- package/dist/cjs/exports/extensions/permissions.js +7 -1
- package/dist/cjs/exports/extensions/permissions.js.map +1 -1
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowData.js +133 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowData.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.js +71 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/isFollowing.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/isFollowing.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getHandle.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getHandle.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.js +71 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getLocalName.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getLocalName.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getTokenId.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHandle/read/getTokenId.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/exists.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/exists.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getContentURI.js +122 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getContentURI.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getProfile.js +145 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getProfile.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getPublication.js +160 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/getPublication.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/mintTimestampOf.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/mintTimestampOf.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/nonces.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/nonces.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/tokenDataOf.js +125 -0
- package/dist/cjs/extensions/lens/__generated__/LensHub/read/tokenDataOf.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.js +125 -0
- package/dist/cjs/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.js +116 -0
- package/dist/cjs/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.js.map +1 -0
- package/dist/cjs/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.js +115 -0
- package/dist/cjs/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.js.map +1 -0
- package/dist/cjs/extensions/lens/consts.js +26 -0
- package/dist/cjs/extensions/lens/consts.js.map +1 -0
- package/dist/cjs/extensions/lens/read/getFullProfile.js +74 -0
- package/dist/cjs/extensions/lens/read/getFullProfile.js.map +1 -0
- package/dist/cjs/extensions/lens/read/getHandleFromProfileId.js +50 -0
- package/dist/cjs/extensions/lens/read/getHandleFromProfileId.js.map +1 -0
- package/dist/cjs/extensions/lens/read/getProfileMetadata.js +55 -0
- package/dist/cjs/extensions/lens/read/getProfileMetadata.js.map +1 -0
- package/dist/cjs/extensions/lens/read/type.js +3 -0
- package/dist/cjs/extensions/lens/read/type.js.map +1 -0
- package/dist/cjs/extensions/permissions/utils.js +19 -5
- package/dist/cjs/extensions/permissions/utils.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/exports/extensions/lens.js +56 -0
- package/dist/esm/exports/extensions/lens.js.map +1 -0
- package/dist/esm/exports/extensions/permissions.js +4 -0
- package/dist/esm/exports/extensions/permissions.js.map +1 -1
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowData.js +125 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowData.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.js +65 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/isFollowing.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/isFollowing.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.js +107 -0
- package/dist/esm/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getHandle.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getHandle.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.js +65 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getLocalName.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getLocalName.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getTokenId.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHandle/read/getTokenId.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/exists.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/exists.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getContentURI.js +114 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getContentURI.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getProfile.js +137 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getProfile.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getPublication.js +152 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/getPublication.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/mintTimestampOf.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/mintTimestampOf.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/nonces.js +107 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/nonces.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/tokenDataOf.js +117 -0
- package/dist/esm/extensions/lens/__generated__/LensHub/read/tokenDataOf.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.js +107 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.js +107 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.js +107 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.js +117 -0
- package/dist/esm/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.js +107 -0
- package/dist/esm/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.js +108 -0
- package/dist/esm/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.js.map +1 -0
- package/dist/esm/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.js +107 -0
- package/dist/esm/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.js.map +1 -0
- package/dist/esm/extensions/lens/consts.js +23 -0
- package/dist/esm/extensions/lens/consts.js.map +1 -0
- package/dist/esm/extensions/lens/read/getFullProfile.js +71 -0
- package/dist/esm/extensions/lens/read/getFullProfile.js.map +1 -0
- package/dist/esm/extensions/lens/read/getHandleFromProfileId.js +47 -0
- package/dist/esm/extensions/lens/read/getHandleFromProfileId.js.map +1 -0
- package/dist/esm/extensions/lens/read/getProfileMetadata.js +52 -0
- package/dist/esm/extensions/lens/read/getProfileMetadata.js.map +1 -0
- package/dist/esm/extensions/lens/read/type.js +2 -0
- package/dist/esm/extensions/lens/read/type.js.map +1 -0
- package/dist/esm/extensions/permissions/utils.js +15 -1
- package/dist/esm/extensions/permissions/utils.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/exports/extensions/lens.d.ts +53 -0
- package/dist/types/exports/extensions/lens.d.ts.map +1 -0
- package/dist/types/exports/extensions/permissions.d.ts +1 -0
- package/dist/types/exports/extensions/permissions.d.ts.map +1 -1
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowData.d.ts +95 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowData.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.d.ts +46 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/isFollowing.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/isFollowing.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getHandle.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getHandle.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.d.ts +46 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getLocalName.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getLocalName.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getTokenId.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHandle/read/getTokenId.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/exists.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/exists.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getContentURI.d.ts +92 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getContentURI.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getProfile.d.ts +101 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getProfile.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getPublication.d.ts +112 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/getPublication.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/mintTimestampOf.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/mintTimestampOf.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/nonces.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/nonces.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/tokenDataOf.d.ts +91 -0
- package/dist/types/extensions/lens/__generated__/LensHub/read/tokenDataOf.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.d.ts +92 -0
- package/dist/types/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.d.ts.map +1 -0
- package/dist/types/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.d.ts +85 -0
- package/dist/types/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.d.ts.map +1 -0
- package/dist/types/extensions/lens/consts.d.ts +20 -0
- package/dist/types/extensions/lens/consts.d.ts.map +1 -0
- package/dist/types/extensions/lens/read/getFullProfile.d.ts +37 -0
- package/dist/types/extensions/lens/read/getFullProfile.d.ts.map +1 -0
- package/dist/types/extensions/lens/read/getHandleFromProfileId.d.ts +28 -0
- package/dist/types/extensions/lens/read/getHandleFromProfileId.d.ts.map +1 -0
- package/dist/types/extensions/lens/read/getProfileMetadata.d.ts +36 -0
- package/dist/types/extensions/lens/read/getProfileMetadata.d.ts.map +1 -0
- package/dist/types/extensions/lens/read/type.d.ts +37 -0
- package/dist/types/extensions/lens/read/type.d.ts.map +1 -0
- package/dist/types/extensions/permissions/utils.d.ts +15 -2
- package/dist/types/extensions/permissions/utils.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/lens.ts +155 -0
- package/src/exports/extensions/permissions.ts +5 -0
- package/src/extensions/erc1155/drops/read/getActiveClaimCondition.test.ts +3 -4
- package/src/extensions/erc20/drops/read/getActiveClaimCondition.test.ts +2 -2
- package/src/extensions/erc721/drops/read/getActiveClaimCondition.test.ts +2 -2
- package/src/extensions/lens/__generated__/FollowNFT/read/getFollowData.ts +150 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/getFollowTimestamp.ts +134 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/getFollowTokenId.ts +132 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/getFollowerCount.ts +74 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/getFollowerProfileId.ts +136 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/getOriginalFollowTimestamp.ts +136 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/getProfileIdAllowedToRecover.ts +136 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/isFollowing.ts +130 -0
- package/src/extensions/lens/__generated__/FollowNFT/read/mintTimestampOf.ts +129 -0
- package/src/extensions/lens/__generated__/LensHandle/read/getHandle.ts +127 -0
- package/src/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.ts +76 -0
- package/src/extensions/lens/__generated__/LensHandle/read/getLocalName.ts +127 -0
- package/src/extensions/lens/__generated__/LensHandle/read/getTokenId.ts +127 -0
- package/src/extensions/lens/__generated__/LensHub/read/exists.ts +123 -0
- package/src/extensions/lens/__generated__/LensHub/read/getContentURI.ts +140 -0
- package/src/extensions/lens/__generated__/LensHub/read/getProfile.ts +160 -0
- package/src/extensions/lens/__generated__/LensHub/read/getProfileIdByHandleHash.ts +136 -0
- package/src/extensions/lens/__generated__/LensHub/read/getPublication.ts +178 -0
- package/src/extensions/lens/__generated__/LensHub/read/mintTimestampOf.ts +129 -0
- package/src/extensions/lens/__generated__/LensHub/read/nonces.ts +123 -0
- package/src/extensions/lens/__generated__/LensHub/read/tokenDataOf.ts +137 -0
- package/src/extensions/lens/__generated__/ModuleRegistry/read/getModuleTypes.ts +132 -0
- package/src/extensions/lens/__generated__/ModuleRegistry/read/isErc20CurrencyRegistered.ts +136 -0
- package/src/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegistered.ts +134 -0
- package/src/extensions/lens/__generated__/ModuleRegistry/read/isModuleRegisteredAs.ts +150 -0
- package/src/extensions/lens/__generated__/TokenHandleRegistry/read/getDefaultHandle.ts +132 -0
- package/src/extensions/lens/__generated__/TokenHandleRegistry/read/nonces.ts +124 -0
- package/src/extensions/lens/__generated__/TokenHandleRegistry/read/resolve.ts +123 -0
- package/src/extensions/lens/consts.ts +35 -0
- package/src/extensions/lens/read/getFullProfile.test.ts +40 -0
- package/src/extensions/lens/read/getFullProfile.ts +106 -0
- package/src/extensions/lens/read/getHandleFromProfileId.test.ts +45 -0
- package/src/extensions/lens/read/getHandleFromProfileId.ts +67 -0
- package/src/extensions/lens/read/getProfileMetadata.test.ts +43 -0
- package/src/extensions/lens/read/getProfileMetadata.ts +67 -0
- package/src/extensions/lens/read/type.ts +50 -0
- package/src/extensions/permissions/utils.ts +15 -1
- package/src/version.ts +1 -1
@@ -0,0 +1,123 @@
|
|
1
|
+
import type { AbiParameterToPrimitiveType } from "abitype";
|
2
|
+
import { readContract } from "../../../../../transaction/read-contract.js";
|
3
|
+
import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
|
4
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
5
|
+
import { decodeAbiParameters } from "viem";
|
6
|
+
import type { Hex } from "../../../../../utils/encoding/hex.js";
|
7
|
+
import type { ThirdwebContract } from "../../../../../contract/contract.js";
|
8
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Represents the parameters for the "resolve" function.
|
12
|
+
*/
|
13
|
+
export type ResolveParams = {
|
14
|
+
handleId: AbiParameterToPrimitiveType<{ type: "uint256"; name: "handleId" }>;
|
15
|
+
};
|
16
|
+
|
17
|
+
export const FN_SELECTOR = "0x4f896d4f" as const;
|
18
|
+
const FN_INPUTS = [
|
19
|
+
{
|
20
|
+
type: "uint256",
|
21
|
+
name: "handleId",
|
22
|
+
},
|
23
|
+
] as const;
|
24
|
+
const FN_OUTPUTS = [
|
25
|
+
{
|
26
|
+
type: "uint256",
|
27
|
+
},
|
28
|
+
] as const;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Checks if the `resolve` method is supported by the given contract.
|
32
|
+
* @param contract The ThirdwebContract.
|
33
|
+
* @returns A promise that resolves to a boolean indicating if the `resolve` method is supported.
|
34
|
+
* @extension LENS
|
35
|
+
* @example
|
36
|
+
* ```ts
|
37
|
+
* import { isResolveSupported } from "thirdweb/extensions/lens";
|
38
|
+
*
|
39
|
+
* const supported = await isResolveSupported(contract);
|
40
|
+
* ```
|
41
|
+
*/
|
42
|
+
export async function isResolveSupported(contract: ThirdwebContract<any>) {
|
43
|
+
return detectMethod({
|
44
|
+
contract,
|
45
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
46
|
+
});
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Encodes the parameters for the "resolve" function.
|
51
|
+
* @param options - The options for the resolve function.
|
52
|
+
* @returns The encoded ABI parameters.
|
53
|
+
* @extension LENS
|
54
|
+
* @example
|
55
|
+
* ```ts
|
56
|
+
* import { encodeResolveParams } "thirdweb/extensions/lens";
|
57
|
+
* const result = encodeResolveParams({
|
58
|
+
* handleId: ...,
|
59
|
+
* });
|
60
|
+
* ```
|
61
|
+
*/
|
62
|
+
export function encodeResolveParams(options: ResolveParams) {
|
63
|
+
return encodeAbiParameters(FN_INPUTS, [options.handleId]);
|
64
|
+
}
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Encodes the "resolve" function into a Hex string with its parameters.
|
68
|
+
* @param options - The options for the resolve function.
|
69
|
+
* @returns The encoded hexadecimal string.
|
70
|
+
* @extension LENS
|
71
|
+
* @example
|
72
|
+
* ```ts
|
73
|
+
* import { encodeResolve } "thirdweb/extensions/lens";
|
74
|
+
* const result = encodeResolve({
|
75
|
+
* handleId: ...,
|
76
|
+
* });
|
77
|
+
* ```
|
78
|
+
*/
|
79
|
+
export function encodeResolve(options: ResolveParams) {
|
80
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
81
|
+
// we can do this because we know the specific formats of the values
|
82
|
+
return (FN_SELECTOR +
|
83
|
+
encodeResolveParams(options).slice(2)) as `${typeof FN_SELECTOR}${string}`;
|
84
|
+
}
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Decodes the result of the resolve function call.
|
88
|
+
* @param result - The hexadecimal result to decode.
|
89
|
+
* @returns The decoded result as per the FN_OUTPUTS definition.
|
90
|
+
* @extension LENS
|
91
|
+
* @example
|
92
|
+
* ```ts
|
93
|
+
* import { decodeResolveResult } from "thirdweb/extensions/lens";
|
94
|
+
* const result = decodeResolveResult("...");
|
95
|
+
* ```
|
96
|
+
*/
|
97
|
+
export function decodeResolveResult(result: Hex) {
|
98
|
+
return decodeAbiParameters(FN_OUTPUTS, result)[0];
|
99
|
+
}
|
100
|
+
|
101
|
+
/**
|
102
|
+
* Calls the "resolve" function on the contract.
|
103
|
+
* @param options - The options for the resolve function.
|
104
|
+
* @returns The parsed result of the function call.
|
105
|
+
* @extension LENS
|
106
|
+
* @example
|
107
|
+
* ```ts
|
108
|
+
* import { resolve } from "thirdweb/extensions/lens";
|
109
|
+
*
|
110
|
+
* const result = await resolve({
|
111
|
+
* contract,
|
112
|
+
* handleId: ...,
|
113
|
+
* });
|
114
|
+
*
|
115
|
+
* ```
|
116
|
+
*/
|
117
|
+
export async function resolve(options: BaseTransactionOptions<ResolveParams>) {
|
118
|
+
return readContract({
|
119
|
+
contract: options.contract,
|
120
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
121
|
+
params: [options.handleId],
|
122
|
+
});
|
123
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/**
|
2
|
+
* List of Lens's contracts on both polygon mainnet and polygon amoy testnet
|
3
|
+
* Update to the latest data here: https://www.lens.xyz/docs/resources/smart-contracts
|
4
|
+
*
|
5
|
+
* In our Lens extensions we will default to using these hard-coded values on mainnet
|
6
|
+
* to simplify the code for users, however they can override anytime
|
7
|
+
*/
|
8
|
+
|
9
|
+
// ------------------- Mainnet Polygon (137) ------------------- //
|
10
|
+
|
11
|
+
// Core contracts
|
12
|
+
export const LENS_HUB_ADDRESS = "0xDb46d1Dc155634FbC732f92E853b10B288AD5a1d";
|
13
|
+
export const LENS_HANDLE_ADDRESS = "0xe7E7EaD361f3AaCD73A61A9bD6C10cA17F38E945";
|
14
|
+
export const LENS_TOKEN_HANDLE_REGISTRY_ADDRESS =
|
15
|
+
"0xD4F2F33680FCCb36748FA9831851643781608844";
|
16
|
+
export const LENS_FOLLOW_NFT_ADDRESS =
|
17
|
+
"0x288715E67B7b184fD299143280CA6c1Eb7F31e1B";
|
18
|
+
export const LENS_COLLECT_NFT_ADDRESS =
|
19
|
+
"0x0c2a7761E2971D906338F5da1ecF0027E4247fd7";
|
20
|
+
export const LENS_MODULE_REGISTRY_ADDRESS =
|
21
|
+
"0x1eD5983F0c883B96f7C35528a1e22EEA67DE3Ff9";
|
22
|
+
|
23
|
+
// ------------------- Polygon Amoy Testnet (80002) ------------------- //
|
24
|
+
export const LENS_HUB_ADDRESS_TESTNET =
|
25
|
+
"0xDb46d1Dc155634FbC732f92E853b10B288AD5a1d";
|
26
|
+
export const LENS_HANDLE_ADDRESS_TESTNET =
|
27
|
+
"0xe7E7EaD361f3AaCD73A61A9bD6C10cA17F38E945";
|
28
|
+
export const LENS_TOKEN_HANDLE_REGISTRY_ADDRESS_TESTNET =
|
29
|
+
"0xD4F2F33680FCCb36748FA9831851643781608844";
|
30
|
+
export const LENS_FOLLOW_NFT_ADDRESS_TESTNET =
|
31
|
+
"0x288715E67B7b184fD299143280CA6c1Eb7F31e1B";
|
32
|
+
export const LENS_COLLECT_NFT_ADDRESS_TESTNET =
|
33
|
+
"0x0c2a7761E2971D906338F5da1ecF0027E4247fd7";
|
34
|
+
export const LENS_MODULE_REGISTRY_ADDRESS_TESTNET =
|
35
|
+
"0x1eD5983F0c883B96f7C35528a1e22EEA67DE3Ff9";
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
+
import { MAX_UINT256 } from "~test/test-consts.js";
|
4
|
+
import { getFullProfile } from "./getFullProfile.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* For Lens protocol, each profileId is an ERC721 tokenId.
|
8
|
+
* So any bigint from 0 to (current max profile id) should return a valid profile + handle
|
9
|
+
*/
|
10
|
+
|
11
|
+
const profileId = 1000n;
|
12
|
+
const client = TEST_CLIENT;
|
13
|
+
|
14
|
+
describe("lens/getFullProfile", () => {
|
15
|
+
it("should return a full profile with handle and (maybe) profile metadata", async () => {
|
16
|
+
const profile = await getFullProfile({ profileId, client });
|
17
|
+
|
18
|
+
// Although there is a profile, the metadata of that profile might still be "null"
|
19
|
+
// if user hasn't set up any metadata like avatar, coverPicture, name, bio etc.
|
20
|
+
expect(typeof profile).toBe("object");
|
21
|
+
expect(profile?.handle.startsWith("lens/@")).toBe(true);
|
22
|
+
expect(typeof profile?.profileData).toBe("object");
|
23
|
+
});
|
24
|
+
|
25
|
+
it("should return null for invalid profileId", async () => {
|
26
|
+
// As of Jul 2024 Lens has about 465k profiles | So trying to get profile of a max-unit256 profileId should return "null"
|
27
|
+
// gotta be a very long before this number is reached so we should be safe
|
28
|
+
const profile = await getFullProfile({ profileId: MAX_UINT256, client });
|
29
|
+
expect(profile === null).toBe(true);
|
30
|
+
});
|
31
|
+
|
32
|
+
it("should return joinDate", async () => {
|
33
|
+
const profile = await getFullProfile({
|
34
|
+
profileId,
|
35
|
+
client,
|
36
|
+
includeJoinDate: true,
|
37
|
+
});
|
38
|
+
expect(typeof profile?.joinDate).toBe("bigint");
|
39
|
+
});
|
40
|
+
});
|
@@ -0,0 +1,106 @@
|
|
1
|
+
import { polygon } from "../../../chains/chain-definitions/polygon.js";
|
2
|
+
import type { Chain } from "../../../chains/types.js";
|
3
|
+
import type { ThirdwebClient } from "../../../client/client.js";
|
4
|
+
import { getContract } from "../../../contract/contract.js";
|
5
|
+
import type { Hex } from "../../../utils/encoding/hex.js";
|
6
|
+
import { getProfile } from "../__generated__/LensHub/read/getProfile.js";
|
7
|
+
import { getDefaultHandle } from "../__generated__/TokenHandleRegistry/read/getDefaultHandle.js";
|
8
|
+
import {
|
9
|
+
LENS_HANDLE_ADDRESS,
|
10
|
+
LENS_HUB_ADDRESS,
|
11
|
+
LENS_TOKEN_HANDLE_REGISTRY_ADDRESS,
|
12
|
+
} from "../consts.js";
|
13
|
+
import type { LensProfileSchema } from "./type.js";
|
14
|
+
|
15
|
+
export type GetFullProfileParams = {
|
16
|
+
profileId: bigint;
|
17
|
+
client: ThirdwebClient;
|
18
|
+
includeJoinDate?: boolean;
|
19
|
+
overrides?: {
|
20
|
+
lensHubAddress?: Hex;
|
21
|
+
lensHandleAddress?: Hex;
|
22
|
+
tokenHandleRegistryAddress?: Hex;
|
23
|
+
chain?: Chain;
|
24
|
+
};
|
25
|
+
};
|
26
|
+
|
27
|
+
export type FullProfileResponse = {
|
28
|
+
handle: string;
|
29
|
+
// Timestamp of the join date
|
30
|
+
joinDate: bigint | null;
|
31
|
+
profileData: LensProfileSchema | null;
|
32
|
+
} | null;
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Return the profile data _with Lens handle_ and optional join date
|
36
|
+
*
|
37
|
+
* In Lens Protocol, each profile is associated with an ERC721 token,
|
38
|
+
* thus, the tokenId represent profileId and the 2 terms can be used interchangeably
|
39
|
+
* @extension LENS
|
40
|
+
*
|
41
|
+
* @example
|
42
|
+
* ```ts
|
43
|
+
* import { getFullProfile } from "thirdweb/extension/lens";
|
44
|
+
*
|
45
|
+
* const profileId = 10000n; // profileId is the tokenId of the NFT
|
46
|
+
* const lensProfile = await getFullProfile({ profileId, client });
|
47
|
+
* ```
|
48
|
+
*/
|
49
|
+
export async function getFullProfile(
|
50
|
+
options: GetFullProfileParams,
|
51
|
+
): Promise<FullProfileResponse> {
|
52
|
+
const { profileId, overrides, includeJoinDate, client } = options;
|
53
|
+
const lensHubContract = getContract({
|
54
|
+
address: overrides?.lensHubAddress || LENS_HUB_ADDRESS,
|
55
|
+
chain: overrides?.chain || polygon,
|
56
|
+
client,
|
57
|
+
});
|
58
|
+
const tokenHandleRegistryContract = getContract({
|
59
|
+
address:
|
60
|
+
overrides?.tokenHandleRegistryAddress ||
|
61
|
+
LENS_TOKEN_HANDLE_REGISTRY_ADDRESS,
|
62
|
+
chain: overrides?.chain || polygon,
|
63
|
+
client,
|
64
|
+
});
|
65
|
+
const [profile, handleTokenId, { download }] = await Promise.all([
|
66
|
+
getProfile({ contract: lensHubContract, profileId }),
|
67
|
+
getDefaultHandle({
|
68
|
+
contract: tokenHandleRegistryContract,
|
69
|
+
profileId,
|
70
|
+
}).catch(() => null),
|
71
|
+
import("../../../storage/download.js"),
|
72
|
+
]);
|
73
|
+
|
74
|
+
// A profile data should always pair with a handle, so we exit if either is missing
|
75
|
+
if (!profile || !handleTokenId) {
|
76
|
+
return null;
|
77
|
+
}
|
78
|
+
|
79
|
+
const [{ getHandle }, { mintTimestampOf }, profileData] = await Promise.all([
|
80
|
+
import("../__generated__/LensHandle/read/getHandle.js"),
|
81
|
+
import("../__generated__/LensHub/read/mintTimestampOf.js"),
|
82
|
+
profile?.metadataURI
|
83
|
+
? (await download({ uri: profile.metadataURI, client })).json()
|
84
|
+
: null,
|
85
|
+
]);
|
86
|
+
|
87
|
+
const lensHandleContract = getContract({
|
88
|
+
address: overrides?.lensHandleAddress || LENS_HANDLE_ADDRESS,
|
89
|
+
chain: overrides?.chain || polygon,
|
90
|
+
client,
|
91
|
+
});
|
92
|
+
const [handle, joinDate] = await Promise.all([
|
93
|
+
getHandle({ contract: lensHandleContract, tokenId: handleTokenId }),
|
94
|
+
includeJoinDate
|
95
|
+
? mintTimestampOf({ contract: lensHubContract, tokenId: profileId })
|
96
|
+
: null,
|
97
|
+
]);
|
98
|
+
|
99
|
+
const result: FullProfileResponse = {
|
100
|
+
profileData,
|
101
|
+
handle,
|
102
|
+
joinDate,
|
103
|
+
};
|
104
|
+
|
105
|
+
return result;
|
106
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
+
import { MAX_UINT256 } from "~test/test-consts.js";
|
4
|
+
import { getHandleFromProfileId } from "./getHandleFromProfileId.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* For Lens protocol, each profileId is an ERC721 tokenId.
|
8
|
+
* So any bigint from 0 to (current max id) should return a valid profile + handle
|
9
|
+
*/
|
10
|
+
|
11
|
+
const profileId = 1000n;
|
12
|
+
const client = TEST_CLIENT;
|
13
|
+
|
14
|
+
describe("lens/getHandleFromProfileId should return a handle for a valid profileId", () => {
|
15
|
+
it("should return a string in this format: lens/@<handle>", async () => {
|
16
|
+
const handle = await getHandleFromProfileId({ profileId, client });
|
17
|
+
expect(typeof handle).toBe("string");
|
18
|
+
// @ts-ignore expected
|
19
|
+
expect(handle.startsWith("lens/")).toBe(true);
|
20
|
+
});
|
21
|
+
|
22
|
+
it("should return `null` for an invalid profileId", async () => {
|
23
|
+
// As of Jul 2024 Lens has about 465k profiles | So trying to get handle of a max-unit256 profileId should return "null"
|
24
|
+
// gotta be a very long before this number is reached so we should be safe
|
25
|
+
const handle = await getHandleFromProfileId({
|
26
|
+
profileId: MAX_UINT256,
|
27
|
+
client,
|
28
|
+
});
|
29
|
+
expect(handle).toBe(null);
|
30
|
+
});
|
31
|
+
|
32
|
+
it("should work with overrides", async () => {
|
33
|
+
const handle = await getHandleFromProfileId({
|
34
|
+
profileId,
|
35
|
+
client,
|
36
|
+
overrides: {
|
37
|
+
lensHandleAddress: "0xe7E7EaD361f3AaCD73A61A9bD6C10cA17F38E945",
|
38
|
+
tokenHandleRegistryAddress:
|
39
|
+
"0xD4F2F33680FCCb36748FA9831851643781608844",
|
40
|
+
},
|
41
|
+
});
|
42
|
+
// @ts-ignore expected
|
43
|
+
expect(handle.startsWith("lens/")).toBe(true);
|
44
|
+
});
|
45
|
+
});
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { polygon } from "../../../chains/chain-definitions/polygon.js";
|
2
|
+
import type { Chain } from "../../../chains/types.js";
|
3
|
+
import type { ThirdwebClient } from "../../../client/client.js";
|
4
|
+
import { getContract } from "../../../contract/contract.js";
|
5
|
+
import type { Hex } from "../../../utils/encoding/hex.js";
|
6
|
+
import { getHandle } from "../__generated__/LensHandle/read/getHandle.js";
|
7
|
+
import { getDefaultHandle } from "../__generated__/TokenHandleRegistry/read/getDefaultHandle.js";
|
8
|
+
import {
|
9
|
+
LENS_HANDLE_ADDRESS,
|
10
|
+
LENS_TOKEN_HANDLE_REGISTRY_ADDRESS,
|
11
|
+
} from "../consts.js";
|
12
|
+
|
13
|
+
export type GetHandleFromProfileIdParams = {
|
14
|
+
profileId: bigint;
|
15
|
+
client: ThirdwebClient;
|
16
|
+
overrides?: {
|
17
|
+
lensHandleAddress?: Hex;
|
18
|
+
tokenHandleRegistryAddress?: Hex;
|
19
|
+
chain?: Chain;
|
20
|
+
};
|
21
|
+
};
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Return the Lens handle of a profile in the format: lens/@<name-of-user>
|
25
|
+
* @param options
|
26
|
+
* @returns
|
27
|
+
* @extension LENS
|
28
|
+
*
|
29
|
+
* @example
|
30
|
+
* ```ts
|
31
|
+
* import { getHandleFromProfileId } from "thirdweb/extensions/lens";
|
32
|
+
*
|
33
|
+
* const profileId = 461662n;
|
34
|
+
* const handle = await getHandleFromProfileId({ profileId, client }); // "lens/@captain_jack"
|
35
|
+
* ```
|
36
|
+
*/
|
37
|
+
export async function getHandleFromProfileId(
|
38
|
+
options: GetHandleFromProfileIdParams,
|
39
|
+
) {
|
40
|
+
const { profileId, overrides, client } = options;
|
41
|
+
const lensHandleContract = getContract({
|
42
|
+
address: overrides?.lensHandleAddress || LENS_HANDLE_ADDRESS,
|
43
|
+
chain: overrides?.chain || polygon,
|
44
|
+
client,
|
45
|
+
});
|
46
|
+
const tokenHandleRegistryContract = getContract({
|
47
|
+
address:
|
48
|
+
overrides?.tokenHandleRegistryAddress ||
|
49
|
+
LENS_TOKEN_HANDLE_REGISTRY_ADDRESS,
|
50
|
+
chain: overrides?.chain || polygon,
|
51
|
+
client,
|
52
|
+
});
|
53
|
+
const handleTokenId = await getDefaultHandle({
|
54
|
+
contract: tokenHandleRegistryContract,
|
55
|
+
profileId,
|
56
|
+
}).catch(() => null);
|
57
|
+
if (handleTokenId === null) {
|
58
|
+
return null;
|
59
|
+
}
|
60
|
+
// e.g: "lens/@JuanWick"
|
61
|
+
const handle = await getHandle({
|
62
|
+
contract: lensHandleContract,
|
63
|
+
tokenId: handleTokenId,
|
64
|
+
}).catch(() => null);
|
65
|
+
|
66
|
+
return handle;
|
67
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
+
import { MAX_UINT256 } from "~test/test-consts.js";
|
4
|
+
import { getProfileMetadata } from "./getProfileMetadata.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* For Lens protocol, each profileId is an ERC721 tokenId.
|
8
|
+
* So any bigint from 0 to (current max profile id) should return a valid profile + handle
|
9
|
+
*/
|
10
|
+
|
11
|
+
const profileId = 1000n;
|
12
|
+
const client = TEST_CLIENT;
|
13
|
+
|
14
|
+
describe("lens/getProfileMetadata", () => {
|
15
|
+
it("should return a profile object or null for valid profileId", async () => {
|
16
|
+
const profile = await getProfileMetadata({ profileId, client });
|
17
|
+
|
18
|
+
// Although there is a profile, the metadata of that profile might still be "missing"
|
19
|
+
// if user hasn't set up any metadata like avatar, coverPicture, name, bio etc.
|
20
|
+
expect(typeof profile).toBe("object");
|
21
|
+
});
|
22
|
+
|
23
|
+
it("should return null for invalid profileId", async () => {
|
24
|
+
// As of Jul 2024 Lens has about 465k profiles | So trying to get profile of a max-unit256 profileId should return nothing
|
25
|
+
// gotta be a very long before this number is reached so we should be safe
|
26
|
+
const profile = await getProfileMetadata({
|
27
|
+
profileId: MAX_UINT256,
|
28
|
+
client,
|
29
|
+
});
|
30
|
+
expect(profile === null).toBe(true);
|
31
|
+
});
|
32
|
+
|
33
|
+
it("should work with overrides", async () => {
|
34
|
+
const profile = await getProfileMetadata({
|
35
|
+
profileId,
|
36
|
+
client,
|
37
|
+
overrides: {
|
38
|
+
lensHubAddress: "0xDb46d1Dc155634FbC732f92E853b10B288AD5a1d",
|
39
|
+
},
|
40
|
+
});
|
41
|
+
expect(typeof profile).toBe("object");
|
42
|
+
});
|
43
|
+
});
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { polygon } from "../../../chains/chain-definitions/polygon.js";
|
2
|
+
import type { Chain } from "../../../chains/types.js";
|
3
|
+
import type { ThirdwebClient } from "../../../client/client.js";
|
4
|
+
import { getContract } from "../../../contract/contract.js";
|
5
|
+
import type { Hex } from "../../../utils/encoding/hex.js";
|
6
|
+
import { getProfile } from "../__generated__/LensHub/read/getProfile.js";
|
7
|
+
import { LENS_HUB_ADDRESS } from "../consts.js";
|
8
|
+
import type { LensProfileSchema } from "./type.js";
|
9
|
+
|
10
|
+
export type GetProfileMetadataParams = {
|
11
|
+
profileId: bigint;
|
12
|
+
client: ThirdwebClient;
|
13
|
+
overrides?: {
|
14
|
+
lensHubAddress?: Hex;
|
15
|
+
chain?: Chain;
|
16
|
+
};
|
17
|
+
};
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Download user lens profile from Arweave
|
21
|
+
* This method does NOT give you the user handle & join-time - consider using `getFullProfileData` instead
|
22
|
+
* It is useful & cost efficient if you only want to get user's name, bio, picture, coverPicture etc.
|
23
|
+
*
|
24
|
+
* @important The contract here is the LensHub contract
|
25
|
+
* @param options
|
26
|
+
* @returns LensProfileSchema | null
|
27
|
+
* @extension LENS
|
28
|
+
*
|
29
|
+
* @example
|
30
|
+
* ```ts
|
31
|
+
* import { getProfileMetadata } from "thirdweb/extensions/lens";
|
32
|
+
*
|
33
|
+
* const profileData = await getProfileMetadata({ profileId, client });
|
34
|
+
*
|
35
|
+
* if (profileData) {
|
36
|
+
* console.log("Display name: ", profileData.lens.name);
|
37
|
+
* console.log("Bio: ", profileData.lens.bio);
|
38
|
+
* }
|
39
|
+
* ```
|
40
|
+
*/
|
41
|
+
export async function getProfileMetadata(
|
42
|
+
options: GetProfileMetadataParams,
|
43
|
+
): Promise<LensProfileSchema | null> {
|
44
|
+
const { client, profileId, overrides } = options;
|
45
|
+
const lensHubContract = getContract({
|
46
|
+
address: overrides?.lensHubAddress || LENS_HUB_ADDRESS,
|
47
|
+
chain: overrides?.chain || polygon,
|
48
|
+
client,
|
49
|
+
});
|
50
|
+
const profile = await getProfile({
|
51
|
+
contract: lensHubContract,
|
52
|
+
profileId,
|
53
|
+
}).catch(() => null);
|
54
|
+
if (profile === null) {
|
55
|
+
return profile;
|
56
|
+
}
|
57
|
+
if (!profile?.metadataURI) {
|
58
|
+
return null;
|
59
|
+
}
|
60
|
+
const { download } = await import("../../../storage/download.js");
|
61
|
+
const res = await download({
|
62
|
+
uri: profile.metadataURI,
|
63
|
+
client,
|
64
|
+
});
|
65
|
+
const profileData = ((await res.json()) as LensProfileSchema) || null;
|
66
|
+
return profileData;
|
67
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
export type LensProfileSchema = {
|
2
|
+
// A cryptographic signature of the Lens metadata
|
3
|
+
signature: string;
|
4
|
+
lens: {
|
5
|
+
// lens id
|
6
|
+
id: string;
|
7
|
+
// The profile display name
|
8
|
+
name: string;
|
9
|
+
// The profile bio as markdown
|
10
|
+
bio: string;
|
11
|
+
// The profile picture (avatar)
|
12
|
+
picture: string;
|
13
|
+
// The profile cover picture
|
14
|
+
coverPicture: string;
|
15
|
+
// extra metadata
|
16
|
+
attributes: MetadataAttribute[];
|
17
|
+
// The App Id, if omitted considered as global Profile data
|
18
|
+
appId?: string;
|
19
|
+
};
|
20
|
+
};
|
21
|
+
|
22
|
+
/**
|
23
|
+
* @internal
|
24
|
+
*/
|
25
|
+
export type MetadataAttribute =
|
26
|
+
| {
|
27
|
+
type: "Boolean";
|
28
|
+
key: string;
|
29
|
+
value: "true" | "false";
|
30
|
+
}
|
31
|
+
| {
|
32
|
+
type: "Date";
|
33
|
+
key: string;
|
34
|
+
value: string; // should be a valid ISO 8601 date string
|
35
|
+
}
|
36
|
+
| {
|
37
|
+
type: "Number";
|
38
|
+
key: string;
|
39
|
+
value: string; // should be a valid JS number serialized as string
|
40
|
+
}
|
41
|
+
| {
|
42
|
+
type: "String";
|
43
|
+
key: string;
|
44
|
+
value: string;
|
45
|
+
}
|
46
|
+
| {
|
47
|
+
type: "JSON";
|
48
|
+
key: string;
|
49
|
+
value: string; // should be a JSON string
|
50
|
+
};
|
@@ -2,7 +2,10 @@ import { keccakId } from "../../utils/any-evm/keccak-id.js";
|
|
2
2
|
import { LruMap } from "../../utils/caching/lru.js";
|
3
3
|
import { type Hex, isHex, padHex } from "../../utils/encoding/hex.js";
|
4
4
|
|
5
|
-
|
5
|
+
/**
|
6
|
+
* A map of all current thirdweb's smart contract roles
|
7
|
+
*/
|
8
|
+
export const roleMap = {
|
6
9
|
admin: "",
|
7
10
|
transfer: "TRANSFER_ROLE",
|
8
11
|
minter: "MINTER_ROLE",
|
@@ -32,6 +35,17 @@ export type RoleInput = ThirdwebContractRole | Hex | (string & {});
|
|
32
35
|
|
33
36
|
const roleCache = new LruMap<Hex>(128);
|
34
37
|
|
38
|
+
/**
|
39
|
+
* Get a hex value of a smart contract role
|
40
|
+
* You need the hex value to interact with the smart contracts.
|
41
|
+
* @param role string
|
42
|
+
* @returns hex value of the contract role
|
43
|
+
*
|
44
|
+
* @example
|
45
|
+
* ```ts
|
46
|
+
* const adminRoleHash = getRoleHash("admin"); // 0x0000000...000000
|
47
|
+
* ```
|
48
|
+
*/
|
35
49
|
export function getRoleHash(role: RoleInput) {
|
36
50
|
if (roleCache.has(role)) {
|
37
51
|
// biome-ignore lint/style/noNonNullAssertion: we know it's in the cache
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.37.
|
1
|
+
export const version = "5.37.1-nightly-26d825bc4f0475523ea761aa18ab979557295c28-20240722000339";
|