@apollo/client 3.7.0-alpha.6 → 3.7.0-beta.2

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 (51) hide show
  1. package/apollo-client.cjs +69 -13
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +12 -2
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +12 -2
  7. package/cache/core/types/Cache.d.ts +2 -2
  8. package/cache/core/types/Cache.d.ts.map +1 -1
  9. package/cache/core/types/Cache.js.map +1 -1
  10. package/cache/core/types/common.d.ts +1 -0
  11. package/cache/core/types/common.d.ts.map +1 -1
  12. package/cache/core/types/common.js +10 -0
  13. package/cache/core/types/common.js.map +1 -1
  14. package/cache/index.d.ts +1 -1
  15. package/cache/index.d.ts.map +1 -1
  16. package/cache/index.js.map +1 -1
  17. package/cache/inmemory/inMemoryCache.js +2 -2
  18. package/cache/inmemory/inMemoryCache.js.map +1 -1
  19. package/core/core.cjs +1 -1
  20. package/core/core.cjs.map +1 -1
  21. package/core/core.cjs.native.js +1 -1
  22. package/invariantErrorCodes.js +1 -1
  23. package/link/batch/batch.cjs +37 -47
  24. package/link/batch/batch.cjs.map +1 -1
  25. package/link/batch/batch.cjs.native.js +37 -47
  26. package/link/batch/batching.d.ts +6 -2
  27. package/link/batch/batching.d.ts.map +1 -1
  28. package/link/batch/batching.js +37 -47
  29. package/link/batch/batching.js.map +1 -1
  30. package/package.json +7 -7
  31. package/react/hooks/hooks.cjs +56 -10
  32. package/react/hooks/hooks.cjs.map +1 -1
  33. package/react/hooks/hooks.cjs.native.js +56 -10
  34. package/react/hooks/index.d.ts +1 -0
  35. package/react/hooks/index.d.ts.map +1 -1
  36. package/react/hooks/index.js +1 -0
  37. package/react/hooks/index.js.map +1 -1
  38. package/react/hooks/useFragment.d.ts +14 -0
  39. package/react/hooks/useFragment.d.ts.map +1 -0
  40. package/react/hooks/useFragment.js +37 -0
  41. package/react/hooks/useFragment.js.map +1 -0
  42. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  43. package/react/hooks/useLazyQuery.js +5 -1
  44. package/react/hooks/useLazyQuery.js.map +1 -1
  45. package/react/hooks/useMutation.js +7 -7
  46. package/react/hooks/useMutation.js.map +1 -1
  47. package/react/hooks/useQuery.d.ts +1 -0
  48. package/react/hooks/useQuery.d.ts.map +1 -1
  49. package/react/hooks/useQuery.js +14 -3
  50. package/react/hooks/useQuery.js.map +1 -1
  51. package/version.js +1 -1
package/apollo-client.cjs CHANGED
@@ -1298,7 +1298,7 @@ var concat = ApolloLink.concat;
1298
1298
 
1299
1299
  var execute = ApolloLink.execute;
1300
1300
 
1301
- var version = '3.7.0-alpha.6';
1301
+ var version = '3.7.0-beta.2';
1302
1302
 
1303
1303
  var hasOwnProperty$3 = Object.prototype.hasOwnProperty;
1304
1304
  function parseAndCheckHttpResponse(operations) {
@@ -1682,10 +1682,20 @@ exports.Cache = void 0;
1682
1682
 
1683
1683
  var MissingFieldError = (function () {
1684
1684
  function MissingFieldError(message, path, query, variables) {
1685
+ var _a;
1685
1686
  this.message = message;
1686
1687
  this.path = path;
1687
1688
  this.query = query;
1688
1689
  this.variables = variables;
1690
+ if (Array.isArray(this.path)) {
1691
+ this.missing = this.message;
1692
+ for (var i = this.path.length - 1; i >= 0; --i) {
1693
+ this.missing = (_a = {}, _a[this.path[i]] = this.missing, _a);
1694
+ }
1695
+ }
1696
+ else {
1697
+ this.missing = this.path;
1698
+ }
1689
1699
  }
1690
1700
  return MissingFieldError;
1691
1701
  }());
@@ -3615,8 +3625,8 @@ var InMemoryCache = (function (_super) {
3615
3625
  makeCacheKey: function (c) {
3616
3626
  var store = c.optimistic ? _this.optimisticData : _this.data;
3617
3627
  if (supportsResultCaching(store)) {
3618
- var optimistic = c.optimistic, rootId = c.rootId, variables = c.variables;
3619
- return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, rootId: rootId, variables: variables }));
3628
+ var optimistic = c.optimistic, id = c.id, variables = c.variables;
3629
+ return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));
3620
3630
  }
3621
3631
  }
3622
3632
  });
@@ -6299,7 +6309,7 @@ var InternalState = (function () {
6299
6309
  this.watchQueryOptions = watchQueryOptions;
6300
6310
  if (currentWatchQueryOptions && this.observable) {
6301
6311
  this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);
6302
- this.observable.reobserve(watchQueryOptions);
6312
+ this.observable.reobserve(this.getObsQueryOptions());
6303
6313
  this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
6304
6314
  this.result = void 0;
6305
6315
  }
@@ -6320,6 +6330,17 @@ var InternalState = (function () {
6320
6330
  this.result = void 0;
6321
6331
  }
6322
6332
  };
6333
+ InternalState.prototype.getObsQueryOptions = function () {
6334
+ var toMerge = [];
6335
+ var globalDefaults = this.client.defaultOptions.watchQuery;
6336
+ if (globalDefaults)
6337
+ toMerge.push(globalDefaults);
6338
+ if (this.queryHookOptions.defaultOptions) {
6339
+ toMerge.push(this.queryHookOptions.defaultOptions);
6340
+ }
6341
+ toMerge.push(compact(this.observable && this.observable.options, this.watchQueryOptions));
6342
+ return toMerge.reduce(mergeOptions);
6343
+ };
6323
6344
  InternalState.prototype.createWatchQueryOptions = function (_a) {
6324
6345
  var _b;
6325
6346
  if (_a === void 0) { _a = {}; }
@@ -6360,7 +6381,7 @@ var InternalState = (function () {
6360
6381
  this.renderPromises
6361
6382
  && this.renderPromises.getSSRObservable(this.watchQueryOptions)
6362
6383
  || this.observable
6363
- || this.client.watchQuery(mergeOptions(this.queryHookOptions.defaultOptions, this.watchQueryOptions));
6384
+ || this.client.watchQuery(this.getObsQueryOptions());
6364
6385
  this.obsQueryFields = React.useMemo(function () { return ({
6365
6386
  refetch: obsQuery.refetch.bind(obsQuery),
6366
6387
  reobserve: obsQuery.reobserve.bind(obsQuery),
@@ -6443,7 +6464,10 @@ var EAGER_METHODS = [
6443
6464
  function useLazyQuery(query, options) {
6444
6465
  var internalState = useInternalState(useApolloClient(options && options.client), query);
6445
6466
  var execOptionsRef = React.useRef();
6446
- var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign(tslib.__assign({}, options), execOptionsRef.current), { skip: !execOptionsRef.current }));
6467
+ var merged = execOptionsRef.current
6468
+ ? mergeOptions(options, execOptionsRef.current)
6469
+ : options;
6470
+ var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current }));
6447
6471
  var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
6448
6472
  internalState.getDefaultFetchPolicy();
6449
6473
  var result = Object.assign(useQueryResult, {
@@ -6516,7 +6540,7 @@ function useMutation(mutation, options) {
6516
6540
  var mutationId = ++ref.current.mutationId;
6517
6541
  var clientOptions = mergeOptions(baseOptions, executeOptions);
6518
6542
  return client.mutate(clientOptions).then(function (response) {
6519
- var _a, _b;
6543
+ var _a, _b, _c;
6520
6544
  var data = response.data, errors = response.errors;
6521
6545
  var error = errors && errors.length > 0
6522
6546
  ? new ApolloError({ graphQLErrors: errors })
@@ -6534,11 +6558,11 @@ function useMutation(mutation, options) {
6534
6558
  setResult(ref.current.result = result_1);
6535
6559
  }
6536
6560
  }
6537
- (_a = baseOptions.onCompleted) === null || _a === void 0 ? void 0 : _a.call(baseOptions, response.data);
6538
- (_b = executeOptions.onCompleted) === null || _b === void 0 ? void 0 : _b.call(executeOptions, response.data);
6561
+ (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted) === null || _b === void 0 ? void 0 : _b.call(_a, response.data);
6562
+ (_c = executeOptions.onCompleted) === null || _c === void 0 ? void 0 : _c.call(executeOptions, response.data);
6539
6563
  return response;
6540
6564
  }).catch(function (error) {
6541
- var _a, _b;
6565
+ var _a, _b, _c, _d;
6542
6566
  if (mutationId === ref.current.mutationId &&
6543
6567
  ref.current.isMounted) {
6544
6568
  var result_2 = {
@@ -6552,9 +6576,9 @@ function useMutation(mutation, options) {
6552
6576
  setResult(ref.current.result = result_2);
6553
6577
  }
6554
6578
  }
6555
- if (baseOptions.onError || clientOptions.onError) {
6556
- (_a = baseOptions.onError) === null || _a === void 0 ? void 0 : _a.call(baseOptions, error);
6557
- (_b = executeOptions.onError) === null || _b === void 0 ? void 0 : _b.call(executeOptions, error);
6579
+ if (((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) || clientOptions.onError) {
6580
+ (_c = (_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onError) === null || _c === void 0 ? void 0 : _c.call(_b, error);
6581
+ (_d = executeOptions.onError) === null || _d === void 0 ? void 0 : _d.call(executeOptions, error);
6558
6582
  return { data: void 0, errors: error };
6559
6583
  }
6560
6584
  throw error;
@@ -6694,6 +6718,37 @@ function useReactiveVar(rv) {
6694
6718
  return value;
6695
6719
  }
6696
6720
 
6721
+ function useFragment(options) {
6722
+ var cache = useApolloClient().cache;
6723
+ var fragment = options.fragment, fragmentName = options.fragmentName, from = options.from, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, rest = tslib.__rest(options, ["fragment", "fragmentName", "from", "optimistic"]);
6724
+ var diffOptions = tslib.__assign(tslib.__assign({}, rest), { id: typeof from === "string" ? from : cache.identify(from), query: cache["getFragmentDoc"](fragment, fragmentName), optimistic: optimistic });
6725
+ var resultRef = React.useRef();
6726
+ var latestDiff = cache.diff(diffOptions);
6727
+ return useSyncExternalStore(function (forceUpdate) {
6728
+ var immediate = true;
6729
+ return cache.watch(tslib.__assign(tslib.__assign({}, diffOptions), { immediate: immediate, callback: function (diff) {
6730
+ if (!immediate && !equality.equal(diff, latestDiff)) {
6731
+ resultRef.current = diffToResult(latestDiff = diff);
6732
+ forceUpdate();
6733
+ }
6734
+ immediate = false;
6735
+ } }));
6736
+ }, function () {
6737
+ return resultRef.current ||
6738
+ (resultRef.current = diffToResult(latestDiff));
6739
+ });
6740
+ }
6741
+ function diffToResult(diff) {
6742
+ var result = {
6743
+ data: diff.result,
6744
+ complete: !!diff.complete,
6745
+ };
6746
+ if (diff.missing) {
6747
+ result.missing = mergeDeepArray(diff.missing.map(function (error) { return error.missing; }));
6748
+ }
6749
+ return result;
6750
+ }
6751
+
6697
6752
  exports.setLogVerbosity = tsInvariant.setVerbosity;
6698
6753
  exports.Observable = zenObservableTs.Observable;
6699
6754
  exports.disableExperimentalFragmentVariables = graphqlTag.disableExperimentalFragmentVariables;
@@ -6742,6 +6797,7 @@ exports.split = split;
6742
6797
  exports.throwServerError = throwServerError;
6743
6798
  exports.toPromise = toPromise;
6744
6799
  exports.useApolloClient = useApolloClient;
6800
+ exports.useFragment = useFragment;
6745
6801
  exports.useLazyQuery = useLazyQuery;
6746
6802
  exports.useMutation = useMutation;
6747
6803
  exports.useQuery = useQuery;