@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
38 lines (36 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileContract = void 0;
const tslib_1 = require("tslib");
const ts_utils_1 = require("@neo-one/ts-utils");
const utils_1 = require("@neo-one/utils");
const lodash_1 = tslib_1.__importDefault(require("lodash"));
const compile_1 = require("./compile");
const createContext_1 = require("./createContext");
const transpile_1 = require("./transpile");
exports.compileContract = ({ filePath: filePathIn, host, linked: linkedIn = {}, }) => {
const filePath = utils_1.normalizePath(filePathIn);
const linked = lodash_1.default.fromPairs(Object.entries(linkedIn).map(([key, value]) => [utils_1.normalizePath(key), value]));
const transpileContext = createContext_1.createContextForPath(filePath, host);
const transpileResult = transpile_1.transpile({
sourceFile: ts_utils_1.tsUtils.file.getSourceFileOrThrow(transpileContext.program, filePath),
context: transpileContext,
});
const context = transpileResult === undefined
? transpileContext
: createContext_1.updateContext(transpileContext, { [filePath]: transpileResult.text });
const { abi, sourceMap: finalSourceMap, contract, debugInfo } = compile_1.compile({
sourceFile: ts_utils_1.tsUtils.file.getSourceFileOrThrow(context.program, filePath),
context,
linked,
sourceMaps: transpileResult === undefined ? {} : { [filePath]: transpileResult.sourceMap },
});
return {
diagnostics: context.diagnostics,
sourceMap: finalSourceMap,
abi,
contract,
debugInfo,
};
};
//# sourceMappingURL=compileContract.js.map