@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
42 lines (40 loc) • 1.83 kB
JavaScript
import { getSmartContractInfo } from './getSmartContractInfo';
import { createHelpers } from './helper';
import { DiagnosticScriptBuilder, EmittingScriptBuilder, HelperCapturingScriptBuilder, ScopeCapturingScriptBuilder, } from './sb';
export const compileForDiagnostics = ({ context, sourceFile }) => {
const helpers = createHelpers();
const { contractInfo } = getSmartContractInfo(context, sourceFile);
const scriptBuilder = new DiagnosticScriptBuilder(context, helpers, sourceFile, contractInfo);
scriptBuilder.process();
};
export const compile = ({ context, sourceFile, linked = {}, sourceMaps = {} }) => {
const helpers = createHelpers();
const { contractInfo, abi, contract, debugInfo } = getSmartContractInfo(context, sourceFile);
const helperScriptBuilder = new HelperCapturingScriptBuilder(context, createHelpers(helpers), sourceFile, contractInfo, linked);
helperScriptBuilder.process();
const scopeScriptBuilder = new ScopeCapturingScriptBuilder(context, createHelpers(helpers), sourceFile, contractInfo, linked, helperScriptBuilder.getHelpers());
scopeScriptBuilder.process();
const emittingScriptBuilder = new EmittingScriptBuilder({
context,
scopes: scopeScriptBuilder.getScopes(),
sourceFile,
helpers: createHelpers(helpers),
linked,
allHelpers: helperScriptBuilder.getHelpers(),
contractInfo,
});
emittingScriptBuilder.process();
const finalResult = emittingScriptBuilder.getFinalResult(sourceMaps);
return {
contract: {
script: finalResult.code.toString('hex'),
...contract,
...finalResult.features,
},
abi,
context,
debugInfo,
sourceMap: finalResult.sourceMap,
};
};
//# sourceMappingURL=compile.js.map