Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(355)

Unified Diff: node_modules/vulcanize/node_modules/uglify-js/tools/node.js

Issue 800513006: Added vulcanize under third_party/npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 + "";
+};

Powered by Google App Engine
This is Rietveld 408576698