@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
39 lines (37 loc) • 6.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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 } = getSmartContractInfo_1.getSmartContractInfo(context, sourceFile);
const helperScriptBuilder = new sb_1.HelperCapturingScriptBuilder(context, helpers, sourceFile, contractInfo, linked);
helperScriptBuilder.process();
const scopeScriptBuilder = new sb_1.ScopeCapturingScriptBuilder(context, helpers, sourceFile, contractInfo, linked, helperScriptBuilder.getHelpers());
scopeScriptBuilder.process();
const emittingScriptBuilder = new sb_1.EmittingScriptBuilder({
context,
scopes: scopeScriptBuilder.getScopes(),
sourceFile,
helpers,
linked,
allHelpers: helperScriptBuilder.getHelpers(),
contractInfo,
});
emittingScriptBuilder.process();
const finalResult = emittingScriptBuilder.getFinalResult(sourceMaps);
return {
contract: Object.assign({ script: finalResult.code.toString('hex') }, contract, finalResult.features),
abi,
context,
sourceMap: finalResult.sourceMap,
};
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxpRUFBOEQ7QUFDOUQscUNBQXlDO0FBQ3pDLDZCQUtjO0FBZUQsUUFBQSxxQkFBcUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBNEIsRUFBUSxFQUFFO0lBQy9GLE1BQU0sT0FBTyxHQUFHLHNCQUFhLEVBQUUsQ0FBQztJQUNoQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsMkNBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sYUFBYSxHQUFHLElBQUksNEJBQXVCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUYsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVXLFFBQUEsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsVUFBVSxHQUFHLEVBQUUsRUFBa0IsRUFBaUIsRUFBRTtJQUM5RyxNQUFNLE9BQU8sR0FBRyxzQkFBYSxFQUFFLENBQUM7SUFDaEMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsMkNBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWxGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxpQ0FBNEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakgsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGdDQUEyQixDQUN4RCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUNqQyxDQUFDO0lBQ0Ysa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFN0IsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLDBCQUFxQixDQUFDO1FBQ3RELE9BQU87UUFDUCxNQUFNLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFO1FBQ3RDLFVBQVU7UUFDVixPQUFPO1FBQ1AsTUFBTTtRQUNOLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7UUFDNUMsWUFBWTtLQUNiLENBQUMsQ0FBQztJQUNILHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWhDLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyRSxPQUFPO1FBQ0wsUUFBUSxrQkFDTixNQUFNLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQ3JDLFFBQVEsRUFDUixXQUFXLENBQUMsUUFBUSxDQUN4QjtRQUNELEdBQUc7UUFDSCxPQUFPO1FBQ1AsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO0tBQ2pDLENBQUM7QUFDSixDQUFDLENBQUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9jb21waWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmF3U291cmNlTWFwIH0gZnJvbSAnc291cmNlLW1hcCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi4vQ29udGV4dCc7XG5pbXBvcnQgeyBnZXRTbWFydENvbnRyYWN0SW5mbyB9IGZyb20gJy4vZ2V0U21hcnRDb250cmFjdEluZm8nO1xuaW1wb3J0IHsgY3JlYXRlSGVscGVycyB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7XG4gIERpYWdub3N0aWNTY3JpcHRCdWlsZGVyLFxuICBFbWl0dGluZ1NjcmlwdEJ1aWxkZXIsXG4gIEhlbHBlckNhcHR1cmluZ1NjcmlwdEJ1aWxkZXIsXG4gIFNjb3BlQ2FwdHVyaW5nU2NyaXB0QnVpbGRlcixcbn0gZnJvbSAnLi9zYic7XG5pbXBvcnQgeyBDb21waWxlUmVzdWx0LCBMaW5rZWRDb250cmFjdHMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ29tcGlsZU9wdGlvbnMge1xuICByZWFkb25seSBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlO1xuICByZWFkb25seSBjb250ZXh0OiBDb250ZXh0O1xufVxuZXhwb3J0IGludGVyZmFjZSBXaXRoTGlua2VkIHtcbiAgcmVhZG9ubHkgbGlua2VkPzogTGlua2VkQ29udHJhY3RzO1xufVxuZXhwb3J0IGludGVyZmFjZSBEaWFnbm9zdGljQ29tcGlsZU9wdGlvbnMgZXh0ZW5kcyBCYXNlQ29tcGlsZU9wdGlvbnMge1xuICByZWFkb25seSBzb3VyY2VNYXBzPzogeyByZWFkb25seSBbZmlsZVBhdGg6IHN0cmluZ106IFJhd1NvdXJjZU1hcCB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9ucyBleHRlbmRzIERpYWdub3N0aWNDb21waWxlT3B0aW9ucywgV2l0aExpbmtlZCB7fVxuXG5leHBvcnQgY29uc3QgY29tcGlsZUZvckRpYWdub3N0aWNzID0gKHsgY29udGV4dCwgc291cmNlRmlsZSB9OiBEaWFnbm9zdGljQ29tcGlsZU9wdGlvbnMpOiB2b2lkID0+IHtcbiAgY29uc3QgaGVscGVycyA9IGNyZWF0ZUhlbHBlcnMoKTtcbiAgY29uc3QgeyBjb250cmFjdEluZm8gfSA9IGdldFNtYXJ0Q29udHJhY3RJbmZvKGNvbnRleHQsIHNvdXJjZUZpbGUpO1xuXG4gIGNvbnN0IHNjcmlwdEJ1aWxkZXIgPSBuZXcgRGlhZ25vc3RpY1NjcmlwdEJ1aWxkZXIoY29udGV4dCwgaGVscGVycywgc291cmNlRmlsZSwgY29udHJhY3RJbmZvKTtcbiAgc2NyaXB0QnVpbGRlci5wcm9jZXNzKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcGlsZSA9ICh7IGNvbnRleHQsIHNvdXJjZUZpbGUsIGxpbmtlZCA9IHt9LCBzb3VyY2VNYXBzID0ge30gfTogQ29tcGlsZU9wdGlvbnMpOiBDb21waWxlUmVzdWx0ID0+IHtcbiAgY29uc3QgaGVscGVycyA9IGNyZWF0ZUhlbHBlcnMoKTtcbiAgY29uc3QgeyBjb250cmFjdEluZm8sIGFiaSwgY29udHJhY3QgfSA9IGdldFNtYXJ0Q29udHJhY3RJbmZvKGNvbnRleHQsIHNvdXJjZUZpbGUpO1xuXG4gIGNvbnN0IGhlbHBlclNjcmlwdEJ1aWxkZXIgPSBuZXcgSGVscGVyQ2FwdHVyaW5nU2NyaXB0QnVpbGRlcihjb250ZXh0LCBoZWxwZXJzLCBzb3VyY2VGaWxlLCBjb250cmFjdEluZm8sIGxpbmtlZCk7XG4gIGhlbHBlclNjcmlwdEJ1aWxkZXIucHJvY2VzcygpO1xuXG4gIGNvbnN0IHNjb3BlU2NyaXB0QnVpbGRlciA9IG5ldyBTY29wZUNhcHR1cmluZ1NjcmlwdEJ1aWxkZXIoXG4gICAgY29udGV4dCxcbiAgICBoZWxwZXJzLFxuICAgIHNvdXJjZUZpbGUsXG4gICAgY29udHJhY3RJbmZvLFxuICAgIGxpbmtlZCxcbiAgICBoZWxwZXJTY3JpcHRCdWlsZGVyLmdldEhlbHBlcnMoKSxcbiAgKTtcbiAgc2NvcGVTY3JpcHRCdWlsZGVyLnByb2Nlc3MoKTtcblxuICBjb25zdCBlbWl0dGluZ1NjcmlwdEJ1aWxkZXIgPSBuZXcgRW1pdHRpbmdTY3JpcHRCdWlsZGVyKHtcbiAgICBjb250ZXh0LFxuICAgIHNjb3Blczogc2NvcGVTY3JpcHRCdWlsZGVyLmdldFNjb3BlcygpLFxuICAgIHNvdXJjZUZpbGUsXG4gICAgaGVscGVycyxcbiAgICBsaW5rZWQsXG4gICAgYWxsSGVscGVyczogaGVscGVyU2NyaXB0QnVpbGRlci5nZXRIZWxwZXJzKCksXG4gICAgY29udHJhY3RJbmZvLFxuICB9KTtcbiAgZW1pdHRpbmdTY3JpcHRCdWlsZGVyLnByb2Nlc3MoKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IGVtaXR0aW5nU2NyaXB0QnVpbGRlci5nZXRGaW5hbFJlc3VsdChzb3VyY2VNYXBzKTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRyYWN0OiB7XG4gICAgICBzY3JpcHQ6IGZpbmFsUmVzdWx0LmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgLi4uY29udHJhY3QsXG4gICAgICAuLi5maW5hbFJlc3VsdC5mZWF0dXJlcyxcbiAgICB9LFxuICAgIGFiaSxcbiAgICBjb250ZXh0LFxuICAgIHNvdXJjZU1hcDogZmluYWxSZXN1bHQuc291cmNlTWFwLFxuICB9O1xufTtcbiJdfQ==