@fanitrade/fani-solana-tokenlist
Version:
Fanitrade Token Registry
113 lines • 9.28 kB
JavaScript
import { Octokit } from '@octokit/rest';
import axios from 'axios';
export const sendToSolanaTokenList = async (githubAccessToken, tokenDetails) => {
const { chainId, address, symbol, name, decimals, logoURI, extensions } = tokenDetails;
const octokit = new Octokit({
auth: githubAccessToken
});
const getURL = await (await axios.get('https://api.github.com/repos/FaniTrade-Investment-L-L-C/fani-token-list/contents/src/tokens')).data[0].git_url;
const config = {
method: 'get',
url: getURL,
};
const response = await axios(config);
const cnt = response.data.content;
let decoded = Buffer.from(cnt, 'base64').toString();
const strAsUnicode = (str) => {
return str
.split('')
.map((s) => {
return `\\u${s.charCodeAt(0).toString(16).padStart(4, '0')}`;
})
.join('');
};
decoded = JSON.parse(decoded);
const newToken = {
chainId,
address,
symbol,
name,
decimals: +decimals,
logoURI,
tags: ['currency'],
extensions: extensions ? extensions : {}
};
const handledNewToken = JSON.parse(JSON.stringify(newToken), (_key, value) => (value === null || value === '' ? undefined : value));
decoded.tokens.push(handledNewToken);
const branchName = `${name.replace(' ', '-')}`;
const pushFiles = async () => {
try {
// git fetch upstream
await octokit.rest.repos.mergeUpstream({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list',
branch: 'main'
});
//git pull
const commits = await octokit.repos.listCommits({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list'
});
const latestCommitSHA = commits.data[0].sha;
// git checkout -b name
await octokit.git.createRef({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list',
ref: `refs/heads/${name.replaceAll(' ', '-')}`,
sha: latestCommitSHA
});
// git add .
const { data: { sha: treeSHA } } = await octokit.git.createTree({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list',
tree: [
{
path: 'src/tokens/solana.tokenlist.json',
mode: '100644',
type: 'blob',
content: JSON.stringify(decoded, null, 2)
.replaceAll('&', strAsUnicode('&'))
.replaceAll('>', strAsUnicode('>'))
.replaceAll('<', strAsUnicode('<'))
}
],
base_tree: latestCommitSHA
});
// git commit -m
const { data: { sha: newCommitSHA } } = await octokit.git.createCommit({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list',
tree: treeSHA,
message: `Create ${name} Token`,
parents: [latestCommitSHA]
});
// git push origin HEAD
await octokit.rest.git.updateRef({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list',
ref: `heads/${branchName}`,
sha: newCommitSHA
});
await octokit.rest.pulls.create({
owner: 'FaniTrade-Investment-L-L-C',
repo: 'fani-token-list',
title: `Create ${name} Token`,
head: `FaniTrade-Investment-L-L-C:${branchName}`,
base: 'main'
});
return ({
status: "Created",
message: "Token Created",
});
}
catch (err) {
return ({
status: "Failed",
message: "Error Creating Token",
detail: "Reference Already exist or invalid input"
});
}
};
return await pushFiles();
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZFRva2VuVG9Tb2xhbmFUb2tlbkxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc2VuZFRva2VuVG9Tb2xhbmFUb2tlbkxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQTRDLE1BQU0sT0FBTyxDQUFDO0FBSWpFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFDeEMsaUJBQXlCLEVBQ3pCLFlBQWlCLEVBQ2pCLEVBQUU7SUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRyxNQUFNLEVBQUcsSUFBSSxFQUFHLFFBQVEsRUFBRyxPQUFPLEVBQUcsVUFBVSxFQUFDLEdBQUcsWUFBWSxDQUFDO0lBRTVGLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDO1FBQzFCLElBQUksRUFBRSxpQkFBaUI7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUNuQixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQ2IsNkZBQTZGLENBQzlGLENBQ0YsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBRWxCLE1BQU0sTUFBTSxHQUF1QjtRQUNqQyxNQUFNLEVBQUUsS0FBSztRQUNiLEdBQUcsRUFBRSxNQUFNO0tBQ1osQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFtQixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNoQyxJQUFJLE9BQU8sR0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQ2hDLE9BQU8sR0FB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