babel / babel/minify

Using minify get an endless loop of code

Open
#1,012 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
JavaScript
Stars
4.4k
Forks
217
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
I have a piece of code that uses regexp to get keys and values,if i use this plugin(Babel-minify),i get an endless loop of code,but if i use terser, i can get the right code

**To Reproduce**
Minimal code to reproduce the bug

```js
parseQuery = function (query) {
// input "a=1&b=2"
// output: {a: "1", b: "2"}
query = query.replace(/\?/g, '');
var reg = /([^=&\s]+)[=\s]*([^&\s]*)/g;
var obj = {};

while (reg.exec(query)) {
obj[RegExp.$1] = RegExp.$2;
}

return obj;
};
```
**Actual Output**

```js
parseQuery = function (a) {
a = a.replace(/\?/g, "");
for (var b = {};
/([^=&\s]+)[=\s]*([^&\s]*)/g.exec(a);) b[RegExp.$1] = RegExp.$2;
return b
};
```
if i input use parseQuery("a=1&b=2"), this is an endless loop that causes the page to get stuck

**Expected Output**
if i use terser

```js
parseQuery = function (e) {
e = e.replace(/\?/g, "");
for (var r = /([^=&\s]+)[=\s]*([^&\s]*)/g, g = {}; r.exec(e);) g[RegExp.$1] = RegExp.$2;
return g
};
```
input parseQuery("a=1&b=2"), i can get {a: "1", b: "2"} successfully
**Configuration**

How are you using babel-minify?

i use babel-minify CLI in global

```
npm install babel-minify -g
minify index.js -d lib
```

**Additional context**
i also use terser in global, but can get right code, It runs normally in the browser
```
npm install terser -g
terser --compress --mangle -- index.js
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.