#!/usr/bin/env node (async function() { 'use strict'; var UglifyJS = require('uglify-js'); var path = require('path'); var fs = require('fs'); var promisify = require('util').promisify; var readFile = promisify(fs.readFile); var writeFile = promisify(fs.writeFile); var gzip = promisify(require('zlib').gzip); var name = require('../package.json').name; // The order is specific, and it matters var files = await Promise.all( ['../unibabel.js', '../hex.js', '../base32.js'].map( async function(file) { return (await readFile( path.join(__dirname, file), 'utf8' )).trim(); } ) ); var license = [ '// Unibabel Copyright 2015-2019 AJ ONeal. All rights reserved.', '/* License at http://mozilla.org/MPL/2.0/ */', '// Thirty-Two Copyright (c) 2011, Chris Umbel. All rights reserved.', '/* License at https://github.com/chrisumbel/thirty-two */' ].join('\n') + '\n'; var header = ['var Unibabel = {};', ';(function () {'].join('\n') + '\n'; var footer = ['}());'].join('\n') + '\n'; var file = ( (license + header + files.join('\n') + '\n' + footer).trim() + '\n' ) .replace(/\bmodule.exports\b/g, 'Unibabel') .replace(/\bexports\b/g, 'Unibabel'); await writeFile(path.join(__dirname, '../dist', name + '.all.js'), file); await writeFile( path.join(__dirname, '../dist', name + '.all.js.gz'), await gzip(file) ); // TODO source maps? var result = UglifyJS.minify(file, { compress: true, // mangling doesn't save significant mangle: false }); if (result.error) { throw result.error; } file = license + result.code; await writeFile(path.join(__dirname, '../dist', name + '.all.min.js'), file); await writeFile( path.join(__dirname, '../dist', name + '.all.min.js.gz'), await gzip(file) ); })();