v5.3.0 | don't forget, baby, I'm a wildcard
The Big Picture
This release primarily focused on polish for the RequestManager
story, introducing builder utils, builders for REST
ActiveRecord
and JSON:API
requests as well as serialization utils for JSON:API
requests.
As part of shipping serialization utils, we implemented several long-awaited cache features to support them:
cache.changedRelationships
retrieves a diff of what has been added or removed from each relationship for a resourcecache.hasChangedRelationships
answers whether any relationships have changed for a resourcecache.rollbackRelationships
will reset all relationships for that resource to their "remote" state, removing any local changes.
As part of our ongoing efforts to modernize the library and to support the above changes, we implemented several new deprecations.
- Deprecate legacy import paths (
ember-data/
) except forember-data/store
- Deprecate non-strict-type (e.g. "users" or "myType" instead of "user" and "my-type")
- Deprecate non-strict-id (e.g .
1
instead of"1"
)
And in relationships specifically:
- deprecate fixing non-unique relationship payloads (when the same record is referenced multiple times in a related collection)
- deprecate remote updates clearing local changes (an upcoming blog post will explain the new behavior here in detail)
Changelog (2023-09-18)
🚀 Enhancement
- #8849 feat: docs, tests and fixes for create/update/deleteRecord builders (@Baltazore)
- #8824 feat: relationshipRollback, serializePatch (@runspired)
- #8798 feat: implement a simple LifetimeService utility, improve document reconstruction (@runspired)
- #8741 feat: JSON:API serialization utils (@runspired)
- #8740 feat: saveRecord builders (@runspired)
- #8744 add sortQueryParams, update roadmap with link to checklist (@runspired)
- #8716 feat: filterEmpty for query params (@runspired)
- #8687 feat: findRecord and query request builders (@runspired)
- #8673 DX: Nicer backtracking errors (@runspired)
- #8736 chore: refactor IdentityCache to make resource more opaque (@runspired)
🐛 Bug Fix
- #8876 fix: Fetch handler should account for empty body (@runspired)
- #8842 fix: handle Immutable Response objects (@runspired)
- #8828 fix: set headers after setResponse in Fetch handler (@runspired)
- #8850 Overwrite addMixin (@patricklx)
- #8831 fix: cleanup build deps and add @ember/string to REST/ActiveRecord builder peer-deps (@runspired)
- #8826 fix createRecord error when no adapter is present (@runspired)
- #8791 fix: clear relationships properly when unloading new records (@Windvis)
- #8794 Fix check for new records in JSONAPISerializer.serializeHasMany (@dagroe)
- #8751 Forward fixes from 3.12.x into main (@jrjohnson)
- #8684 fix: unloadAll(void) should not destroy the notification manager (@runspired)
🌲 New Deprecation
- #8747 feat: implement legacy imports deprecation (@runspired)
- #8734 feat: Implement Strict Types and Id Deprecations (@runspired)
🚿 Deprecation Removal
adapter
,model
,private-build-infra
,serializer
- #8797 Drop support for
ember-cli-mocha
andember-mocha
when generating test blueprints (@bertdeblock)
- #8797 Drop support for
📝 Documentation
- #8848 feat: add request options documentation parts to find-record builder (@Baltazore)
- #8825 feat: more docs for builders (@runspired)
- #8819 fix:
JSONAPISerializer.shouldSerializeHasMany
relation param type (@samridhivig) - #8746 docs: more documentation for builders (@runspired)
- #8745 chore: readme overviews for builders (@runspired)
- #8724 chore: rename CacheStoreWrapper => CacheCapabilitiesManager to reflect its role (@runspired)
- #8671 Typo correction in ROADMAP.md (@wagenet)
🥅 Test
- #8878 test: add basic test for Fetch handler (@runspired)
- #8849 feat: docs, tests and fixes for create/update/deleteRecord builders (@Baltazore)
- #8868 Add tests for filter-empty request util (@Baltazore)
- #8866 Add tests for parse-cache-control (@Baltazore)
- #8864 test: confirm records unload properly for #8863 (@runspired)
- #8780 chore: add test to demonstrate create props work as expected (@runspired)
🏠 Internal
- #8758 chore: refactor implicit edge to match resource and collection pattern (@runspired)
- #8755 chore: simplify file structure in graph package (@runspired)
- #8749 fix: ensure we are not allowing embroider to do anything (@runspired)
- #8672 chore: update roadmap for 5.3 (@runspired)
- #8670 chore: add ROADMAP and update CONTRIBUTING (@runspired)
- #8739 chore: migrate store/graph to strict types config (@runspired)
- #8733 chore: improve types and lint (@runspired)
- #8727 chore: fix peers and get perf-test-app running again (@runspired)
- #8717 Switch from local and @types/ember types to ember-source types (@BradBarnich)
- #8499 chore: refactor model hook support to live in the model package (@runspired)
- #8862 chore: remove more runloop usage | completely remove rsvp (@runspired)
- #8861 chore: remove runloop usage (@runspired)
- #8859 chore: update target labels (@runspired)
- #8858 chore: update required labels (@runspired)
- #8830 chore: cleanup actions/setup usage (@runspired)
- #8812 fix typo (@samridhivig)
- #8802 chore: fix fastboot-testing deprecation (@runspired)
- #8801 chore: resolve deprecation in fastboot app (@runspired)
- #8860 chore: burn down runloop and RSVP usage (@runspired)
- #8832 chore: add recommended JSON:API setup test app (@runspired)
- #8829 chore: eliminate dead build code (@runspired)
- #8823 fix: graph instantiation should not be required (@runspired)
Committers: 11
- Bert De Block (@bertdeblock)
- Chris Thoburn (@runspired)
- Daniel Gröger (@dagroe)
- Kirill Shaplyko (@Baltazore)
- Patrick Pircher (@patricklx)
- Sam Van Campenhout (@Windvis)
- Samridhi Vig (@samridhivig)
- Brad Barnich (@BradBarnich)
- Jon Johnson (@jrjohnson)
- Michal Bryxí (@MichalBryxi)
- Peter Wagenet (@wagenet)