diff --git a/packages/babel-preset-env/package.json b/packages/babel-preset-env/package.json index 28696cac1ab0..1fdbaa331aa1 100644 --- a/packages/babel-preset-env/package.json +++ b/packages/babel-preset-env/package.json @@ -55,6 +55,7 @@ "@babel/plugin-transform-destructuring": "workspace:^", "@babel/plugin-transform-dotall-regex": "workspace:^", "@babel/plugin-transform-duplicate-keys": "workspace:^", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "workspace:^", "@babel/plugin-transform-dynamic-import": "workspace:^", "@babel/plugin-transform-exponentiation-operator": "workspace:^", "@babel/plugin-transform-export-namespace-from": "workspace:^", diff --git a/packages/babel-preset-env/src/available-plugins.ts b/packages/babel-preset-env/src/available-plugins.ts index 9ac442e5eb78..c7fb933980e1 100644 --- a/packages/babel-preset-env/src/available-plugins.ts +++ b/packages/babel-preset-env/src/available-plugins.ts @@ -27,6 +27,7 @@ import transformComputedProperties from "@babel/plugin-transform-computed-proper import transformDestructuring from "@babel/plugin-transform-destructuring"; import transformDotallRegex from "@babel/plugin-transform-dotall-regex"; import transformDuplicateKeys from "@babel/plugin-transform-duplicate-keys"; +import transformDuplicateNamedCapturingGroupsRegex from "@babel/plugin-transform-duplicate-named-capturing-groups-regex"; import transformExponentialOperator from "@babel/plugin-transform-exponentiation-operator"; import transformForOf from "@babel/plugin-transform-for-of"; import transformFunctionName from "@babel/plugin-transform-function-name"; @@ -93,6 +94,7 @@ const availablePlugins = { "transform-destructuring": () => transformDestructuring, "transform-dotall-regex": () => transformDotallRegex, "transform-duplicate-keys": () => transformDuplicateKeys, + "transform-duplicate-named-capturing-groups-regex": () => transformDuplicateNamedCapturingGroupsRegex, "transform-dynamic-import": () => proposalDynamicImport, "transform-exponentiation-operator": () => transformExponentialOperator, "transform-export-namespace-from": () => proposalExportNamespaceFrom, diff --git a/packages/babel-preset-env/test/fixtures/preset-options-babel-7/duplicate-named-capturing-groups-regex-chrome-120/input.js b/packages/babel-preset-env/test/fixtures/preset-options-babel-7/duplicate-named-capturing-groups-regex-chrome-120/input.js new file mode 100644 index 000000000000..32c1bce8afd4 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options-babel-7/duplicate-named-capturing-groups-regex-chrome-120/input.js @@ -0,0 +1 @@ +/(?[0-9]{4})-[0-9]{2}|[0-9]{2}-(?[0-9]{4})/.test("12-1995"); \ No newline at end of file diff --git a/packages/babel-preset-env/test/fixtures/preset-options-babel-7/duplicate-named-capturing-groups-regex-chrome-120/options.json b/packages/babel-preset-env/test/fixtures/preset-options-babel-7/duplicate-named-capturing-groups-regex-chrome-120/options.json new file mode 100644 index 000000000000..bd350cf7488f --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options-babel-7/duplicate-named-capturing-groups-regex-chrome-120/options.json @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "env", + { + "targets": "chrome 120" + } + ] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/duplicate-named-capturing-groups-regex-chrome-123/input.js b/packages/babel-preset-env/test/fixtures/preset-options/duplicate-named-capturing-groups-regex-chrome-123/input.js new file mode 100644 index 000000000000..32c1bce8afd4 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/duplicate-named-capturing-groups-regex-chrome-123/input.js @@ -0,0 +1 @@ +/(?[0-9]{4})-[0-9]{2}|[0-9]{2}-(?[0-9]{4})/.test("12-1995"); \ No newline at end of file diff --git a/packages/babel-preset-env/test/fixtures/preset-options/duplicate-named-capturing-groups-regex-chrome-123/options.json b/packages/babel-preset-env/test/fixtures/preset-options/duplicate-named-capturing-groups-regex-chrome-123/options.json new file mode 100644 index 000000000000..419c56c5f8ae --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/duplicate-named-capturing-groups-regex-chrome-123/options.json @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "env", + { + "targets": "chrome 123" + } + ] + ] +} diff --git a/packages/babel-preset-env/tsconfig.json b/packages/babel-preset-env/tsconfig.json index 0c4be133d82d..2a5246823fcc 100644 --- a/packages/babel-preset-env/tsconfig.json +++ b/packages/babel-preset-env/tsconfig.json @@ -67,6 +67,9 @@ { "path": "../../packages/babel-plugin-transform-duplicate-keys" }, + { + "path": "../../packages/babel-plugin-transform-duplicate-named-capturing-groups-regex" + }, { "path": "../../packages/babel-plugin-transform-dynamic-import" }, diff --git a/yarn.lock b/yarn.lock index 2b9dac9c2ad9..f4105c25f611 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4013,6 +4013,7 @@ __metadata: "@babel/plugin-transform-destructuring": "workspace:^" "@babel/plugin-transform-dotall-regex": "workspace:^" "@babel/plugin-transform-duplicate-keys": "workspace:^" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "workspace:^" "@babel/plugin-transform-dynamic-import": "workspace:^" "@babel/plugin-transform-exponentiation-operator": "workspace:^" "@babel/plugin-transform-export-namespace-from": "workspace:^"