@neo-one/smart-contract-codegen-esnext-esm
Version:
NEO•ONE TypeScript smart contract codegen.
96 lines (93 loc) • 3.44 kB
JavaScript
import { genEvent } from './genEvent';
import { genMigrationSmartContract } from './genMigrationSmartContract';
import { genSmartContract } from './genSmartContract';
import { getEventName } from './getEventName';
import { getSingleEventName } from './getSingleEventName';
const getImportClauses = (text) => {
const mutableClauses = [];
if (text.includes('Client')) {
mutableClauses.push('Client');
}
if (text.includes('BufferString')) {
mutableClauses.push('BufferString');
}
if (text.includes('SignatureString')) {
mutableClauses.push('SignatureString');
}
if (text.includes('AddressString')) {
mutableClauses.push('AddressString');
}
if (text.includes('Hash256String')) {
mutableClauses.push('Hash256String');
}
if (text.includes('PublicKeyString')) {
mutableClauses.push('PublicKeyString');
}
if (text.includes('TransactionResult')) {
mutableClauses.push('TransactionResult');
}
if (text.includes('InvokeReceipt')) {
mutableClauses.push('InvokeReceipt');
}
if (text.includes('Event<')) {
mutableClauses.push('Event');
}
if (text.includes('InvokeSendUnsafeTransactionOptions')) {
mutableClauses.push('InvokeSendUnsafeTransactionOptions');
}
if (text.includes('InvokeReceiveTransactionOptions')) {
mutableClauses.push('InvokeReceiveTransactionOptions');
}
if (text.includes('InvokeSendUnsafeReceiveTransactionOptions')) {
mutableClauses.push('InvokeSendUnsafeReceiveTransactionOptions');
}
if (text.includes('TransactionReceipt')) {
mutableClauses.push('TransactionReceipt');
}
if (text.includes('ClaimTransaction')) {
mutableClauses.push('ClaimTransaction');
}
if (text.includes('InvocationTransaction')) {
mutableClauses.push('InvocationTransaction');
}
if (text.includes('TransactionOptions')) {
mutableClauses.push('TransactionOptions');
}
if (text.includes('GetOptions')) {
mutableClauses.push('GetOptions');
}
if (text.includes('ContractParameter')) {
mutableClauses.push('ContractParameter');
}
if (text.includes('ForwardValue')) {
mutableClauses.push('ForwardValue');
}
if (text.includes('SmartContract')) {
mutableClauses.push('SmartContract');
}
if (text.includes('Transfer,')) {
mutableClauses.push('Transfer');
}
if (text.includes('ForwardOptions')) {
mutableClauses.push('ForwardOptions');
}
return mutableClauses;
};
export const genSmartContractTypes = (name, abi) => {
const events = abi.events === undefined ? [] : abi.events;
const eventType = `export type ${getEventName(name)} = ${events.length === 0 ? 'never' : events.map((event) => getSingleEventName(name, event.name)).join(' | ')}`;
const text = `
${events.map((event) => genEvent(name, event)).join('\n')}
${eventType}
${genSmartContract(name, abi)}
${genMigrationSmartContract(name, abi)}`;
const importClauses = getImportClauses(text);
importClauses.sort();
const bigNumberImport = text.includes('BigNumber') ? "\nimport BigNumber from 'bignumber.js';" : '';
const importDecl = `import { ${importClauses.join(', ')} } from '@neo-one/client';${bigNumberImport}`;
return {
ts: `${importDecl}
${text}`,
};
};
//# sourceMappingURL=genSmartContractTypes.js.map