Backed out changeset db8638eebe2d

Reviewed By: alexeylang

Differential Revision: D5246311

fbshipit-source-id: cb12964c27a6d1e6fa719a979a8f0ebcc8efae8a
This commit is contained in:
David Aurelio 2017-06-14 09:52:37 -07:00 committed by Facebook Github Bot
parent 1a286a9945
commit 1e6b34f415
7 changed files with 141 additions and 118 deletions

113
flow-typed/uglify.js vendored
View File

@ -9,60 +9,6 @@
'use strict'; 'use strict';
type _Input =
| string // code or file name
| Array<string> // array of file names
| {[filename: string]: string}; // file names and corresponding code
type _Options = {
// https://github.com/mishoo/UglifyJS2/tree/harmony#compress-options
compress?: false | Object,
ie8?: boolean,
mangle?: boolean | {
eval?: boolean,
keep_fnames?: boolean,
properties?: boolean | {
builtins?: boolean,
debug?: boolean,
keep_quoted?: boolean,
regex?: RegExp,
reserved?: Array<string>,
},
reserved?: Array<string>,
safari10?: boolean,
toplevel?: boolean,
},
output?: {
ascii_only?: boolean,
beautify?: boolean,
bracketize?: boolean,
comments?: boolean | 'all' | 'some' | RegExp | Function,
ecma?: 5 | 6,
indent_level?: number,
indent_start?: number,
inline_script?: number,
keep_quoted_props?: boolean,
max_line_len?: false | number,
preamble?: string,
preserve_line?: boolean,
quote_keys?: boolean,
quote_style?: 0 | 1 | 2 | 3,
semicolons?: boolean,
shebang?: boolean,
width?: number,
wrap_iife?: boolean,
},
parse?: {
bare_returns: boolean,
html5_comments: boolean,
shebang: boolean,
},
sourceMap?: false,
toplevel?: boolean,
warnings?: boolean | 'verbose',
};
type _SourceMap = { type _SourceMap = {
file?: string, file?: string,
mappings: string, mappings: string,
@ -73,24 +19,53 @@ type _SourceMap = {
version: number, version: number,
}; };
type _SourceMapOptions = true | { type _Result<MapT> = {
filename?: string, code: string,
content?: ?string | _SourceMap, map: MapT,
includeSources?: boolean,
root?: string,
url?: string,
}; };
type _Error = {|error: Error|}; type _Options = {
type _Result = {|code: string, warnings?: Array<string>|}; compress?: false | {||},
fromString?: boolean,
inSourceMap?: string | ?_SourceMap,
mangle?: boolean | {|
except?: Array<string>,
toplevel?: boolean,
eval?: boolean,
keep_fnames?: boolean,
|},
mangleProperties?: boolean | {|
regex?: RegExp,
ignore_quoted?: boolean,
debug?: false | string,
|},
outFileName?: string,
output?: {|
ascii_only?: boolean,
screw_ie8?: boolean,
|},
parse?: {|
strict?: boolean,
bare_returns?: boolean,
filename?: string,
|},
sourceMapUrl?: string,
sourceRoot?: string,
warnings?: boolean,
};
declare module 'uglify-es' { type _Input =
| string // code or file name
| Array<string> // array of file names
| {[filename: string]: string}; // file names and corresponding code
declare module 'uglify-js' {
declare function minify( declare function minify(
code: _Input, fileOrFilesOrCode: _Input,
options?: _Options, options?: _Options & {outSourceMap?: ?false | ''},
): _Error | _Result; ): _Result<void>;
declare function minify( declare function minify(
code: _Input, fileOrFilesOrCode: _Input,
options: {..._Options, sourceMap: _SourceMapOptions}, options?: _Options & {outSourceMap: true | string},
): _Error | {|..._Result, map: string|}; ): _Result<string>;
} }

View File

@ -39,7 +39,7 @@
"source-map": "^0.5.6", "source-map": "^0.5.6",
"temp": "0.8.3", "temp": "0.8.3",
"throat": "^3.0.0", "throat": "^3.0.0",
"uglify-es": "^3.0.15", "uglify-js": "2.7.5",
"write-file-atomic": "^1.2.0", "write-file-atomic": "^1.2.0",
"xpipe": "^1.0.5" "xpipe": "^1.0.5"
} }

View File

@ -11,7 +11,7 @@
jest jest
.setMock('worker-farm', () => () => undefined) .setMock('worker-farm', () => () => undefined)
.setMock('../../worker-farm', () => () => undefined) .setMock('../../worker-farm', () => () => undefined)
.setMock('../../JSTransformer/worker/minify') .setMock('uglify-js')
.mock('image-size') .mock('image-size')
.mock('fs') .mock('fs')
.mock('os') .mock('os')

View File

@ -10,7 +10,7 @@
*/ */
'use strict'; 'use strict';
jest.mock('uglify-es', () => ({ jest.mock('uglify-js', () => ({
minify: jest.fn(code => { minify: jest.fn(code => {
return { return {
code: code.replace(/(^|\W)\s+/g, '$1'), code: code.replace(/(^|\W)\s+/g, '$1'),
@ -29,7 +29,7 @@ describe('Minification:', () => {
let uglify; let uglify;
beforeEach(() => { beforeEach(() => {
uglify = require('uglify-es'); uglify = require('uglify-js');
uglify.minify.mockClear(); uglify.minify.mockClear();
uglify.minify.mockReturnValue({code: '', map: '{}'}); uglify.minify.mockReturnValue({code: '', map: '{}'});
map = {version: 3, sources: ['?'], mappings: ''}; map = {version: 3, sources: ['?'], mappings: ''};
@ -40,10 +40,9 @@ describe('Minification:', () => {
expect(uglify.minify).toBeCalledWith( expect(uglify.minify).toBeCalledWith(
code, code,
objectContaining({ objectContaining({
sourceMap: { fromString: true,
content: map, inSourceMap: map,
includeSources: true, outSourceMap: true,
},
}), }),
); );
}); });
@ -53,10 +52,8 @@ describe('Minification:', () => {
expect(uglify.minify).toBeCalledWith( expect(uglify.minify).toBeCalledWith(
code, code,
objectContaining({ objectContaining({
sourceMap: { fromString: true,
content: undefined, outSourceMap: true,
includeSources: true,
},
}), }),
); );
}); });

View File

@ -12,7 +12,7 @@
'use strict'; 'use strict';
const uglify = require('uglify-es'); const uglify = require('uglify-js');
import type {MappingsMap} from '../../lib/SourceMap'; import type {MappingsMap} from '../../lib/SourceMap';
type ResultWithMap = { type ResultWithMap = {
@ -20,6 +20,11 @@ type ResultWithMap = {
map: MappingsMap, map: MappingsMap,
}; };
const UGLIFY_JS_OUTPUT_OPTIONS = {
ascii_only: true,
screw_ie8: true,
};
function noSourceMap(code: string): string { function noSourceMap(code: string): string {
return minify(code).code; return minify(code).code;
} }
@ -37,28 +42,12 @@ function withSourceMap(
} }
function minify(inputCode: string, inputMap: ?MappingsMap) { function minify(inputCode: string, inputMap: ?MappingsMap) {
const result = uglify.minify(inputCode, { return uglify.minify(inputCode, {
mangle: {toplevel: true}, fromString: true,
output: { inSourceMap: inputMap,
ascii_only: true, outSourceMap: true,
quote_style: 3, output: UGLIFY_JS_OUTPUT_OPTIONS,
wrap_iife: true,
},
sourceMap: {
content: inputMap,
includeSources: true,
},
toplevel: true,
}); });
if (result.error) {
throw result.error;
}
return {
code: result.code,
map: result.map,
};
} }
module.exports = { module.exports = {

View File

@ -12,7 +12,7 @@
jest.mock('../../worker-farm', () => () => () => {}) jest.mock('../../worker-farm', () => () => () => {})
.mock('worker-farm', () => () => () => {}) .mock('worker-farm', () => () => () => {})
.mock('timers', () => ({setImmediate: fn => setTimeout(fn, 0)})) .mock('timers', () => ({setImmediate: fn => setTimeout(fn, 0)}))
.mock('../../JSTransformer/worker/minify') .mock('uglify-js')
.mock('crypto') .mock('crypto')
.mock( .mock(
'../symbolicate', '../symbolicate',

View File

@ -13,6 +13,14 @@ ajv@^4.9.1:
co "^4.6.0" co "^4.6.0"
json-stable-stringify "^1.0.1" json-stable-stringify "^1.0.1"
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
dependencies:
kind-of "^3.0.2"
longest "^1.0.1"
repeat-string "^1.5.2"
ansi-regex@^2.0.0: ansi-regex@^2.0.0:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@ -68,6 +76,10 @@ async@^2.4.0:
dependencies: dependencies:
lodash "^4.14.0" lodash "^4.14.0"
async@~0.2.6:
version "0.2.10"
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
asynckit@^0.4.0: asynckit@^0.4.0:
version "0.4.0" version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@ -646,10 +658,21 @@ buffer-shims@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
caseless@~0.12.0: caseless@~0.12.0:
version "0.12.0" version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
center-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
dependencies:
align-text "^0.1.3"
lazy-cache "^1.0.3"
chalk@^1.1.0, chalk@^1.1.1: chalk@^1.1.0, chalk@^1.1.1:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@ -660,6 +683,14 @@ chalk@^1.1.0, chalk@^1.1.1:
strip-ansi "^3.0.0" strip-ansi "^3.0.0"
supports-color "^2.0.0" supports-color "^2.0.0"
cliui@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
dependencies:
center-align "^0.1.1"
right-align "^0.1.1"
wordwrap "0.0.2"
co@^4.6.0: co@^4.6.0:
version "4.6.0" version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@ -670,12 +701,6 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies: dependencies:
delayed-stream "~1.0.0" delayed-stream "~1.0.0"
commander@~2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies:
graceful-readlink ">= 1.0.0"
concat-map@0.0.1: concat-map@0.0.1:
version "0.0.1" version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -722,6 +747,10 @@ debug@^2.1.1, debug@^2.2.0:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
decamelize@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
delayed-stream@~1.0.0: delayed-stream@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@ -907,10 +936,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.3:
version "4.1.11" version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
"graceful-readlink@>= 1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
har-schema@^1.0.5: har-schema@^1.0.5:
version "1.0.5" version "1.0.5"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
@ -1140,6 +1165,10 @@ kind-of@^3.0.2:
dependencies: dependencies:
is-buffer "^1.0.2" is-buffer "^1.0.2"
lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
left-pad@^1.1.3: left-pad@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
@ -1148,6 +1177,10 @@ lodash@^4.14.0, lodash@^4.16.6, lodash@^4.2.0, lodash@^4.6.1:
version "4.17.4" version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
loose-envify@^1.0.0: loose-envify@^1.0.0:
version "1.3.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
@ -1468,6 +1501,12 @@ request@^2.79.0:
tunnel-agent "^0.6.0" tunnel-agent "^0.6.0"
uuid "^3.0.0" uuid "^3.0.0"
right-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
dependencies:
align-text "^0.1.1"
rimraf@^2.5.4: rimraf@^2.5.4:
version "2.6.1" version "2.6.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
@ -1608,12 +1647,18 @@ ua-parser-js@^0.7.9:
version "0.7.12" version "0.7.12"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
uglify-es@^3.0.15: uglify-js@2.7.5:
version "3.0.15" version "2.7.5"
resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.0.15.tgz#4a23d0e9cb5f25f7bb3f1f0bbe0bb364e600d047" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
dependencies: dependencies:
commander "~2.9.0" async "~0.2.6"
source-map "~0.5.1" source-map "~0.5.1"
uglify-to-browserify "~1.0.0"
yargs "~3.10.0"
uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
util-deprecate@~1.0.1: util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
@ -1643,6 +1688,14 @@ whatwg-fetch@>=0.10.0:
version "2.0.3" version "2.0.3"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
worker-farm@^1.3.1: worker-farm@^1.3.1:
version "1.3.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff"
@ -1669,3 +1722,12 @@ xpipe@^1.0.5:
"xtend@>=4.0.0 <4.1.0-0": "xtend@>=4.0.0 <4.1.0-0":
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
yargs@~3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
dependencies:
camelcase "^1.0.2"
cliui "^2.1.0"
decamelize "^1.0.0"
window-size "0.1.0"