wormhole/sdk/js/scripts/compileAnchorIdls.js

42 lines
1.1 KiB
JavaScript

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();