UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

41 lines (39 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compile = exports.compileForDiagnostics = void 0; const getSmartContractInfo_1 = require("./getSmartContractInfo"); const helper_1 = require("./helper"); const sb_1 = require("./sb"); exports.compileForDiagnostics = ({ context, sourceFile }) => { const helpers = helper_1.createHelpers(); const { contractInfo } = getSmartContractInfo_1.getSmartContractInfo(context, sourceFile); const scriptBuilder = new sb_1.DiagnosticScriptBuilder(context, helpers, sourceFile, contractInfo); scriptBuilder.process(); }; exports.compile = ({ context, sourceFile, linked = {}, sourceMaps = {} }) => { const helpers = helper_1.createHelpers(); const { contractInfo, abi, contract, debugInfo } = getSmartContractInfo_1.getSmartContractInfo(context, sourceFile); const helperScriptBuilder = new sb_1.HelperCapturingScriptBuilder(context, helper_1.createHelpers(helpers), sourceFile, contractInfo, linked); helperScriptBuilder.process(); const scopeScriptBuilder = new sb_1.ScopeCapturingScriptBuilder(context, helper_1.createHelpers(helpers), sourceFile, contractInfo, linked, helperScriptBuilder.getHelpers()); scopeScriptBuilder.process(); const emittingScriptBuilder = new sb_1.EmittingScriptBuilder({ context, scopes: scopeScriptBuilder.getScopes(), sourceFile, helpers: helper_1.createHelpers(helpers), linked, allHelpers: helperScriptBuilder.getHelpers(), contractInfo, }); emittingScriptBuilder.process(); const finalResult = emittingScriptBuilder.getFinalResult(sourceMaps); return { contract: Object.assign(Object.assign({ script: finalResult.code.toString('hex') }, contract), finalResult.features), abi, context, debugInfo, sourceMap: finalResult.sourceMap, }; }; //# sourceMappingURL=compile.js.map