@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
41 lines (39 loc) • 1.94 kB
JavaScript
;
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