| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- const fs = require("fs");
- const SRC_IDL = __dirname + "/../../../solana/idl";
- const DST_IDL = __dirname + "/../src/anchor-idl";
- const TS = __dirname + "/../src/solana/types";
- const programs = {
- "wormhole.json": "Wormhole",
- "token_bridge.json": "TokenBridge",
- "nft_bridge.json": "NftBridge",
- };
- function main() {
- if (!fs.existsSync(DST_IDL)) {
- fs.mkdirSync(DST_IDL);
- }
- if (!fs.existsSync(TS)) {
- fs.mkdirSync(TS);
- }
- for (const basename of fs.readdirSync(SRC_IDL)) {
- const idl = DST_IDL + "/" + basename;
- fs.copyFileSync(SRC_IDL + "/" + basename, idl);
- const targetTypescript = TS + "/" + snakeToCamel(basename).replace("json", "ts");
- const programType = programs[basename];
- fs.writeFileSync(targetTypescript, `export type ${programType} = `);
- fs.appendFileSync(targetTypescript, fs.readFileSync(idl));
- }
- }
- const snakeToCamel = str =>
- str.toLowerCase().replace(/([-_][a-z])/g, group =>
- group
- .toUpperCase()
- .replace('-', '')
- .replace('_', '')
- );
- main();
|