@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
36 lines (34 loc) • 6.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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 } = 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,
};
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBpbGVDb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxnREFBNEM7QUFDNUMsMENBQStDO0FBQy9DLDREQUF1QjtBQUd2Qix1Q0FBZ0Q7QUFDaEQsbURBQXNFO0FBQ3RFLDJDQUF3QztBQWUzQixRQUFBLGVBQWUsR0FBRyxDQUFDLEVBQzlCLFFBQVEsRUFBRSxVQUFVLEVBQ3BCLElBQUksRUFDSixNQUFNLEVBQUUsUUFBUSxHQUFHLEVBQUUsR0FDRSxFQUF5QixFQUFFO0lBQ2xELE1BQU0sUUFBUSxHQUFHLHFCQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsZ0JBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxxQkFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxNQUFNLGdCQUFnQixHQUFHLG9DQUFvQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxNQUFNLGVBQWUsR0FBRyxxQkFBUyxDQUFDO1FBQ2hDLFVBQVUsRUFBRSxrQkFBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO1FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0I7S0FDMUIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQ1gsZUFBZSxLQUFLLFNBQVM7UUFDM0IsQ0FBQyxDQUFDLGdCQUFnQjtRQUNsQixDQUFDLENBQUMsNkJBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFNUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLGlCQUFPLENBQUM7UUFDM0QsVUFBVSxFQUFFLGtCQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO1FBQ3hFLE9BQU87UUFDUCxNQUFNO1FBQ04sVUFBVSxFQUFFLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUU7S0FDM0YsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztRQUNoQyxTQUFTLEVBQUUsY0FBYztRQUN6QixHQUFHO1FBQ0gsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDLENBQUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZUNvbnRyYWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJJIH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbic7XG5pbXBvcnQgeyBDb250cmFjdFJlZ2lzdGVyIH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWZ1bGwtY29yZSc7XG5pbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUGF0aCB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSYXdTb3VyY2VNYXAgfSBmcm9tICdzb3VyY2UtbWFwJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IGNvbXBpbGUsIFdpdGhMaW5rZWQgfSBmcm9tICcuL2NvbXBpbGUnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dEZvclBhdGgsIHVwZGF0ZUNvbnRleHQgfSBmcm9tICcuL2NyZWF0ZUNvbnRleHQnO1xuaW1wb3J0IHsgdHJhbnNwaWxlIH0gZnJvbSAnLi90cmFuc3BpbGUnO1xuaW1wb3J0IHsgQ29tcGlsZXJIb3N0IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZUNvbnRyYWN0T3B0aW9ucyBleHRlbmRzIFdpdGhMaW5rZWQge1xuICByZWFkb25seSBob3N0OiBDb21waWxlckhvc3Q7XG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZUNvbnRyYWN0UmVzdWx0IHtcbiAgcmVhZG9ubHkgYWJpOiBBQkk7XG4gIHJlYWRvbmx5IGRpYWdub3N0aWNzOiBSZWFkb25seUFycmF5PHRzLkRpYWdub3N0aWM+O1xuICByZWFkb25seSBjb250cmFjdDogQ29udHJhY3RSZWdpc3RlcjtcbiAgcmVhZG9ubHkgc291cmNlTWFwOiBQcm9taXNlPFJhd1NvdXJjZU1hcD47XG59XG5cbmV4cG9ydCBjb25zdCBjb21waWxlQ29udHJhY3QgPSAoe1xuICBmaWxlUGF0aDogZmlsZVBhdGhJbixcbiAgaG9zdCxcbiAgbGlua2VkOiBsaW5rZWRJbiA9IHt9LFxufTogQ29tcGlsZUNvbnRyYWN0T3B0aW9ucyk6IENvbXBpbGVDb250cmFjdFJlc3VsdCA9PiB7XG4gIGNvbnN0IGZpbGVQYXRoID0gbm9ybWFsaXplUGF0aChmaWxlUGF0aEluKTtcbiAgY29uc3QgbGlua2VkID0gXy5mcm9tUGFpcnMoT2JqZWN0LmVudHJpZXMobGlua2VkSW4pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbbm9ybWFsaXplUGF0aChrZXkpLCB2YWx1ZV0pKTtcbiAgY29uc3QgdHJhbnNwaWxlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHRGb3JQYXRoKGZpbGVQYXRoLCBob3N0KTtcbiAgY29uc3QgdHJhbnNwaWxlUmVzdWx0ID0gdHJhbnNwaWxlKHtcbiAgICBzb3VyY2VGaWxlOiB0c1V0aWxzLmZpbGUuZ2V0U291cmNlRmlsZU9yVGhyb3codHJhbnNwaWxlQ29udGV4dC5wcm9ncmFtLCBmaWxlUGF0aCksXG4gICAgY29udGV4dDogdHJhbnNwaWxlQ29udGV4dCxcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPVxuICAgIHRyYW5zcGlsZVJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHRyYW5zcGlsZUNvbnRleHRcbiAgICAgIDogdXBkYXRlQ29udGV4dCh0cmFuc3BpbGVDb250ZXh0LCB7IFtmaWxlUGF0aF06IHRyYW5zcGlsZVJlc3VsdC50ZXh0IH0pO1xuXG4gIGNvbnN0IHsgYWJpLCBzb3VyY2VNYXA6IGZpbmFsU291cmNlTWFwLCBjb250cmFjdCB9ID0gY29tcGlsZSh7XG4gICAgc291cmNlRmlsZTogdHNVdGlscy5maWxlLmdldFNvdXJjZUZpbGVPclRocm93KGNvbnRleHQucHJvZ3JhbSwgZmlsZVBhdGgpLFxuICAgIGNvbnRleHQsXG4gICAgbGlua2VkLFxuICAgIHNvdXJjZU1hcHM6IHRyYW5zcGlsZVJlc3VsdCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IFtmaWxlUGF0aF06IHRyYW5zcGlsZVJlc3VsdC5zb3VyY2VNYXAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaWFnbm9zdGljczogY29udGV4dC5kaWFnbm9zdGljcyxcbiAgICBzb3VyY2VNYXA6IGZpbmFsU291cmNlTWFwLFxuICAgIGFiaSxcbiAgICBjb250cmFjdCxcbiAgfTtcbn07XG4iXX0=