UNPKG

@libotony/sharp-cli

Version:
89 lines 8.77 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const path = require("path"); const fs = require("fs"); const sharp_compile_1 = require("@libotony/sharp-compile"); const utils_1 = require("./utils"); const debug = require('debug')('sharp:compile-flow'); exports.compileFlow = (options) => __awaiter(this, void 0, void 0, function* () { process.stderr.write('Preparing compiler......\n'); const solc = yield sharp_compile_1.getSolidityCompiler(options.solcVer).catch((e) => { return Promise.reject(new Error('failed to load compiler: ' + e.message)); }); const contractsDirectory = options.contractsDirectory; const buildDirectory = options.buildDirectory; process.stderr.write('Compiling contracts......\n'); for (const file of options.contracts) { const output = sharp_compile_1.compile(solc, { file, options: options.solc, contractsDirectory }); let warning = ''; if (output.errors && output.errors.length) { for (const e of output.errors) { if (e.type === 'Warning') { warning += e.formattedMessage; } else { throw new Error(e.formattedMessage); } } } if (!!warning) { const head = utils_1.colors.waring('\n==============WARNING=================\n\n'); const tail = utils_1.colors.waring('\n\n=======================================\n'); process.stderr.write(head + warning.replace(/\n$/, '') + tail); } const refs = []; // FileName for (const [_, fileMeta] of Object.entries(output.contracts)) { // ContractName for (const [contractName, contractMeta] of Object.entries(fileMeta)) { const fd = fs.openSync(path.join(buildDirectory, contractName + '.json'), 'w'); // Get all link references // { // "name.sol": { // "contractName": [ReferenceObject] // } // } for (const [_, references] of Object.entries(contractMeta.evm.bytecode.linkReferences)) { for (const [r, _] of Object.entries(references)) { refs.push(r); } } const info = { contractName, abi: contractMeta.abi, metadata: contractMeta.metadata, bytecode: utils_1.normalizeHex(contractMeta.evm.bytecode.object), deployedBytecode: utils_1.normalizeHex(contractMeta.evm.deployedBytecode.object), sourceMap: contractMeta.evm.bytecode.sourceMap, deployedSourceMap: contractMeta.evm.deployedBytecode.sourceMap, compiler: { name: 'solc', version: solc.version() }, devdoc: contractMeta.devdoc, userdoc: contractMeta.userdoc, updatedAt: (new Date()).toISOString() }; fs.writeSync(fd, JSON.stringify(info, null, 4), null, 'utf-8'); fs.closeSync(fd); } } if (refs.length) { const head = utils_1.colors.info('\n===========LINK REFERENCE==============\n\n'); const tail = utils_1.colors.info('\n\n=======================================\n'); const tipStart = 'External libraries refound: \n\n '; const tipEnd = '\n\nSet libraries in options to link them.'; process.stderr.write(head + tipStart + refs.join(', ') + tipEnd + tail); } } process.stderr.write(`All done! Saved to ${buildDirectory}\n`); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS1mbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBpbGUtZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsNkJBQTRCO0FBQzVCLHlCQUF3QjtBQUN4QiwyREFBc0U7QUFFdEUsbUNBQThDO0FBQzlDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBRXZDLFFBQUEsV0FBVyxHQUFHLENBQU8sT0FBMkIsRUFBRSxFQUFFO0lBQzdELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxtQ0FBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUU7UUFDdkUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDJCQUEyQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzdFLENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUE7SUFDckQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQTtJQUU3QyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0lBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtRQUNsQyxNQUFNLE1BQU0sR0FBRyx1QkFBTyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7UUFFakYsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMs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