Bring @glimmer/component into ember repo
The glimmerjs/glimmer.js monorepo is littered with "standalone Glimmer.js" functionality that we don't use and that is not being maintained. But it also contains two packages that are critical to ember: @glimmer/component and @glimmer/tracking.
I want to bring both of those packages into here instead, while jettisoning their extra complexity that exists only to make them portable to the "standalone Glimmer.js" use case.
This PR brings over @glimmer/component, and simplifies it by:
- dropping support for Ember < 3.13.
- converting to a v2 addon
It also adds end-to-end test coverage that exercises @glimmer/component and @glimmer/tracking in both classic and embroider apps.
After we decide to land this, a followup will be to add release automation for @glimmer/component.
- [ ] unify the API docs (there were already standalone files containing only docs that should now move alongside the implementation)
- [x] adjust ember-source's peerdep so this is non-breaking.
Even if we add release-plan just for @glimmer/component, we need to consider ember.js publishing. Right now, ember.js publishing runs on every tag. Changelogs are generated with bin/changelog.js and depend upon all PRs being just for that package (and follows references in commits via -x for cherry-picks to find originating PRs). Tags in the repo are just for ember.js (and named with just the version). There are a handful of things out there expecting to parse these.
I think it can be done but there's a lot to update.
I think the smallest next action to move this ahead would be to decide on a tagging strategy that would allowed tagged releases for @glimmer/component that don't interfere with tagged releases for ember-source.
I created https://github.com/emberjs/ember.js/pull/20753 as one possibility.
When we bump ember-source in the app blueprint to the version containing this change, it would also be a good time to bump @glimmer/component to ^2.0.0. Prior to that point, 2.0.0 causes peer dep warnings.
minor - looks we missed to bring readme.md file so it does not get it's way to npm.
I guess we could just copy-paste the existing one?
e.g. https://www.npmjs.com/package/@glimmer/component/v/2.0.0?activeTab=readme https://www.npmjs.com/package/@glimmer/component/v/1.1.2?activeTab=readme