@ember-data/store 4.4.0-alpha.5 → 4.4.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
* @module @ember-data/store
|
|
3
3
|
*/
|
|
4
4
|
import { A } from '@ember/array';
|
|
5
|
-
import { assert, warn } from '@ember/debug';
|
|
5
|
+
import { assert, deprecate, warn } from '@ember/debug';
|
|
6
6
|
import { _backburner as emberBackburner } from '@ember/runloop';
|
|
7
7
|
import { DEBUG } from '@glimmer/env';
|
|
8
8
|
|
|
9
9
|
import { default as RSVP, Promise } from 'rsvp';
|
|
10
10
|
|
|
11
|
+
import { DEPRECATE_RSVP_PROMISE } from '@ember-data/private-build-infra/deprecations';
|
|
12
|
+
|
|
11
13
|
import type { CollectionResourceDocument, SingleResourceDocument } from '../ts-interfaces/ember-data-json-api';
|
|
12
14
|
import type { FindRecordQuery, Request, SaveRecordMutation } from '../ts-interfaces/fetch-manager';
|
|
13
15
|
import type { ExistingRecordIdentifier, RecordIdentifier, StableRecordIdentifier } from '../ts-interfaces/identifier';
|
|
@@ -139,6 +141,24 @@ export default class FetchManager {
|
|
|
139
141
|
|
|
140
142
|
promise = promise.then(
|
|
141
143
|
(adapterPayload) => {
|
|
144
|
+
if (!_objectIsAlive(internalModel)) {
|
|
145
|
+
if (DEPRECATE_RSVP_PROMISE) {
|
|
146
|
+
deprecate(
|
|
147
|
+
`A Promise while saving ${modelName} did not resolve by the time your model was destroyed. This will error in a future release.`,
|
|
148
|
+
false,
|
|
149
|
+
{
|
|
150
|
+
id: 'ember-data:rsvp-unresolved-async',
|
|
151
|
+
until: '5.0',
|
|
152
|
+
for: '@ember-data/store',
|
|
153
|
+
since: {
|
|
154
|
+
available: '4.5',
|
|
155
|
+
enabled: '4.5',
|
|
156
|
+
},
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
142
162
|
if (adapterPayload) {
|
|
143
163
|
return normalizeResponseHelper(serializer, store, modelClass, adapterPayload, snapshot.id, operation);
|
|
144
164
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { deprecate } from '@ember/debug';
|
|
1
2
|
import { get } from '@ember/object';
|
|
2
3
|
import { DEBUG } from '@glimmer/env';
|
|
3
4
|
|
|
4
5
|
import { resolve } from 'rsvp';
|
|
5
6
|
|
|
7
|
+
import { DEPRECATE_RSVP_PROMISE } from '@ember-data/private-build-infra/deprecations';
|
|
8
|
+
|
|
6
9
|
/**
|
|
7
10
|
@module @ember-data/store
|
|
8
11
|
*/
|
|
@@ -32,7 +35,27 @@ export function guardDestroyedStore(promise, store, label) {
|
|
|
32
35
|
if (DEBUG) {
|
|
33
36
|
token = store._trackAsyncRequestStart(label);
|
|
34
37
|
}
|
|
35
|
-
let wrapperPromise = resolve(promise, label).then((
|
|
38
|
+
let wrapperPromise = resolve(promise, label).then((_v) => {
|
|
39
|
+
if (!_objectIsAlive(store)) {
|
|
40
|
+
if (DEPRECATE_RSVP_PROMISE) {
|
|
41
|
+
deprecate(
|
|
42
|
+
`A Promise did not resolve by the time the store was destroyed. This will error in a future release.`,
|
|
43
|
+
false,
|
|
44
|
+
{
|
|
45
|
+
id: 'ember-data:rsvp-unresolved-async',
|
|
46
|
+
until: '5.0',
|
|
47
|
+
for: '@ember-data/store',
|
|
48
|
+
since: {
|
|
49
|
+
available: '4.5',
|
|
50
|
+
enabled: '4.5',
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return promise;
|
|
58
|
+
});
|
|
36
59
|
|
|
37
60
|
return _guard(wrapperPromise, () => {
|
|
38
61
|
if (DEBUG) {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { assert } from '@ember/debug';
|
|
1
|
+
import { assert, deprecate } from '@ember/debug';
|
|
2
2
|
import { DEBUG } from '@glimmer/env';
|
|
3
3
|
|
|
4
4
|
import { Promise } from 'rsvp';
|
|
5
5
|
|
|
6
|
+
import { DEPRECATE_RSVP_PROMISE } from '@ember-data/private-build-infra/deprecations';
|
|
7
|
+
|
|
6
8
|
import { _bind, _guard, _objectIsAlive, guardDestroyedStore } from './common';
|
|
7
9
|
import { normalizeResponseHelper } from './serializer-response';
|
|
8
10
|
|
|
@@ -212,10 +214,26 @@ export function _findHasMany(adapter, store, internalModel, link, relationship,
|
|
|
212
214
|
let label = `DS: Handle Adapter#findHasMany of '${internalModel.modelName}' : '${relationship.type}'`;
|
|
213
215
|
|
|
214
216
|
promise = guardDestroyedStore(promise, store, label);
|
|
215
|
-
promise =
|
|
216
|
-
|
|
217
|
-
return promise.then(
|
|
217
|
+
promise = promise.then(
|
|
218
218
|
(adapterPayload) => {
|
|
219
|
+
if (!_objectIsAlive(internalModel)) {
|
|
220
|
+
if (DEPRECATE_RSVP_PROMISE) {
|
|
221
|
+
deprecate(
|
|
222
|
+
`A Promise for fecthing ${relationship.type} did not resolve by the time your model was destroyed. This will error in a future release.`,
|
|
223
|
+
false,
|
|
224
|
+
{
|
|
225
|
+
id: 'ember-data:rsvp-unresolved-async',
|
|
226
|
+
until: '5.0',
|
|
227
|
+
for: '@ember-data/store',
|
|
228
|
+
since: {
|
|
229
|
+
available: '4.5',
|
|
230
|
+
enabled: '4.5',
|
|
231
|
+
},
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
219
237
|
assert(
|
|
220
238
|
`You made a 'findHasMany' request for a ${internalModel.modelName}'s '${relationship.key}' relationship, using link '${link}' , but the adapter's response did not have any data`,
|
|
221
239
|
payloadIsNotBlank(adapterPayload)
|
|
@@ -236,6 +254,12 @@ export function _findHasMany(adapter, store, internalModel, link, relationship,
|
|
|
236
254
|
null,
|
|
237
255
|
`DS: Extract payload of '${internalModel.modelName}' : hasMany '${relationship.type}'`
|
|
238
256
|
);
|
|
257
|
+
|
|
258
|
+
if (DEPRECATE_RSVP_PROMISE) {
|
|
259
|
+
promise = _guard(promise, _bind(_objectIsAlive, internalModel));
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return promise;
|
|
239
263
|
}
|
|
240
264
|
|
|
241
265
|
export function _findBelongsTo(adapter, store, internalModel, link, relationship, options) {
|
|
@@ -249,8 +273,26 @@ export function _findBelongsTo(adapter, store, internalModel, link, relationship
|
|
|
249
273
|
promise = guardDestroyedStore(promise, store, label);
|
|
250
274
|
promise = _guard(promise, _bind(_objectIsAlive, internalModel));
|
|
251
275
|
|
|
252
|
-
|
|
276
|
+
promise = promise.then(
|
|
253
277
|
(adapterPayload) => {
|
|
278
|
+
if (!_objectIsAlive(internalModel)) {
|
|
279
|
+
if (DEPRECATE_RSVP_PROMISE) {
|
|
280
|
+
deprecate(
|
|
281
|
+
`A Promise for fetching ${relationship.type} did not resolve by the time your model was destroyed. This will error in a future release.`,
|
|
282
|
+
false,
|
|
283
|
+
{
|
|
284
|
+
id: 'ember-data:rsvp-unresolved-async',
|
|
285
|
+
until: '5.0',
|
|
286
|
+
for: '@ember-data/store',
|
|
287
|
+
since: {
|
|
288
|
+
available: '4.5',
|
|
289
|
+
enabled: '4.5',
|
|
290
|
+
},
|
|
291
|
+
}
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
254
296
|
let serializer = store.serializerFor(relationship.type);
|
|
255
297
|
let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findBelongsTo');
|
|
256
298
|
|
|
@@ -271,6 +313,12 @@ export function _findBelongsTo(adapter, store, internalModel, link, relationship
|
|
|
271
313
|
null,
|
|
272
314
|
`DS: Extract payload of ${internalModel.modelName} : ${relationship.type}`
|
|
273
315
|
);
|
|
316
|
+
|
|
317
|
+
if (DEPRECATE_RSVP_PROMISE) {
|
|
318
|
+
promise = _guard(promise, _bind(_objectIsAlive, internalModel));
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
return promise;
|
|
274
322
|
}
|
|
275
323
|
|
|
276
324
|
export function _findAll(adapter, store, modelName, options) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ember-data/store",
|
|
3
|
-
"version": "4.4.0-alpha.
|
|
3
|
+
"version": "4.4.0-alpha.6",
|
|
4
4
|
"description": "The default blueprint for ember-cli addons.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon"
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"start": "ember serve"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@ember-data/canary-features": "4.4.0-alpha.
|
|
21
|
-
"@ember-data/private-build-infra": "4.4.0-alpha.
|
|
20
|
+
"@ember-data/canary-features": "4.4.0-alpha.6",
|
|
21
|
+
"@ember-data/private-build-infra": "4.4.0-alpha.6",
|
|
22
22
|
"@ember/string": "^3.0.0",
|
|
23
23
|
"@glimmer/tracking": "^1.0.4",
|
|
24
24
|
"ember-auto-import": "^2.2.4",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"ember-cli-typescript": "^5.0.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@ember-data/unpublished-test-infra": "4.4.0-alpha.
|
|
31
|
+
"@ember-data/unpublished-test-infra": "4.4.0-alpha.6",
|
|
32
32
|
"@ember/optional-features": "^2.0.0",
|
|
33
33
|
"@ember/test-helpers": "^2.6.0",
|
|
34
34
|
"@types/ember": "^4.0.0",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"ember-maybe-import-regenerator": "^1.0.0",
|
|
47
47
|
"ember-qunit": "^5.1.5",
|
|
48
48
|
"ember-resolver": "^8.0.3",
|
|
49
|
-
"ember-source": "~4.
|
|
49
|
+
"ember-source": "~4.3.0",
|
|
50
50
|
"ember-source-channel-url": "^3.0.0",
|
|
51
51
|
"ember-try": "^2.0.0",
|
|
52
52
|
"loader.js": "^4.7.0",
|