const fs = require("fs"); const path = require("path"); const Terser = require("terser"); const LIB_DIR = path.join(__dirname, "..", "lib"); const PATH = path.join(LIB_DIR, "preamble.js"); const MIN_PATH = path.join(LIB_DIR, "preamble.min.js"); const DART_PATH = path.join(LIB_DIR, "preamble.dart"); const preamble = fs.readFileSync(PATH).toString(); const { code: minified, error } = Terser.minify(preamble, { // Needed for Webpack require override. compress: { conditionals: false } }); if (error) { throw error; } fs.writeFileSync(MIN_PATH, minified); fs.writeFileSync(DART_PATH, `library node_preamble; final _minified = r\"""${minified}\"""; final _normal = r\""" ${preamble}\"""; /// Returns the text of the preamble. /// /// If [minified] is true, returns the minified version rather than the /// human-readable version. String getPreamble({bool minified: false, List additionalGlobals: const []}) => (minified ? _minified : _normal) + (additionalGlobals.map((global) => "self.\$global=\$global;").join()); `);