From 9274260027d36c77b007ff896e6590e0086809e6 Mon Sep 17 00:00:00 2001 From: Varderes Barsegyan Date: Mon, 8 Apr 2024 09:55:09 -0500 Subject: [PATCH] feat: sync upstream new tokens --- .prettierrc | 3 +- internal/main.ts | 70 ++++---- src/index.ts | 373 +++++++++++++++++++++------------------- src/tokens/axo.ts | 17 ++ src/tokens/boon.ts | 61 +++++++ src/tokens/btn.ts | 16 ++ src/tokens/catsky.ts | 19 ++ src/tokens/cbtc.ts | 12 +- src/tokens/charly.ts | 27 +++ src/tokens/lwh.ts | 25 +++ src/tokens/shards.ts | 24 +++ src/tokens/tool.ts | 19 ++ src/tokens/wojakblue.ts | 25 +++ src/tokens/xray.ts | 20 +++ src/types.ts | 16 +- test/index.test.ts | 54 +++--- 16 files changed, 530 insertions(+), 251 deletions(-) create mode 100644 src/tokens/axo.ts create mode 100644 src/tokens/boon.ts create mode 100644 src/tokens/btn.ts create mode 100644 src/tokens/catsky.ts create mode 100644 src/tokens/charly.ts create mode 100644 src/tokens/lwh.ts create mode 100644 src/tokens/shards.ts create mode 100644 src/tokens/tool.ts create mode 100644 src/tokens/wojakblue.ts create mode 100644 src/tokens/xray.ts diff --git a/.prettierrc b/.prettierrc index 7197da8c..81295802 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { "singleQuote": false, - "trailingComma": "es5" + "trailingComma": "es5", + "tabWidth": 4 } diff --git a/internal/main.ts b/internal/main.ts index 1d759624..b90bc1dc 100644 --- a/internal/main.ts +++ b/internal/main.ts @@ -6,43 +6,45 @@ import logfmt from "logfmt"; import { SupplyFetcherResponse, supplyFetchers } from "../src"; async function main(): Promise { - const marketCapData: Record = {}; - for (const [key, supplyFetcher] of Object.entries(supplyFetchers)) { - try { - await backOff( - async () => { - const startTime = new Date(); - const data = await supplyFetcher(); - marketCapData[key] = data; - const endTime = new Date(); - console.info( - logfmt.stringify({ - time: endTime.toISOString(), - level: "INFO", - message: "done fetch market cap for asset", - duration: `${(endTime.getTime() - startTime.getTime()) / 1000}s`, - asset: key, - total_supply: data.total, - circulating_supply: data.circulating, - }) - ); - }, - { - retry(err, attempt): boolean { - console.error( - `fail to run fetcher for ${key}, retry ${attempt}...`, - err + const marketCapData: Record = {}; + for (const [key, supplyFetcher] of Object.entries(supplyFetchers)) { + try { + await backOff( + async () => { + const startTime = new Date(); + const data = await supplyFetcher(); + marketCapData[key] = data; + const endTime = new Date(); + console.info( + logfmt.stringify({ + time: endTime.toISOString(), + level: "INFO", + message: "done fetch market cap for asset", + duration: `${ + (endTime.getTime() - startTime.getTime()) / 1000 + }s`, + asset: key, + total_supply: data.total, + circulating_supply: data.circulating, + }) + ); + }, + { + retry(err, attempt): boolean { + console.error( + `fail to run fetcher for ${key}, retry ${attempt}...`, + err + ); + return true; + }, + numOfAttempts: 3, + } ); - return true; - }, - numOfAttempts: 3, + } catch (err) { + console.error(`fail to run fetcher for ${key}`, err); } - ); - } catch (err) { - console.error(`fail to run fetcher for ${key}`, err); } - } - fs.writeFileSync("/tmp/market-cap.json", JSON.stringify(marketCapData)); + fs.writeFileSync("/tmp/market-cap.json", JSON.stringify(marketCapData)); } void main(); diff --git a/src/index.ts b/src/index.ts index cce3e744..e8f4ecaa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -105,179 +105,202 @@ import { SupplyFetcher } from "./types"; export * from "./types"; export const supplyFetchers: Record = { - "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e": minFetcher, - "577f0b1342f8f8f4aed3388b80a8535812950c7a892495c0ecdf0f1e0014df10464c4454": - fldtFetcher, - f43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc53541474958: agixFetcher, - edfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e993444794e5458: ntxFetcher, - "8a1cfae21368b8bebbbed9800fec304e95cce39a2a57dc35e2e3ebaa4d494c4b": - milkFetcher, - da8c30857834c6ae7203935b89278c532b3995245295456f993e1d244c51: liqwidFetcher, - "6ac8ef33b510ec004fe11585f7c5a9f0c07f0c23428ab4f29c1d7d104d454c44": - meldFetcher, - "9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145": - sundaeFetcher, - "8fef2d34078659493ce161a6c7fba4b56afefa8535296a5743f6958741414441": - aadaFetcher, - "75fcc276057db5fc48eae0e11453c773c8a54604c3086bf9d95ac1b743485259": - chryFetcher, - db30c7905f598ed0154de14f970de0f61f0cb3943ed82c891968480a434c4150: clapFetcher, - "5612bee388219c1b76fd527ed0fa5aa1d28652838bcab4ee4ee63197446973636f696e": - discoFetcher, - b34b3ea80060ace9427bda98690a73d33840e27aaa8d6edb7f0c757a634e455441: - cnetaFetcher, - "4190b2941d9be04acc69c39739bd5acc66d60ccab480d8e20bc87e3763425443": - cbtcFetcher, - "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e74": - mintFetcher, - "95a427e384527065f2f8946f5e86320d0117839a5e98ea2c0b55fb0048554e54": - huntFetcher, - "1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1e776f726c646d6f62696c65746f6b656e": - wmtFetcher, - c88bbd1848db5ea665b1fffbefba86e8dcd723b5085348e8a8d2260f44414e41: danaFetcher, - "884892bcdc360bcef87d6b3f806e7f9cd5ac30d999d49970e7a903ae5041564941": - paviaFetcher, - b6a7467ea1deb012808ef4e87b5ff371e85f7142d7b356a40d9b42a0436f726e75636f70696173205b76696120436861696e506f72742e696f5d: - copiFetcher, - "804f5544c1962a40546827cab750a88404dc7108c0f588b72964754f56594649": - vyfiFetcher, - a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59: - hoskyFetcher, - "815418a1b078a259e678ecccc9d7eac7648d10b88f6f75ce2db8a25a4672616374696f6e2045737461746520546f6b656e": - fetFetcher, - dda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fb0014df1047454e53: - gensFetcher, - fbae99b8679369079a7f6f0da14a2cf1c2d6bfd3afdf3a96a64ab67a0014df1047454e5358: - gensxFetcher, - "10a49b996e2402269af553a8a96fb8eb90d79e9eca79e2b4223057b64745524f": - geroFetcher, - "8e51398904a5d3fc129fbf4f1589701de23c7824d5c90fdb9490e15a434841524c4933": - c3Fetcher, - "078eafce5cd7edafdf63900edef2c1ea759e77f30ca81d6bbdeec92479756d6d69": - yummiFetcher, - "482fb00dc32186a4c587dca2df3c7cf2bc455332ab581d51967306e14d4f4149": - moaiFetcher, - "5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147": iagFetcher, - "533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459": - indyFetcher, - "6c8642400e8437f737eb86df0fc8a8437c760f48592b1ba8f5767e81456d706f7761": - empFetcher, - "9abf0afd2f236a19f2842d502d0450cbcd9c79f123a9708f96fd9b96454e4353": - encsFetcher, - "5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc928434894e4d4b52": - nmkrFetcher, - "52489ea87bbceaf6375cc22f74c19382a3d5da3f8b9b15d2537044b95052535052": - prsprFetcher, - e5602dec7811774ee560859292c20c3694a19d5daf72ccd94fc1a18d414743: agcFetcher, - ce5b9e0f8a88255b65f2e4d065c6e716e9fa9a8a86dfb86423dd1ac044494e47: dingFetcher, - "8f52f6a88acf6127bc4758a16b6047afc4da7887feae121ec217b75a534e4f57": - snowFetcher, - "32bc130691066340caf48ef53d52c684a0e497ffc935d2fd6741efe0574f5a": wozFetcher, - "25f0fc240e91bd95dcdaebd2ba7713fc5168ac77234a3d79449fc20c534f4349455459": - societyFetcher, - df1d850c46d6c9d12cbf6181c35db9225a91b77c8a646b7f636f8ae40014df104e494e4a415a: - ninjazFetcher, - "38ad9dc3aec6a2f38e220142b9aa6ade63ebe71f65e7cc2b7d8a8535434c4159": - clayFetcher, - "8cfd6893f5f6c1cc954cec1a0a1460841b74da6e7803820dde62bb78524a56": rjvFetcher, - "8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344": - djedFetcher, - "8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd615368656e4d6963726f555344": - shenFetcher, - ee0633e757fdd1423220f43688c74678abde1cead7ce265ba8a24fcd43424c50: cblpFetcher, - "682fe60c9918842b3323c43b5144bc3d52a23bd2fb81345560d73f634e45574d": - newmFetcher, - bb4cfbe0f6be60b80f90f815e8353b93431de4df785d75350b9d214a48455242: herbFetcher, - "279c909f348e533da5808898f87f9a14bb2c3dfbbacccd631d927a3f534e454b": - snekFetcher, - "64c3ebd40ed377989aa3069a2936e07c6ce82df46688c473d921520664676166": - dgafFetcher, - afc910d7a306d20c12903979d4935ae4307241d03245743548e767834153484942: - ashibFetcher, - f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069425443: ibtcFetcher, - f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069455448: iethFetcher, - f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069555344: iusdFetcher, - "8daefa391220bd0d8d007f3748d870f7f3c106040314c8515ccc35a5464c4143": - flacFetcher, - "2b28c81dbba6d67e4b5a997c6be1212cba9d60d33f82444ab8b1f21842414e4b": - bankFetcher, - "2adf188218a66847024664f4f63939577627a56c090f679fe366c5ee535441424c45": - stableFetcher, - c0ee29a85b13209423b10447d3c2e6a50641a15c57770e27cb9d507357696e67526964657273: - wrtFetcher, - "8654e8b350e298c80d2451beb5ed80fc9eee9f38ce6b039fb8706bc34c4f4253544552": - lobsterFetcher, - "4fde92c2f6dbcfa2879b44f7453872b31394cfb2f70f1d4c411169ac427562626c65": - bubbleFetcher, - "09f5f55fcad17503e6b7acc81de7c80f84b76e76d17085f0e32f1ce241574f4f": - awooFetcher, - "43b07d4037f0d75ee10f9863097463fc02ff3c0b8b705ae61d9c75bf4d796e746820546f6b656e": - mntFetcher, - "1ddcb9c9de95361565392c5bdff64767492d61a96166cb16094e54be4f5054": optFetcher, - e52964af4fffdb54504859875b1827b60ba679074996156461143dc14f5054494d: - optimFetcher, - b316f8f668aca7359ecc6073475c0c8106239bf87e05a3a1bd5697647856594649: - xvyfiFetcher, - "2d92af60ee429bce238d3fd9f2531b45457301d74dad1bcf3f9d1dca564e4d": vnmFetcher, - "21abdf54f427b378fe9ba07419eff6e8e8fe0c5932e1fee2d3853b9350455045424c5545": - pepeblueFetcher, - "7914fae20eb2903ed6fd5021a415c1bd2626b64a2d86a304cb40ff5e4c494649": - lifiFetcher, - "0d90046ad35546156aaf790525133f7fc713ca2790e397784b85f5c85554494c": - utilFetcher, - a3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e516f7263666178746f6b656e: - factFetcher, - "8f9c32977d2bacb87836b64f7811e99734c6368373958da20172afba4d5949454c44": - myieldFetcher, - "9e975c76508686eb2d57985dbaea7e3843767a31b4dcf4e99e5646834d41595a": - mayzFetcher, - "681b5d0383ac3b457e1bcc453223c90ccef26b234328f45fa10fd2764a5047": jpgFetcher, - b9168f05e657b6946fede254e383586cf7e7a2573d5a0fa12b3ef6ac494450: idpFetcher, - b0af30edf2c7f11465853821137e0a6ebc395cab71ee39c24127ffb44e465443: nftcFetcher, - "1a71dc14baa0b4fcfb34464adc6656d0e562571e2ac1bc990c9ce5f6574f4c46": - wolfFetcher, - bf524874448cbf52be3a26133b0a0edf5eb65c09ffed383b881ad3274353574150: - cswapFetcher, - "52162581184a457fad70470161179c5766f00237d4b67e0f1df1b4e65452544c": - trtlFetcher, - "09f2d4e4a5c3662f4c1e6a7d9600e9605279dbdcedb22d4507cb6e75535046": spfFetcher, - b3bd74dd43f83815519e387bdffd1cb9be411df8f2774f48e0fd3669534e455045: - snepeFetcher, - "51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34424f4f4b": - bookFetcher, - "5c1c91a65bedac56f245b8184b5820ced3d2f1540e521dc1060fa6834a454c4c59": - jellyFetcher, - "961f2cac0bb1967d74691af179350c1e1062c7298d1f7be1e4696e312444455250": - derpFetcher, - "2d587111358801114f04df83dc0015de0a740b462b75cce5170fc935434749": cgiFetcher, - "20cd68533b47565f3c61efb39c30fdace9963bfa4c0060b613448e3c50524f584945": - proxiesFetcher, - f6ac48c64aa7af16434d9f84e014d11fba38525b436acc338ff20b0d4d7463: mtcFetcher, - "03c2eb4f942703fa965df42ba8ac57e27c5e86802d058da63f4d888b4c4343": lccFetcher, - f6696363e9196289ef4f2b4bf34bc8acca5352cdc7509647afe6888f54454459: tedyFetcher, - "94cbb4fcbcaa2975779f273b263eb3b5f24a9951e446d6dc4c13586452455655": - revuFetcher, - "3744d5e39333c384505214958c4ed66591a052778512e56caf420f624e4542554c41": - nebulaFetcher, - bbd0ec94cf9ccc1407b3dbc66bfbbff82ea49718ae4e3dceb817125f24574f524b: - workFetcher, - ace2ea0fe142a3687acf86f55bcded860a920864163ee0d3dda8b60252414b4552: - rakerFetcher, - a00fdf4fb9ab6c8c2bd1533a2f14855edf12aed5ecbf96d4b5f5b9394334: c4Fetcher, - c27600f3aff3d94043464a33786429b78e6ab9df5e1d23b774acb34c434e4354: cnctFetcher, - "5ec2e9813fa385d9333d18186d8257d1b3ebea97bdec2dad74026d8d50554743484950": - pugchipFetcher, - c7dcfa416c127f630b263c7e0fe0564430cfa9c56bba43e1a37c6915474f4b4559: - gokeyFetcher, - a4da8764a57e66a0085b5bfcde96c89b798d92ee83a75f59237e375b46495245: fireFetcher, - b166a1047a8cd275bf0a50201ece3d4f0b4da300094ffcc668a6f4084b49545550: - kitupFetcher, - caff93803e51c7b97bf79146790bfa3feb0d0b856ef16113b391b9975649504552: - viperFetcher, - "285b65ae63d4fad36321384ec61edfd5187b8194fff89b5abe9876da414e47454c53": - angelsFetcher, - afbe91c0b44b3040e360057bf8354ead8c49c4979ae6ab7c4fbdc9eb4d494c4b7632: - milkv2Fetcher, - "04b95368393c821f180deee8229fbd941baaf9bd748ebcdbf7adbb147273455247": - rsergFetcher, + "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e": + minFetcher, + "577f0b1342f8f8f4aed3388b80a8535812950c7a892495c0ecdf0f1e0014df10464c4454": + fldtFetcher, + f43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc53541474958: + agixFetcher, + edfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e993444794e5458: ntxFetcher, + "8a1cfae21368b8bebbbed9800fec304e95cce39a2a57dc35e2e3ebaa4d494c4b": + milkFetcher, + da8c30857834c6ae7203935b89278c532b3995245295456f993e1d244c51: liqwidFetcher, + "6ac8ef33b510ec004fe11585f7c5a9f0c07f0c23428ab4f29c1d7d104d454c44": + meldFetcher, + "9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145": + sundaeFetcher, + "8fef2d34078659493ce161a6c7fba4b56afefa8535296a5743f6958741414441": + aadaFetcher, + "75fcc276057db5fc48eae0e11453c773c8a54604c3086bf9d95ac1b743485259": + chryFetcher, + db30c7905f598ed0154de14f970de0f61f0cb3943ed82c891968480a434c4150: + clapFetcher, + "5612bee388219c1b76fd527ed0fa5aa1d28652838bcab4ee4ee63197446973636f696e": + discoFetcher, + b34b3ea80060ace9427bda98690a73d33840e27aaa8d6edb7f0c757a634e455441: + cnetaFetcher, + "4190b2941d9be04acc69c39739bd5acc66d60ccab480d8e20bc87e3763425443": + cbtcFetcher, + "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e74": + mintFetcher, + "95a427e384527065f2f8946f5e86320d0117839a5e98ea2c0b55fb0048554e54": + huntFetcher, + "1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1e776f726c646d6f62696c65746f6b656e": + wmtFetcher, + c88bbd1848db5ea665b1fffbefba86e8dcd723b5085348e8a8d2260f44414e41: + danaFetcher, + "884892bcdc360bcef87d6b3f806e7f9cd5ac30d999d49970e7a903ae5041564941": + paviaFetcher, + b6a7467ea1deb012808ef4e87b5ff371e85f7142d7b356a40d9b42a0436f726e75636f70696173205b76696120436861696e506f72742e696f5d: + copiFetcher, + "804f5544c1962a40546827cab750a88404dc7108c0f588b72964754f56594649": + vyfiFetcher, + a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59: + hoskyFetcher, + "815418a1b078a259e678ecccc9d7eac7648d10b88f6f75ce2db8a25a4672616374696f6e2045737461746520546f6b656e": + fetFetcher, + dda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fb0014df1047454e53: + gensFetcher, + fbae99b8679369079a7f6f0da14a2cf1c2d6bfd3afdf3a96a64ab67a0014df1047454e5358: + gensxFetcher, + "10a49b996e2402269af553a8a96fb8eb90d79e9eca79e2b4223057b64745524f": + geroFetcher, + "8e51398904a5d3fc129fbf4f1589701de23c7824d5c90fdb9490e15a434841524c4933": + c3Fetcher, + "078eafce5cd7edafdf63900edef2c1ea759e77f30ca81d6bbdeec92479756d6d69": + yummiFetcher, + "482fb00dc32186a4c587dca2df3c7cf2bc455332ab581d51967306e14d4f4149": + moaiFetcher, + "5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147": + iagFetcher, + "533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459": + indyFetcher, + "6c8642400e8437f737eb86df0fc8a8437c760f48592b1ba8f5767e81456d706f7761": + empFetcher, + "9abf0afd2f236a19f2842d502d0450cbcd9c79f123a9708f96fd9b96454e4353": + encsFetcher, + "5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc928434894e4d4b52": + nmkrFetcher, + "52489ea87bbceaf6375cc22f74c19382a3d5da3f8b9b15d2537044b95052535052": + prsprFetcher, + e5602dec7811774ee560859292c20c3694a19d5daf72ccd94fc1a18d414743: agcFetcher, + ce5b9e0f8a88255b65f2e4d065c6e716e9fa9a8a86dfb86423dd1ac044494e47: + dingFetcher, + "8f52f6a88acf6127bc4758a16b6047afc4da7887feae121ec217b75a534e4f57": + snowFetcher, + "32bc130691066340caf48ef53d52c684a0e497ffc935d2fd6741efe0574f5a": + wozFetcher, + "25f0fc240e91bd95dcdaebd2ba7713fc5168ac77234a3d79449fc20c534f4349455459": + societyFetcher, + df1d850c46d6c9d12cbf6181c35db9225a91b77c8a646b7f636f8ae40014df104e494e4a415a: + ninjazFetcher, + "38ad9dc3aec6a2f38e220142b9aa6ade63ebe71f65e7cc2b7d8a8535434c4159": + clayFetcher, + "8cfd6893f5f6c1cc954cec1a0a1460841b74da6e7803820dde62bb78524a56": + rjvFetcher, + "8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344": + djedFetcher, + "8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd615368656e4d6963726f555344": + shenFetcher, + ee0633e757fdd1423220f43688c74678abde1cead7ce265ba8a24fcd43424c50: + cblpFetcher, + "682fe60c9918842b3323c43b5144bc3d52a23bd2fb81345560d73f634e45574d": + newmFetcher, + bb4cfbe0f6be60b80f90f815e8353b93431de4df785d75350b9d214a48455242: + herbFetcher, + "279c909f348e533da5808898f87f9a14bb2c3dfbbacccd631d927a3f534e454b": + snekFetcher, + "64c3ebd40ed377989aa3069a2936e07c6ce82df46688c473d921520664676166": + dgafFetcher, + afc910d7a306d20c12903979d4935ae4307241d03245743548e767834153484942: + ashibFetcher, + f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069425443: + ibtcFetcher, + f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069455448: + iethFetcher, + f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069555344: + iusdFetcher, + "8daefa391220bd0d8d007f3748d870f7f3c106040314c8515ccc35a5464c4143": + flacFetcher, + "2b28c81dbba6d67e4b5a997c6be1212cba9d60d33f82444ab8b1f21842414e4b": + bankFetcher, + "2adf188218a66847024664f4f63939577627a56c090f679fe366c5ee535441424c45": + stableFetcher, + c0ee29a85b13209423b10447d3c2e6a50641a15c57770e27cb9d507357696e67526964657273: + wrtFetcher, + "8654e8b350e298c80d2451beb5ed80fc9eee9f38ce6b039fb8706bc34c4f4253544552": + lobsterFetcher, + "4fde92c2f6dbcfa2879b44f7453872b31394cfb2f70f1d4c411169ac427562626c65": + bubbleFetcher, + "09f5f55fcad17503e6b7acc81de7c80f84b76e76d17085f0e32f1ce241574f4f": + awooFetcher, + "43b07d4037f0d75ee10f9863097463fc02ff3c0b8b705ae61d9c75bf4d796e746820546f6b656e": + mntFetcher, + "1ddcb9c9de95361565392c5bdff64767492d61a96166cb16094e54be4f5054": + optFetcher, + e52964af4fffdb54504859875b1827b60ba679074996156461143dc14f5054494d: + optimFetcher, + b316f8f668aca7359ecc6073475c0c8106239bf87e05a3a1bd5697647856594649: + xvyfiFetcher, + "2d92af60ee429bce238d3fd9f2531b45457301d74dad1bcf3f9d1dca564e4d": + vnmFetcher, + "21abdf54f427b378fe9ba07419eff6e8e8fe0c5932e1fee2d3853b9350455045424c5545": + pepeblueFetcher, + "7914fae20eb2903ed6fd5021a415c1bd2626b64a2d86a304cb40ff5e4c494649": + lifiFetcher, + "0d90046ad35546156aaf790525133f7fc713ca2790e397784b85f5c85554494c": + utilFetcher, + a3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e516f7263666178746f6b656e: + factFetcher, + "8f9c32977d2bacb87836b64f7811e99734c6368373958da20172afba4d5949454c44": + myieldFetcher, + "9e975c76508686eb2d57985dbaea7e3843767a31b4dcf4e99e5646834d41595a": + mayzFetcher, + "681b5d0383ac3b457e1bcc453223c90ccef26b234328f45fa10fd2764a5047": + jpgFetcher, + b9168f05e657b6946fede254e383586cf7e7a2573d5a0fa12b3ef6ac494450: idpFetcher, + b0af30edf2c7f11465853821137e0a6ebc395cab71ee39c24127ffb44e465443: + nftcFetcher, + "1a71dc14baa0b4fcfb34464adc6656d0e562571e2ac1bc990c9ce5f6574f4c46": + wolfFetcher, + bf524874448cbf52be3a26133b0a0edf5eb65c09ffed383b881ad3274353574150: + cswapFetcher, + "52162581184a457fad70470161179c5766f00237d4b67e0f1df1b4e65452544c": + trtlFetcher, + "09f2d4e4a5c3662f4c1e6a7d9600e9605279dbdcedb22d4507cb6e75535046": + spfFetcher, + b3bd74dd43f83815519e387bdffd1cb9be411df8f2774f48e0fd3669534e455045: + snepeFetcher, + "51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34424f4f4b": + bookFetcher, + "5c1c91a65bedac56f245b8184b5820ced3d2f1540e521dc1060fa6834a454c4c59": + jellyFetcher, + "961f2cac0bb1967d74691af179350c1e1062c7298d1f7be1e4696e312444455250": + derpFetcher, + "2d587111358801114f04df83dc0015de0a740b462b75cce5170fc935434749": + cgiFetcher, + "20cd68533b47565f3c61efb39c30fdace9963bfa4c0060b613448e3c50524f584945": + proxiesFetcher, + f6ac48c64aa7af16434d9f84e014d11fba38525b436acc338ff20b0d4d7463: mtcFetcher, + "03c2eb4f942703fa965df42ba8ac57e27c5e86802d058da63f4d888b4c4343": + lccFetcher, + f6696363e9196289ef4f2b4bf34bc8acca5352cdc7509647afe6888f54454459: + tedyFetcher, + "94cbb4fcbcaa2975779f273b263eb3b5f24a9951e446d6dc4c13586452455655": + revuFetcher, + "3744d5e39333c384505214958c4ed66591a052778512e56caf420f624e4542554c41": + nebulaFetcher, + bbd0ec94cf9ccc1407b3dbc66bfbbff82ea49718ae4e3dceb817125f24574f524b: + workFetcher, + ace2ea0fe142a3687acf86f55bcded860a920864163ee0d3dda8b60252414b4552: + rakerFetcher, + a00fdf4fb9ab6c8c2bd1533a2f14855edf12aed5ecbf96d4b5f5b9394334: c4Fetcher, + c27600f3aff3d94043464a33786429b78e6ab9df5e1d23b774acb34c434e4354: + cnctFetcher, + "5ec2e9813fa385d9333d18186d8257d1b3ebea97bdec2dad74026d8d50554743484950": + pugchipFetcher, + c7dcfa416c127f630b263c7e0fe0564430cfa9c56bba43e1a37c6915474f4b4559: + gokeyFetcher, + a4da8764a57e66a0085b5bfcde96c89b798d92ee83a75f59237e375b46495245: + fireFetcher, + b166a1047a8cd275bf0a50201ece3d4f0b4da300094ffcc668a6f4084b49545550: + kitupFetcher, + caff93803e51c7b97bf79146790bfa3feb0d0b856ef16113b391b9975649504552: + viperFetcher, + "285b65ae63d4fad36321384ec61edfd5187b8194fff89b5abe9876da414e47454c53": + angelsFetcher, + afbe91c0b44b3040e360057bf8354ead8c49c4979ae6ab7c4fbdc9eb4d494c4b7632: + milkv2Fetcher, + "04b95368393c821f180deee8229fbd941baaf9bd748ebcdbf7adbb147273455247": + rsergFetcher, }; diff --git a/src/tokens/axo.ts b/src/tokens/axo.ts new file mode 100644 index 00000000..3d1b7785 --- /dev/null +++ b/src/tokens/axo.ts @@ -0,0 +1,17 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const circulating = await fetcher + .axios("https://api.axo.trade/axo/circulating") + .then((res) => res.data.toString()); + const total = await fetcher + .axios("https://api.axo.trade/axo/total") + .then((res) => res.data.toString()); + return { + circulating, + total, + }; +}; + +export default fetcher; diff --git a/src/tokens/boon.ts b/src/tokens/boon.ts new file mode 100644 index 00000000..d8ac9e3c --- /dev/null +++ b/src/tokens/boon.ts @@ -0,0 +1,61 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const BOON = + "1cd92100fc05fce7416b3857a079780164eeaf8f5613f4b814f24e09426f6f6e436f696e"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 77_777_777_777; + + const donationRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1qy6up60du0r2rufjwsrf457jyssm9xnsysmgaqq934pf9gyv7h2adx0trglt75d4m0uaccftfnekt54fm9lxldfantjqyrejes", + ]); + + const farmingRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1q8wvyukwhvykzv3tc039wyj7udygg983daz673lemq7d6h9r3vsw8l62684wlvtzrsxm27hmhl7y9ulsruaxtvmuclcqw544l5", + ]); + + const liquidityPoolRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1qxulpxynvfzxak6t6s3483f4wzq45vqssy50s378wg4g7dlq5udt9geu2937fcpfej9m4tk72y7v8ajqka9uayrp9sdq6gkwcy", + ]); + + const marketingRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1qyn3efzf9hmxx7ep3d4mmuu7mkgthpgxfj5t5t7ws86yj6cdr6e7utkyhethe4rylepdlf7983dwwd3ge6zpcervvdasjys8tg", + ]); + + const presaleRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1q9cej5hv7ayne342eee3yef3zlkaxaglx2upy0r0505xmlshuewv0v8ud8ncya6uarc7vekx0260tyfrgtr272032lrqj4g88j", + ]); + + const reserveRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1qx9z7ldyrsqxx5alw8n4cpsy2q464fud62wuwqudrk5k0k7apqpv3s6z9h8we5svv6d806p9ed6yzjtt07kq6m6t6c8qzy9zcd", + ]); + + const giveawayRaw = await fetcher.getAmountInAddresses(BOON, [ + "addr1qx62z87cxhxvcdmkd8qraw2fswva740msqgp3nw9peu62pgz0jyzekf0xrewx2u8rfakpfty7hdp5vttsmgmg0lzhfaspua7vx", + ]); + + const donation = Number(donationRaw); + const farming = Number(farmingRaw); + const liquidityPool = Number(liquidityPoolRaw); + const marketing = Number(marketingRaw); + const presale = Number(presaleRaw); + const reserve = Number(reserveRaw); + const giveaway = Number(giveawayRaw); + + return { + circulating: ( + total - + donation - + farming - + liquidityPool - + marketing - + presale - + reserve - + giveaway + ).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/btn.ts b/src/tokens/btn.ts new file mode 100644 index 00000000..0f5cd31b --- /dev/null +++ b/src/tokens/btn.ts @@ -0,0 +1,16 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const BTN = "016be5325fd988fea98ad422fcfd53e5352cacfced5c106a932a35a442544e"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 25e6; + const circulating = await fetcher.getSupplyFromAssetMetadata(BTN); + const circulatingWithDecimals = Number(circulating) / 1e6; + return { + circulating: circulatingWithDecimals.toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/catsky.ts b/src/tokens/catsky.ts new file mode 100644 index 00000000..73524c2d --- /dev/null +++ b/src/tokens/catsky.ts @@ -0,0 +1,19 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const CATSKY = + "9b426921a21f54600711da0be1a12b026703a9bd8eb9848d08c9d921434154534b59"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 999_999_999_997; + const treasuryRaw = await fetcher.getAmountInAddresses(CATSKY, [ + "stake1uxln0cv8ne7zskyhsmuna5rx5xw9undrvx4nqxvrmcvuweskz2mje", // treasury $catbank.catsky + ]); + const treasury = Number(treasuryRaw); + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/cbtc.ts b/src/tokens/cbtc.ts index 73f82c3a..2a381c0e 100644 --- a/src/tokens/cbtc.ts +++ b/src/tokens/cbtc.ts @@ -4,12 +4,12 @@ import { defaultFetcher } from "../utils"; const CBTC = "4190b2941d9be04acc69c39739bd5acc66d60ccab480d8e20bc87e3763425443"; const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { - const total = await fetcher.getSupplyFromAssetMetadata(CBTC); - const totalWithDecimals = Number(total) / 1e8; - return { - circulating: totalWithDecimals.toString(), - total: totalWithDecimals.toString(), - }; + const total = await fetcher.getSupplyFromAssetMetadata(CBTC); + const totalWithDecimals = Number(total) / 1e8; + return { + circulating: totalWithDecimals.toString(), + total: totalWithDecimals.toString(), + }; }; export default fetcher; diff --git a/src/tokens/charly.ts b/src/tokens/charly.ts new file mode 100644 index 00000000..0a8908d4 --- /dev/null +++ b/src/tokens/charly.ts @@ -0,0 +1,27 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const CHARLY = + "89267e9a35153a419e1b8ffa23e511ac39ea4e3b00452e9d500f2982436176616c6965724b696e67436861726c6573"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 777_777_777_777; + + const treasuryRaw = await fetcher.getAmountInAddresses(CHARLY, [ + "addr1vxgts9tzm59h72uetsg48m3tj4z6h0gqz3m7pdm0gapwxxslqglt9", // Cardano_Lands + "addr1v9gs0trlcmyty7jakcewjs3h00a7xrzyd5wnyfrpeg4wjts0ugx63", // Charly_bowl + "stake1uxkxtajzhlmnlglr5dhrdfx36ry597wvr2k5utlm6eu8susrny2uj", // $king-foundation + "stake1ux3q72uz5ztmyvuz7qwgv8qw3akpr2pnh4ed3wzudddt33qh67tzj", // $charly-treasury + "stake1u94eatrzsm59pnlncqtx0jds2hyv4u46pdjjgw9avus5qhq5p08fc", // $charlyfounders + "stake1u94vpc75fv6mq4vcupew454mf97wygg54shprlnwy8f5r5spul7ju", // $charlytoken + ]); + + const treasury = Number(treasuryRaw); + + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/lwh.ts b/src/tokens/lwh.ts new file mode 100644 index 00000000..55851328 --- /dev/null +++ b/src/tokens/lwh.ts @@ -0,0 +1,25 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const LWH = + "defe216460d594211631fcfbd354f361c04645d6a0cfeead3d6f62836c65767679776966686174"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = Number(100_000_000); + const treasuryRaw = await fetcher.getAmountInAddresses(LWH, [ + "stake1u9dz7rdqnx4rthc3rn9nt9mtvzve8tv6ek809c8z9ld89lspvnq2g", + "stake1u9u5ema2qm8wthrkf7gc8423sg24ey0ucpw6cknhymt2uysclzez4", + "stake1ux04u6ru8dduhsscza3309f2a86dxlzw6mx30va665d489gm2enja", + "stake1uyn63uqt3aqjlq7gvtqh33zdvl4u8g9dj62q9svly24l50ck7p4kh", + "addr1w8qmxkacjdffxah0l3qg8hq2pmvs58q8lcy42zy9kda2ylc6dy5r4", + "stake1u997nsgekunxnauepkhz57prz86clz7tm0fwgclnv3pupzg095yak", + "stake1u96vnsecj2dp6zeae8ywptp4u3fghkes8vrmwwpfwl47jysv8ksma", + ]); + const treasury = Number(treasuryRaw); + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/shards.ts b/src/tokens/shards.ts new file mode 100644 index 00000000..fe06e361 --- /dev/null +++ b/src/tokens/shards.ts @@ -0,0 +1,24 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const TOKEN = + "ea153b5d4864af15a1079a94a0e2486d6376fa28aafad272d15b243a0014df10536861726473"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 5_000_000; + const treasuryRaw = await fetcher.getAmountInAddresses(TOKEN, [ + "addr1w95dsllnucgg53lj8qhdcgjnw40hlsctkeh8udt7uhud2tgjfyagq", // DripDropz Instant Rewards + "stake17yavsn3jqqxm29tcgrjpj8e960tf00hkkvzaqxv6tt8ud7s4kw5vn", // GameFi Incentives Reserves + "addr1wx4ua0djv8c4fvkl8t08z0duf3lw8fl4qujvevwx4m9c7ygma04rr", // Blockchain-wide Distribution (Cardano) & SHARDS/ADA LP Rewards + "stake17yqphvez52gkae448avqr5smpztvlrwmwsvfhgmp84laxes3zfyq0", // Private Investors + "stake178yzhvwqsw56qnz3lj4heu08m7tvl9z95zk4e2tpj4y8wkc7wmpzz", // FPS Treasury + "stake1u8yt8czlj5svzc4jvr3w230tsjklctw4tvhz43k5recvfvqwnvelg", // FPS Team Wallet + ]); + const treasury = Number(treasuryRaw) / 1e6; + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/tool.ts b/src/tokens/tool.ts new file mode 100644 index 00000000..5d242d1c --- /dev/null +++ b/src/tokens/tool.ts @@ -0,0 +1,19 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const TOOL = + "ac015c38917f306a84748c2d646bed90bdd64421c592163e60702d735453555255"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 1_000_000_000; + const treasuryRaw = await fetcher.getAmountInAddresses(TOOL, [ + "addr1vxndsnat5pgddcaqcddu3epun8gvh42yt4z6ekcr8p58wagnl5ek7", // TOOL TREASURY + ]); + const treasury = Number(treasuryRaw); + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/wojakblue.ts b/src/tokens/wojakblue.ts new file mode 100644 index 00000000..1699f033 --- /dev/null +++ b/src/tokens/wojakblue.ts @@ -0,0 +1,25 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const WOJAKBLUE = + "a1b284d7218dd63772c67ca26ab73721a196b404929cddef595f9967574f4a414b424c5545"; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 69420000000; + const treasuryRaw = [ + "addr1q90m9sd7kwdt2vusmzlwprwycsys7ayjxtyagju89n3az27y9mpw78dw8u729jy27kwmz4w623qxt89nxjva06ujkwuqtpsejr", + ]; + const burnRaw = [ + "addr1w8qmxkacjdffxah0l3qg8hq2pmvs58q8lcy42zy9kda2ylc6dy5r4", + ]; + const treasury = Number( + await fetcher.getAmountInAddresses(WOJAKBLUE, treasuryRaw) + ); + const burn = Number(await fetcher.getAmountInAddresses(WOJAKBLUE, burnRaw)); + return { + circulating: (total - treasury - burn).toString(), + total: (total - burn).toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/xray.ts b/src/tokens/xray.ts new file mode 100644 index 00000000..674b6cac --- /dev/null +++ b/src/tokens/xray.ts @@ -0,0 +1,20 @@ +import { SupplyFetcher } from "../types"; +import { defaultFetcher } from "../utils"; + +const XRAY = "86abe45be4d8fb2e8f28e8047d17d0ba5592f2a6c8c452fc88c2c14358524159"; +const TREASURY_ADDRESSES = [ + "addr1qyc98ysmvxunqslu3y5t9gpt2mm8dp3puylpq7n5n908jldw8w6w5nmvw86ullauxldxdjsfauyrattxw6yevxp72nnsq3lt0u", // stage2 fund +]; + +const fetcher: SupplyFetcher = async (fetcher = defaultFetcher) => { + const total = 324_922_240; + const treasury = + Number(await fetcher.getAmountInAddresses(XRAY, TREASURY_ADDRESSES)) / + 1e6; + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/types.ts b/src/types.ts index e6de6301..e6e686ee 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,21 +1,21 @@ import { BlockchainIndexer } from "./utils"; export type FetcherOptions = { - /** - * Fetch timeout in milliseconds. Default to 20s - */ - timeout?: number; + /** + * Fetch timeout in milliseconds. Default to 20s + */ + timeout?: number; }; export const defaultFetcherOptions: FetcherOptions = { - timeout: 20_000, + timeout: 20_000, }; export type SupplyFetcherResponse = { - total?: string; - circulating?: string; + total?: string; + circulating?: string; }; export type SupplyFetcher = ( - fetcher?: BlockchainIndexer + fetcher?: BlockchainIndexer ) => Promise; diff --git a/test/index.test.ts b/test/index.test.ts index 78209cd3..395e6a83 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -1,35 +1,35 @@ import { SupplyFetcher, supplyFetchers } from "../src"; const delay = (ms: number): Promise => - new Promise((resolve) => setTimeout(resolve, ms)); + new Promise((resolve) => setTimeout(resolve, ms)); describe("supply fetchers", () => { - const fetchers: [string, SupplyFetcher][] = []; + const fetchers: [string, SupplyFetcher][] = []; - if (process.env["ONLY_TEST"]) { - const token = process.env["ONLY_TEST"]; - const fetcher = supplyFetchers[token]; - expect(fetcher).toBeDefined(); - fetchers.push([token, fetcher]); - } else { - fetchers.push(...Object.entries(supplyFetchers)); - } + if (process.env["ONLY_TEST"]) { + const token = process.env["ONLY_TEST"]; + const fetcher = supplyFetchers[token]; + expect(fetcher).toBeDefined(); + fetchers.push([token, fetcher]); + } else { + fetchers.push(...Object.entries(supplyFetchers)); + } - for (const [token, fetcher] of fetchers) { - test(`test fetcher for token ${token}`, async () => { - const resp = await fetcher(); - if (resp.circulating !== undefined) { - expect(typeof resp.circulating).toBe("string"); - } - if (resp.total !== undefined) { - expect(typeof resp.total).toBe("string"); - } - if (process.env["ONLY_TEST"]) { - // eslint-disable-next-line no-console - console.debug(resp); - } - // Delay for 110ms to avoid hitting the rate limit of 10 calls/second - await delay(110); - }); - } + for (const [token, fetcher] of fetchers) { + test(`test fetcher for token ${token}`, async () => { + const resp = await fetcher(); + if (resp.circulating !== undefined) { + expect(typeof resp.circulating).toBe("string"); + } + if (resp.total !== undefined) { + expect(typeof resp.total).toBe("string"); + } + if (process.env["ONLY_TEST"]) { + // eslint-disable-next-line no-console + console.debug(resp); + } + // Delay for 110ms to avoid hitting the rate limit of 10 calls/second + await delay(110); + }); + } });