From 673c623ec94a8daf6bce79b87b5f1f6c8f5bca3d Mon Sep 17 00:00:00 2001 From: Sneh Khatri Date: Mon, 13 Dec 2021 14:44:02 +0530 Subject: [PATCH 1/4] Fix: unicode encoding function name handling --- packages/babel-helper-function-name/src/index.ts | 2 ++ .../test/fixtures/function-name/unicode-encoding/input.js | 3 +++ .../test/fixtures/function-name/unicode-encoding/options.json | 4 ++++ .../test/fixtures/function-name/unicode-encoding/output.js | 3 +++ 4 files changed, 12 insertions(+) create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js diff --git a/packages/babel-helper-function-name/src/index.ts b/packages/babel-helper-function-name/src/index.ts index 16c3fcc6fad5..e6ea1677a45c 100644 --- a/packages/babel-helper-function-name/src/index.ts +++ b/packages/babel-helper-function-name/src/index.ts @@ -223,6 +223,8 @@ export default function ( name = id.name; } + if (isFunction(node) && /[\u{10000}-\u{10ffff}]/u.test(name)) return; + if (name === undefined) { return; } diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js new file mode 100644 index 000000000000..1ce32e6bf532 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js @@ -0,0 +1,3 @@ +var o = { + "\uD835\uDC9C"() {} +}; \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json new file mode 100644 index 000000000000..20756361500f --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "unambiguous", + "presets": ["env"] +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js new file mode 100644 index 000000000000..bf365d536975 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js @@ -0,0 +1,3 @@ +var o = { + "\uD835\uDC9C": function () {} +}; From af6dcf7895b497080d54557977792fe7d0d26571 Mon Sep 17 00:00:00 2001 From: Sneh Khatri Date: Wed, 15 Dec 2021 12:52:03 +0530 Subject: [PATCH 2/4] supportUnicodeId currently not working --- packages/babel-helper-function-name/src/index.ts | 6 +++++- packages/babel-plugin-transform-function-name/package.json | 3 ++- packages/babel-plugin-transform-function-name/src/index.ts | 7 ++++++- .../fixtures/function-name/unicode-encoding/options.json | 2 +- .../function-name/unicode-id-not-supported/input.js | 3 +++ .../function-name/unicode-id-not-supported/options.json | 4 ++++ .../function-name/unicode-id-not-supported/output.js | 4 ++++ .../fixtures/function-name/unicode-id-supported/input.js | 3 +++ .../function-name/unicode-id-supported/options.json | 4 ++++ .../fixtures/function-name/unicode-id-supported/output.js | 4 ++++ 10 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/input.js create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/input.js create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json create mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js diff --git a/packages/babel-helper-function-name/src/index.ts b/packages/babel-helper-function-name/src/index.ts index e6ea1677a45c..3c8b7618e578 100644 --- a/packages/babel-helper-function-name/src/index.ts +++ b/packages/babel-helper-function-name/src/index.ts @@ -172,6 +172,7 @@ function visit(node, name, scope) { /** * @param {NodePath} param0 * @param {Boolean} localBinding whether a name could shadow a self-reference (e.g. converting arrow function) + * @param {Boolean} supportUnicodeId whether a target support unicodeId or not */ export default function ( { @@ -181,6 +182,7 @@ export default function ( id, }: { node: any; parent?: any; scope: any; id?: any }, localBinding = false, + supportUnicodeId = false, ) { // has an `id` so we don't need to infer one if (node.id) return; @@ -223,7 +225,9 @@ export default function ( name = id.name; } - if (isFunction(node) && /[\u{10000}-\u{10ffff}]/u.test(name)) return; + if (!supportUnicodeId && isFunction(node) && /[\uD800-\uDFFF]/.test(name)) { + return; + } if (name === undefined) { return; diff --git a/packages/babel-plugin-transform-function-name/package.json b/packages/babel-plugin-transform-function-name/package.json index 6b1488370826..71934b4795ec 100644 --- a/packages/babel-plugin-transform-function-name/package.json +++ b/packages/babel-plugin-transform-function-name/package.json @@ -18,7 +18,8 @@ ], "dependencies": { "@babel/helper-function-name": "workspace:^", - "@babel/helper-plugin-utils": "workspace:^" + "@babel/helper-plugin-utils": "workspace:^", + "@babel/helper-compilation-targets": "workspace:^" }, "peerDependencies": { "@babel/core": "^7.0.0-0" diff --git a/packages/babel-plugin-transform-function-name/src/index.ts b/packages/babel-plugin-transform-function-name/src/index.ts index 4c9c56f083e9..c3a7a9908ed1 100644 --- a/packages/babel-plugin-transform-function-name/src/index.ts +++ b/packages/babel-plugin-transform-function-name/src/index.ts @@ -1,8 +1,13 @@ +import { isRequired } from "@babel/helper-compilation-targets"; import { declare } from "@babel/helper-plugin-utils"; import nameFunction from "@babel/helper-function-name"; export default declare(api => { api.assertVersion(7); + const supportUnicodeId = !isRequired( + "transform-unicode-escapes", + api.targets(), + ); return { name: "transform-function-name", @@ -20,7 +25,7 @@ export default declare(api => { ObjectProperty(path) { const value = path.get("value"); if (value.isFunction()) { - const newNode = nameFunction(value); + const newNode = nameFunction(value, null, supportUnicodeId); if (newNode) value.replaceWith(newNode); } }, diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json index 20756361500f..2b84322a068a 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json @@ -1,4 +1,4 @@ { - "sourceType": "unambiguous", + "plugins": ["transform-unicode-escapes"], "presets": ["env"] } \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/input.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/input.js new file mode 100644 index 000000000000..1ce32e6bf532 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/input.js @@ -0,0 +1,3 @@ +var o = { + "\uD835\uDC9C"() {} +}; \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json new file mode 100644 index 000000000000..1b914e8679fa --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["transform-unicode-escapes"], + "targets": { "firefox": 60 } +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js new file mode 100644 index 000000000000..66c6a6190d88 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js @@ -0,0 +1,4 @@ +var o = { + "\uD835\uDC9C"() {} + +}; diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/input.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/input.js new file mode 100644 index 000000000000..1ce32e6bf532 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/input.js @@ -0,0 +1,3 @@ +var o = { + "\uD835\uDC9C"() {} +}; \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json new file mode 100644 index 000000000000..f8f61efb9d16 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["transform-unicode-escapes"], + "targets": { "firefox": 50 } +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js new file mode 100644 index 000000000000..66c6a6190d88 --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js @@ -0,0 +1,4 @@ +var o = { + "\uD835\uDC9C"() {} + +}; From 70c508fbbf0d82a419d5aaf32a79729d9618b3be Mon Sep 17 00:00:00 2001 From: Sneh Khatri Date: Fri, 17 Dec 2021 13:07:00 +0530 Subject: [PATCH 3/4] unicode encoding with transform-function-name working --- packages/babel-plugin-transform-function-name/package.json | 4 ++-- .../test/fixtures/function-name/unicode-encoding/options.json | 3 +-- .../function-name/unicode-id-not-supported/options.json | 4 ++-- .../fixtures/function-name/unicode-id-not-supported/output.js | 3 +-- .../fixtures/function-name/unicode-id-supported/options.json | 4 ++-- .../fixtures/function-name/unicode-id-supported/output.js | 3 +-- yarn.lock | 1 + 7 files changed, 10 insertions(+), 12 deletions(-) diff --git a/packages/babel-plugin-transform-function-name/package.json b/packages/babel-plugin-transform-function-name/package.json index 71934b4795ec..bdf9a5f7184c 100644 --- a/packages/babel-plugin-transform-function-name/package.json +++ b/packages/babel-plugin-transform-function-name/package.json @@ -17,9 +17,9 @@ "babel-plugin" ], "dependencies": { + "@babel/helper-compilation-targets": "workspace:^", "@babel/helper-function-name": "workspace:^", - "@babel/helper-plugin-utils": "workspace:^", - "@babel/helper-compilation-targets": "workspace:^" + "@babel/helper-plugin-utils": "workspace:^" }, "peerDependencies": { "@babel/core": "^7.0.0-0" diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json index 2b84322a068a..b012d7e7e3c7 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json @@ -1,4 +1,3 @@ { - "plugins": ["transform-unicode-escapes"], - "presets": ["env"] + "plugins": ["transform-function-name", "transform-shorthand-properties"] } \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json index 1b914e8679fa..0fc67a40d23e 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/options.json @@ -1,4 +1,4 @@ { - "plugins": ["transform-unicode-escapes"], - "targets": { "firefox": 60 } + "plugins": ["transform-function-name", "transform-shorthand-properties"], + "targets": { "firefox": 52 } } \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js index 66c6a6190d88..bf365d536975 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-not-supported/output.js @@ -1,4 +1,3 @@ var o = { - "\uD835\uDC9C"() {} - + "\uD835\uDC9C": function () {} }; diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json index f8f61efb9d16..ed532b7396fc 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/options.json @@ -1,4 +1,4 @@ { - "plugins": ["transform-unicode-escapes"], - "targets": { "firefox": 50 } + "plugins": ["transform-function-name", "transform-shorthand-properties"], + "targets": { "firefox": 60 } } \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js index 66c6a6190d88..9ef7f98005fe 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-id-supported/output.js @@ -1,4 +1,3 @@ var o = { - "\uD835\uDC9C"() {} - + "\uD835\uDC9C": function 𝒜() {} }; diff --git a/yarn.lock b/yarn.lock index 437c47af55c8..7be8b34d2146 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2438,6 +2438,7 @@ __metadata: resolution: "@babel/plugin-transform-function-name@workspace:packages/babel-plugin-transform-function-name" dependencies: "@babel/core": "workspace:^" + "@babel/helper-compilation-targets": "workspace:^" "@babel/helper-function-name": "workspace:^" "@babel/helper-plugin-test-runner": "workspace:^" "@babel/helper-plugin-utils": "workspace:^" From feaed1392ace7654416cad1f2bb0a8008cb635ba Mon Sep 17 00:00:00 2001 From: Sneh Khatri Date: Mon, 20 Dec 2021 11:37:13 +0530 Subject: [PATCH 4/4] unicode-encoding test removed --- packages/babel-helper-function-name/src/index.ts | 4 ++-- packages/babel-plugin-transform-function-name/src/index.ts | 2 +- .../test/fixtures/function-name/unicode-encoding/input.js | 3 --- .../test/fixtures/function-name/unicode-encoding/options.json | 3 --- .../test/fixtures/function-name/unicode-encoding/output.js | 3 --- 5 files changed, 3 insertions(+), 12 deletions(-) delete mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js delete mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json delete mode 100644 packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js diff --git a/packages/babel-helper-function-name/src/index.ts b/packages/babel-helper-function-name/src/index.ts index 3c8b7618e578..09dd4c61bd53 100644 --- a/packages/babel-helper-function-name/src/index.ts +++ b/packages/babel-helper-function-name/src/index.ts @@ -225,11 +225,11 @@ export default function ( name = id.name; } - if (!supportUnicodeId && isFunction(node) && /[\uD800-\uDFFF]/.test(name)) { + if (name === undefined) { return; } - if (name === undefined) { + if (!supportUnicodeId && isFunction(node) && /[\uD800-\uDFFF]/.test(name)) { return; } diff --git a/packages/babel-plugin-transform-function-name/src/index.ts b/packages/babel-plugin-transform-function-name/src/index.ts index c3a7a9908ed1..7bdae7fca350 100644 --- a/packages/babel-plugin-transform-function-name/src/index.ts +++ b/packages/babel-plugin-transform-function-name/src/index.ts @@ -25,7 +25,7 @@ export default declare(api => { ObjectProperty(path) { const value = path.get("value"); if (value.isFunction()) { - const newNode = nameFunction(value, null, supportUnicodeId); + const newNode = nameFunction(value, false, supportUnicodeId); if (newNode) value.replaceWith(newNode); } }, diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js deleted file mode 100644 index 1ce32e6bf532..000000000000 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/input.js +++ /dev/null @@ -1,3 +0,0 @@ -var o = { - "\uD835\uDC9C"() {} -}; \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json deleted file mode 100644 index b012d7e7e3c7..000000000000 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["transform-function-name", "transform-shorthand-properties"] -} \ No newline at end of file diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js deleted file mode 100644 index bf365d536975..000000000000 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/unicode-encoding/output.js +++ /dev/null @@ -1,3 +0,0 @@ -var o = { - "\uD835\uDC9C": function () {} -};