42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import fs from "fs";
|
|
import path from "path";
|
|
import { getAddress } from "@ethersproject/address";
|
|
import pancakeswapDefault from "./tokens/pancakeswap-default.json";
|
|
import pancakeswapExtended from "./tokens/pancakeswap-extended.json";
|
|
import pancakeswapTop100 from "./tokens/pancakeswap-top-100.json";
|
|
import pancakeswapTop15 from "./tokens/pancakeswap-top-15.json";
|
|
|
|
const lists = {
|
|
"pancakeswap-default": pancakeswapDefault,
|
|
"pancakeswap-extended": pancakeswapExtended,
|
|
"pancakeswap-top-100": pancakeswapTop100,
|
|
"pancakeswap-top-15": pancakeswapTop15
|
|
};
|
|
|
|
const checksumAddresses = (listName: string): void => {
|
|
let badChecksumCount = 0;
|
|
const listToChecksum = lists[listName];
|
|
const updatedList = listToChecksum.reduce((tokenList, token) => {
|
|
const checksummedAddress = getAddress(token.address);
|
|
if (checksummedAddress !== token.address) {
|
|
badChecksumCount += 1;
|
|
const updatedToken = { ...token, address: checksummedAddress };
|
|
return [...tokenList, updatedToken];
|
|
}
|
|
return [...tokenList, token];
|
|
}, []);
|
|
|
|
if (badChecksumCount > 0) {
|
|
console.info(`Found and fixed ${badChecksumCount} non-checksummed addreses`);
|
|
const tokenListPath = `${path.resolve()}/src/tokens/${listName}.json`;
|
|
console.info("Saving updated list to ", tokenListPath);
|
|
const stringifiedList = JSON.stringify(updatedList, null, 2);
|
|
fs.writeFileSync(tokenListPath, stringifiedList);
|
|
console.info("Checksumming done!");
|
|
} else {
|
|
console.info("All addresses are already checksummed");
|
|
}
|
|
};
|
|
|
|
export default checksumAddresses;
|