@ansonhkg/abi-extractor
v1.1.0
Published
A library to extract ABI methods from JSON files and generate TypeScript/JavaScript signature files
Downloads
42
Maintainers
Readme
ABI Extractor
A library to extract specific ABI methods from JSON files and generate TypeScript/JavaScript signature files.
Installation
npm install
npm run build
npm link # To use the CLI globallyCLI Usage
Basic usage:
abi-to-signature <path-to-json> <output-dir>With options:
# Extract specific methods
abi-to-signature ./contract.abi.json ./output -m "transfer,approve,balanceOf"
# Specify output file name and contract details
abi-to-signature ./contract.abi.json ./output -n mySignatures -c MyContract -a 0x1234...
# Show help
abi-to-signature --helpCLI Options:
-m, --methods <methods>- Comma-separated list of method names to extract (default: all methods)-n, --name <name>- Output file name (default: signatures)-c, --contract <name>- Contract name (default: derived from filename)-a, --address <address>- Contract address (default: 0x0...0)-h, --help- Show help
Programmatic Usage
Extract from a single ABI file
import { extractAndGenerate } from 'abi-extractor';
const methodsToExtract = [
'addAuthorizedRedirectUri',
'registerApp',
'deleteApp',
'updateAppName',
];
extractAndGenerate(
'./path/to/contract.abi.json',
methodsToExtract,
'./output',
{
outputFileName: 'contractSignatures',
contractName: 'MyContract', // optional, defaults to filename
contractAddress: '0x1234...' // optional, defaults to zero address
}
);Extract from multiple ABI files
import { extractMultipleAndGenerate } from 'abi-extractor';
extractMultipleAndGenerate(
[
{
filePath: './Contract1.abi.json',
contractName: 'Contract1',
contractAddress: '0x1234...'
},
{
filePath: './Contract2.abi.json',
contractName: 'Contract2',
contractAddress: '0xabcd...'
}
],
['method1', 'method2', 'method3'],
'./output',
'multiContractSignatures'
);Direct extraction without file generation
import { extractAbiFromJson } from 'abi-extractor';
const signatures = extractAbiFromJson(
'./contract.abi.json',
['method1', 'method2'],
{
contractName: 'MyContract',
contractAddress: '0x1234...'
}
);Output Format
The library generates two files:
.tsfile with TypeScript const assertion.jsfile with CommonJS export
Example output structure:
export const signatures = {
"address": "0x1234567890123456789012345678901234567890",
"methods": {
"registerApp": { /* ABI item */ },
"deleteApp": { /* ABI item */ }
},
"events": [
{ /* Event ABI items */ }
]
} as const;Features
- Extract specific methods by name from ABI files
- Handle duplicate event names with automatic suffixing
- Support for single or multiple ABI file processing
- Generate both TypeScript and JavaScript output files
- Flexible contract naming and addressing options
