UNPKG

6.68 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const mapValues_1 = tslib_1.__importDefault(require("lodash/mapValues"));
5const ts_utils_1 = require("@neo-one/ts-utils");
6const compile_1 = require("./compile");
7const createContext_1 = require("./createContext");
8const transpile_1 = require("./transpile");
9const utils_1 = require("./utils");
10exports.compileContract = ({ filePath: filePathIn, name, linked }) => {
11 const filePath = utils_1.normalizePath(filePathIn);
12 const transpileContext = createContext_1.createContextForPath(filePath);
13 const smartContract = ts_utils_1.tsUtils.statement.getClassOrThrow(ts_utils_1.tsUtils.file.getSourceFileOrThrow(transpileContext.program, filePath), name);
14 const { sourceFiles, abi, contract } = transpile_1.transpile({
15 smartContract,
16 context: transpileContext
17 });
18 const context = createContext_1.updateContext(transpileContext, mapValues_1.default(sourceFiles, ({ text }) => text));
19 const { code, sourceMap: finalSourceMap, features } = compile_1.compile({
20 sourceFile: ts_utils_1.tsUtils.file.getSourceFileOrThrow(context.program, filePath),
21 context,
22 linked,
23 sourceMaps: mapValues_1.default(sourceFiles, ({ sourceMap }) => sourceMap)
24 });
25 return {
26 diagnostics: context.diagnostics,
27 sourceMap: finalSourceMap,
28 abi,
29 contract: Object.assign({}, contract, { script: code.toString('hex'), storage: features.storage, dynamicInvoke: features.dynamicInvoke, payable: contract.payable })
30 };
31};
32
33//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBpbGVDb250cmFjdC50cyJdLCJuYW1lcyI6WyJjb21waWxlQ29udHJhY3QiLCJmaWxlUGF0aCIsImZpbGVQYXRoSW4iLCJuYW1lIiwibGlua2VkIiwibm9ybWFsaXplUGF0aCIsInRyYW5zcGlsZUNvbnRleHQiLCJjcmVhdGVDb250ZXh0Rm9yUGF0aCIsInNtYXJ0Q29udHJhY3QiLCJ0c1V0aWxzIiwic3RhdGVtZW50IiwiZ2V0Q2xhc3NPclRocm93IiwiZmlsZSIsImdldFNvdXJjZUZpbGVPclRocm93IiwicHJvZ3JhbSIsInNvdXJjZUZpbGVzIiwiYWJpIiwiY29udHJhY3QiLCJ0cmFuc3BpbGUiLCJjb250ZXh0IiwidXBkYXRlQ29udGV4dCIsInRleHQiLCJjb2RlIiwic291cmNlTWFwIiwiZmluYWxTb3VyY2VNYXAiLCJmZWF0dXJlcyIsImNvbXBpbGUiLCJzb3VyY2VGaWxlIiwic291cmNlTWFwcyIsImRpYWdub3N0aWNzIiwic2NyaXB0IiwidG9TdHJpbmciLCJzdG9yYWdlIiwiZHluYW1pY0ludm9rZSIsInBheWFibGUiXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUEwQztBQUMxQyxnREFBQTtBQUlBLHVDQUFBO0FBQ0EsbURBQUE7QUFDQSwyQ0FBQTtBQUNBLG1DQUFBO0FBY2FBLFFBQUFBLGVBQWUsR0FBRyxDQUFDLEVBQzlCQyxRQUFRLEVBQUVDLFVBRG9CLEVBRTlCQyxJQUY4QixFQUc5QkMsTUFBQUEsRUFINkIsRUFBQSxFQUFBO0lBSzdCLE1BQU1ILFFBQVEsR0FBR0kscUJBQWEsQ0FBQ0gsVUFBRCxDQUE5QixDQUFBO0lBQ0EsTUFBTUksZ0JBQWdCLEdBQUdDLG9DQUFvQixDQUFDTixRQUFELENBQTdDLENBQUE7SUFDQSxNQUFNTyxhQUFhLEdBQUdDLGtCQUFPLENBQUNDLFNBQVIsQ0FBa0JDLGVBQWxCLENBQ3BCRixrQkFBTyxDQUFDRyxJQUFSLENBQWFDLG9CQUFiLENBQWtDUCxnQkFBZ0IsQ0FBQ1EsT0FBbkQsRUFBNERiLFFBQTVELENBRG9CLEVBRXBCRSxJQUZvQixDQUF0QixDQUFBO0lBSUEsTUFBTSxFQUFFWSxXQUFGLEVBQWVDLEdBQWYsRUFBb0JDLFFBQUFBLEVBQXBCLEdBQWlDQyxxQkFBUyxDQUFDO1FBQUVWLGFBQUY7UUFBaUJXLE9BQU8sRUFBRWIsZ0JBQUFBO0tBQTNCLENBQWhELENBQUE7SUFDQSxNQUFNYSxPQUFPLEdBQUdDLDZCQUFhLENBQUNkLGdCQUFELEVBQW1CLG1CQUFBLENBQVlTLFdBQVosRUFBeUIsQ0FBQyxFQUFFTSxJQUFBQSxFQUFILEVBQUEsRUFBQSxDQUFjQSxJQUF2QyxDQUFuQixDQUE3QixDQUFBO0lBRUEsTUFBTSxFQUFFQyxJQUFGLEVBQVFDLFNBQVMsRUFBRUMsY0FBbkIsRUFBbUNDLFFBQUFBLEVBQW5DLEdBQWdEQyxpQkFBTyxDQUFDO1FBQzVEQyxVQUFVLEVBQUVsQixrQkFBTyxDQUFDRyxJQUFSLENBQWFDLG9CQUFiLENBQWtDTSxPQUFPLENBQUNMLE9BQTFDLEVBQW1EYixRQUFuRCxDQURnRDtRQUU1RGtCLE9BRjREO1FBRzVEZixNQUg0RDtRQUk1RHdCLFVBQVUsRUFBRSxtQkFBQSxDQUFZYixXQUFaLEVBQXlCLENBQUMsRUFBRVEsU0FBQUEsRUFBSCxFQUFBLEVBQUEsQ0FBbUJBLFNBQTVDLENBQUE7S0FKK0MsQ0FBN0QsQ0FBQTtJQU9BLE9BQU87UUFDTE0sV0FBVyxFQUFFVixPQUFPLENBQUNVLFdBRGhCO1FBRUxOLFNBQVMsRUFBRUMsY0FGTjtRQUdMUixHQUhLO1FBSUxDLFFBQVEsb0JBQ0hBLFFBREssSUFFUmEsTUFBTSxFQUFFUixJQUFJLENBQUNTLFFBQUwsQ0FBYyxLQUFkLENBRkEsRUFHUkMsT0FBTyxFQUFFUCxRQUFRLENBQUNPLE9BSFYsRUFJUkMsYUFBYSxFQUFFUixRQUFRLENBQUNRLGFBSmhCLEVBS1JDLE9BQU8sRUFBRWpCLFFBQVEsQ0FBQ2lCLE9BQUFBLEdBTFY7S0FKWixDQUFBO0FBWUQsQ0FqQ00sQ0FBQSIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlQ29udHJhY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQkksIENvbnRyYWN0UmVnaXN0ZXIgfSBmcm9tICdAbmVvLW9uZS9jbGllbnQnO1xuaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSYXdTb3VyY2VNYXAgfSBmcm9tICdzb3VyY2UtbWFwJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IGNvbXBpbGUsIFdpdGhMaW5rZWQgfSBmcm9tICcuL2NvbXBpbGUnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dEZvclBhdGgsIHVwZGF0ZUNvbnRleHQgfSBmcm9tICcuL2NyZWF0ZUNvbnRleHQnO1xuaW1wb3J0IHsgdHJhbnNwaWxlIH0gZnJvbSAnLi90cmFuc3BpbGUnO1xuaW1wb3J0IHsgbm9ybWFsaXplUGF0aCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVDb250cmFjdE9wdGlvbnMgZXh0ZW5kcyBXaXRoTGlua2VkIHtcbiAgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVDb250cmFjdFJlc3VsdCB7XG4gIHJlYWRvbmx5IGFiaTogQUJJO1xuICByZWFkb25seSBkaWFnbm9zdGljczogUmVhZG9ubHlBcnJheTx0cy5EaWFnbm9zdGljPjtcbiAgcmVhZG9ubHkgY29udHJhY3Q6IENvbnRyYWN0UmVnaXN0ZXI7XG4gIHJlYWRvbmx5IHNvdXJjZU1hcDogUHJvbWlzZTxSYXdTb3VyY2VNYXA+O1xufVxuXG5leHBvcnQgY29uc3QgY29tcGlsZUNvbnRyYWN0ID0gKHtcbiAgZmlsZVBhdGg6IGZpbGVQYXRoSW4sXG4gIG5hbWUsXG4gIGxpbmtlZCxcbn06IENvbXBpbGVDb250cmFjdE9wdGlvbnMpOiBDb21waWxlQ29udHJhY3RSZXN1bHQgPT4ge1xuICBjb25zdCBmaWxlUGF0aCA9IG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGhJbik7XG4gIGNvbnN0IHRyYW5zcGlsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0Rm9yUGF0aChmaWxlUGF0aCk7XG4gIGNvbnN0IHNtYXJ0Q29udHJhY3QgPSB0c1V0aWxzLnN0YXRlbWVudC5nZXRDbGFzc09yVGhyb3coXG4gICAgdHNVdGlscy5maWxlLmdldFNvdXJjZUZpbGVPclRocm93KHRyYW5zcGlsZUNvbnRleHQucHJvZ3JhbSwgZmlsZVBhdGgpLFxuICAgIG5hbWUsXG4gICk7XG4gIGNvbnN0IHsgc291cmNlRmlsZXMsIGFiaSwgY29udHJhY3QgfSA9IHRyYW5zcGlsZSh7IHNtYXJ0Q29udHJhY3QsIGNvbnRleHQ6IHRyYW5zcGlsZUNvbnRleHQgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSB1cGRhdGVDb250ZXh0KHRyYW5zcGlsZUNvbnRleHQsIF8ubWFwVmFsdWVzKHNvdXJjZUZpbGVzLCAoeyB0ZXh0IH0pID0+IHRleHQpKTtcblxuICBjb25zdCB7IGNvZGUsIHNvdXJjZU1hcDogZmluYWxTb3VyY2VNYXAsIGZlYXR1cmVzIH0gPSBjb21waWxlKHtcbiAgICBzb3VyY2VGaWxlOiB0c1V0aWxzLmZpbGUuZ2V0U291cmNlRmlsZU9yVGhyb3coY29udGV4dC5wcm9ncmFtLCBmaWxlUGF0aCksXG4gICAgY29udGV4dCxcbiAgICBsaW5rZWQsXG4gICAgc291cmNlTWFwczogXy5tYXBWYWx1ZXMoc291cmNlRmlsZXMsICh7IHNvdXJjZU1hcCB9KSA9PiBzb3VyY2VNYXApLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGRpYWdub3N0aWNzOiBjb250ZXh0LmRpYWdub3N0aWNzLFxuICAgIHNvdXJjZU1hcDogZmluYWxTb3VyY2VNYXAsXG4gICAgYWJpLFxuICAgIGNvbnRyYWN0OiB7XG4gICAgICAuLi5jb250cmFjdCxcbiAgICAgIHNjcmlwdDogY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICBzdG9yYWdlOiBmZWF0dXJlcy5zdG9yYWdlLFxuICAgICAgZHluYW1pY0ludm9rZTogZmVhdHVyZXMuZHluYW1pY0ludm9rZSxcbiAgICAgIHBheWFibGU6IGNvbnRyYWN0LnBheWFibGUsXG4gICAgfSxcbiAgfTtcbn07XG4iXX0=