File: /home/f/r/e/frenchy/www/french-american.org/current/node_modules/uglyfly-js/lib/get_uglyfly.js
/***********************************************************************
Copyright 2014 (c) Saair Quaderi <saair.quaderi@gmail.com>
Copyright 2012-2013 (c) Mihai Bazon <mihai.bazon@gmail.com>
UglyflyJS sourcecode can be found here:
https://github.com/quaderi/uglyflyjs
UglyflyJS (by Saair) is a fork of UglifyJS2 (by Mihai Bazon)
Both libraries are released under the BSD 2-Clause License.
***********************************************************************/
/*globals define, module, require */
((typeof define === "function") ? define :
function () { "use strict"; require('./nd').apply(module, arguments); })(
"get_uglyfly",
[
"get_warn",
"merge",
"AST",
"Compressor",
"SourceMap",
"OutputStream",
"parse",
"add_compress_fns_to_AST",
"add_moz_fns_to_AST",
"add_output_fns_to_AST",
"add_scope_fns_to_AST",
"add_transform_fns_to_AST",
"add_wrap_fns_to_AST",
"describe_ast"
],
function (get_warn, merge, AST, Compressor, SourceMap, OutputStream, parse,
add_compress_fns_to_AST, add_moz_fns_to_AST, add_output_fns_to_AST,
add_scope_fns_to_AST, add_transform_fns_to_AST, add_wrap_fns_to_AST,
describe_ast) {
"use strict";
function get_uglyfly(MOZ_SourceMap, warn_callback, croak_callback) {
var u = {},
warn = get_warn(warn_callback);
add_moz_fns_to_AST(AST);
add_wrap_fns_to_AST(AST);
add_transform_fns_to_AST(AST);
add_scope_fns_to_AST(AST, warn);
add_output_fns_to_AST(AST);
add_compress_fns_to_AST(AST, warn_callback, croak_callback);
u.get_compressor = function (options, false_by_default) {
return new Compressor(options, false_by_default, warn, croak_callback);
};
u.get_source_map = function (options) {
return new SourceMap(MOZ_SourceMap, options);
};
u.get_output_stream = function (options) {
return new OutputStream(options, warn, croak_callback);
};
u.from_mozilla_ast = function (mozilla_ast) {
return AST.Node.from_mozilla_ast(mozilla_ast);
};
u.parse = function ($TEXT, options) {
return parse(AST, $TEXT, options);
};
u.describe_ast = function (output_stream) {
if (!output_stream instanceof OutputStream) {
output_stream = new OutputStream({
beautify: true
}, warn, croak_callback);
}
return describe_ast(AST, output_stream);
};
u.compress = function (toplevel, compressOptions, warningOptions) {
var options = {
warnings: warningOptions
};
toplevel.figure_out_scope(compressOptions);
toplevel = toplevel.transform(u.get_compressor(merge(options, compressOptions)));
return toplevel;
};
u.mangle = function (toplevel, mangleOptions) {
mangleOptions = mangleOptions || {};
toplevel.figure_out_scope(mangleOptions);
if (!mangleOptions.char_frequencies) {
toplevel.compute_char_frequency(mangleOptions);
}
toplevel.mangle_names(mangleOptions);
return toplevel;
};
u.process = function (toplevel, options, output) {
var stream,
js,
source_map,
results;
if (options.compress) {
u.compress(toplevel, options.compress, options.warnings);
}
if (options.mangle) {
u.mangle(toplevel, options.mangle);
}
output = output || {};
if (options.output) {
merge(output, options.output);
}
stream = u.get_output_stream(output);
toplevel.print(stream);
js = stream.toString();
source_map = output.source_map ? output.source_map.toString() : null;
if (options.sourceMapURL) {
js += '\n//# sourceMappingURL=' + options.sourceMapURL;
}
results = {};
results.js = js;
results.source_map = source_map;
return results;
};
return u;
}
return get_uglyfly;
}
);