@ember-data/store 3.28.5 → 3.28.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.
|
@@ -90,6 +90,7 @@ type StableRecordIdentifier = import('../ts-interfaces/identifier').StableRecord
|
|
|
90
90
|
type StableExistingRecordIdentifier = import('../ts-interfaces/identifier').StableExistingRecordIdentifier;
|
|
91
91
|
type RecordInstance = import('../ts-interfaces/record-instance').RecordInstance;
|
|
92
92
|
type RecordData = import('../ts-interfaces/record-data').RecordData;
|
|
93
|
+
type FindOptions = import('../ts-interfaces/store').FindOptions;
|
|
93
94
|
type DSModel = import('../ts-interfaces/ds-model').DSModel;
|
|
94
95
|
type PromiseProxy<T> = import('../ts-interfaces/promise-proxies').PromiseProxy<T>;
|
|
95
96
|
type Dict<T> = import('../ts-interfaces/utils').Dict<T>;
|
|
@@ -1162,7 +1163,7 @@ abstract class CoreStore extends Service {
|
|
|
1162
1163
|
return Promise.resolve(internalModel);
|
|
1163
1164
|
}
|
|
1164
1165
|
|
|
1165
|
-
_findByInternalModel(internalModel, options:
|
|
1166
|
+
_findByInternalModel(internalModel: InternalModel, options: FindOptions = {}) {
|
|
1166
1167
|
if (options.preload) {
|
|
1167
1168
|
this._backburner.join(() => {
|
|
1168
1169
|
internalModel.preloadData(options.preload);
|
|
@@ -1177,7 +1178,7 @@ abstract class CoreStore extends Service {
|
|
|
1177
1178
|
);
|
|
1178
1179
|
}
|
|
1179
1180
|
|
|
1180
|
-
_findEmptyInternalModel(internalModel, options) {
|
|
1181
|
+
_findEmptyInternalModel(internalModel: InternalModel, options: FindOptions) {
|
|
1181
1182
|
if (internalModel.currentState.isEmpty) {
|
|
1182
1183
|
return this._scheduleFetch(internalModel, options);
|
|
1183
1184
|
}
|
|
@@ -1189,9 +1190,9 @@ abstract class CoreStore extends Service {
|
|
|
1189
1190
|
}
|
|
1190
1191
|
} else {
|
|
1191
1192
|
if (internalModel.currentState.isLoading) {
|
|
1192
|
-
let
|
|
1193
|
-
if (
|
|
1194
|
-
return
|
|
1193
|
+
let pendingRequest = this._fetchManager.getPendingFetch(internalModel.identifier, options);
|
|
1194
|
+
if (pendingRequest) {
|
|
1195
|
+
return pendingRequest.then(() => Promise.resolve(internalModel));
|
|
1195
1196
|
}
|
|
1196
1197
|
return this._scheduleFetch(internalModel, options);
|
|
1197
1198
|
}
|
|
@@ -1888,7 +1889,7 @@ abstract class CoreStore extends Service {
|
|
|
1888
1889
|
if (internalModel) {
|
|
1889
1890
|
// short circuit if we are already loading
|
|
1890
1891
|
if (REQUEST_SERVICE) {
|
|
1891
|
-
let pendingRequest = this._fetchManager.getPendingFetch(internalModel.identifier);
|
|
1892
|
+
let pendingRequest = this._fetchManager.getPendingFetch(internalModel.identifier, options);
|
|
1892
1893
|
if (pendingRequest) {
|
|
1893
1894
|
return pendingRequest.then(() => internalModel.getRecord());
|
|
1894
1895
|
}
|
|
@@ -1920,6 +1921,10 @@ abstract class CoreStore extends Service {
|
|
|
1920
1921
|
return resolve(null);
|
|
1921
1922
|
}
|
|
1922
1923
|
|
|
1924
|
+
if (!internalModel) {
|
|
1925
|
+
assert(`No InternalModel found for ${resource.lid}`, internalModel);
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1923
1928
|
return this._findByInternalModel(internalModel, options);
|
|
1924
1929
|
}
|
|
1925
1930
|
|
|
@@ -508,10 +508,10 @@ export default class FetchManager {
|
|
|
508
508
|
}
|
|
509
509
|
}
|
|
510
510
|
|
|
511
|
-
getPendingFetch(identifier: StableRecordIdentifier) {
|
|
512
|
-
let pendingRequests = this.requestCache
|
|
513
|
-
.
|
|
514
|
-
|
|
511
|
+
getPendingFetch(identifier: StableRecordIdentifier, options) {
|
|
512
|
+
let pendingRequests = this.requestCache.getPendingRequestsForRecord(identifier).filter((req) => {
|
|
513
|
+
return req.type === 'query' && isSameRequest(options, req.request.data[0].options);
|
|
514
|
+
});
|
|
515
515
|
|
|
516
516
|
if (pendingRequests.length > 0) {
|
|
517
517
|
return pendingRequests[0][RequestPromise];
|
|
@@ -539,3 +539,8 @@ function assertIsString(id: string | null): asserts id is string {
|
|
|
539
539
|
}
|
|
540
540
|
}
|
|
541
541
|
}
|
|
542
|
+
|
|
543
|
+
// this function helps resolve whether we have a pending request that we should use instead
|
|
544
|
+
function isSameRequest(options: Dict<unknown> = {}, reqOptions: Dict<unknown> = {}) {
|
|
545
|
+
return options.include === reqOptions.include;
|
|
546
|
+
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
type Dict<T> = import('@ember-data/store/-private/ts-interfaces/utils').Dict<T>;
|
|
2
|
+
|
|
1
3
|
type RecordIdentifier = import('./identifier').RecordIdentifier;
|
|
4
|
+
|
|
2
5
|
export interface Operation {
|
|
3
6
|
op: string;
|
|
7
|
+
options: Dict<unknown> | undefined;
|
|
8
|
+
recordIdentifier: RecordIdentifier;
|
|
4
9
|
}
|
|
5
10
|
|
|
6
11
|
export interface FindRecordQuery extends Operation {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ember-data/store",
|
|
3
|
-
"version": "3.28.
|
|
3
|
+
"version": "3.28.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": "3.28.
|
|
21
|
-
"@ember-data/private-build-infra": "3.28.
|
|
20
|
+
"@ember-data/canary-features": "3.28.6",
|
|
21
|
+
"@ember-data/private-build-infra": "3.28.6",
|
|
22
22
|
"@ember/string": "^3.0.0",
|
|
23
23
|
"@glimmer/tracking": "^1.0.4",
|
|
24
24
|
"ember-cli-babel": "^7.26.6",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"ember-cli-typescript": "^4.1.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@ember-data/unpublished-test-infra": "3.28.
|
|
29
|
+
"@ember-data/unpublished-test-infra": "3.28.6",
|
|
30
30
|
"@ember/optional-features": "^2.0.0",
|
|
31
31
|
"@ember/test-helpers": "^2.2.5",
|
|
32
32
|
"@types/ember": "^3.16.5",
|