@biconomy/ecosystem
Version:
Testing infrastructure for abstractjs with ephemeral networks
51 lines (45 loc) • 1.62 kB
text/typescript
import fs from "node:fs"
import path from "node:path"
import { getChain } from "@biconomy/abstractjs-canary"
import { http, type Address, type Hex, createPublicClient } from "viem"
import { ALL_ADDRESSES } from "../src/addresses"
import { BYTECODES } from "../src/bytecodes"
const main = async () => {
let fetched = false
const bytecodes = await Promise.all(
Object.values(ALL_ADDRESSES).map(
async ({ address, chainId }, i: number) => {
const publicClient = createPublicClient({
// @ts-ignore
chain: getChain(chainId),
transport: http()
})
const name = Object.keys(ALL_ADDRESSES)[i]
if (BYTECODES[address]) {
return { address, bytecode: BYTECODES[address].bytecode as Hex, name }
}
const bytecode = await publicClient.getCode({ address })
fetched = true
return { address, bytecode, name }
}
)
)
const bytecodesAsObject = bytecodes.reduce(
(acc, { name, address, bytecode }) => {
acc[address] = { name, address, bytecode: (bytecode ?? "0x") as Hex }
return acc
},
{} as Record<Address, { address: Address; bytecode: Hex; name: string }>
)
if (fetched) {
const fileContent = `import type { Hex, Address } from "viem"; \n\nexport const BYTECODES: Record<Address, { address: Address, bytecode: Hex, name: string }> = ${JSON.stringify(bytecodesAsObject, null, 2)};`
fs.writeFileSync(path.join(__dirname, "../src/bytecodes.ts"), fileContent)
}
}
main()
.then(() => {
console.log("done")
})
.catch((error) => {
console.error(error)
})