@apollo/client 3.4.4 → 3.4.8

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.
Files changed (66) hide show
  1. package/apollo-client.cjs.js +971 -76
  2. package/apollo-client.cjs.js.map +1 -1
  3. package/apollo-core.cjs.js +5768 -0
  4. package/apollo-core.cjs.js.map +1 -0
  5. package/apollo-core.cjs.min.js +1 -0
  6. package/cache/cache.cjs.js +12 -9
  7. package/cache/cache.cjs.js.map +1 -1
  8. package/cache/inmemory/policies.js +9 -6
  9. package/cache/inmemory/policies.js.map +1 -1
  10. package/cache/inmemory/writeToStore.d.ts +1 -1
  11. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  12. package/cache/inmemory/writeToStore.js +3 -3
  13. package/cache/inmemory/writeToStore.js.map +1 -1
  14. package/core/ObservableQuery.d.ts +9 -6
  15. package/core/ObservableQuery.d.ts.map +1 -1
  16. package/core/ObservableQuery.js +70 -45
  17. package/core/ObservableQuery.js.map +1 -1
  18. package/core/QueryInfo.d.ts +5 -3
  19. package/core/QueryInfo.d.ts.map +1 -1
  20. package/core/QueryInfo.js +4 -2
  21. package/core/QueryInfo.js.map +1 -1
  22. package/core/QueryManager.d.ts +3 -3
  23. package/core/QueryManager.d.ts.map +1 -1
  24. package/core/QueryManager.js +15 -13
  25. package/core/QueryManager.js.map +1 -1
  26. package/core/core.cjs.js +89 -59
  27. package/core/core.cjs.js.map +1 -1
  28. package/core/watchQueryOptions.d.ts +2 -1
  29. package/core/watchQueryOptions.d.ts.map +1 -1
  30. package/core/watchQueryOptions.js.map +1 -1
  31. package/invariantErrorCodes.js +4 -2
  32. package/link/http/createHttpLink.d.ts.map +1 -1
  33. package/link/http/createHttpLink.js +7 -5
  34. package/link/http/createHttpLink.js.map +1 -1
  35. package/link/http/http.cjs.js +6 -5
  36. package/link/http/http.cjs.js.map +1 -1
  37. package/package.json +8 -8
  38. package/react/data/QueryData.d.ts +2 -1
  39. package/react/data/QueryData.d.ts.map +1 -1
  40. package/react/data/QueryData.js +8 -8
  41. package/react/data/QueryData.js.map +1 -1
  42. package/react/data/data.cjs.js +8 -8
  43. package/react/data/data.cjs.js.map +1 -1
  44. package/react/hooks/hooks.cjs.js +1 -0
  45. package/react/hooks/hooks.cjs.js.map +1 -1
  46. package/react/hooks/utils/useBaseQuery.d.ts.map +1 -1
  47. package/react/hooks/utils/useBaseQuery.js +1 -0
  48. package/react/hooks/utils/useBaseQuery.js.map +1 -1
  49. package/testing/testing.cjs.js +0 -5
  50. package/testing/testing.cjs.js.map +1 -1
  51. package/utilities/index.d.ts +1 -0
  52. package/utilities/index.d.ts.map +1 -1
  53. package/utilities/index.js +1 -0
  54. package/utilities/index.js.map +1 -1
  55. package/utilities/testing/index.d.ts +0 -1
  56. package/utilities/testing/index.d.ts.map +1 -1
  57. package/utilities/testing/index.js +0 -1
  58. package/utilities/testing/index.js.map +1 -1
  59. package/utilities/utilities.cjs.js +1 -0
  60. package/utilities/utilities.cjs.js.map +1 -1
  61. package/version.js +1 -1
  62. package/apollo-client.cjs.min.js +0 -1
  63. package/utilities/testing/stripSymbols.d.ts +0 -2
  64. package/utilities/testing/stripSymbols.d.ts.map +0 -1
  65. package/utilities/testing/stripSymbols.js +0 -4
  66. package/utilities/testing/stripSymbols.js.map +0 -1
@@ -6,6 +6,7 @@ import { QueryManager } from './QueryManager';
6
6
  import { ApolloQueryResult, OperationVariables } from './types';
7
7
  import { WatchQueryOptions, FetchMoreQueryOptions, SubscribeToMoreOptions } from './watchQueryOptions';
8
8
  import { QueryInfo } from './QueryInfo';
9
+ import { MissingFieldError } from '../cache';
9
10
  export interface FetchMoreOptions<TData = any, TVariables = OperationVariables> {
10
11
  updateQuery?: (previousQueryResult: TData, options: {
11
12
  fetchMoreResult?: TData;
@@ -25,11 +26,10 @@ export declare class ObservableQuery<TData = any, TVariables = OperationVariable
25
26
  private queryManager;
26
27
  private observers;
27
28
  private subscriptions;
28
- private lastResult;
29
- private lastResultSnapshot;
30
- private lastError;
29
+ private last?;
31
30
  private queryInfo;
32
31
  private concast?;
32
+ private observer?;
33
33
  private pollingInfo?;
34
34
  constructor({ queryManager, queryInfo, options, }: {
35
35
  queryManager: QueryManager<any>;
@@ -39,8 +39,9 @@ export declare class ObservableQuery<TData = any, TVariables = OperationVariable
39
39
  result(): Promise<ApolloQueryResult<TData>>;
40
40
  getCurrentResult(saveAsLastResult?: boolean): ApolloQueryResult<TData>;
41
41
  isDifferentFromLastResult(newResult: ApolloQueryResult<TData>): boolean;
42
- getLastResult(): ApolloQueryResult<TData> | undefined;
43
- getLastError(): ApolloError | undefined;
42
+ private getLast;
43
+ getLastResult(variablesMustMatch?: boolean): ApolloQueryResult<TData> | undefined;
44
+ getLastError(variablesMustMatch?: boolean): ApolloError | undefined;
44
45
  resetLastResults(): void;
45
46
  resetQueryStoreErrors(): void;
46
47
  refetch(variables?: Partial<TVariables>): Promise<ApolloQueryResult<TData>>;
@@ -56,9 +57,11 @@ export declare class ObservableQuery<TData = any, TVariables = OperationVariable
56
57
  private updateLastResult;
57
58
  reobserve(newOptions?: Partial<WatchQueryOptions<TVariables, TData>>, newNetworkStatus?: NetworkStatus): Promise<ApolloQueryResult<TData>>;
58
59
  private observe;
59
- private observer;
60
+ private reportResult;
61
+ private reportError;
60
62
  hasObservers(): boolean;
61
63
  private tearDownQuery;
62
64
  }
65
+ export declare function logMissingFieldErrors(missing: MissingFieldError[] | undefined): void;
63
66
  export declare function applyNextFetchPolicy<TData, TVars>(options: Pick<WatchQueryOptions<TVars, TData>, "fetchPolicy" | "nextFetchPolicy">): void;
64
67
  //# sourceMappingURL=ObservableQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQuery.d.ts","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservableQuery.d.ts","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { invariant } from 'ts-invariant';
3
3
  import { equal } from '@wry/equality';
4
4
  import { NetworkStatus, isNetworkRequestInFlight } from "./networkStatus.js";
5
5
  import { compact, cloneDeep, getOperationDefinition, Observable, iterateObserversSafely, isNonEmptyArray, fixObservableSubclass, } from "../utilities/index.js";
6
- import { ApolloError } from "../errors/index.js";
7
6
  var warnedAboutUpdateQuery = false;
8
7
  var ObservableQuery = (function (_super) {
9
8
  __extends(ObservableQuery, _super);
@@ -19,11 +18,12 @@ var ObservableQuery = (function (_super) {
19
18
  catch (_a) { }
20
19
  var first = !_this.observers.size;
21
20
  _this.observers.add(observer);
22
- if (_this.lastError) {
23
- observer.error && observer.error(_this.lastError);
21
+ var last = _this.last;
22
+ if (last && last.error) {
23
+ observer.error && observer.error(last.error);
24
24
  }
25
- else if (_this.lastResult) {
26
- observer.next && observer.next(_this.lastResult);
25
+ else if (last && last.result) {
26
+ observer.next && observer.next(last.result);
27
27
  }
28
28
  if (first) {
29
29
  _this.reobserve().catch(function () { });
@@ -36,21 +36,9 @@ var ObservableQuery = (function (_super) {
36
36
  }) || this;
37
37
  _this.observers = new Set();
38
38
  _this.subscriptions = new Set();
39
- _this.observer = {
40
- next: function (result) {
41
- if (_this.lastError || _this.isDifferentFromLastResult(result)) {
42
- _this.updateLastResult(result);
43
- iterateObserversSafely(_this.observers, 'next', result);
44
- }
45
- },
46
- error: function (error) {
47
- _this.updateLastResult(__assign(__assign({}, _this.lastResult), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false }));
48
- iterateObserversSafely(_this.observers, 'error', _this.lastError = error);
49
- },
50
- };
51
39
  _this.isTornDown = false;
52
40
  _this.options = options;
53
- _this.queryId = queryManager.generateQueryId();
41
+ _this.queryId = queryInfo.queryId || queryManager.generateQueryId();
54
42
  var opDef = getOperationDefinition(options.query);
55
43
  _this.queryName = opDef && opDef.name && opDef.name.value;
56
44
  _this.initialFetchPolicy = options.fetchPolicy || "cache-first";
@@ -86,15 +74,20 @@ var ObservableQuery = (function (_super) {
86
74
  };
87
75
  ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {
88
76
  if (saveAsLastResult === void 0) { saveAsLastResult = true; }
89
- var _a = this, lastResult = _a.lastResult, _b = _a.options.fetchPolicy, fetchPolicy = _b === void 0 ? "cache-first" : _b;
77
+ var lastResult = this.getLastResult(true);
90
78
  var networkStatus = this.queryInfo.networkStatus ||
91
79
  (lastResult && lastResult.networkStatus) ||
92
80
  NetworkStatus.ready;
93
81
  var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });
94
82
  if (!this.queryManager.transform(this.options.query).hasForcedResolvers) {
95
83
  var diff = this.queryInfo.getDiff();
96
- result.data = (diff.complete ||
97
- this.options.returnPartialData) ? diff.result : void 0;
84
+ if (diff.complete || this.options.returnPartialData) {
85
+ result.data = diff.result;
86
+ }
87
+ if (equal(result.data, {})) {
88
+ result.data = void 0;
89
+ }
90
+ var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? "cache-first" : _a;
98
91
  if (diff.complete) {
99
92
  if (result.networkStatus === NetworkStatus.loading &&
100
93
  (fetchPolicy === 'cache-first' ||
@@ -107,12 +100,13 @@ var ObservableQuery = (function (_super) {
107
100
  else if (fetchPolicy !== "no-cache") {
108
101
  result.partial = true;
109
102
  }
110
- if (!diff.complete &&
103
+ if (__DEV__ &&
104
+ !diff.complete &&
111
105
  !this.options.partialRefetch &&
112
106
  !result.loading &&
113
107
  !result.data &&
114
108
  !result.error) {
115
- result.error = new ApolloError({ clientErrors: diff.missing });
109
+ logMissingFieldErrors(diff.missing);
116
110
  }
117
111
  }
118
112
  if (saveAsLastResult) {
@@ -121,18 +115,24 @@ var ObservableQuery = (function (_super) {
121
115
  return result;
122
116
  };
123
117
  ObservableQuery.prototype.isDifferentFromLastResult = function (newResult) {
124
- return !equal(this.lastResultSnapshot, newResult);
118
+ return !this.last || !equal(this.last.result, newResult);
125
119
  };
126
- ObservableQuery.prototype.getLastResult = function () {
127
- return this.lastResult;
120
+ ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {
121
+ var last = this.last;
122
+ if (last &&
123
+ last[key] &&
124
+ (!variablesMustMatch || equal(last.variables, this.variables))) {
125
+ return last[key];
126
+ }
128
127
  };
129
- ObservableQuery.prototype.getLastError = function () {
130
- return this.lastError;
128
+ ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {
129
+ return this.getLast("result", variablesMustMatch);
130
+ };
131
+ ObservableQuery.prototype.getLastError = function (variablesMustMatch) {
132
+ return this.getLast("error", variablesMustMatch);
131
133
  };
132
134
  ObservableQuery.prototype.resetLastResults = function () {
133
- delete this.lastResult;
134
- delete this.lastResultSnapshot;
135
- delete this.lastError;
135
+ delete this.last;
136
136
  this.isTornDown = false;
137
137
  };
138
138
  ObservableQuery.prototype.resetQueryStoreErrors = function () {
@@ -245,12 +245,10 @@ var ObservableQuery = (function (_super) {
245
245
  }, NetworkStatus.setVariables);
246
246
  };
247
247
  ObservableQuery.prototype.updateQuery = function (mapFn) {
248
- var _a;
249
248
  var queryManager = this.queryManager;
250
249
  var result = queryManager.cache.diff({
251
250
  query: this.options.query,
252
251
  variables: this.variables,
253
- previousResult: (_a = this.lastResult) === null || _a === void 0 ? void 0 : _a.data,
254
252
  returnPartialData: true,
255
253
  optimistic: false,
256
254
  }).result;
@@ -320,18 +318,18 @@ var ObservableQuery = (function (_super) {
320
318
  };
321
319
  poll();
322
320
  };
323
- ObservableQuery.prototype.updateLastResult = function (newResult) {
324
- var previousResult = this.lastResult;
325
- this.lastResult = newResult;
326
- this.lastResultSnapshot = this.queryManager.assumeImmutableResults
327
- ? newResult
328
- : cloneDeep(newResult);
321
+ ObservableQuery.prototype.updateLastResult = function (newResult, variables) {
322
+ if (variables === void 0) { variables = this.variables; }
323
+ this.last = __assign(__assign({}, this.last), { result: this.queryManager.assumeImmutableResults
324
+ ? newResult
325
+ : cloneDeep(newResult), variables: variables });
329
326
  if (!isNonEmptyArray(newResult.errors)) {
330
- delete this.lastError;
327
+ delete this.last.error;
331
328
  }
332
- return previousResult;
329
+ return this.last;
333
330
  };
334
331
  ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {
332
+ var _this = this;
335
333
  this.isTornDown = false;
336
334
  var useDisposableConcast = newNetworkStatus === NetworkStatus.refetch ||
337
335
  newNetworkStatus === NetworkStatus.fetchMore ||
@@ -352,18 +350,39 @@ var ObservableQuery = (function (_super) {
352
350
  }
353
351
  }
354
352
  }
353
+ var variables = options.variables && __assign({}, options.variables);
355
354
  var concast = this.fetch(options, newNetworkStatus);
355
+ var observer = {
356
+ next: function (result) {
357
+ _this.reportResult(result, variables);
358
+ },
359
+ error: function (error) {
360
+ _this.reportError(error, variables);
361
+ },
362
+ };
356
363
  if (!useDisposableConcast) {
357
- if (this.concast) {
364
+ if (this.concast && this.observer) {
358
365
  this.concast.removeObserver(this.observer, true);
359
366
  }
360
367
  this.concast = concast;
368
+ this.observer = observer;
361
369
  }
362
- concast.addObserver(this.observer);
370
+ concast.addObserver(observer);
363
371
  return concast.promise;
364
372
  };
365
373
  ObservableQuery.prototype.observe = function () {
366
- this.observer.next(this.getCurrentResult(false));
374
+ this.reportResult(this.getCurrentResult(false), this.variables);
375
+ };
376
+ ObservableQuery.prototype.reportResult = function (result, variables) {
377
+ if (this.getLastError() || this.isDifferentFromLastResult(result)) {
378
+ this.updateLastResult(result, variables);
379
+ iterateObserversSafely(this.observers, 'next', result);
380
+ }
381
+ };
382
+ ObservableQuery.prototype.reportError = function (error, variables) {
383
+ var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });
384
+ this.updateLastResult(errorResult, variables);
385
+ iterateObserversSafely(this.observers, 'error', this.last.error = error);
367
386
  };
368
387
  ObservableQuery.prototype.hasObservers = function () {
369
388
  return this.observers.size > 0;
@@ -371,9 +390,10 @@ var ObservableQuery = (function (_super) {
371
390
  ObservableQuery.prototype.tearDownQuery = function () {
372
391
  if (this.isTornDown)
373
392
  return;
374
- if (this.concast) {
393
+ if (this.concast && this.observer) {
375
394
  this.concast.removeObserver(this.observer);
376
395
  delete this.concast;
396
+ delete this.observer;
377
397
  }
378
398
  this.stopPolling();
379
399
  this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });
@@ -389,6 +409,11 @@ fixObservableSubclass(ObservableQuery);
389
409
  function defaultSubscriptionObserverErrorCallback(error) {
390
410
  __DEV__ && invariant.error('Unhandled error', error.message, error.stack);
391
411
  }
412
+ export function logMissingFieldErrors(missing) {
413
+ if (__DEV__ && isNonEmptyArray(missing)) {
414
+ __DEV__ && invariant.debug("Missing cache result fields: " + missing.map(function (m) { return m.path.join('.'); }).join(', '), missing);
415
+ }
416
+ }
392
417
  export function applyNextFetchPolicy(options) {
393
418
  var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? "cache-first" : _a, nextFetchPolicy = options.nextFetchPolicy;
394
419
  if (nextFetchPolicy) {
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQuery.js","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from 'ts-invariant';\nimport { equal } from '@wry/equality';\n\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport {\n Concast,\n compact,\n cloneDeep,\n getOperationDefinition,\n Observable,\n Observer,\n ObservableSubscription,\n iterateObserversSafely,\n isNonEmptyArray,\n fixObservableSubclass,\n} from '../utilities';\nimport { ApolloError } from '../errors';\nimport { QueryManager } from './QueryManager';\nimport { ApolloQueryResult, OperationVariables } from './types';\nimport {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n WatchQueryFetchPolicy,\n} from './watchQueryOptions';\nimport { QueryInfo } from './QueryInfo';\n\nexport interface FetchMoreOptions<\n TData = any,\n TVariables = OperationVariables\n> {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult?: TData;\n variables?: TVariables;\n },\n ) => TData;\n}\n\nexport interface UpdateQueryOptions<TVariables> {\n variables?: TVariables;\n}\n\nlet warnedAboutUpdateQuery = false;\n\nexport class ObservableQuery<\n TData = any,\n TVariables = OperationVariables\n> extends Observable<ApolloQueryResult<TData>> {\n public readonly options: WatchQueryOptions<TVariables, TData>;\n public readonly queryId: string;\n public readonly queryName?: string;\n\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n public get variables(): TVariables | undefined {\n return this.options.variables;\n }\n\n // Original value of this.options.fetchPolicy (defaulting to \"cache-first\"),\n // from whenever the ObservableQuery was first created.\n private initialFetchPolicy: WatchQueryFetchPolicy;\n\n private isTornDown: boolean;\n private queryManager: QueryManager<any>;\n private observers = new Set<Observer<ApolloQueryResult<TData>>>();\n private subscriptions = new Set<ObservableSubscription>();\n\n private lastResult: ApolloQueryResult<TData> | undefined;\n private lastResultSnapshot: ApolloQueryResult<TData> | undefined;\n private lastError: ApolloError | undefined;\n private queryInfo: QueryInfo;\n\n private concast?: Concast<ApolloQueryResult<TData>>;\n private pollingInfo?: {\n interval: number;\n timeout: ReturnType<typeof setTimeout>;\n };\n\n constructor({\n queryManager,\n queryInfo,\n options,\n }: {\n queryManager: QueryManager<any>;\n queryInfo: QueryInfo;\n options: WatchQueryOptions<TVariables, TData>;\n }) {\n super((observer: Observer<ApolloQueryResult<TData>>) => {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = (observer as any)._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch {}\n\n const first = !this.observers.size;\n this.observers.add(observer);\n\n // Deliver most recent error or result.\n if (this.lastError) {\n observer.error && observer.error(this.lastError);\n } else if (this.lastResult) {\n observer.next && observer.next(this.lastResult);\n }\n\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n this.reobserve().catch(() => {});\n }\n\n return () => {\n if (this.observers.delete(observer) && !this.observers.size) {\n this.tearDownQuery();\n }\n };\n });\n\n // active state\n this.isTornDown = false;\n\n // query information\n this.options = options;\n this.queryId = queryManager.generateQueryId();\n\n const opDef = getOperationDefinition(options.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\n\n this.initialFetchPolicy = options.fetchPolicy || \"cache-first\";\n\n // related classes\n this.queryManager = queryManager;\n this.queryInfo = queryInfo;\n }\n\n public result(): Promise<ApolloQueryResult<TData>> {\n return new Promise((resolve, reject) => {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: (result: ApolloQueryResult<TData>) => {\n resolve(result);\n\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n this.observers.delete(observer);\n if (!this.observers.size) {\n this.queryManager.removeQuery(this.queryId);\n }\n\n setTimeout(() => {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n const subscription = this.subscribe(observer);\n });\n }\n\n public getCurrentResult(saveAsLastResult = true): ApolloQueryResult<TData> {\n const {\n lastResult,\n options: {\n fetchPolicy = \"cache-first\",\n },\n } = this;\n\n const networkStatus =\n this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n\n const result = {\n ...lastResult,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus,\n } as ApolloQueryResult<TData>;\n\n // If this.options.query has @client(always: true) fields, we cannot trust\n // diff.result, since it was read from the cache without running local\n // resolvers (and it's too late to run resolvers now, since we must return a\n // result synchronously).\n if (!this.queryManager.transform(this.options.query).hasForcedResolvers) {\n const diff = this.queryInfo.getDiff();\n\n result.data = (\n diff.complete ||\n this.options.returnPartialData\n ) ? diff.result : void 0;\n\n if (diff.complete) {\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next\n // result we receive will have NetworkStatus.ready and !loading.\n if (result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n delete result.partial;\n } else if (fetchPolicy !== \"no-cache\") {\n // Since result.partial comes from diff.complete, and we shouldn't be\n // using cache data to provide a DiffResult when the fetchPolicy is\n // \"no-cache\", avoid annotating result.partial for \"no-cache\" results.\n result.partial = true;\n }\n\n if (\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error\n ) {\n result.error = new ApolloError({ clientErrors: diff.missing });\n }\n }\n\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n\n return result;\n }\n\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n public isDifferentFromLastResult(newResult: ApolloQueryResult<TData>) {\n return !equal(this.lastResultSnapshot, newResult);\n }\n\n // Returns the last result that observer.next was called with. This is not the same as\n // getCurrentResult! If you're not sure which you need, then you probably need getCurrentResult.\n public getLastResult(): ApolloQueryResult<TData> | undefined {\n return this.lastResult;\n }\n\n public getLastError(): ApolloError | undefined {\n return this.lastError;\n }\n\n public resetLastResults(): void {\n delete this.lastResult;\n delete this.lastResultSnapshot;\n delete this.lastError;\n this.isTornDown = false;\n }\n\n public resetQueryStoreErrors() {\n this.queryManager.resetErrors(this.queryId);\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public refetch(variables?: Partial<TVariables>): Promise<ApolloQueryResult<TData>> {\n const reobserveOptions: Partial<WatchQueryOptions<TVariables, TData>> = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n const { fetchPolicy } = this.options;\n if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n } else if (fetchPolicy !== 'cache-and-network') {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = {\n ...this.options.variables,\n ...variables,\n } as TVariables;\n }\n\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n }\n\n public fetchMore(\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> &\n FetchMoreOptions<TData, TVariables>,\n ): Promise<ApolloQueryResult<TData>> {\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n ...fetchMoreOptions,\n variables: {\n ...this.options.variables,\n ...fetchMoreOptions.variables,\n },\n }),\n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\",\n } as WatchQueryOptions;\n\n const qid = this.queryManager.generateQueryId();\n\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.queryInfo.networkStatus = NetworkStatus.fetchMore;\n this.observe();\n }\n\n return this.queryManager.fetchQuery(\n qid,\n combinedOptions,\n NetworkStatus.fetchMore,\n ).then(fetchMoreResult => {\n const data = fetchMoreResult.data as TData;\n const { updateQuery } = fetchMoreOptions;\n\n if (updateQuery) {\n if (__DEV__ &&\n !warnedAboutUpdateQuery) {\n invariant.warn(\n`The updateQuery callback for fetchMore is deprecated, and will be removed\nin the next major version of Apollo Client.\n\nPlease convert updateQuery functions to field policies with appropriate\nread and merge functions, or use/adapt a helper function (such as\nconcatPagination, offsetLimitPagination, or relayStylePagination) from\n@apollo/client/utilities.\n\nThe field policy system handles pagination more effectively than a\nhand-written updateQuery function, and you only need to define the policy\nonce, rather than every time you call fetchMore.`);\n warnedAboutUpdateQuery = true;\n }\n this.updateQuery(previous => updateQuery(previous, {\n fetchMoreResult: data,\n variables: combinedOptions.variables as TVariables,\n }));\n } else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n this.queryManager.cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data,\n });\n }\n\n return fetchMoreResult as ApolloQueryResult<TData>;\n\n }).finally(() => {\n this.queryManager.stopQuery(qid);\n this.reobserve();\n });\n }\n\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n public subscribeToMore<\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >,\n ) {\n const subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: (subscriptionData: { data: TSubscriptionData }) => {\n const { updateQuery } = options;\n if (updateQuery) {\n this.updateQuery<TSubscriptionVariables>(\n (previous, { variables }) =>\n updateQuery(previous, {\n subscriptionData,\n variables,\n }),\n );\n }\n },\n error: (err: any) => {\n if (options.onError) {\n options.onError(err);\n return;\n }\n invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n\n this.subscriptions.add(subscription);\n\n return () => {\n if (this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n }\n\n public setOptions(\n newOptions: Partial<WatchQueryOptions<TVariables, TData>>,\n ): Promise<ApolloQueryResult<TData>> {\n return this.reobserve(newOptions);\n }\n\n /**\n * This is for *internal* use only. Most users should instead use `refetch`\n * in order to be properly notified of results even when they come from cache.\n *\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. If you want to force new results, use `refetch`.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @private\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public setVariables(\n variables: TVariables,\n ): Promise<ApolloQueryResult<TData> | void> {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n\n this.options.variables = variables;\n\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.initialFetchPolicy,\n variables,\n }, NetworkStatus.setVariables);\n }\n\n public updateQuery<TVars = TVariables>(\n mapFn: (\n previousQueryResult: TData,\n options: Pick<WatchQueryOptions<TVars, TData>, \"variables\">,\n ) => TData,\n ): void {\n const { queryManager } = this;\n const { result } = queryManager.cache.diff<TData>({\n query: this.options.query,\n variables: this.variables,\n previousResult: this.lastResult?.data,\n returnPartialData: true,\n optimistic: false,\n });\n\n const newResult = mapFn(result!, {\n variables: (this as any).variables,\n });\n\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n\n queryManager.broadcastQueries();\n }\n }\n\n public startPolling(pollInterval: number) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n }\n\n public stopPolling() {\n this.options.pollInterval = 0;\n this.updatePolling();\n }\n\n private fetch(\n options: WatchQueryOptions<TVariables, TData>,\n newNetworkStatus?: NetworkStatus,\n ): Concast<ApolloQueryResult<TData>> {\n this.queryManager.setObservableQuery(this);\n return this.queryManager.fetchQueryObservable(\n this.queryId,\n options,\n newNetworkStatus,\n );\n }\n\n // Turns polling on or off based on this.options.pollInterval.\n private updatePolling() {\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n\n const {\n pollingInfo,\n options: {\n pollInterval,\n },\n } = this;\n\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n\n invariant(\n pollInterval,\n 'Attempted to start a polling query without a polling interval.',\n );\n\n const info = pollingInfo || (this.pollingInfo = {} as any);\n info.interval = pollInterval;\n\n const maybeFetch = () => {\n if (this.pollingInfo) {\n if (!isNetworkRequestInFlight(this.queryInfo.networkStatus)) {\n this.reobserve({\n fetchPolicy: \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n } else {\n poll();\n }\n };\n };\n\n const poll = () => {\n const info = this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n\n poll();\n }\n\n private updateLastResult(newResult: ApolloQueryResult<TData>) {\n const previousResult = this.lastResult;\n this.lastResult = newResult;\n this.lastResultSnapshot = this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult);\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.lastError;\n }\n return previousResult;\n }\n\n public reobserve(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus,\n ): Promise<ApolloQueryResult<TData>> {\n this.isTornDown = false;\n\n const useDisposableConcast =\n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n\n // Save the old variables, since Object.assign may modify them below.\n const oldVariables = this.options.variables;\n\n const options = useDisposableConcast\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n ? compact(this.options, newOptions)\n : Object.assign(this.options, compact(newOptions));\n\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (\n newOptions &&\n newOptions.variables &&\n !newOptions.fetchPolicy &&\n !equal(newOptions.variables, oldVariables)\n ) {\n options.fetchPolicy = this.initialFetchPolicy;\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n\n const concast = this.fetch(options, newNetworkStatus);\n\n if (!useDisposableConcast) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object, in part so\n // that we can remove it here without triggering any unsubscriptions,\n // because we just want to ignore the old observable, not prematurely shut\n // it down, since other consumers may be awaiting this.concast.promise.\n if (this.concast) {\n this.concast.removeObserver(this.observer, true);\n }\n\n this.concast = concast;\n }\n\n concast.addObserver(this.observer);\n\n return concast.promise;\n }\n\n // Pass the current result to this.observer.next without applying any\n // fetch policies.\n private observe() {\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.observer.next.\n this.observer.next(this.getCurrentResult(false));\n }\n\n private observer = {\n next: (result: ApolloQueryResult<TData>) => {\n if (this.lastError || this.isDifferentFromLastResult(result)) {\n this.updateLastResult(result);\n iterateObserversSafely(this.observers, 'next', result);\n }\n },\n\n error: (error: ApolloError) => {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n this.updateLastResult({\n ...this.lastResult,\n error,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false,\n } as ApolloQueryResult<TData>);\n\n iterateObserversSafely(this.observers, 'error', this.lastError = error);\n },\n };\n\n public hasObservers() {\n return this.observers.size > 0;\n }\n\n private tearDownQuery() {\n if (this.isTornDown) return;\n if (this.concast) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n }\n\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n }\n}\n\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n\nfunction defaultSubscriptionObserverErrorCallback(error: ApolloError) {\n invariant.error('Unhandled error', error.message, error.stack);\n}\n\n// Adopt options.nextFetchPolicy (if defined) as a replacement for\n// options.fetchPolicy. Since this method also removes options.nextFetchPolicy\n// from options, the adoption tends to be idempotent, unless nextFetchPolicy\n// is a function that keeps setting options.nextFetchPolicy (uncommon).\nexport function applyNextFetchPolicy<TData, TVars>(\n options: Pick<\n WatchQueryOptions<TVars, TData>,\n | \"fetchPolicy\"\n | \"nextFetchPolicy\"\n >,\n) {\n const {\n fetchPolicy = \"cache-first\",\n nextFetchPolicy,\n } = options;\n\n if (nextFetchPolicy) {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would seem\n // to imply. Instead, when the cache reports an update after the initial\n // network request, it may be desirable for subsequent network requests to\n // be triggered only if the cache result is incomplete. To that end, the\n // options.nextFetchPolicy option provides an easy way to update\n // options.fetchPolicy after the intial network request, without having to\n // call observableQuery.setOptions.\n options.fetchPolicy = typeof nextFetchPolicy === \"function\"\n ? nextFetchPolicy.call(options, fetchPolicy)\n : nextFetchPolicy;\n }\n}\n"]}
1
+ {"version":3,"file":"ObservableQuery.js","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from 'ts-invariant';\nimport { equal } from '@wry/equality';\n\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport {\n Concast,\n compact,\n cloneDeep,\n getOperationDefinition,\n Observable,\n Observer,\n ObservableSubscription,\n iterateObserversSafely,\n isNonEmptyArray,\n fixObservableSubclass,\n} from '../utilities';\nimport { ApolloError } from '../errors';\nimport { QueryManager } from './QueryManager';\nimport { ApolloQueryResult, OperationVariables } from './types';\nimport {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n WatchQueryFetchPolicy,\n} from './watchQueryOptions';\nimport { QueryInfo } from './QueryInfo';\nimport { MissingFieldError } from '../cache';\n\nexport interface FetchMoreOptions<\n TData = any,\n TVariables = OperationVariables\n> {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult?: TData;\n variables?: TVariables;\n },\n ) => TData;\n}\n\nexport interface UpdateQueryOptions<TVariables> {\n variables?: TVariables;\n}\n\nlet warnedAboutUpdateQuery = false;\n\ninterface Last<TData, TVariables> {\n result: ApolloQueryResult<TData>;\n variables?: TVariables;\n error?: ApolloError;\n}\n\nexport class ObservableQuery<\n TData = any,\n TVariables = OperationVariables\n> extends Observable<ApolloQueryResult<TData>> {\n public readonly options: WatchQueryOptions<TVariables, TData>;\n public readonly queryId: string;\n public readonly queryName?: string;\n\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n public get variables(): TVariables | undefined {\n return this.options.variables;\n }\n\n // Original value of this.options.fetchPolicy (defaulting to \"cache-first\"),\n // from whenever the ObservableQuery was first created.\n private initialFetchPolicy: WatchQueryFetchPolicy;\n\n private isTornDown: boolean;\n private queryManager: QueryManager<any>;\n private observers = new Set<Observer<ApolloQueryResult<TData>>>();\n private subscriptions = new Set<ObservableSubscription>();\n\n private last?: Last<TData, TVariables>;\n\n private queryInfo: QueryInfo;\n\n // When this.concast is defined, this.observer is the Observer currently\n // subscribed to that Concast.\n private concast?: Concast<ApolloQueryResult<TData>>;\n private observer?: Observer<ApolloQueryResult<TData>>;\n\n private pollingInfo?: {\n interval: number;\n timeout: ReturnType<typeof setTimeout>;\n };\n\n constructor({\n queryManager,\n queryInfo,\n options,\n }: {\n queryManager: QueryManager<any>;\n queryInfo: QueryInfo;\n options: WatchQueryOptions<TVariables, TData>;\n }) {\n super((observer: Observer<ApolloQueryResult<TData>>) => {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = (observer as any)._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch {}\n\n const first = !this.observers.size;\n this.observers.add(observer);\n\n // Deliver most recent error or result.\n const last = this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n } else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n this.reobserve().catch(() => {});\n }\n\n return () => {\n if (this.observers.delete(observer) && !this.observers.size) {\n this.tearDownQuery();\n }\n };\n });\n\n // active state\n this.isTornDown = false;\n\n // query information\n this.options = options;\n this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n\n const opDef = getOperationDefinition(options.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\n\n this.initialFetchPolicy = options.fetchPolicy || \"cache-first\";\n\n // related classes\n this.queryManager = queryManager;\n this.queryInfo = queryInfo;\n }\n\n public result(): Promise<ApolloQueryResult<TData>> {\n return new Promise((resolve, reject) => {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: (result: ApolloQueryResult<TData>) => {\n resolve(result);\n\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n this.observers.delete(observer);\n if (!this.observers.size) {\n this.queryManager.removeQuery(this.queryId);\n }\n\n setTimeout(() => {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n const subscription = this.subscribe(observer);\n });\n }\n\n public getCurrentResult(saveAsLastResult = true): ApolloQueryResult<TData> {\n // Use the last result as long as the variables match this.variables.\n const lastResult = this.getLastResult(true);\n\n const networkStatus =\n this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n\n const result = {\n ...lastResult,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus,\n } as ApolloQueryResult<TData>;\n\n // If this.options.query has @client(always: true) fields, we cannot trust\n // diff.result, since it was read from the cache without running local\n // resolvers (and it's too late to run resolvers now, since we must return a\n // result synchronously).\n if (!this.queryManager.transform(this.options.query).hasForcedResolvers) {\n const diff = this.queryInfo.getDiff();\n\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0 as any;\n }\n\n const { fetchPolicy = \"cache-first\" } = this.options;\n if (diff.complete) {\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next\n // result we receive will have NetworkStatus.ready and !loading.\n if (result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n delete result.partial;\n } else if (fetchPolicy !== \"no-cache\") {\n // Since result.partial comes from diff.complete, and we shouldn't be\n // using cache data to provide a DiffResult when the fetchPolicy is\n // \"no-cache\", avoid annotating result.partial for \"no-cache\" results.\n result.partial = true;\n }\n\n if (\n __DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error\n ) {\n logMissingFieldErrors(diff.missing);\n }\n }\n\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n\n return result;\n }\n\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n public isDifferentFromLastResult(newResult: ApolloQueryResult<TData>) {\n return !this.last || !equal(this.last.result, newResult);\n }\n\n private getLast<K extends keyof Last<TData, TVariables>>(\n key: K,\n variablesMustMatch?: boolean,\n ) {\n const last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last!.variables, this.variables))) {\n return last[key];\n }\n }\n\n public getLastResult(variablesMustMatch?: boolean): ApolloQueryResult<TData> | undefined {\n return this.getLast(\"result\", variablesMustMatch);\n }\n\n public getLastError(variablesMustMatch?: boolean): ApolloError | undefined {\n return this.getLast(\"error\", variablesMustMatch);\n }\n\n public resetLastResults(): void {\n delete this.last;\n this.isTornDown = false;\n }\n\n public resetQueryStoreErrors() {\n this.queryManager.resetErrors(this.queryId);\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public refetch(variables?: Partial<TVariables>): Promise<ApolloQueryResult<TData>> {\n const reobserveOptions: Partial<WatchQueryOptions<TVariables, TData>> = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n const { fetchPolicy } = this.options;\n if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n } else if (fetchPolicy !== 'cache-and-network') {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = {\n ...this.options.variables,\n ...variables,\n } as TVariables;\n }\n\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n }\n\n public fetchMore(\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> &\n FetchMoreOptions<TData, TVariables>,\n ): Promise<ApolloQueryResult<TData>> {\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n ...fetchMoreOptions,\n variables: {\n ...this.options.variables,\n ...fetchMoreOptions.variables,\n },\n }),\n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\",\n } as WatchQueryOptions;\n\n const qid = this.queryManager.generateQueryId();\n\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.queryInfo.networkStatus = NetworkStatus.fetchMore;\n this.observe();\n }\n\n return this.queryManager.fetchQuery(\n qid,\n combinedOptions,\n NetworkStatus.fetchMore,\n ).then(fetchMoreResult => {\n const data = fetchMoreResult.data as TData;\n const { updateQuery } = fetchMoreOptions;\n\n if (updateQuery) {\n if (__DEV__ &&\n !warnedAboutUpdateQuery) {\n invariant.warn(\n`The updateQuery callback for fetchMore is deprecated, and will be removed\nin the next major version of Apollo Client.\n\nPlease convert updateQuery functions to field policies with appropriate\nread and merge functions, or use/adapt a helper function (such as\nconcatPagination, offsetLimitPagination, or relayStylePagination) from\n@apollo/client/utilities.\n\nThe field policy system handles pagination more effectively than a\nhand-written updateQuery function, and you only need to define the policy\nonce, rather than every time you call fetchMore.`);\n warnedAboutUpdateQuery = true;\n }\n this.updateQuery(previous => updateQuery(previous, {\n fetchMoreResult: data,\n variables: combinedOptions.variables as TVariables,\n }));\n } else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n this.queryManager.cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data,\n });\n }\n\n return fetchMoreResult as ApolloQueryResult<TData>;\n\n }).finally(() => {\n this.queryManager.stopQuery(qid);\n this.reobserve();\n });\n }\n\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n public subscribeToMore<\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >,\n ) {\n const subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: (subscriptionData: { data: TSubscriptionData }) => {\n const { updateQuery } = options;\n if (updateQuery) {\n this.updateQuery<TSubscriptionVariables>(\n (previous, { variables }) =>\n updateQuery(previous, {\n subscriptionData,\n variables,\n }),\n );\n }\n },\n error: (err: any) => {\n if (options.onError) {\n options.onError(err);\n return;\n }\n invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n\n this.subscriptions.add(subscription);\n\n return () => {\n if (this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n }\n\n public setOptions(\n newOptions: Partial<WatchQueryOptions<TVariables, TData>>,\n ): Promise<ApolloQueryResult<TData>> {\n return this.reobserve(newOptions);\n }\n\n /**\n * This is for *internal* use only. Most users should instead use `refetch`\n * in order to be properly notified of results even when they come from cache.\n *\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. If you want to force new results, use `refetch`.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @private\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public setVariables(\n variables: TVariables,\n ): Promise<ApolloQueryResult<TData> | void> {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n\n this.options.variables = variables;\n\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.initialFetchPolicy,\n variables,\n }, NetworkStatus.setVariables);\n }\n\n public updateQuery<TVars = TVariables>(\n mapFn: (\n previousQueryResult: TData,\n options: Pick<WatchQueryOptions<TVars, TData>, \"variables\">,\n ) => TData,\n ): void {\n const { queryManager } = this;\n const { result } = queryManager.cache.diff<TData>({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n const newResult = mapFn(result!, {\n variables: (this as any).variables,\n });\n\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n\n queryManager.broadcastQueries();\n }\n }\n\n public startPolling(pollInterval: number) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n }\n\n public stopPolling() {\n this.options.pollInterval = 0;\n this.updatePolling();\n }\n\n private fetch(\n options: WatchQueryOptions<TVariables, TData>,\n newNetworkStatus?: NetworkStatus,\n ): Concast<ApolloQueryResult<TData>> {\n this.queryManager.setObservableQuery(this);\n return this.queryManager.fetchQueryObservable(\n this.queryId,\n options,\n newNetworkStatus,\n );\n }\n\n // Turns polling on or off based on this.options.pollInterval.\n private updatePolling() {\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n\n const {\n pollingInfo,\n options: {\n pollInterval,\n },\n } = this;\n\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n\n invariant(\n pollInterval,\n 'Attempted to start a polling query without a polling interval.',\n );\n\n const info = pollingInfo || (this.pollingInfo = {} as any);\n info.interval = pollInterval;\n\n const maybeFetch = () => {\n if (this.pollingInfo) {\n if (!isNetworkRequestInFlight(this.queryInfo.networkStatus)) {\n this.reobserve({\n fetchPolicy: \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n } else {\n poll();\n }\n };\n };\n\n const poll = () => {\n const info = this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n\n poll();\n }\n\n private updateLastResult(\n newResult: ApolloQueryResult<TData>,\n variables = this.variables,\n ) {\n this.last = {\n ...this.last,\n result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult),\n variables,\n };\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n }\n\n public reobserve(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus,\n ): Promise<ApolloQueryResult<TData>> {\n this.isTornDown = false;\n\n const useDisposableConcast =\n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n\n // Save the old variables, since Object.assign may modify them below.\n const oldVariables = this.options.variables;\n\n const options = useDisposableConcast\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n ? compact(this.options, newOptions)\n : Object.assign(this.options, compact(newOptions));\n\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (\n newOptions &&\n newOptions.variables &&\n !newOptions.fetchPolicy &&\n !equal(newOptions.variables, oldVariables)\n ) {\n options.fetchPolicy = this.initialFetchPolicy;\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n\n const variables = options.variables && { ...options.variables };\n const concast = this.fetch(options, newNetworkStatus);\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: result => {\n this.reportResult(result, variables);\n },\n error: error => {\n this.reportError(error, variables);\n },\n };\n\n if (!useDisposableConcast) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object, in part so\n // that we can remove it here without triggering any unsubscriptions,\n // because we just want to ignore the old observable, not prematurely shut\n // it down, since other consumers may be awaiting this.concast.promise.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer, true);\n }\n\n this.concast = concast;\n this.observer = observer;\n }\n\n concast.addObserver(observer);\n\n return concast.promise;\n }\n\n // Pass the current result to this.observer.next without applying any\n // fetch policies.\n private observe() {\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.observer.next.\n this.reportResult(\n this.getCurrentResult(false),\n this.variables,\n );\n }\n\n private reportResult(\n result: ApolloQueryResult<TData>,\n variables: TVariables | undefined,\n ) {\n if (this.getLastError() || this.isDifferentFromLastResult(result)) {\n this.updateLastResult(result, variables);\n iterateObserversSafely(this.observers, 'next', result);\n }\n }\n\n private reportError(\n error: ApolloError,\n variables: TVariables | undefined,\n ) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n const errorResult = {\n ...this.getLastResult(),\n error,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false,\n } as ApolloQueryResult<TData>;\n\n this.updateLastResult(errorResult, variables);\n\n iterateObserversSafely(this.observers, 'error', this.last!.error = error);\n }\n\n public hasObservers() {\n return this.observers.size > 0;\n }\n\n private tearDownQuery() {\n if (this.isTornDown) return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n }\n}\n\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n\nfunction defaultSubscriptionObserverErrorCallback(error: ApolloError) {\n invariant.error('Unhandled error', error.message, error.stack);\n}\n\nexport function logMissingFieldErrors(\n missing: MissingFieldError[] | undefined,\n) {\n if (__DEV__ && isNonEmptyArray(missing)) {\n invariant.debug(`Missing cache result fields: ${\n missing.map(m => m.path.join('.')).join(', ')\n }`, missing);\n }\n}\n\n// Adopt options.nextFetchPolicy (if defined) as a replacement for\n// options.fetchPolicy. Since this method also removes options.nextFetchPolicy\n// from options, the adoption tends to be idempotent, unless nextFetchPolicy\n// is a function that keeps setting options.nextFetchPolicy (uncommon).\nexport function applyNextFetchPolicy<TData, TVars>(\n options: Pick<\n WatchQueryOptions<TVars, TData>,\n | \"fetchPolicy\"\n | \"nextFetchPolicy\"\n >,\n) {\n const {\n fetchPolicy = \"cache-first\",\n nextFetchPolicy,\n } = options;\n\n if (nextFetchPolicy) {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would seem\n // to imply. Instead, when the cache reports an update after the initial\n // network request, it may be desirable for subsequent network requests to\n // be triggered only if the cache result is incomplete. To that end, the\n // options.nextFetchPolicy option provides an easy way to update\n // options.fetchPolicy after the intial network request, without having to\n // call observableQuery.setOptions.\n options.fetchPolicy = typeof nextFetchPolicy === \"function\"\n ? nextFetchPolicy.call(options, fetchPolicy)\n : nextFetchPolicy;\n }\n}\n"]}
@@ -1,12 +1,13 @@
1
1
  /// <reference types="zen-observable" />
2
2
  import { DocumentNode, GraphQLError } from 'graphql';
3
- import { Cache, ApolloCache } from '../cache';
3
+ import { Cache } from '../cache';
4
4
  import { WatchQueryOptions, ErrorPolicy } from './watchQueryOptions';
5
5
  import { ObservableQuery } from './ObservableQuery';
6
6
  import { QueryListener } from './types';
7
7
  import { FetchResult } from '../link/core';
8
8
  import { NetworkStatus } from './networkStatus';
9
9
  import { ApolloError } from '../errors';
10
+ import { QueryManager } from './QueryManager';
10
11
  export declare type QueryStoreValue = Pick<QueryInfo, "variables" | "networkStatus" | "networkError" | "graphQLErrors">;
11
12
  export declare const enum CacheWriteBehavior {
12
13
  FORBID = 0,
@@ -14,7 +15,7 @@ export declare const enum CacheWriteBehavior {
14
15
  MERGE = 2
15
16
  }
16
17
  export declare class QueryInfo {
17
- private cache;
18
+ readonly queryId: string;
18
19
  listeners: Set<QueryListener>;
19
20
  document: DocumentNode | null;
20
21
  lastRequestId: number;
@@ -24,7 +25,8 @@ export declare class QueryInfo {
24
25
  networkError?: Error | null;
25
26
  graphQLErrors?: ReadonlyArray<GraphQLError>;
26
27
  stopped: boolean;
27
- constructor(cache: ApolloCache<any>);
28
+ private cache;
29
+ constructor(queryManager: QueryManager<any>, queryId?: string);
28
30
  init(query: {
29
31
  document: DocumentNode;
30
32
  variables: Record<string, any> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInfo.d.ts","sourceRoot":"","sources":["../../src/core/QueryInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryInfo.d.ts","sourceRoot":"","sources":["../../src/core/QueryInfo.ts"],"names":[],"mappings":"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"}
package/core/QueryInfo.js CHANGED
@@ -20,8 +20,9 @@ function cancelNotifyTimeout(info) {
20
20
  }
21
21
  }
22
22
  var QueryInfo = (function () {
23
- function QueryInfo(cache) {
24
- this.cache = cache;
23
+ function QueryInfo(queryManager, queryId) {
24
+ if (queryId === void 0) { queryId = queryManager.generateQueryId(); }
25
+ this.queryId = queryId;
25
26
  this.listeners = new Set();
26
27
  this.document = null;
27
28
  this.lastRequestId = 1;
@@ -29,6 +30,7 @@ var QueryInfo = (function () {
29
30
  this.stopped = false;
30
31
  this.dirty = false;
31
32
  this.observableQuery = null;
33
+ var cache = this.cache = queryManager.cache;
32
34
  if (!destructiveMethodCounts.has(cache)) {
33
35
  destructiveMethodCounts.set(cache, 0);
34
36
  wrapDestructiveCacheMethod(cache, "evict");