@solflare-wallet/pfp
Advanced tools
Comparing version 0.0.1 to 0.0.2
@@ -5,3 +5,3 @@ import { Connection, PublicKey, Transaction } from '@solana/web3.js'; | ||
export declare function getProfilePicture(connection: Connection, publicKey: PublicKey, config?: ProfilePictureConfig): Promise<ProfilePicture>; | ||
export declare function createSetProfilePrictureTransaction(ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction>; | ||
export declare function createSetProfilePictureTransaction(ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction>; | ||
export declare function createRemoveProfilePictureTransaction(ownerPublicKey: PublicKey): Promise<Transaction>; |
@@ -39,3 +39,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.createRemoveProfilePictureTransaction = exports.createSetProfilePrictureTransaction = exports.getProfilePicture = exports.PROFILE_PICTURE_PROGRAM = void 0; | ||
exports.createRemoveProfilePictureTransaction = exports.createSetProfilePictureTransaction = exports.getProfilePicture = exports.PROFILE_PICTURE_PROGRAM = void 0; | ||
var web3_js_1 = require("@solana/web3.js"); | ||
@@ -47,16 +47,16 @@ var mpl_token_metadata_1 = require("@metaplex-foundation/mpl-token-metadata"); | ||
function getProfilePicture(connection, publicKey, config) { | ||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; | ||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; | ||
if (config === void 0) { config = { fallback: true }; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var profilePictureAccountPublicKey, profilePictureAccount, profilePictureData, tokenAccount, nftMetadataAccountPublicKey, nftMetadata, imageUrl, err_1; | ||
return __generator(this, function (_r) { | ||
switch (_r.label) { | ||
var profilePictureAccountPublicKey, profilePictureAccount, profilePictureData, tokenAccount, nftMetadataAccountPublicKey, nftMetadata, metadata, err_1; | ||
return __generator(this, function (_t) { | ||
switch (_t.label) { | ||
case 0: | ||
_r.trys.push([0, 7, , 8]); | ||
_t.trys.push([0, 7, , 8]); | ||
return [4 /*yield*/, (0, utils_1.getProfilePicturePDA)(publicKey)]; | ||
case 1: | ||
profilePictureAccountPublicKey = _r.sent(); | ||
profilePictureAccountPublicKey = _t.sent(); | ||
return [4 /*yield*/, connection.getAccountInfo(profilePictureAccountPublicKey)]; | ||
case 2: | ||
profilePictureAccount = _r.sent(); | ||
profilePictureAccount = _t.sent(); | ||
if (!profilePictureAccount) { | ||
@@ -68,3 +68,3 @@ throw new Error('PDA is empty'); | ||
case 3: | ||
tokenAccount = _r.sent(); | ||
tokenAccount = _t.sent(); | ||
if (!tokenAccount) { | ||
@@ -87,18 +87,25 @@ throw new Error('No token account'); | ||
case 4: | ||
nftMetadataAccountPublicKey = _r.sent(); | ||
nftMetadataAccountPublicKey = _t.sent(); | ||
return [4 /*yield*/, mpl_token_metadata_1.Metadata.load(connection, nftMetadataAccountPublicKey)]; | ||
case 5: | ||
nftMetadata = _r.sent(); | ||
nftMetadata = _t.sent(); | ||
if (!((_q = (_p = nftMetadata === null || nftMetadata === void 0 ? void 0 : nftMetadata.data) === null || _p === void 0 ? void 0 : _p.data) === null || _q === void 0 ? void 0 : _q.uri)) { | ||
throw new Error('No metadata URL'); | ||
} | ||
return [4 /*yield*/, (0, utils_1.getImageUrlFromMetadataUrl)(nftMetadata.data.data.uri)]; | ||
return [4 /*yield*/, (0, utils_1.getMetadataFromUrl)(nftMetadata.data.data.uri)]; | ||
case 6: | ||
imageUrl = _r.sent(); | ||
metadata = _t.sent(); | ||
if (!metadata) { | ||
throw new Error('No metadata'); | ||
} | ||
return [2 /*return*/, { | ||
isAvailable: true, | ||
url: (0, utils_1.generateUrl)(imageUrl, publicKey, config) | ||
url: (0, utils_1.generateUrl)((metadata === null || metadata === void 0 ? void 0 : metadata.image) || null, publicKey, config), | ||
name: ((_s = (_r = nftMetadata === null || nftMetadata === void 0 ? void 0 : nftMetadata.data) === null || _r === void 0 ? void 0 : _r.data) === null || _s === void 0 ? void 0 : _s.name) || '', | ||
metadata: metadata, | ||
tokenAccount: profilePictureData.nftTokenAccount, | ||
mintAccount: profilePictureData.nftMint | ||
}]; | ||
case 7: | ||
err_1 = _r.sent(); | ||
err_1 = _t.sent(); | ||
return [2 /*return*/, { | ||
@@ -114,3 +121,3 @@ isAvailable: false, | ||
exports.getProfilePicture = getProfilePicture; | ||
function createSetProfilePrictureTransaction(ownerPublicKey, mintPublicKey, tokenAccountPublicKey) { | ||
function createSetProfilePictureTransaction(ownerPublicKey, mintPublicKey, tokenAccountPublicKey) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
@@ -145,3 +152,3 @@ var profilePictureAccountPublicKey, nftMetadataAccountPublicKey, transaction; | ||
} | ||
exports.createSetProfilePrictureTransaction = createSetProfilePrictureTransaction; | ||
exports.createSetProfilePictureTransaction = createSetProfilePictureTransaction; | ||
function createRemoveProfilePictureTransaction(ownerPublicKey) { | ||
@@ -148,0 +155,0 @@ return __awaiter(this, void 0, void 0, function () { |
@@ -5,2 +5,6 @@ import { PublicKey } from '@solana/web3.js'; | ||
url: string; | ||
name?: string; | ||
metadata?: any; | ||
tokenAccount?: PublicKey; | ||
mintAccount?: PublicKey; | ||
} | ||
@@ -7,0 +11,0 @@ export interface ProfilePictureConfig { |
@@ -5,3 +5,3 @@ import { AccountInfo, PublicKey } from '@solana/web3.js'; | ||
export declare function getProfilePicturePDA(publicKey: PublicKey): Promise<PublicKey>; | ||
export declare function getImageUrlFromMetadataUrl(url: string): Promise<string | null>; | ||
export declare function getMetadataFromUrl(url: string): Promise<any>; | ||
export declare function generateUrl(url: string | null, ownerPublicKey: PublicKey, config: ProfilePictureConfig): string; |
@@ -58,3 +58,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.generateUrl = exports.getImageUrlFromMetadataUrl = exports.getProfilePicturePDA = exports.decodeProfilePictureAccount = void 0; | ||
exports.generateUrl = exports.getMetadataFromUrl = exports.getProfilePicturePDA = exports.decodeProfilePictureAccount = void 0; | ||
var web3_js_1 = require("@solana/web3.js"); | ||
@@ -91,5 +91,5 @@ var jdenticon_1 = require("jdenticon"); | ||
exports.getProfilePicturePDA = getProfilePicturePDA; | ||
function getImageUrlFromMetadataUrl(url) { | ||
function getMetadataFromUrl(url) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var response, data, err_1; | ||
var response, err_1; | ||
return __generator(this, function (_a) { | ||
@@ -106,5 +106,3 @@ switch (_a.label) { | ||
return [4 /*yield*/, response.json()]; | ||
case 2: | ||
data = _a.sent(); | ||
return [2 /*return*/, data.image || null]; | ||
case 2: return [2 /*return*/, (_a.sent()) || null]; | ||
case 3: | ||
@@ -118,3 +116,3 @@ err_1 = _a.sent(); | ||
} | ||
exports.getImageUrlFromMetadataUrl = getImageUrlFromMetadataUrl; | ||
exports.getMetadataFromUrl = getMetadataFromUrl; | ||
function generateUrl(url, ownerPublicKey, config) { | ||
@@ -128,4 +126,4 @@ if (url) { | ||
} | ||
return 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9ImJvcmRlcnMtYW5kLWJhY2tncm91bmRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PGc+PHBhdGggZD0ibTAgMGgxMHYxaC05djE0aDF2MWgtMnoiLz48cGF0aCBkPSJtMTAgNGg0djNoLTF2LTJoLTN6Ii8+PHBhdGggZD0ibTE0IDE2di02aC0xdjVoLTV2MXoiLz48L2c+PHBhdGggZD0ibTEyIDE0di0zaC0xdjJoLTJ2MXoiIGZpbGw9IiNiY2JjYzMiLz48cGF0aCBkPSJtMTAgMGgxdjFoMXYxaDF2MWgxdjFoLTF2LTFoLTF2LTFoLTF2MmgtMXoiIGZpbGw9IiM4Nzg3ODciLz48cGF0aCBkPSJtMiAyaDh2M2gydjJoLTR2NWgtMnYxaC0ydjFoLTJ6IiBmaWxsPSIjYmNiY2MzIi8+PC9nPjxnIGlkPSJsZWZ0ZXllIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PHBhdGggZD0ibTUgM2gydjNoLTN2LTJoMXYxaDF2LTFoLTF6IiBmaWxsPSIjMDA4OTFlIi8+PHBhdGggZD0ibTUgNGgxdjFoLTF6IiBmaWxsPSIjMDBmMjQ4Ii8+PHBhdGggZD0ibTcgNGgxdjJoLTF2MWgtMnYtMWgyeiIvPjwvZz48ZyBpZD0icmlnaHRleWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEpIj48cGF0aCBkPSJtOCA3aDN2MmgtMXYtMWgtMXYxaDF2MWgtMnoiIGZpbGw9IiMwMDY0ZmIiLz48cGF0aCBkPSJtOSA4aDF2MWgtMXoiIGZpbGw9IiMwMGZiZmUiLz48cGF0aCBkPSJtMTAgOWgxdjFoLTF6IiBmaWxsPSIjMDAzMjkzIi8+PHBhdGggZD0ibTExIDdoMXYyaC0xeiIvPjxwYXRoIGQ9Im04IDEwaDJ2MWgtMnoiLz48L2c+PGcgaWQ9Im1vdXRoIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PHBhdGggZD0ibTMgOGgxdjFoMXYxaDF2MWgxdjFoLTF2LTFoLTF2LTFoLTF2LTFoLTF6IiBmaWxsPSIjZmYzOTAwIi8+PHBhdGggZD0ibTMgOWgxdjFoMXYxaDF2MWgtM3oiIGZpbGw9IiNmNzNhZTEiLz48cGF0aCBkPSJtMyAxMmgzdjFoLTN6Ii8+PC9nPjwvc3ZnPg=='; | ||
return 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9ImJvcmRlcnMtYW5kLWJhY2tncm91bmRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LDQpIj48cGF0aCBkPSJtMCAwaDEwdjFoLTl2MTRoMXYxaC0yeiIvPjxwYXRoIGQ9Im0xMCA0aDR2M2gtMXYtMmgtM3oiLz48cGF0aCBkPSJtMTQgMTZ2LTZoLTF2NWgtNXYxeiIvPjxwYXRoIGQ9Im0xMiAxNHYtM2gtMXYyaC0ydjF6IiBmaWxsPSIjYmNiY2MzIi8+PHBhdGggZD0ibTEwIDBoMXYxaDF2MWgxdjFoMXYxaC0xdi0xaC0xdi0xaC0xdjJoLTF6IiBmaWxsPSIjODc4Nzg3Ii8+PHBhdGggZD0ibTIgMmg4djNoMnYyaC00djVoLTJ2MWgtMnYxaC0yeiIgZmlsbD0iI2JjYmNjMyIvPjwvZz48ZyBpZD0ibGVmdGV5ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSw0KSI+PHBhdGggZD0ibTUgM2gydjNoLTN2LTJoMXYxaDF2LTFoLTF6IiBmaWxsPSIjMDA4OTFlIi8+PHBhdGggZD0ibTUgNGgxdjFoLTF6IiBmaWxsPSIjMDBmMjQ4Ii8+PHBhdGggZD0ibTcgNGgxdjJoLTF2MWgtMnYtMWgyeiIvPjwvZz48ZyBpZD0icmlnaHRleWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUsNCkiPjxwYXRoIGQ9Im04IDdoM3YyaC0xdi0xaC0xdjFoMXYxaC0yeiIgZmlsbD0iIzAwNjRmYiIvPjxwYXRoIGQ9Im05IDhoMXYxaC0xeiIgZmlsbD0iIzAwZmJmZSIvPjxwYXRoIGQ9Im0xMCA5aDF2MWgtMXoiIGZpbGw9IiMwMDMyOTMiLz48cGF0aCBkPSJtMTEgN2gxdjJoLTF6Ii8+PHBhdGggZD0ibTggMTBoMnYxaC0yeiIvPjwvZz48ZyBpZD0ibW91dGgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUsNCkiPjxwYXRoIGQ9Im0zIDhoMXYxaDF2MWgxdjFoMXYxaC0xdi0xaC0xdi0xaC0xdi0xaC0xeiIgZmlsbD0iI2ZmMzkwMCIvPjxwYXRoIGQ9Im0zIDloMXYxaDF2MWgxdjFoLTN6IiBmaWxsPSIjZjczYWUxIi8+PHBhdGggZD0ibTMgMTJoM3YxaC0zeiIvPjwvZz48L3N2Zz4='; | ||
} | ||
exports.generateUrl = generateUrl; |
@@ -5,3 +5,3 @@ import { Connection, PublicKey, Transaction } from '@solana/web3.js'; | ||
export declare function getProfilePicture(connection: Connection, publicKey: PublicKey, config?: ProfilePictureConfig): Promise<ProfilePicture>; | ||
export declare function createSetProfilePrictureTransaction(ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction>; | ||
export declare function createSetProfilePictureTransaction(ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction>; | ||
export declare function createRemoveProfilePictureTransaction(ownerPublicKey: PublicKey): Promise<Transaction>; |
@@ -39,20 +39,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
import { Metadata } from '@metaplex-foundation/mpl-token-metadata'; | ||
import { decodeProfilePictureAccount, generateUrl, getImageUrlFromMetadataUrl, getProfilePicturePDA } from './utils'; | ||
import { decodeProfilePictureAccount, generateUrl, getMetadataFromUrl, getProfilePicturePDA } from './utils'; | ||
import { Buffer } from 'buffer'; | ||
export var PROFILE_PICTURE_PROGRAM = new PublicKey('6UQLqKYWqErHqdsX6WtANQsMmvfKtWNuSSRj6ybg5in3'); | ||
export function getProfilePicture(connection, publicKey, config) { | ||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; | ||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; | ||
if (config === void 0) { config = { fallback: true }; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var profilePictureAccountPublicKey, profilePictureAccount, profilePictureData, tokenAccount, nftMetadataAccountPublicKey, nftMetadata, imageUrl, err_1; | ||
return __generator(this, function (_r) { | ||
switch (_r.label) { | ||
var profilePictureAccountPublicKey, profilePictureAccount, profilePictureData, tokenAccount, nftMetadataAccountPublicKey, nftMetadata, metadata, err_1; | ||
return __generator(this, function (_t) { | ||
switch (_t.label) { | ||
case 0: | ||
_r.trys.push([0, 7, , 8]); | ||
_t.trys.push([0, 7, , 8]); | ||
return [4 /*yield*/, getProfilePicturePDA(publicKey)]; | ||
case 1: | ||
profilePictureAccountPublicKey = _r.sent(); | ||
profilePictureAccountPublicKey = _t.sent(); | ||
return [4 /*yield*/, connection.getAccountInfo(profilePictureAccountPublicKey)]; | ||
case 2: | ||
profilePictureAccount = _r.sent(); | ||
profilePictureAccount = _t.sent(); | ||
if (!profilePictureAccount) { | ||
@@ -64,3 +64,3 @@ throw new Error('PDA is empty'); | ||
case 3: | ||
tokenAccount = _r.sent(); | ||
tokenAccount = _t.sent(); | ||
if (!tokenAccount) { | ||
@@ -83,18 +83,25 @@ throw new Error('No token account'); | ||
case 4: | ||
nftMetadataAccountPublicKey = _r.sent(); | ||
nftMetadataAccountPublicKey = _t.sent(); | ||
return [4 /*yield*/, Metadata.load(connection, nftMetadataAccountPublicKey)]; | ||
case 5: | ||
nftMetadata = _r.sent(); | ||
nftMetadata = _t.sent(); | ||
if (!((_q = (_p = nftMetadata === null || nftMetadata === void 0 ? void 0 : nftMetadata.data) === null || _p === void 0 ? void 0 : _p.data) === null || _q === void 0 ? void 0 : _q.uri)) { | ||
throw new Error('No metadata URL'); | ||
} | ||
return [4 /*yield*/, getImageUrlFromMetadataUrl(nftMetadata.data.data.uri)]; | ||
return [4 /*yield*/, getMetadataFromUrl(nftMetadata.data.data.uri)]; | ||
case 6: | ||
imageUrl = _r.sent(); | ||
metadata = _t.sent(); | ||
if (!metadata) { | ||
throw new Error('No metadata'); | ||
} | ||
return [2 /*return*/, { | ||
isAvailable: true, | ||
url: generateUrl(imageUrl, publicKey, config) | ||
url: generateUrl((metadata === null || metadata === void 0 ? void 0 : metadata.image) || null, publicKey, config), | ||
name: ((_s = (_r = nftMetadata === null || nftMetadata === void 0 ? void 0 : nftMetadata.data) === null || _r === void 0 ? void 0 : _r.data) === null || _s === void 0 ? void 0 : _s.name) || '', | ||
metadata: metadata, | ||
tokenAccount: profilePictureData.nftTokenAccount, | ||
mintAccount: profilePictureData.nftMint | ||
}]; | ||
case 7: | ||
err_1 = _r.sent(); | ||
err_1 = _t.sent(); | ||
return [2 /*return*/, { | ||
@@ -109,3 +116,3 @@ isAvailable: false, | ||
} | ||
export function createSetProfilePrictureTransaction(ownerPublicKey, mintPublicKey, tokenAccountPublicKey) { | ||
export function createSetProfilePictureTransaction(ownerPublicKey, mintPublicKey, tokenAccountPublicKey) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
@@ -112,0 +119,0 @@ var profilePictureAccountPublicKey, nftMetadataAccountPublicKey, transaction; |
@@ -5,2 +5,6 @@ import { PublicKey } from '@solana/web3.js'; | ||
url: string; | ||
name?: string; | ||
metadata?: any; | ||
tokenAccount?: PublicKey; | ||
mintAccount?: PublicKey; | ||
} | ||
@@ -7,0 +11,0 @@ export interface ProfilePictureConfig { |
@@ -5,3 +5,3 @@ import { AccountInfo, PublicKey } from '@solana/web3.js'; | ||
export declare function getProfilePicturePDA(publicKey: PublicKey): Promise<PublicKey>; | ||
export declare function getImageUrlFromMetadataUrl(url: string): Promise<string | null>; | ||
export declare function getMetadataFromUrl(url: string): Promise<any>; | ||
export declare function generateUrl(url: string | null, ownerPublicKey: PublicKey, config: ProfilePictureConfig): string; |
@@ -82,5 +82,5 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
} | ||
export function getImageUrlFromMetadataUrl(url) { | ||
export function getMetadataFromUrl(url) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var response, data, err_1; | ||
var response, err_1; | ||
return __generator(this, function (_a) { | ||
@@ -97,5 +97,3 @@ switch (_a.label) { | ||
return [4 /*yield*/, response.json()]; | ||
case 2: | ||
data = _a.sent(); | ||
return [2 /*return*/, data.image || null]; | ||
case 2: return [2 /*return*/, (_a.sent()) || null]; | ||
case 3: | ||
@@ -117,3 +115,3 @@ err_1 = _a.sent(); | ||
} | ||
return 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9ImJvcmRlcnMtYW5kLWJhY2tncm91bmRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PGc+PHBhdGggZD0ibTAgMGgxMHYxaC05djE0aDF2MWgtMnoiLz48cGF0aCBkPSJtMTAgNGg0djNoLTF2LTJoLTN6Ii8+PHBhdGggZD0ibTE0IDE2di02aC0xdjVoLTV2MXoiLz48L2c+PHBhdGggZD0ibTEyIDE0di0zaC0xdjJoLTJ2MXoiIGZpbGw9IiNiY2JjYzMiLz48cGF0aCBkPSJtMTAgMGgxdjFoMXYxaDF2MWgxdjFoLTF2LTFoLTF2LTFoLTF2MmgtMXoiIGZpbGw9IiM4Nzg3ODciLz48cGF0aCBkPSJtMiAyaDh2M2gydjJoLTR2NWgtMnYxaC0ydjFoLTJ6IiBmaWxsPSIjYmNiY2MzIi8+PC9nPjxnIGlkPSJsZWZ0ZXllIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PHBhdGggZD0ibTUgM2gydjNoLTN2LTJoMXYxaDF2LTFoLTF6IiBmaWxsPSIjMDA4OTFlIi8+PHBhdGggZD0ibTUgNGgxdjFoLTF6IiBmaWxsPSIjMDBmMjQ4Ii8+PHBhdGggZD0ibTcgNGgxdjJoLTF2MWgtMnYtMWgyeiIvPjwvZz48ZyBpZD0icmlnaHRleWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEpIj48cGF0aCBkPSJtOCA3aDN2MmgtMXYtMWgtMXYxaDF2MWgtMnoiIGZpbGw9IiMwMDY0ZmIiLz48cGF0aCBkPSJtOSA4aDF2MWgtMXoiIGZpbGw9IiMwMGZiZmUiLz48cGF0aCBkPSJtMTAgOWgxdjFoLTF6IiBmaWxsPSIjMDAzMjkzIi8+PHBhdGggZD0ibTExIDdoMXYyaC0xeiIvPjxwYXRoIGQ9Im04IDEwaDJ2MWgtMnoiLz48L2c+PGcgaWQ9Im1vdXRoIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PHBhdGggZD0ibTMgOGgxdjFoMXYxaDF2MWgxdjFoLTF2LTFoLTF2LTFoLTF2LTFoLTF6IiBmaWxsPSIjZmYzOTAwIi8+PHBhdGggZD0ibTMgOWgxdjFoMXYxaDF2MWgtM3oiIGZpbGw9IiNmNzNhZTEiLz48cGF0aCBkPSJtMyAxMmgzdjFoLTN6Ii8+PC9nPjwvc3ZnPg=='; | ||
return 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9ImJvcmRlcnMtYW5kLWJhY2tncm91bmRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LDQpIj48cGF0aCBkPSJtMCAwaDEwdjFoLTl2MTRoMXYxaC0yeiIvPjxwYXRoIGQ9Im0xMCA0aDR2M2gtMXYtMmgtM3oiLz48cGF0aCBkPSJtMTQgMTZ2LTZoLTF2NWgtNXYxeiIvPjxwYXRoIGQ9Im0xMiAxNHYtM2gtMXYyaC0ydjF6IiBmaWxsPSIjYmNiY2MzIi8+PHBhdGggZD0ibTEwIDBoMXYxaDF2MWgxdjFoMXYxaC0xdi0xaC0xdi0xaC0xdjJoLTF6IiBmaWxsPSIjODc4Nzg3Ii8+PHBhdGggZD0ibTIgMmg4djNoMnYyaC00djVoLTJ2MWgtMnYxaC0yeiIgZmlsbD0iI2JjYmNjMyIvPjwvZz48ZyBpZD0ibGVmdGV5ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSw0KSI+PHBhdGggZD0ibTUgM2gydjNoLTN2LTJoMXYxaDF2LTFoLTF6IiBmaWxsPSIjMDA4OTFlIi8+PHBhdGggZD0ibTUgNGgxdjFoLTF6IiBmaWxsPSIjMDBmMjQ4Ii8+PHBhdGggZD0ibTcgNGgxdjJoLTF2MWgtMnYtMWgyeiIvPjwvZz48ZyBpZD0icmlnaHRleWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUsNCkiPjxwYXRoIGQ9Im04IDdoM3YyaC0xdi0xaC0xdjFoMXYxaC0yeiIgZmlsbD0iIzAwNjRmYiIvPjxwYXRoIGQ9Im05IDhoMXYxaC0xeiIgZmlsbD0iIzAwZmJmZSIvPjxwYXRoIGQ9Im0xMCA5aDF2MWgtMXoiIGZpbGw9IiMwMDMyOTMiLz48cGF0aCBkPSJtMTEgN2gxdjJoLTF6Ii8+PHBhdGggZD0ibTggMTBoMnYxaC0yeiIvPjwvZz48ZyBpZD0ibW91dGgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUsNCkiPjxwYXRoIGQ9Im0zIDhoMXYxaDF2MWgxdjFoMXYxaC0xdi0xaC0xdi0xaC0xdi0xaC0xeiIgZmlsbD0iI2ZmMzkwMCIvPjxwYXRoIGQ9Im0zIDloMXYxaDF2MWgxdjFoLTN6IiBmaWxsPSIjZjczYWUxIi8+PHBhdGggZD0ibTMgMTJoM3YxaC0zeiIvPjwvZz48L3N2Zz4='; | ||
} |
{ | ||
"name": "@solflare-wallet/pfp", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "", | ||
@@ -22,7 +22,3 @@ "author": "Solflare Developers <developers@solflare.com>", | ||
], | ||
"peerDependencies": { | ||
"@solana/web3.js": "^1.31.0" | ||
}, | ||
"devDependencies": { | ||
"@solana/web3.js": "^1.31.0", | ||
"npm-run-all": "^4.1.5", | ||
@@ -34,2 +30,3 @@ "typescript": "^4.5.4" | ||
"@project-serum/borsh": "^0.2.3", | ||
"@solana/web3.js": "^1.31.0", | ||
"btoa": "^1.2.1", | ||
@@ -36,0 +33,0 @@ "buffer": "^6.0.3", |
@@ -37,3 +37,3 @@ # @solflare-wallet/pfp | ||
```javascript | ||
function createSetProfilePrictureTransaction (ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction> | ||
function createSetProfilePictureTransaction (ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction> | ||
``` | ||
@@ -40,0 +40,0 @@ |
@@ -10,3 +10,3 @@ import { | ||
import { Metadata } from '@metaplex-foundation/mpl-token-metadata'; | ||
import { decodeProfilePictureAccount, generateUrl, getImageUrlFromMetadataUrl, getProfilePicturePDA } from './utils'; | ||
import { decodeProfilePictureAccount, generateUrl, getMetadataFromUrl, getProfilePicturePDA } from './utils'; | ||
import { ProfilePicture, ProfilePictureConfig } from './types'; | ||
@@ -58,7 +58,15 @@ import { Buffer } from 'buffer'; | ||
const imageUrl = await getImageUrlFromMetadataUrl(nftMetadata.data.data.uri); | ||
const metadata = await getMetadataFromUrl(nftMetadata.data.data.uri); | ||
if (!metadata) { | ||
throw new Error('No metadata'); | ||
} | ||
return { | ||
isAvailable: true, | ||
url: generateUrl(imageUrl, publicKey, config) | ||
url: generateUrl(metadata?.image || null, publicKey, config), | ||
name: nftMetadata?.data?.data?.name || '', | ||
metadata, | ||
tokenAccount: profilePictureData.nftTokenAccount, | ||
mintAccount: profilePictureData.nftMint | ||
}; | ||
@@ -73,3 +81,3 @@ } catch (err) { | ||
export async function createSetProfilePrictureTransaction (ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction> { | ||
export async function createSetProfilePictureTransaction (ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction> { | ||
const profilePictureAccountPublicKey = await getProfilePicturePDA(ownerPublicKey); | ||
@@ -76,0 +84,0 @@ |
@@ -6,2 +6,6 @@ import { PublicKey } from '@solana/web3.js'; | ||
url: string; | ||
name?: string; | ||
metadata?: any; | ||
tokenAccount?: PublicKey; | ||
mintAccount?: PublicKey; | ||
} | ||
@@ -8,0 +12,0 @@ |
@@ -28,3 +28,3 @@ import { AccountInfo, PublicKey } from '@solana/web3.js'; | ||
export async function getImageUrlFromMetadataUrl (url: string): Promise<string | null> { | ||
export async function getMetadataFromUrl (url: string) { | ||
try { | ||
@@ -37,5 +37,3 @@ const response = await fetch(url); | ||
const data = await response.json(); | ||
return data.image || null; | ||
return await response.json() || null; | ||
} catch (err) { | ||
@@ -56,3 +54,3 @@ return null; | ||
return 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9ImJvcmRlcnMtYW5kLWJhY2tncm91bmRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PGc+PHBhdGggZD0ibTAgMGgxMHYxaC05djE0aDF2MWgtMnoiLz48cGF0aCBkPSJtMTAgNGg0djNoLTF2LTJoLTN6Ii8+PHBhdGggZD0ibTE0IDE2di02aC0xdjVoLTV2MXoiLz48L2c+PHBhdGggZD0ibTEyIDE0di0zaC0xdjJoLTJ2MXoiIGZpbGw9IiNiY2JjYzMiLz48cGF0aCBkPSJtMTAgMGgxdjFoMXYxaDF2MWgxdjFoLTF2LTFoLTF2LTFoLTF2MmgtMXoiIGZpbGw9IiM4Nzg3ODciLz48cGF0aCBkPSJtMiAyaDh2M2gydjJoLTR2NWgtMnYxaC0ydjFoLTJ6IiBmaWxsPSIjYmNiY2MzIi8+PC9nPjxnIGlkPSJsZWZ0ZXllIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PHBhdGggZD0ibTUgM2gydjNoLTN2LTJoMXYxaDF2LTFoLTF6IiBmaWxsPSIjMDA4OTFlIi8+PHBhdGggZD0ibTUgNGgxdjFoLTF6IiBmaWxsPSIjMDBmMjQ4Ii8+PHBhdGggZD0ibTcgNGgxdjJoLTF2MWgtMnYtMWgyeiIvPjwvZz48ZyBpZD0icmlnaHRleWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEpIj48cGF0aCBkPSJtOCA3aDN2MmgtMXYtMWgtMXYxaDF2MWgtMnoiIGZpbGw9IiMwMDY0ZmIiLz48cGF0aCBkPSJtOSA4aDF2MWgtMXoiIGZpbGw9IiMwMGZiZmUiLz48cGF0aCBkPSJtMTAgOWgxdjFoLTF6IiBmaWxsPSIjMDAzMjkzIi8+PHBhdGggZD0ibTExIDdoMXYyaC0xeiIvPjxwYXRoIGQ9Im04IDEwaDJ2MWgtMnoiLz48L2c+PGcgaWQ9Im1vdXRoIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxKSI+PHBhdGggZD0ibTMgOGgxdjFoMXYxaDF2MWgxdjFoLTF2LTFoLTF2LTFoLTF2LTFoLTF6IiBmaWxsPSIjZmYzOTAwIi8+PHBhdGggZD0ibTMgOWgxdjFoMXYxaDF2MWgtM3oiIGZpbGw9IiNmNzNhZTEiLz48cGF0aCBkPSJtMyAxMmgzdjFoLTN6Ii8+PC9nPjwvc3ZnPg=='; | ||
return 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9ImJvcmRlcnMtYW5kLWJhY2tncm91bmRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LDQpIj48cGF0aCBkPSJtMCAwaDEwdjFoLTl2MTRoMXYxaC0yeiIvPjxwYXRoIGQ9Im0xMCA0aDR2M2gtMXYtMmgtM3oiLz48cGF0aCBkPSJtMTQgMTZ2LTZoLTF2NWgtNXYxeiIvPjxwYXRoIGQ9Im0xMiAxNHYtM2gtMXYyaC0ydjF6IiBmaWxsPSIjYmNiY2MzIi8+PHBhdGggZD0ibTEwIDBoMXYxaDF2MWgxdjFoMXYxaC0xdi0xaC0xdi0xaC0xdjJoLTF6IiBmaWxsPSIjODc4Nzg3Ii8+PHBhdGggZD0ibTIgMmg4djNoMnYyaC00djVoLTJ2MWgtMnYxaC0yeiIgZmlsbD0iI2JjYmNjMyIvPjwvZz48ZyBpZD0ibGVmdGV5ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSw0KSI+PHBhdGggZD0ibTUgM2gydjNoLTN2LTJoMXYxaDF2LTFoLTF6IiBmaWxsPSIjMDA4OTFlIi8+PHBhdGggZD0ibTUgNGgxdjFoLTF6IiBmaWxsPSIjMDBmMjQ4Ii8+PHBhdGggZD0ibTcgNGgxdjJoLTF2MWgtMnYtMWgyeiIvPjwvZz48ZyBpZD0icmlnaHRleWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUsNCkiPjxwYXRoIGQ9Im04IDdoM3YyaC0xdi0xaC0xdjFoMXYxaC0yeiIgZmlsbD0iIzAwNjRmYiIvPjxwYXRoIGQ9Im05IDhoMXYxaC0xeiIgZmlsbD0iIzAwZmJmZSIvPjxwYXRoIGQ9Im0xMCA5aDF2MWgtMXoiIGZpbGw9IiMwMDMyOTMiLz48cGF0aCBkPSJtMTEgN2gxdjJoLTF6Ii8+PHBhdGggZD0ibTggMTBoMnYxaC0yeiIvPjwvZz48ZyBpZD0ibW91dGgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUsNCkiPjxwYXRoIGQ9Im0zIDhoMXYxaDF2MWgxdjFoMXYxaC0xdi0xaC0xdi0xaC0xdi0xaC0xeiIgZmlsbD0iI2ZmMzkwMCIvPjxwYXRoIGQ9Im0zIDloMXYxaDF2MWgxdjFoLTN6IiBmaWxsPSIjZjczYWUxIi8+PHBhdGggZD0ibTMgMTJoM3YxaC0zeiIvPjwvZz48L3N2Zz4='; | ||
} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
51366
2
868
2
+ Added@solana/web3.js@^1.31.0