You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://discord.gg/zT3asNS)
22
34
23
35
---
24
36
25
-
Wrangle your application's data management with scalable patterns for developer productivity.
37
+
EmberData provides features that make it easy to build scalable, fast, feature
38
+
rich application — letting you ship better experiences more quickly without re-architecting your app or API. EmberData is:
26
39
27
40
- ⚡️ Committed to Best-In-Class Performance
28
-
- 🌲 Focused on being as svelte as possible
41
+
- 💚 Typed
42
+
- ⚛️ Works with any API
43
+
- 🌲 Focused on being as tiny as possible
29
44
- 🚀 SSR Ready
30
-
- 🔜 Typescript Support
45
+
- 🔜 Seamless reactivity in any framework
31
46
- 🐹 Built with ♥️ by [Ember](https://emberjs.com)
32
-
- ⚛️ Supports any API: `GraphQL``JSON:API``REST``tRPC` ...bespoke or a mix
33
47
34
48
**Tagged Releases**
35
49
@@ -91,22 +105,29 @@ not wish to use `ember-data`, remove `ember-data` from your project's `package.j
91
105
92
106
## Advanced Installation
93
107
94
-
*Ember***Data** is organized into primitives that compose together via public APIs.
95
-
96
-
-[@ember-data/request](./packages/request) provides managed `fetch` via its RequestManager and can be used without any other parts of EmberData.
97
-
-[@ember-data/store](./packages/store) is the "core" of EmberData and handles coordination between the RequestManager, the Cache, and Presentation Concerns.
98
-
-[@ember-data/tracking](./packages/tracking) is currently required when using the core and provides tracking primitives for change notification of Tracked properties.
99
-
-[@ember-data/json-api](./packages/json-api) is a resource cache for JSON:API structured data. It integrates with the store via the hook `createCache`
100
-
-[@ember-data/model](./packages/model) is a presentation layer, it integrates with the store via the hooks `instantiateRecord` and `teardownRecord`.
101
-
-[@ember-data/debug](./packages/debug) provides (optional) debugging support for the `ember-inspector`.
102
-
108
+
*Ember***Data** is organized into primitives that compose together via public APIs. These primitives are organized into
109
+
small packages encapsulating these boundaries. These packages
-[@ember-data/request-utils](../packages/request-utils) provides optional utilities for managing requests and string manipulation
115
+
-[@ember-data/store](../packages/store) provides core functionality around coordinating caching and reactivity
116
+
-[@ember-data/tracking](../packages/tracking) enables integration with Ember's reactivity system
117
+
-[@ember-data/json-api](../packages/json-api) provides a cache for data in the [{JSON:API}](https://jsonapi.org) format.
118
+
-[@ember-data/debug](../packages/debug) provides (optional) debugging support for the `ember-inspector`.
119
+
-[@warp-drive/build-config](../packages/build-config) provides a build plugin which ensures proper settings configuration for deprecations, optional features, development/testing support and debug logging.
120
+
-[@warp-drive/core-types](../packages/core-types) provides core types and symbols used by all other packages
121
+
-[@warp-drive/schema-record](../packages/schema-record) provides a flexible, schema-based approach to reactive data.
122
+
-[@warp-drive/ember](../packages/ember) provides Ember specific components and utilities for reactive control-flow and declarative state management.
103
123
104
124
Some EmberData APIs are older than others, and these still interop via well-defined public API boundaries but are
105
125
no longer the ideal approach.
106
126
107
-
-[@ember-data/legacy-compat](./packages/legacy-compat) provides support for older paradigms that are being phased out
108
-
-[@ember-data/adapter](./packages/adapter) provides various network API integrations for APIS built over specific REST or JSON:API conventions. It integrates with the Store via `store.adapterFor`, and with the request pipeline via the `LegacyNetworkHandler` available via `@ember-data/legacy-compat` which utilizes the Minimum Adapter Interface.
109
-
-[@ember-data/serializer](./packages/serializer) pairs with `@ember-data/adapter` and the `LegacyNetworkHandler` to normalize and serialize data to and from an API format into the `JSON:API` format understood by `@ember-data/json-api`.
127
+
-[@ember-data/model](../packages/model) provides a class-based approach to declaring schemas for reactive data.
128
+
-[@ember-data/legacy-compat](../packages/legacy-compat) provides support for the older adapter/serializer request paradigm that is being phased out
129
+
-[@ember-data/adapter](../packages/adapter) provides various network API integrations for APIs built over specific REST or `{JSON:API}` conventions.
130
+
-[@ember-data/serializer](../packages/serializer) provides an approach to normalizing and serializing data to and from an API format into the `{JSON:API}` format.
110
131
111
132
And finally:
112
133
@@ -118,16 +139,44 @@ public APIs, other libraries or applications may provide their own implementatio
118
139
119
140
## Configuration
120
141
142
+
Settings configuration for deprecations, optional features, development/testing support and debug logging is done using `setConfig` in `ember-cli-build`
*Ember***Data** allows users to opt-in and remove code that exists to support deprecated behaviors.
124
167
125
168
If your app has resolved all deprecations present in a given version, you may specify that version as your "compatibility" version to remove the code that supported the deprecated behavior from your app.
126
169
170
+
You may also specify that specific deprecations are resolved. These can be used together.
171
+
127
172
```ts
128
-
let app =newEmberApp(defaults, {
129
-
emberData: {
130
-
compatWith: '4.8',
173
+
setConfig(app, __dirname, {
174
+
// declare that all deprecations through "5.0" have been fully resolved
175
+
compatWith: '5.0',
176
+
177
+
// mark individual deprecations as resolved by setting them to `false`
178
+
deprecations: {
179
+
// resolve individual deprecations here
131
180
},
132
181
});
133
182
```
@@ -141,10 +190,8 @@ the necessary feature if your browser support or deployment environment demands
141
190
activate this polyfill:
142
191
143
192
```ts
144
-
let app =newEmberApp(defaults, {
145
-
emberData: {
146
-
polyfillUUID: true,
147
-
},
193
+
setConfig(app, __dirname, {
194
+
polyfillUUID: true,
148
195
});
149
196
```
150
197
@@ -154,10 +201,8 @@ If you do not want to ship inspector support in your production application, you
154
201
that all support for it should be stripped from the build.
155
202
156
203
```ts
157
-
let app =newEmberApp(defaults, {
158
-
emberData: {
159
-
includeDataAdapterInProduction: false,
160
-
},
204
+
setConfig(app, __dirname, {
205
+
includeDataAdapterInProduction: false
161
206
});
162
207
```
163
208
@@ -170,21 +215,21 @@ at build time. This instrumentation is always removed from production builds or
170
215
that has not explicitly activated it. To activate it set the appropriate flag to `true`.
171
216
172
217
```ts
173
-
let app =newEmberApp(defaults, {
174
-
emberData: {
175
-
debug: {
176
-
LOG_PAYLOADS: false, // data store received to update cache with
177
-
LOG_OPERATIONS: false, // updates to cache remote state
178
-
LOG_MUTATIONS: false, // updates to cache local state
179
-
LOG_NOTIFICATIONS: false,
180
-
LOG_REQUESTS: false, // log Requests issued via the request manager
0 commit comments