diff --git a/README.md b/README.md index 76cca364e..a40a43d24 100644 --- a/README.md +++ b/README.md @@ -79,8 +79,8 @@ Repository | Reference | Recent Version [select2-bootstrap-css][select2-bootstrap-cssGHUrl] | [Documentation][select2-bootstrap-cssDOCUrl] | [![NPM version][select2-bootstrap-cssNPMVersionImage]][select2-bootstrap-cssNPMUrl] [serve-favicon][serve-faviconGHUrl] | [Documentation][serve-faviconDOCUrl] | [![NPM version][serve-faviconNPMVersionImage]][serve-faviconNPMUrl] [spdx-license-ids][spdx-license-idsGHUrl] | [Documentation][spdx-license-idsDOCUrl] | [![NPM version][spdx-license-idsNPMVersionImage]][spdx-license-idsNPMUrl] +[terser][terserGHUrl] | [Documentation][terserDOCUrl] | [![NPM version][terserNPMVersionImage]][terserNPMUrl] [toobusy-js][toobusy-jsGHUrl]
⋔ [`harmony`][toobusy-jsGHUrlHarmonyUrl] | [Documentation][toobusy-jsDOCUrl] | [![NPM version][toobusy-jsNPMVersionImage]][toobusy-jsNPMUrl] -[uglifyJS][uglifyJS2GHUrl]
↳ [`harmony`][uglifyJS2GHHarmonyUrl] | [Documentation][uglifyJS2DOCUrl] [¹][uglifyJS2DOC1Url] | [![NPM version][uglifyJS2NPMVersionImage]][uglifyJS2NPMUrl]
↳ [![NPM Harmony version][uglifyJS2NPMHarmonyVersionImage]][uglifyJS2NPMHarmonyUrl] [underscore][underscoreGHUrl] | [Documentation][underscoreDOCUrl] | [![NPM version][underscoreNPMVersionImage]][underscoreNPMUrl] [useragent][useragentGHUrl] | [Documentation][useragentDOCUrl] | [![NPM version][useragentNPMVersionImage]][useragentNPMUrl] [@octokit/rest ᶠᵏᵃ ᵍᶦᵗʰᵘᵇ][githubGHUrl] | [Documentation][githubDOCUrl] | [![NPM version][githubNPMVersionImage]][githubNPMUrl] @@ -436,21 +436,17 @@ Outdated dependencies list can also be achieved with `$ npm --depth 0 outdated` [spdx-license-idsNPMUrl]: https://www.npmjs.com/package/spdx-license-ids [spdx-license-idsNPMVersionImage]: https://img.shields.io/npm/v/spdx-license-ids.svg?style=flat +[terserGHUrl]: https://github.com/fabiosantoscode/terser +[terserDOCUrl]: https://github.com/terser-js/terser/blob/master/README.md +[terserNPMUrl]: https://www.npmjs.com/package/terser +[terserNPMVersionImage]: https://img.shields.io/npm/v/terser.svg?style=flat + [toobusy-jsGHUrl]: https://github.com/STRML/node-toobusy [toobusy-jsGHUrlHarmonyUrl]: https://github.com/OpenUserJs/node-toobusy/tree/harmony [toobusy-jsDOCUrl]: https://github.com/STRML/node-toobusy/blob/master/README.md [toobusy-jsNPMUrl]: https://npmjs.com/package/toobusy-js [toobusy-jsNPMVersionImage]: https://img.shields.io/npm/v/toobusy-js.svg?style=flat -[uglifyJS2GHUrl]: https://github.com/mishoo/UglifyJS2 -[uglifyJS2GHHarmonyUrl]: https://github.com/mishoo/UglifyJS2/tree/harmony -[uglifyJS2DOCUrl]: https://github.com/mishoo/UglifyJS2/blob/master/README.md -[uglifyJS2DOC1Url]: http://lisperator.net/uglifyjs/ -[uglifyJS2NPMUrl]: https://www.npmjs.com/package/uglify-js -[uglifyJS2NPMHarmonyUrl]: https://www.npmjs.com/package/uglify-es -[uglifyJS2NPMVersionImage]: https://img.shields.io/npm/v/uglify-js.svg?style=flat -[uglifyJS2NPMHarmonyVersionImage]: https://img.shields.io/npm/v/uglify-es.svg?style=flat - [underscoreGHUrl]: https://github.com/jashkenas/underscore [underscoreDOCUrl]: http://underscorejs.org/ [underscoreNPMUrl]: https://www.npmjs.com/package/underscore diff --git a/app.js b/app.js index 0ff7e05f7..eeb993b22 100755 --- a/app.js +++ b/app.js @@ -28,7 +28,7 @@ var compression = require('compression'); var favicon = require('serve-favicon'); var minify = require('express-minify'); -var uglifyjs = require('uglify-js'); +var Terser = require('terser'); var lessMiddleware = require('less-middleware'); @@ -405,7 +405,7 @@ var minifyErrorHandler = function (aErr, aCallback) { }; app.use(minify({ - uglifyJsModule: uglifyjs, + uglifyJsModule: Terser, cache: './dev/cache/express-minify/release', onerror: minifyErrorHandler })); @@ -420,7 +420,7 @@ app.use(function(aReq, aRes, aNext) { /^\/mod\/removed\//.test(pathname) ) { aRes.minifyOptions = aRes.minifyOptions || {}; // Ensure object exists on response - aRes.minifyOptions.minify = false; // Skip using release minification because we control this with *uglify-es* + aRes.minifyOptions.minify = false; // Skip using release minification because we control this with *terser* } aNext(); }); diff --git a/controllers/scriptStorage.js b/controllers/scriptStorage.js index 854f699df..5d82ffec1 100644 --- a/controllers/scriptStorage.js +++ b/controllers/scriptStorage.js @@ -19,7 +19,7 @@ var stream = require('stream'); var peg = require('pegjs'); var AWS = require('aws-sdk'); var S3rver = require('s3rver'); -var UglifyJS = require("uglify-es"); +var Terser = require("terser"); var rfc2047 = require('rfc2047'); var mediaType = require('media-type'); var mediaDB = require('mime-db'); @@ -177,9 +177,9 @@ if (isPro) { }); } -// Get UglifyJS harmony installation datestamp once -var stats = fs.statSync('./node_modules/uglify-es/package.json'); -var mtimeUglifyJS = new Date(util.inspect(stats.mtime)); +// Get Terser installation datestamp once +var stats = fs.statSync('./node_modules/terser/package.json'); +var mtimeTerser = new Date(util.inspect(stats.mtime)); // Brute initialization var store = null; @@ -805,7 +805,7 @@ exports.sendScript = function (aReq, aRes, aNext) { } else { // Wants to try minified // - lastModified = moment(mtimeUglifyJS > aScript.updated ? mtimeUglifyJS : aScript.updated) + lastModified = moment(mtimeTerser > aScript.updated ? mtimeTerser : aScript.updated) .utc().format('ddd, DD MMM YYYY HH:mm:ss') + ' GMT'; // If already client-side... partial HTTP/1.1 Caching @@ -851,7 +851,7 @@ exports.sendScript = function (aReq, aRes, aNext) { msg = null; try { - result = UglifyJS.minify(source, { + result = Terser.minify(source, { parse: { bare_returns: true }, @@ -868,7 +868,7 @@ exports.sendScript = function (aReq, aRes, aNext) { if (result.error) { throw result.error; // Passthrough the error if present to our handler } else if(!result.code) { - throw new TypeError('UglifyJS error of `code` being absent'); + throw new TypeError('Terser error of `code` being absent'); } else { source = result.code; @@ -878,13 +878,15 @@ exports.sendScript = function (aReq, aRes, aNext) { ' .min.user.js"'; } } catch (aE) { // On any failure default to unminified - console.warn([ - 'MINIFICATION WARNING (harmony):', - ' message: ' + aE.message, - ' installName: ' + aScript.installName, - ' line: ' + aE.line + ' col: ' + aE.col + ' pos: ' + aE.pos - - ].join('\n')); + if (isDev) { + console.warn([ + 'MINIFICATION WARNING (harmony):', + ' message: ' + aE.message, + ' installName: ' + aScript.installName, + ' line: ' + aE.line + ' col: ' + aE.col + ' pos: ' + aE.pos + + ].join('\n')); + } // Set up a `Warning` header with Q encoding under RFC2047 msg = [ diff --git a/package.json b/package.json index cdcf56157..752236558 100644 --- a/package.json +++ b/package.json @@ -63,9 +63,8 @@ "select2-bootstrap-css": "1.4.6", "serve-favicon": "2.5.0", "spdx-license-ids": "3.0.1", + "terser": "3.8.2", "toobusy-js": "0.5.1", - "uglify-js": "3.3.9", - "uglify-es": "3.3.9", "underscore": "1.9.1", "useragent": "2.3.0" },