@fedorerd/fetch-sol-nft v0.0.8
Fetch Sol Nft
Package for fetching Solana NFTs. Built on-top of @solana/web3.js.
Npm
@fedorerd/fetch-sol-nft
Installation
Install the dependency.
npm i @fedorerd/fetch-sol-nftCreate new instance of FetchSolNftClient.
import { FetchSolNftClient } from "@fedorerd/fetch-sol-nft"
const RPC: string = "https://api.mainnet-beta.solana.com"
// You may pass instance of @solana/web3.js Connection instead of rpc url string
const client = new FetchSolNftClient(RPC)Usage
Client provides multiple subclient, which do different things.
0. Fetch
Fetch client provides function to fetch Solana NFTs.
const MINT = new PublicKey("3Z3HYn4TW9bnUrd58j6wKzQgmz23JPzS4PN12JXamZ9n")
const nft = await client.fetch.nftByMint({
mint: MINT
})Available functions: nftByMint, nftsByOwner.
1. Constants
Constants client contains on-chain program IDs needed for working with NFTs.
const METAPLEX_TOKEN_METADATA_PROGRAM_ID = client.constants.tokenMetadataProgramIdPrograms available: tokenMetadataProgramId, associatedTokenProgramId, tokenProgramId.
2. Pdas
Pdas client provides functions to derive program derived addresses.
const NFT_MINT_ADDRESS: string = "3Z3HYn4TW9bnUrd58j6wKzQgmz23JPzS4PN12JXamZ9n"
const nftMetadataAddress = client.pdas.getMetadata({
mint: new PublicKey(NFT_MINT_ADDRESS)
})Available functions: getMetadata, getEdition (NFT edition/master edition), getTokenRecord (pNFT token record), getAssociatedToken (associated token address).
3. Coder
Coder client provides function to decode accounts. It takes Buffer data and returns deserialized account data.
const RPC = "https://api.mainnet-beta.solana.com"
const MINT = new PublicKey("3Z3HYn4TW9bnUrd58j6wKzQgmz23JPzS4PN12JXamZ9n")
const data = await new Connection(RPC).getAccountInfo(MINT).then(a => a?.data)
if (!data) return
const decoded = client.coder.mintAccount(data)
console.log(decoded)Available decoders: mintAccount, metadataAccount, tokenAccount, uriJson (additional decoder for offchain json uri, which contains NFT attributes, description, etc.).
4. Update connection
You may always update solana connection if you wish so.
const NEW_RPC: string = "https://api.devnet.solana.com"
client.updateConnection(NEW_RPC)