New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge decorators into class features #16177
Merge decorators into class features #16177
Conversation
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/56027/ |
decoratorVersion === "2021-12" || | ||
decoratorVersion === "2022-03" || | ||
decoratorVersion === "2023-01" || | ||
decoratorVersion === "2023-05" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does this option interact with FEATURES
? For Babel 8, can we just ignore this option and rely on a feature flag?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good question, it should be wrapped within the FEATURES.Decorators
check. As for Babel 8, yes we can just ignore the decoratorVersion
and eventually remove it from the features plugin.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The FEATURES
is a per-file feature set that can be accessed in the plugin visitor, however createDecoratorTransform
returns a new plugin object, at this moment we have to temporarily use decoratorVersion
until we blend the decorator transform with other features.
Oh I could have just detected the feature
flag directly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! :)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@babel/traverse](https://babel.dev/docs/en/next/babel-traverse) ([source](https://github.com/babel/babel)) | resolutions | patch | [`7.23.5` -> `7.23.7`](https://renovatebot.com/diffs/npm/@babel%2ftraverse/7.23.5/7.23.7) | --- ### Release Notes <details> <summary>babel/babel (@​babel/traverse)</summary> ### [`v7.23.7`](https://github.com/babel/babel/blob/HEAD/CHANGELOG.md#v7237-2023-12-29) [Compare Source](babel/babel@v7.23.6...v7.23.7) ##### 🐛 Bug Fix - `babel-traverse` - [#​16191](babel/babel#16191) fix: Crash when removing without `Program` ([@​liuxingbaoyu](https://github.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-decorators` - [#​16180](babel/babel#16180) fix: Class decorator `ctx.kind` is wrong ([@​liuxingbaoyu](https://github.com/liuxingbaoyu)) - `babel-plugin-proposal-decorators` - [#​16170](babel/babel#16170) Fix decorator initProto usage in derived classes ([@​JLHwung](https://github.com/JLHwung)) - `babel-core` - [#​16167](babel/babel#16167) Avoid unpreventable `unhandledRejection` events ([@​nicolo-ribaudo](https://github.com/nicolo-ribaudo)) ##### 🏠 Internal - `babel-helper-create-class-features-plugin` - [#​16186](babel/babel#16186) chore: Update deps ([@​liuxingbaoyu](https://github.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators` - [#​16177](babel/babel#16177) Merge decorators into class features ([@​JLHwung](https://github.com/JLHwung)) ### [`v7.23.6`](https://github.com/babel/babel/blob/HEAD/CHANGELOG.md#v7236-2023-12-11) [Compare Source](babel/babel@v7.23.5...v7.23.6) ##### 👓 Spec Compliance - `babel-generator`, `babel-parser`, `babel-types` - [#​16154](babel/babel#16154) Remove `TSPropertySignature.initializer` ([@​fisker](https://github.com/fisker)) - `babel-helpers`, `babel-plugin-proposal-decorators`, `babel-plugin-transform-class-properties`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-runtime`, `babel-preset-env`, `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime`, `babel-types` - [#​16139](babel/babel#16139) Apply `toPropertyKey` on decorator context name ([@​JLHwung](https://github.com/JLHwung)) ##### 🐛 Bug Fix - `babel-generator` - [#​16166](babel/babel#16166) fix: Correctly indenting when `retainLines` is enabled ([@​liuxingbaoyu](https://github.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-explicit-resource-management` - [#​16150](babel/babel#16150) `using`: Allow looking up `Symbol.dispose` on a function ([@​odinho](https://github.com/odinho)) - `babel-plugin-proposal-decorators`, `babel-plugin-transform-class-properties` - [#​16161](babel/babel#16161) Ensure the `[[@​@​toPrimitive]]` call of a decorated class member key is invoked once ([@​JLHwung](https://github.com/JLHwung)) - [#​16148](babel/babel#16148) Support named evaluation for decorated anonymous class exp ([@​JLHwung](https://github.com/JLHwung)) - `babel-plugin-transform-for-of`, `babel-preset-env` - [#​16011](babel/babel#16011) fix: `for of` with `iterableIsArray` and shadowing variable ([@​liuxingbaoyu](https://github.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-decorators`, `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime` - [#​16144](babel/babel#16144) Set function name for decorated private non-field elements ([@​JLHwung](https://github.com/JLHwung)) - `babel-plugin-transform-typescript` - [#​16137](babel/babel#16137) Fix references to enum values with merging ([@​nicolo-ribaudo](https://github.com/nicolo-ribaudo)) ##### 🔬 Output optimization - `babel-helper-create-class-features-plugin`, `babel-plugin-transform-class-properties` - [#​16159](babel/babel#16159) Reuse computed key memoiser ([@​JLHwung](https://github.com/JLHwung)) - `babel-helpers`, `babel-plugin-proposal-decorators` - [#​16160](babel/babel#16160) Optimize decorator helper size ([@​liuxingbaoyu](https://github.com/liuxingbaoyu)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjAiLCJ0YXJnZXRCcmFuY2giOiJkZXZlbG9wIn0=--> Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/random-bunny/pulls/129 Co-authored-by: Renovate Bot <renovate@vylpes.com> Co-committed-by: Renovate Bot <renovate@vylpes.com>
In this PR we move stage 3 decorator transforms into the class features plugin. It paves the road to reuse other class feature transforms in then scenario mentioned in #16176.
The change is kept minimal for the new structure to work: Further refactoring and internal utilities sharing are definitely possible. Please review by commits as the aggregated changes are not very helpful due to file renaming.
This PR is technically a new feature for the helper-class-feature-plugin, as now it accepts a new option
.decoratorVersion
to differentiate stage 3 decorators with 2018-09 decorators. I mark this PR as internal as the helper is considered internal and there is no changes for plugin users.