v4.5.0 Love of Mine ♥️
v4.5.0 (2022-07-27)
Version 4.5 includes a number of new deprecations, a significant internal refactoring of the store architecture and several bug fixes.
Of note:
-
Users of just the core of EmberData may expect their builds to be 35-50% smaller. This is due to most of the legacy support for @ember-data/model having now found its final location at home in that package instead of within the @ember-data/store package. The size of @ember-data/store is reduced from ~16kb compressed to ~9.5kb compressed, potentially a little less depending on what deprecations are resolved and what other packages are present. We expect the core to continue to shrink as we complete the final stages of removing InternalModel, complete implementations for recently accepted deprecation RFCs, and introduce RecordDataV2.
-
Users of private store APIs may find these APIs have now been deprecated or removed. Internal restructuring will be high the next 6 months as we polish off the removal of InternalModel and continue to simplify codepaths which that removal allows us to do. All but a very few private methods have been entirely eliminated from the store.
New Deprecations target 5.0 and include:
- deprecating some internal usage of
RSVP.Promise
that applications may have become dependent on if their tests are leaky - deprecating the
type
property on snapshots (which would lookup the model class). - deprecating
store.find
, a private method that has been maintained in case users accidentally fell into using ember's hidden autofetch behavior in routes - deprecating
store.hasRecordForId
, aspeekRecord
is generally more useful and provides the same information (and more). - deprecating
store.recordWasInvalid
, an unused internal api thatember-model-validations
appears to be using. - deprecating passing strings to the schema lookup functions
attributesDefinitionFor
andrelationshipsDefinitionFor
, these APIs now expect an object with at least atype
property representing the model name. - deprecating the
-json-api
fallback adapter, a hidden behavior that provided an adapter if the application failed to define one.
As always deprecated code can be eliminated from the build output by specifying the compatWith
arg on the emberData configuration in your app.
🚀 Enhancement
-ember-data
,private-build-infra
,store
- #7880 [rfc]: deprecate RSVP.Promise (@snewcomer)
🌲 New Deprecation
-ember-data
,adapter
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-model-encapsulation-test-app
- #8055 chore: Continuing InternalModel Burndown (@runspired)
🐛 Bug Fix
-ember-data
,adapter
- #8083 [BUGFIX] Serialize null array items as empty strings (@camerondubas)
-ember-data
,store
- #7901 fix: waiter should be always on (@runspired)
-ember-data
,adapter
,canary-features
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8042 fix: RecordState cleanup, drop requireESM and node12 (@runspired)
-ember-data
,debug
- #8008 schedule watchTypeIfUnseen to prevent loop (@patricklx)
adapter
,model
,private-build-infra
,serializer
- #8013 [BUGFIX release] Fix generated import paths for test setup functions in addons (@bertdeblock)
-ember-data
,model
,store
- #8025 Fix: PromiseProxy Deprecation for Save (@runspired)
-ember-data
- #7902 test for async hasMany does not trigger relationship fetch (@snewcomer)
serializer
- #7854 fix: pass correct args to keyFor<Attribute|Relationship> when normalizing (@runspired)
-ember-data
,model
- #7945 fix for #7904 computed chains not updated for async hasMany loading (@runspired)
📝 Documentation
-ember-data
,adapter
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-model-encapsulation-test-app
- #8055 chore: Continuing InternalModel Burndown (@runspired)
model
- #8002 Update imports in doc code samples (@CuriousCorrelation)
- #7984 Add
LICENSE.md
(@ddzz)
🚿 Deprecation Removal
-ember-data
,adapter
,debug
,model
,private-build-infra
,record-data
,store
,unpublished-test-infra
- #8078 chore: InternalModel burndown (@runspired)
-ember-data
,model
,record-data
,store
,unpublished-test-infra
- #7971 chore: remove the state machine (@runspired)
-ember-data
,adapter
,debug
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #7970 chore: remove unused evented infra (@runspired)
-ember-data
,adapter
,model
,store
- #7953 chore: cleanup a few more leaf types (@runspired)
-ember-data
- #7623 [CHORE]: Modernize Find-Test (@runnerboy22)
- #7952 chore: migrate files that only re-export to ts to preserve type flow (@runspired)
- #7951 chore: remove unneeded version code in ember-data package (@runspired)
- #7629 [CHORE]: Modernize queries-test (@runnerboy22)
- #7624 [CHORE]: Modernize find-all-test (@runnerboy22)
-ember-data
,adapter
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #7950 some small cleanups and fix test container (@runspired)
-ember-data
,store
- #7849 Remove some usage of runtime require (@SergeAstapov)
🥅 Test
-ember-data
,adapter
,canary-features
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-eslint-rules
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8027 fix test runs, update lts support tests (@runspired)
-ember-data
- #7628 [CHORE]: Modernize json-api-adapter-test (@runnerboy22)
- #7626 [CHORE]: Modernize build-url-mixin-strict-equal (@runnerboy22)
- #7630 [CHORE]: Modernize record-persistence-test (@runnerboy22)
- #7625 [CHORE]: Modernize client-side-delete-test (@runnerboy22)
🏠 Internal
-ember-data
,adapter
,debug
,model
,private-build-infra
,record-data
,store
,unpublished-test-infra
- #8078 chore: InternalModel burndown (@runspired)
-ember-data
,adapter
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-model-encapsulation-test-app
- #8055 chore: Continuing InternalModel Burndown (@runspired)
- Other
- Other
- #7982 Add GitHub Actions to Dependabot and update actions (@ddzz)
- #8026 Deactivate Perf Benchmarks until Fixed (@runspired)
-ember-data
,adapter
,canary-features
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-eslint-rules
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8027 fix test runs, update lts support tests (@runspired)
-ember-data
,adapter
,model
,private-build-infra
,record-data
,store
- #7954 port more types work over from #7585 (@runspired)
-ember-data
- #7622 [CHORE]: Modernize Handle-Response-Test (@runnerboy22)
- #7631 [CHORE]: Modernized serialize-test (@runnerboy22)
- #7624 [CHORE]: Modernize find-all-test (@runnerboy22)
Committers: 10
- Chris Thoburn (@runspired)
- Sergey Astapov (@SergeAstapov)
- Tyler (@runnerboy22)
- Scott Newcomer (@snewcomer)
- Darius Dzien (@ddzz)
- @CuriousCorrelation
- Bert De Block (@bertdeblock)
- @patricklx
- Cameron Dubas (@camerondubas)
- Jen Weber (@jenweber)