machty/ember-concurrency-decorators

Do we still need `@ember-decorators/babel-transforms`

Closed this issue · 4 comments

aklkv commented

ember-cli-babel is not provides babel-transforms do we still need to install @ember-decorators/babel-transforms. I believe some changes are required to use is directly from ember-cli-babel because I have tried removing @ember-decorators/babel-transforms and got an error that obviously points to the fact that babel-transforms is not found.

ember-cli-babel provides the legacy "stage 1" decorator transforms as Ember now uses these transforms according to the RFC #440 "Decorator Support".

ember-concurrency-decorators and many other decorator addons are still based on the stage 2 decorators. If you install @ember-decorators/babel-transforms, you'll get the stage 2 decorators instead of the stage 1 decorators which would be added by ember-cli-babel.

ember-concurrency-decorators and other decorator addons will soon be "updated" to stage 1 decorators to be compatible with the latest vanilla Ember.js. I'm currently holding out for a polyfill that makes stage 1 decorators consumable in stage 2 decorator apps, so that we don't break these apps with a new release.

I'm experiencing problems as a result of this in conjunction with MS Edge 18.

If I get rid of @ember-decorators/babel-transforms we can't build using ember-concurrency-decorators because the emberr-cli-babel transforms can't deal with

@task
*foo () {}

Would be happy to try and help to expedite a solution, but not sure there's anything useful I can do?

Until babel/babel#9852 is fixed, we can't use the above syntax with stage 1 / vanilla ember-cli-babel. The only possible syntax would be:

@task
foo = function*() {};

// or with just ember-concurrency
@task(function*() {}) foo;

I released 1.0.0-beta.1 which reverts back to the stage 1 / legacy decorators and completely drops support for stage 2 and @ember-decorators/babel-transforms.

The above comment regarding the syntax still holds true though.