From 54a6bdff35afcdd1ff1dd280a6176d4b8fccbd4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 11 Sep 2019 10:45:58 -0400 Subject: [PATCH 1/4] refactor: replace regexp-tree by regexpu --- .../package.json | 2 +- .../src/index.js | 22 ++++++++++--------- .../escape-no-unicode-flag/options.json | 2 +- .../test/fixtures/wrapper/basic/output.js | 2 +- .../output.js | 2 +- .../fixtures/wrapper/test-method/output.js | 2 +- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json index 257f7e8f8a15..c26a3797bbe2 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json @@ -14,7 +14,7 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-named-capturing-groups-regex", "bugs": "https://github.com/babel/babel/issues", "dependencies": { - "regexp-tree": "^0.1.13" + "regexpu-core": "^4.5.4" }, "peerDependencies": { "@babel/core": "^7.0.0" diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/src/index.js b/packages/babel-plugin-transform-named-capturing-groups-regex/src/index.js index d646101852e0..148da9e99a55 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/src/index.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/src/index.js @@ -1,4 +1,4 @@ -import regexpTree from "regexp-tree"; +import rewritePattern from "regexpu-core"; export default function({ types: t }, options) { const { runtime = true } = options; @@ -19,16 +19,18 @@ export default function({ types: t }, options) { return; } - const result = regexpTree.compatTranspile(node.extra.raw, [ - "namedCapturingGroups", - ]); - const { namedCapturingGroups } = result.getExtra(); + const namedCapturingGroups = {}; + const result = rewritePattern(node.pattern, node.flags, { + namedGroup: true, + //todo: consider refactor `lookbehind` true as modular plugin + lookbehind: true, + onNamedGroup(name, index) { + namedCapturingGroups[name] = index; + }, + }); - if ( - namedCapturingGroups && - Object.keys(namedCapturingGroups).length > 0 - ) { - node.pattern = result.getSource(); + if (Object.keys(namedCapturingGroups).length > 0) { + node.pattern = result; if (runtime && !isRegExpTest(path)) { path.replaceWith( diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/syntax/escape-no-unicode-flag/options.json b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/syntax/escape-no-unicode-flag/options.json index 47dc981e754b..f41e9ff57d0e 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/syntax/escape-no-unicode-flag/options.json +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/syntax/escape-no-unicode-flag/options.json @@ -1,3 +1,3 @@ { - "throws": "invalid group Unicode name \"\\u{41}\", use `u` flag." + "throws": "Invalid escape sequence at position 3" } diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js index 2c6eed2f6dec..8aacc1649097 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js @@ -1,3 +1,3 @@ -"foo".match(babelHelpers.wrapRegExp(/(.)\1/, { +"foo".match(babelHelpers.wrapRegExp(/([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])\1/, { double: 1 })); diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js index f9da17ab47a1..e70a5b25a4d3 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js @@ -1,3 +1,3 @@ -"abba".match(babelHelpers.wrapRegExp(/(.)(.)\2\1/, { +"abba".match(babelHelpers.wrapRegExp(/([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])\2\1/, { n: 2 })); diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js index 808fc64e4f90..2964c187d6a8 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js @@ -1 +1 @@ -/^(.)\1$/.test("aa"); +/^([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])\1$/.test("aa"); From d9a384759bd8d59b754b306f81b73ef46a569b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 13 Sep 2019 09:53:14 -0400 Subject: [PATCH 2/4] chore: update regexpu-core to version 4.6.0 --- .../package.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json index c26a3797bbe2..b7b9f24fcd65 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json @@ -11,10 +11,14 @@ "regexp", "regular expressions" ], - "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-named-capturing-groups-regex", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel", + "directory": "packages/babel-plugin-transform-named-capturing-groups-regex" + }, "bugs": "https://github.com/babel/babel/issues", "dependencies": { - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" }, "peerDependencies": { "@babel/core": "^7.0.0" From fbf09b81177c98cf6365fe13b8f276fa5a0b0cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 13 Sep 2019 10:00:02 -0400 Subject: [PATCH 3/4] chore: restore test fixtures --- .../test/fixtures/wrapper/basic/output.js | 2 +- .../fixtures/wrapper/skips-anonymous-capturing-groups/output.js | 2 +- .../test/fixtures/wrapper/test-method/output.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js index 8aacc1649097..2c6eed2f6dec 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/basic/output.js @@ -1,3 +1,3 @@ -"foo".match(babelHelpers.wrapRegExp(/([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])\1/, { +"foo".match(babelHelpers.wrapRegExp(/(.)\1/, { double: 1 })); diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js index e70a5b25a4d3..f9da17ab47a1 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/skips-anonymous-capturing-groups/output.js @@ -1,3 +1,3 @@ -"abba".match(babelHelpers.wrapRegExp(/([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])\2\1/, { +"abba".match(babelHelpers.wrapRegExp(/(.)(.)\2\1/, { n: 2 })); diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js index 2964c187d6a8..808fc64e4f90 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/fixtures/wrapper/test-method/output.js @@ -1 +1 @@ -/^([\0-\t\x0B\f\x0E-\u2027\u202A-\uFFFF])\1$/.test("aa"); +/^(.)\1$/.test("aa"); From 64df5460bcf117480bda232920d10a3124d9401f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 13 Sep 2019 10:05:30 -0400 Subject: [PATCH 4/4] chore: update repository url --- .../package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json index b7b9f24fcd65..70ecd949d527 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json @@ -13,7 +13,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/babel/babel", + "url": "https://github.com/babel/babel.git", "directory": "packages/babel-plugin-transform-named-capturing-groups-regex" }, "bugs": "https://github.com/babel/babel/issues",