1.7.0 • Published 11 months ago

@solflare-wallet/nft-sdk v1.7.0

Weekly downloads
-
License
ISC
Repository
-
Last release
11 months ago

@solflare-wallet/nft-sdk

NFT SDK used in Solflare wallet.

This SDK accepts a list of mints, triggers fetching NFT metadatas, all JSONs, Metaplex groups, and does "smart" grouping of everything else using few different rules.

Contents:

Installation

$ npm install @solflare-wallet/nft-sdk

Examples

Initialize the library

1) Use the default configuration:

import { SolflareNft } from '@solflare-wallet/nft-sdk';

const mints = [ new PublicKey(mint1), new PublicKey(mint2) ];
const solflare = new SolflareNft({ mints });

2) Use other configuration options:

import { SolflareNft } from '@solflare-wallet/nft-sdk';

const solflare = new SolflareNft({
  mints,
  connection: web3connection // "https://api.mainnet-beta.solana.com" will be used if ommited
});

Ways to get the data

1) SDK exposes .startFetching() method which starts fetching the data and returns a promise with all NFTs and groups. Waiting for this promise to resolve might take a lot of time for large number of NFTs, so try different method with listening for changes.

import { SolflareNft } from '@solflare-wallet/nft-sdk';

const solflare = new SolflareNft({ mints });

const response = await solflare.startFetching();

response = {
  nfts: [
    {
      id: 'mint-address-string',
      metadataAccount: MetadataAccount, // metaplex type
      updateAuthority: PublicKey,
      mint: PublicKey,
      name: 'NFT name',
      symbol: 'symbol',
      uri: 'https://uri ...',
      sellerFeeBasisPoints: 0,
      creators: Creators[], // metaplex type
      primarySaleHappened: true,
      isMutable: true,
      editionNonce: 253,
      tokenStandard: TokenStandard | null, // metaplex type
      collection: Collection | null, // metaplex type
      uses: Uses | null, // metaplex type
      metadata: JsonMetadata | null, // metaplex type, entire JSON object fetched from uri
      group: 'unique-group-identifier-address-or-slug' | null
    },
    // ...
  ],
  groups: [
    {
      id: 'unique-group-identifier-address-or-slug',
      name: 'Group name',
      image: 'uri of image used for group',
      count: 3, // number of NFTs in this group
      metaplex: true // true if grouped by verified Collection, otherwise false
    },
    // ...
  ]
}
  1. Fetch all data, but listen for change events and update each NFT that received an update
import { SolflareNft, STATUS } from '@solflare-wallet/nft-sdk';

const solflare = new SolflareNft({ mints });

solflare.startFetching();

solflare.on('message', ({ status, payload }) => {
  switch (status) {
    case STATUS.GLOBAL_START:
      console.log('Started fetching.');
      break;
    case STATUS.METADATA_FINISH:
      console.log('Fetched all Metaplex metadata accounts');
      console.log('payload', payload);
      // payload = {
      //   nfts: [ { ...nftData } ],
      //   groups: []
      // }
      break;
    case STATUS.JSON_FILE_SINGLE_FINISH:
      console.log('Fetched single JSON file');
      console.log('payload', payload);
      // payload = {
      //   nft: { SINGLE NFT THAT GOT UPDATED }
      //   nfts: [...],
      //   groups: [...]
      // }
      break;
    case STATUS.JSON_FILE_SINGLE_ERROR:
      console.log('Failed to fetch JSON file');
      console.log('payload', payload);
      // payload = {
      //   nft: { SINGLE NFT THAT FAILED LOADING JSON }
      //   nfts: [...],
      //   groups: [...]
      // }
      break;
    case STATUS.JSON_FILES_FINISH:
      console.log('Everything finished loading');
      console.log('payload', payload);
      // payload = {
      //   nfts: [...],
      //   groups: [...]
      // }
      break;
    case STATUS.GLOBAL_FINISH:
      console.log('Finished fetching.');
      break;
    default: break;
  }
});

Learn more

1.7.0

11 months ago

1.6.0

1 year ago

1.5.0

1 year ago

1.6.0-rc1

1 year ago

1.6.0-rc2

1 year ago

1.6.0-rc3

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

2.0.0-rc.0

2 years ago

1.3.0

2 years ago

1.3.0-rc1

2 years ago

1.3.1-rc.0

2 years ago

1.8.0-rc.0

2 years ago

1.4.0-rc2

1 year ago

1.4.0-rc1

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.4.0

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.0

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago