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..70ecd949d527 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.git", + "directory": "packages/babel-plugin-transform-named-capturing-groups-regex" + }, "bugs": "https://github.com/babel/babel/issues", "dependencies": { - "regexp-tree": "^0.1.13" + "regexpu-core": "^4.6.0" }, "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" }