trustwallet-assets/script/generic/repo-structure.ts
Adam R 88f26b09d1
[Internal] Retrieve trading pairs from PancakeSwap (#5355)
* Retrieve trading pairs from PancakeSwap.

* Retrieve trading pairs from Uniswap.

* Add doc link

* Lint fix

* Include decimals

* Move binance tokenlist generation to BinanceAction.

* Generate smartChain tokenlist, from base and pancakeswap pairs.

* Fix array types in tokenlists.ts

* Common writeToFile method, sort.

* Type fixes

* Revert tokenlist.json to master

* Include pairs with allowlisted coins only.

* Move assetID functions to common asset.ts

* Use common assetID functions.

* Use dynamic generation time.

* Keep constant generation time; Version in tokenlist.

* Count additions

* Update tokenlist version and timestamp if needed before save.

* No counting is needed in addXxxIfNeeded() functions.

* Tokenlist timestamp: take over if previous

* Update ethereum tokenlist with pairs from Uniswap.

* Increase query limit to 400 pairs.

* iDecimals always number, add decimal fields to Eth also.

* Include only pairs with primary tokens, add pair info to primary token only.

* Update base tokenlist (BSC) to current full list, in order not to remove any coins.

* Update base tokenlist (ETH) to current full list, in order not to remove any coins.

* Move out pair checks into common code.

* Add checks for volume and txCount.

* Assets tokenlist: Adjust token names for added tokens.

* Move parameters to central config.ts

* Nicer query string, compact

* Prevent change if subgraph API fails

* Reduce max limit in Pancakeswap query, with 400 often times out.

* Stricter error handling

* Reduce code duplication.

* Minor comment

* Display number of original tokens

* Lint fix

Co-authored-by: Catenocrypt <catenocrypt@users.noreply.github.com>
2021-01-29 07:45:43 +01:00

58 lines
3.3 KiB
TypeScript

import * as path from "path";
import {
isPathExistsSync,
readDirSync
} from "./filesystem";
import * as config from "../config";
export const logoName = `logo`;
export const infoName = `info`;
export const listName = `list`
export const logoExtension = "png";
export const jsonExtension = "json";
export const logoFullName = `${logoName}.${logoExtension}`;
export const infoFullName = `${infoName}.${jsonExtension}`;
const allowList = `allowlist.${jsonExtension}`;
const denyList = `denylist.${jsonExtension}`;
const tokenList = `tokenlist.${jsonExtension}`;
const tokenListBase = `tokenlist_base.${jsonExtension}`;
export const validatorsList = `${listName}.${jsonExtension}`
export const assetFolderAllowedFiles = [logoFullName, infoFullName];
export const chainFolderAllowedFiles = [
"assets",
allowList,
denyList,
tokenList,
tokenListBase,
"validators",
infoName
]
export const chainsPath: string = path.join(process.cwd(), '/blockchains');
export const getChainPath = (chain: string): string => `${chainsPath}/${chain}`;
export const allChains = readDirSync(chainsPath);
export const getChainLogoPath = (chain: string): string => `${getChainPath(chain)}/info/${logoFullName}`;
export const getChainAssetsPath = (chain: string): string => `${getChainPath(chain)}/assets`;
export const getChainAssetPath = (chain: string, asset: string): string => `${getChainAssetsPath(chain)}/${asset}`;
export const getChainAssetLogoPath = (chain: string, asset: string): string => `${getChainAssetPath(chain, asset)}/${logoFullName}`;
export const getChainAssetInfoPath = (chain: string, asset: string): string => `${getChainAssetPath(chain, asset)}/${infoFullName}`;
export const getChainAllowlistPath = (chain: string): string => `${getChainPath(chain)}/${allowList}`;
export const getChainDenylistPath = (chain: string): string => `${getChainPath(chain)}/${denyList}`;
export const getChainTokenlistPath = (chain: string): string => `${getChainPath(chain)}/${tokenList}`;
export const getChainTokenlistBasePath = (chain: string): string => `${getChainPath(chain)}/${tokenListBase}`;
export const pricingFolderPath = path.join(process.cwd(), '/pricing');
export const getChainValidatorsPath = (chain: string): string => `${getChainPath(chain)}/validators`;
export const getChainValidatorsListPath = (chain: string): string => `${getChainValidatorsPath(chain)}/${validatorsList}`;
export const getChainValidatorsAssetsPath = (chain: string): string => `${getChainValidatorsPath(chain)}/assets`
export const getChainValidatorAssetLogoPath = (chain: string, asset: string): string => `${getChainValidatorsAssetsPath(chain)}/${asset}/${logoFullName}`
export const isChainAssetInfoExistSync = (chain: string, address: string): boolean => isPathExistsSync(getChainAssetInfoPath(chain, address));
export const getChainFolderFilesList = (chain: string): string[] => readDirSync(getChainPath(chain))
export const getChainAssetsList = (chain: string): string[] => readDirSync(getChainAssetsPath(chain));
export const getChainAssetFilesList = (chain: string, address: string): string[] => readDirSync(getChainAssetPath(chain, address));
export const getChainValidatorsAssets = (chain: string): string[] => readDirSync(getChainValidatorsAssetsPath(chain));
export const rootDirAllowedFiles = config.foldersRootdirAllowedFiles;