diff --git a/package.json b/package.json index 44b9366..10e895c 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "vitest": "^1.3.1" }, "dependencies": { + "@bgd-labs/rpc-env": "^2.3.0", "@supercharge/promise-pool": "^3.1.1", "bs58": "^5.0.0", "gray-matter": "^4.0.3", @@ -62,4 +63,4 @@ "peerDependencies": { "viem": "^2.0.3" } -} \ No newline at end of file +} diff --git a/src/browser.ts b/src/browser.ts index d148173..44a360f 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -1,7 +1,5 @@ export * from './foundry/storage-diff'; -export * from './rpc/chainIds'; export * from './rpc/helpers'; -export * from './rpc/clients'; export * from './ipfs/hash'; export * from './ipfs/upload'; export * from './ipfs/parseIpfs'; diff --git a/src/ipfs/upload.spec.ts b/src/ipfs/upload.spec.ts index d15993d..7e3efe3 100644 --- a/src/ipfs/upload.spec.ts +++ b/src/ipfs/upload.spec.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it } from 'vitest'; import { uploadToQuicknode } from './upload'; describe('upload', () => { diff --git a/src/rpc/chainIds.ts b/src/rpc/chainIds.ts deleted file mode 100644 index d02f52e..0000000 --- a/src/rpc/chainIds.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - mainnet, - arbitrumGoerli, - arbitrumSepolia, - avalancheFuji, - bsc, - fantomTestnet, - harmonyOne, - optimismGoerli, - optimismSepolia, - polygonMumbai, - polygonZkEvm, - scrollSepolia, - baseSepolia, - goerli, - polygon, - avalanche, - arbitrum, - fantom, - optimism, - sepolia, - scroll, - metis, - base, - gnosis, - celo, - zkSync, - linea -} from 'viem/chains'; - -export const ChainId = { - mainnet: mainnet.id, - goerli: goerli.id, - polygon: polygon.id, - mumbai: polygonMumbai.id, - avalanche: avalanche.id, - fuji: avalancheFuji.id, - arbitrum_one: arbitrum.id, - arbitrum_goerli: arbitrumGoerli.id, - arbitrum_sepolia: arbitrumSepolia.id, - fantom: fantom.id, - fantom_testnet: fantomTestnet.id, - optimism: optimism.id, - optimism_sepolia: optimismSepolia.id, - optimism_goerli: optimismGoerli.id, - harmony: harmonyOne.id, - sepolia: sepolia.id, - scroll: scroll.id, - scroll_sepolia: scrollSepolia.id, - metis: metis.id, - base: base.id, - base_sepolia: baseSepolia.id, - bnb: bsc.id, - gnosis: gnosis.id, - zkEVM: polygonZkEvm.id, - celo: celo.id, - zkSync: zkSync.id, - linea: linea.id -} as const; diff --git a/src/rpc/clients.ts b/src/rpc/clients.ts deleted file mode 100644 index d019fe8..0000000 --- a/src/rpc/clients.ts +++ /dev/null @@ -1,200 +0,0 @@ -import { createClient, http } from 'viem'; -import { - mainnet, - arbitrum, - polygon, - optimism, - metis, - base, - baseSepolia, - sepolia, - goerli, - bsc, - fantom, - avalanche, - gnosis, - polygonZkEvm, - scroll, - celo, - zkSync, - linea, - avalancheFuji, - polygonMumbai, - harmonyOne, - arbitrumGoerli, - optimismGoerli, - optimismSepolia, - scrollSepolia, - fantomTestnet, - arbitrumSepolia, -} from 'viem/chains'; -import { ChainId } from './chainIds'; -import { Client } from 'viem'; - -const commonConfig = { timeout: 30_000 }; - -export const mainnetClient = createClient({ - chain: mainnet, - transport: http(process.env.RPC_MAINNET, commonConfig), -}); - -export const arbitrumClient = createClient({ - chain: arbitrum, - transport: http(process.env.RPC_ARBITRUM, commonConfig), -}); - -export const polygonClient = createClient({ - chain: polygon, - transport: http(process.env.RPC_POLYGON, commonConfig), -}); - -export const optimismClient = createClient({ - chain: optimism, - transport: http(process.env.RPC_OPTIMISM, commonConfig), -}); - -export const metisClient = createClient({ - chain: metis, - transport: http(process.env.RPC_METIS, commonConfig), -}); - -export const baseClient = createClient({ - chain: base, - transport: http(process.env.RPC_BASE, commonConfig), -}); - -export const fantomClient = createClient({ - chain: fantom, - transport: http(process.env.RPC_FANTOM, commonConfig), -}); - -export const bnbClient = createClient({ - chain: bsc, - transport: http(process.env.RPC_BNB, commonConfig), -}); - -export const avalancheClient = createClient({ - chain: avalanche, - transport: http(process.env.RPC_AVALANCHE, commonConfig), -}); - -export const gnosisClient = createClient({ - chain: gnosis, - transport: http(process.env.RPC_GNOSIS, commonConfig), -}); - -export const scrollClient = createClient({ - chain: scroll, - transport: http(process.env.RPC_SCROLL, commonConfig), -}); - -export const zkEVMClient = createClient({ - chain: polygonZkEvm, - transport: http(process.env.RPC_ZKEVM, commonConfig), -}); - -export const celoClient = createClient({ - chain: celo, - transport: http(process.env.RPC_CELO, commonConfig), -}); - -export const zkSyncClient = createClient({ - chain: zkSync, - transport: http(process.env.RPC_ZKSYNC, commonConfig), -}); - -export const lineaClient = createClient({ - chain: linea, - transport: http(process.env.RPC_LINEA, commonConfig), -}); - -export const harmonyClient = createClient({ - chain: harmonyOne, - transport: http(process.env.RPC_HARMONY, commonConfig), -}); - -// testnets -export const fujiClient = createClient({ - chain: avalancheFuji, - transport: http(process.env.RPC_FUJI, commonConfig), -}); - -export const mumbaiClient = createClient({ - chain: polygonMumbai, - transport: http(process.env.RPC_MUMBAI, commonConfig), -}); - -export const sepoliaClient = createClient({ - chain: sepolia, - transport: http(process.env.RPC_SEPOLIA, commonConfig), -}); - -export const goerliClient = createClient({ - chain: goerli, - transport: http(process.env.RPC_GOERLI, commonConfig), -}); - -export const arbitrumGoerliClient = createClient({ - chain: arbitrumGoerli, - transport: http(process.env.RPC_ARBITRUM_GOERLI, commonConfig), -}); - -export const arbitrumSepoliaClient = createClient({ - chain: arbitrumSepolia, - transport: http(process.env.RPC_ARBITRUM_SEPOLIA, commonConfig), -}); - -export const optimismGoerliClient = createClient({ - chain: optimismGoerli, - transport: http(process.env.RPC_OPTIMISM_GOERLI, commonConfig), -}); - -export const optimismSepoliaClient = createClient({ - chain: optimismSepolia, - transport: http(process.env.RPC_OPTIMISM_SEPOLIA, commonConfig), -}); - -export const scrollSepoliaClient = createClient({ - chain: scrollSepolia, - transport: http(process.env.RPC_SCROLL_SEPOLIA, commonConfig), -}); - -export const fantomTestnetClient = createClient({ - chain: fantomTestnet, - transport: http(process.env.RPC_FANTOM_TESTNET, commonConfig), -}); - -export const baseSepoliaClient = createClient({ - chain: baseSepolia, - transport: http(process.env.RPC_BASE_SEPOLIA, commonConfig), -}); - -export const CHAIN_ID_CLIENT_MAP: Record = { - [ChainId.mainnet]: mainnetClient, - [ChainId.arbitrum_one]: arbitrumClient, - [ChainId.arbitrum_goerli]: arbitrumGoerliClient, - [ChainId.arbitrum_sepolia]: arbitrumSepoliaClient, - [ChainId.polygon]: polygonClient, - [ChainId.optimism]: optimismClient, - [ChainId.optimism_goerli]: optimismGoerliClient, - [ChainId.optimism_sepolia]: optimismSepoliaClient, - [ChainId.metis]: metisClient, - [ChainId.base]: baseClient, - [ChainId.base_sepolia]: baseSepoliaClient, - [ChainId.sepolia]: sepoliaClient, - [ChainId.goerli]: goerliClient, - [ChainId.fantom]: fantomClient, - [ChainId.fantom_testnet]: fantomTestnetClient, - [ChainId.bnb]: bnbClient, - [ChainId.avalanche]: avalancheClient, - [ChainId.gnosis]: gnosisClient, - [ChainId.scroll]: scrollClient, - [ChainId.scroll_sepolia]: scrollSepoliaClient, - [ChainId.zkEVM]: zkEVMClient, - [ChainId.celo]: celoClient, - [ChainId.zkSync]: zkSyncClient, - [ChainId.linea]: lineaClient, - [ChainId.fuji]: fujiClient, - [ChainId.mumbai]: mumbaiClient, - [ChainId.harmony]: harmonyClient, -} as const; diff --git a/src/rpc/helpers.spec.ts b/src/rpc/helpers.spec.ts index 8cfa448..80a069c 100644 --- a/src/rpc/helpers.spec.ts +++ b/src/rpc/helpers.spec.ts @@ -1,4 +1,5 @@ import { describe, it, expect } from 'vitest'; +import { getClient, ChainId } from '@bgd-labs/rpc-env'; import { getContractDeploymentBlock, getBlockAtTimestamp, @@ -6,9 +7,7 @@ import { } from './helpers'; import { getAbiItem } from 'viem'; import { IPoolV1_ABI } from './mocks/IPoolV1'; -import { CHAIN_ID_CLIENT_MAP } from './clients.ts'; import { mainnet } from 'viem/chains'; -import { getLogs } from 'viem/actions'; describe('helpers', () => { it( @@ -16,7 +15,7 @@ describe('helpers', () => { async () => { const maxDelta = 1000n; const result = await getContractDeploymentBlock({ - client: CHAIN_ID_CLIENT_MAP[mainnet.id], + client: getClient(ChainId.mainnet, {}), contractAddress: '0x5a98fcbea516cf06857215779fd812ca3bef1b32', fromBlock: 11470216n, toBlock: 11475216n, @@ -31,7 +30,7 @@ describe('helpers', () => { it('getBlockAtTimestamp', async () => { const maxDelta = 1000n; const result = await getBlockAtTimestamp({ - client: CHAIN_ID_CLIENT_MAP[mainnet.id], + client: getClient(ChainId.mainnet, {}), timestamp: 1704488567n, fromBlock: 18933610n, toBlock: 18953610n, @@ -47,7 +46,7 @@ describe('helpers', () => { 'getLogs should use batching for known rpcs', async () => { const logs = await strategicGetLogs({ - client: CHAIN_ID_CLIENT_MAP[mainnet.id], + client: getClient(ChainId.mainnet, {}), events: [getAbiItem({ abi: IPoolV1_ABI, name: 'Borrow' })], address: '0x398eC7346DcD622eDc5ae82352F02bE94C62d119', // v1 pool fromBlock: 9241022n, diff --git a/yarn.lock b/yarn.lock index cff4278..e5f0c70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@bgd-labs/rpc-env@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@bgd-labs/rpc-env/-/rpc-env-2.3.0.tgz#18955fb09dd97a353531612ccfb1b8e88e227ba6" + integrity sha512-kYqzLozksrd/E1fyvy+Afi5ssBv2mI2PvYqrslQocYY1nBrOF9b43/2/VitmAhxhBomGjk/qfWzjOzDPGjgxqQ== + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1466,8 +1471,16 @@ std-env@^3.5.0: resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1485,8 +1498,14 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==