From 7d58fda8ef481316f30fa1b1af5437cbf48fc6ad Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Sun, 16 Sep 2018 17:06:26 +0300 Subject: [PATCH] Allow to pass not string values to worker --- index.js | 13 ++++++++----- package.json | 1 + test/test.js | 11 +++++++++++ transform.js | 3 ++- yarn.lock | 4 ++++ 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 2ebd1d0..dfb9df9 100644 --- a/index.js +++ b/index.js @@ -1,16 +1,19 @@ const { codeFrameColumns } = require("@babel/code-frame"); const Worker = require("jest-worker").default; +const serialize = require("serialize-javascript"); function uglify(userOptions = {}) { if (userOptions.sourceMap != null) { throw Error("sourceMap option is removed, use sourcemap instead"); } - const minifierOptions = Object.assign({}, userOptions, { - sourceMap: userOptions.sourcemap !== false, - sourcemap: undefined, - numWorkers: undefined - }); + const minifierOptions = serialize( + Object.assign({}, userOptions, { + sourceMap: userOptions.sourcemap !== false, + sourcemap: undefined, + numWorkers: undefined + }) + ); return { name: "uglify", diff --git a/package.json b/package.json index 54aed35..7acd361 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "dependencies": { "@babel/code-frame": "^7.0.0", "jest-worker": "^23.2.0", + "serialize-javascript": "^1.5.0", "uglify-js": "^3.4.9" }, "peerDependencies": { diff --git a/test/test.js b/test/test.js index 11e10ca..5eadae2 100644 --- a/test/test.js +++ b/test/test.js @@ -90,3 +90,14 @@ test("works with code splitting", async () => { }); expect(newOutput).toMatchSnapshot(); }); + +test("allow to pass not string values to worker", async () => { + const bundle = await rollup({ + input: "test/fixtures/unminified.js", + plugins: [uglify({ mangle: { properties: { regex: /^_/ } } })] + }); + const result = await bundle.generate({ format: "cjs" }); + expect(result.code).toEqual( + '"use strict";window.a=5,window.a<3&&console.log(4);\n' + ); +}); diff --git a/transform.js b/transform.js index 3d55371..37e643f 100644 --- a/transform.js +++ b/transform.js @@ -1,6 +1,7 @@ const { minify } = require("uglify-js"); -const transform = (code, options) => { +const transform = (code, optionsString) => { + const options = eval(`(${optionsString})`) const result = minify(code, options); if (result.error) { throw result.error; diff --git a/yarn.lock b/yarn.lock index 911e64a..68ca15c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3115,6 +3115,10 @@ semver@^5.5.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" +serialize-javascript@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"