| Index: node_modules/vulcanize/node_modules/uglify-js/tools/node.js
|
| diff --git a/node_modules/vulcanize/node_modules/uglify-js/tools/node.js b/node_modules/vulcanize/node_modules/uglify-js/tools/node.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..084998da2ee217d93f62b073e91de317e535fb3a
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/node_modules/uglify-js/tools/node.js
|
| @@ -0,0 +1,187 @@
|
| +var path = require("path");
|
| +var fs = require("fs");
|
| +var vm = require("vm");
|
| +var sys = require("util");
|
| +
|
| +var UglifyJS = vm.createContext({
|
| + sys : sys,
|
| + console : console,
|
| + MOZ_SourceMap : require("source-map")
|
| +});
|
| +
|
| +function load_global(file) {
|
| + file = path.resolve(path.dirname(module.filename), file);
|
| + try {
|
| + var code = fs.readFileSync(file, "utf8");
|
| + return vm.runInContext(code, UglifyJS, file);
|
| + } catch(ex) {
|
| + // XXX: in case of a syntax error, the message is kinda
|
| + // useless. (no location information).
|
| + sys.debug("ERROR in file: " + file + " / " + ex);
|
| + process.exit(1);
|
| + }
|
| +};
|
| +
|
| +var FILES = exports.FILES = [
|
| + "../lib/utils.js",
|
| + "../lib/ast.js",
|
| + "../lib/parse.js",
|
| + "../lib/transform.js",
|
| + "../lib/scope.js",
|
| + "../lib/output.js",
|
| + "../lib/compress.js",
|
| + "../lib/sourcemap.js",
|
| + "../lib/mozilla-ast.js"
|
| +].map(function(file){
|
| + return path.join(path.dirname(fs.realpathSync(__filename)), file);
|
| +});
|
| +
|
| +FILES.forEach(load_global);
|
| +
|
| +UglifyJS.AST_Node.warn_function = function(txt) {
|
| + sys.error("WARN: " + txt);
|
| +};
|
| +
|
| +// XXX: perhaps we shouldn't export everything but heck, I'm lazy.
|
| +for (var i in UglifyJS) {
|
| + if (UglifyJS.hasOwnProperty(i)) {
|
| + exports[i] = UglifyJS[i];
|
| + }
|
| +}
|
| +
|
| +exports.minify = function(files, options) {
|
| + options = UglifyJS.defaults(options, {
|
| + spidermonkey : false,
|
| + outSourceMap : null,
|
| + sourceRoot : null,
|
| + inSourceMap : null,
|
| + fromString : false,
|
| + warnings : false,
|
| + mangle : {},
|
| + output : null,
|
| + compress : {}
|
| + });
|
| + UglifyJS.base54.reset();
|
| +
|
| + // 1. parse
|
| + var toplevel = null,
|
| + sourcesContent = {};
|
| +
|
| + if (options.spidermonkey) {
|
| + toplevel = UglifyJS.AST_Node.from_mozilla_ast(files);
|
| + } else {
|
| + if (typeof files == "string")
|
| + files = [ files ];
|
| + files.forEach(function(file){
|
| + var code = options.fromString
|
| + ? file
|
| + : fs.readFileSync(file, "utf8");
|
| + sourcesContent[file] = code;
|
| + toplevel = UglifyJS.parse(code, {
|
| + filename: options.fromString ? "?" : file,
|
| + toplevel: toplevel
|
| + });
|
| + });
|
| + }
|
| +
|
| + // 2. compress
|
| + if (options.compress) {
|
| + var compress = { warnings: options.warnings };
|
| + UglifyJS.merge(compress, options.compress);
|
| + toplevel.figure_out_scope();
|
| + var sq = UglifyJS.Compressor(compress);
|
| + toplevel = toplevel.transform(sq);
|
| + }
|
| +
|
| + // 3. mangle
|
| + if (options.mangle) {
|
| + toplevel.figure_out_scope();
|
| + toplevel.compute_char_frequency();
|
| + toplevel.mangle_names(options.mangle);
|
| + }
|
| +
|
| + // 4. output
|
| + var inMap = options.inSourceMap;
|
| + var output = {};
|
| + if (typeof options.inSourceMap == "string") {
|
| + inMap = fs.readFileSync(options.inSourceMap, "utf8");
|
| + }
|
| + if (options.outSourceMap) {
|
| + output.source_map = UglifyJS.SourceMap({
|
| + file: options.outSourceMap,
|
| + orig: inMap,
|
| + root: options.sourceRoot
|
| + });
|
| + if (options.sourceMapIncludeSources) {
|
| + for (var file in sourcesContent) {
|
| + if (sourcesContent.hasOwnProperty(file)) {
|
| + output.source_map.get().setSourceContent(file, sourcesContent[file]);
|
| + }
|
| + }
|
| + }
|
| +
|
| + }
|
| + if (options.output) {
|
| + UglifyJS.merge(output, options.output);
|
| + }
|
| + var stream = UglifyJS.OutputStream(output);
|
| + toplevel.print(stream);
|
| +
|
| + if(options.outSourceMap){
|
| + stream += "\n//# sourceMappingURL=" + options.outSourceMap;
|
| + }
|
| +
|
| + return {
|
| + code : stream + "",
|
| + map : output.source_map + ""
|
| + };
|
| +};
|
| +
|
| +// exports.describe_ast = function() {
|
| +// function doitem(ctor) {
|
| +// var sub = {};
|
| +// ctor.SUBCLASSES.forEach(function(ctor){
|
| +// sub[ctor.TYPE] = doitem(ctor);
|
| +// });
|
| +// var ret = {};
|
| +// if (ctor.SELF_PROPS.length > 0) ret.props = ctor.SELF_PROPS;
|
| +// if (ctor.SUBCLASSES.length > 0) ret.sub = sub;
|
| +// return ret;
|
| +// }
|
| +// return doitem(UglifyJS.AST_Node).sub;
|
| +// }
|
| +
|
| +exports.describe_ast = function() {
|
| + var out = UglifyJS.OutputStream({ beautify: true });
|
| + function doitem(ctor) {
|
| + out.print("AST_" + ctor.TYPE);
|
| + var props = ctor.SELF_PROPS.filter(function(prop){
|
| + return !/^\$/.test(prop);
|
| + });
|
| + if (props.length > 0) {
|
| + out.space();
|
| + out.with_parens(function(){
|
| + props.forEach(function(prop, i){
|
| + if (i) out.space();
|
| + out.print(prop);
|
| + });
|
| + });
|
| + }
|
| + if (ctor.documentation) {
|
| + out.space();
|
| + out.print_string(ctor.documentation);
|
| + }
|
| + if (ctor.SUBCLASSES.length > 0) {
|
| + out.space();
|
| + out.with_block(function(){
|
| + ctor.SUBCLASSES.forEach(function(ctor, i){
|
| + out.indent();
|
| + doitem(ctor);
|
| + out.newline();
|
| + });
|
| + });
|
| + }
|
| + };
|
| + doitem(UglifyJS.AST_Node);
|
| + return out + "";
|
| +};
|
|
|