UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

42 lines (40 loc) 1.83 kB
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