@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: { preload?: any } = {}) {
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 pending = this._fetchManager.getPendingFetch(internalModel.identifier);
1193
- if (pending) {
1194
- return pending.then(() => Promise.resolve(internalModel));
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
- .getPendingRequestsForRecord(identifier)
514
- .filter((req) => req.type === 'query');
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 {
@@ -0,0 +1,9 @@
1
+ type Dict<T> = import('@ember-data/store/-private/ts-interfaces/utils').Dict<T>;
2
+
3
+ export interface FindOptions {
4
+ reload?: boolean;
5
+ backgroundReload?: boolean;
6
+ include?: string;
7
+ adapterOptions?: Dict<unknown>;
8
+ preload?: Dict<unknown>;
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ember-data/store",
3
- "version": "3.28.5",
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.5",
21
- "@ember-data/private-build-infra": "3.28.5",
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.5",
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",