@apollo/client 3.7.0-beta.4 → 3.7.0-beta.7

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 (108) hide show
  1. package/README.md +3 -0
  2. package/apollo-client.cjs +412 -95
  3. package/apollo-client.cjs.map +1 -1
  4. package/apollo-client.min.cjs +1 -1
  5. package/cache/cache.cjs +16 -12
  6. package/cache/cache.cjs.map +1 -1
  7. package/cache/cache.cjs.native.js +16 -12
  8. package/cache/core/types/common.d.ts +1 -1
  9. package/cache/core/types/common.d.ts.map +1 -1
  10. package/cache/core/types/common.js +16 -11
  11. package/cache/core/types/common.js.map +1 -1
  12. package/cache/inmemory/policies.js +1 -1
  13. package/cache/inmemory/policies.js.map +1 -1
  14. package/core/ObservableQuery.d.ts.map +1 -1
  15. package/core/ObservableQuery.js +6 -3
  16. package/core/ObservableQuery.js.map +1 -1
  17. package/core/QueryInfo.d.ts.map +1 -1
  18. package/core/QueryInfo.js +24 -2
  19. package/core/QueryInfo.js.map +1 -1
  20. package/core/QueryManager.d.ts.map +1 -1
  21. package/core/QueryManager.js +25 -11
  22. package/core/QueryManager.js.map +1 -1
  23. package/core/core.cjs +57 -17
  24. package/core/core.cjs.map +1 -1
  25. package/core/core.cjs.native.js +57 -17
  26. package/core/types.d.ts.map +1 -1
  27. package/core/types.js.map +1 -1
  28. package/invariantErrorCodes.js +1 -1
  29. package/link/core/types.d.ts +30 -5
  30. package/link/core/types.d.ts.map +1 -1
  31. package/link/core/types.js +0 -1
  32. package/link/core/types.js.map +1 -1
  33. package/link/http/createHttpLink.d.ts.map +1 -1
  34. package/link/http/createHttpLink.js +14 -17
  35. package/link/http/createHttpLink.js.map +1 -1
  36. package/link/http/http.cjs +314 -44
  37. package/link/http/http.cjs.map +1 -1
  38. package/link/http/http.cjs.native.js +314 -44
  39. package/link/http/iterators/async.d.ts +2 -0
  40. package/link/http/iterators/async.d.ts.map +1 -0
  41. package/link/http/iterators/async.js +14 -0
  42. package/link/http/iterators/async.js.map +1 -0
  43. package/link/http/iterators/nodeStream.d.ts +4 -0
  44. package/link/http/iterators/nodeStream.d.ts.map +1 -0
  45. package/link/http/iterators/nodeStream.js +71 -0
  46. package/link/http/iterators/nodeStream.js.map +1 -0
  47. package/link/http/iterators/promise.d.ts +2 -0
  48. package/link/http/iterators/promise.d.ts.map +1 -0
  49. package/link/http/iterators/promise.js +28 -0
  50. package/link/http/iterators/promise.js.map +1 -0
  51. package/link/http/iterators/reader.d.ts +2 -0
  52. package/link/http/iterators/reader.d.ts.map +1 -0
  53. package/link/http/iterators/reader.js +15 -0
  54. package/link/http/iterators/reader.js.map +1 -0
  55. package/link/http/parseAndCheckHttpResponse.d.ts +7 -1
  56. package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
  57. package/link/http/parseAndCheckHttpResponse.js +131 -27
  58. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  59. package/link/http/responseIterator.d.ts +3 -0
  60. package/link/http/responseIterator.d.ts.map +1 -0
  61. package/link/http/responseIterator.js +23 -0
  62. package/link/http/responseIterator.js.map +1 -0
  63. package/package.json +40 -29
  64. package/react/hooks/hooks.cjs +27 -17
  65. package/react/hooks/hooks.cjs.map +1 -1
  66. package/react/hooks/hooks.cjs.native.js +27 -17
  67. package/react/hooks/useFragment.d.ts +1 -1
  68. package/react/hooks/useFragment.d.ts.map +1 -1
  69. package/react/hooks/useFragment.js +6 -3
  70. package/react/hooks/useFragment.js.map +1 -1
  71. package/react/hooks/useMutation.d.ts.map +1 -1
  72. package/react/hooks/useMutation.js +8 -6
  73. package/react/hooks/useMutation.js.map +1 -1
  74. package/react/hooks/useQuery.d.ts.map +1 -1
  75. package/react/hooks/useQuery.js +12 -7
  76. package/react/hooks/useQuery.js.map +1 -1
  77. package/react/types/types.d.ts +2 -2
  78. package/react/types/types.d.ts.map +1 -1
  79. package/react/types/types.js.map +1 -1
  80. package/testing/core/itAsync.d.ts +3 -3
  81. package/testing/core/itAsync.d.ts.map +1 -1
  82. package/testing/core/subscribeAndCount.d.ts +2 -3
  83. package/testing/core/subscribeAndCount.d.ts.map +1 -1
  84. package/testing/core/subscribeAndCount.js.map +1 -1
  85. package/utilities/common/canUse.d.ts +1 -0
  86. package/utilities/common/canUse.d.ts.map +1 -1
  87. package/utilities/common/canUse.js +1 -0
  88. package/utilities/common/canUse.js.map +1 -1
  89. package/utilities/common/incrementalResult.d.ts +3 -0
  90. package/utilities/common/incrementalResult.d.ts.map +1 -0
  91. package/utilities/common/incrementalResult.js +4 -0
  92. package/utilities/common/incrementalResult.js.map +1 -0
  93. package/utilities/common/responseIterator.d.ts +10 -0
  94. package/utilities/common/responseIterator.d.ts.map +1 -0
  95. package/utilities/common/responseIterator.js +21 -0
  96. package/utilities/common/responseIterator.js.map +1 -0
  97. package/utilities/graphql/directives.d.ts.map +1 -1
  98. package/utilities/graphql/directives.js +11 -2
  99. package/utilities/graphql/directives.js.map +1 -1
  100. package/utilities/graphql/storeUtils.d.ts +1 -1
  101. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  102. package/utilities/observables/Concast.d.ts +1 -0
  103. package/utilities/observables/Concast.d.ts.map +1 -1
  104. package/utilities/observables/Concast.js.map +1 -1
  105. package/utilities/utilities.cjs +12 -1
  106. package/utilities/utilities.cjs.map +1 -1
  107. package/utilities/utilities.cjs.native.js +12 -1
  108. package/version.js +1 -1
@@ -15,7 +15,11 @@ var utils = require('../link/utils');
15
15
  var tsInvariant = require('ts-invariant');
16
16
  var graphqlTag = require('graphql-tag');
17
17
 
18
- var version = '3.7.0-beta.4';
18
+ var version = '3.7.0-beta.7';
19
+
20
+ function isExecutionPatchIncrementalResult(value) {
21
+ return !!value.incremental;
22
+ }
19
23
 
20
24
  exports.NetworkStatus = void 0;
21
25
  (function (NetworkStatus) {
@@ -341,7 +345,8 @@ var ObservableQuery = (function (_super) {
341
345
  ObservableQuery.prototype.applyNextFetchPolicy = function (reason, options) {
342
346
  if (options.nextFetchPolicy) {
343
347
  var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? "cache-first" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;
344
- if (typeof options.nextFetchPolicy === "function") {
348
+ if (fetchPolicy === "standby") ;
349
+ else if (typeof options.nextFetchPolicy === "function") {
345
350
  options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {
346
351
  reason: reason,
347
352
  options: options,
@@ -386,7 +391,7 @@ var ObservableQuery = (function (_super) {
386
391
  if (_this.pollingInfo) {
387
392
  if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus)) {
388
393
  _this.reobserve({
389
- fetchPolicy: "network-only",
394
+ fetchPolicy: _this.options.initialFetchPolicy === 'no-cache' ? 'no-cache' : 'network-only',
390
395
  }, exports.NetworkStatus.poll).then(poll, poll);
391
396
  }
392
397
  else {
@@ -430,7 +435,8 @@ var ObservableQuery = (function (_super) {
430
435
  if (newOptions &&
431
436
  newOptions.variables &&
432
437
  !equality.equal(newOptions.variables, oldVariables) &&
433
- (!newOptions.fetchPolicy || newOptions.fetchPolicy === oldFetchPolicy)) {
438
+ options.fetchPolicy !== "standby" &&
439
+ options.fetchPolicy === oldFetchPolicy) {
434
440
  this.applyNextFetchPolicy("variables-changed", options);
435
441
  if (newNetworkStatus === void 0) {
436
442
  newNetworkStatus = exports.NetworkStatus.setVariables;
@@ -844,7 +850,6 @@ var QueryInfo = (function () {
844
850
  };
845
851
  QueryInfo.prototype.reset = function () {
846
852
  cancelNotifyTimeout(this);
847
- this.lastDiff = void 0;
848
853
  this.dirty = false;
849
854
  };
850
855
  QueryInfo.prototype.getDiff = function (variables) {
@@ -976,8 +981,30 @@ var QueryInfo = (function () {
976
981
  };
977
982
  QueryInfo.prototype.markResult = function (result, options, cacheWriteBehavior) {
978
983
  var _this = this;
979
- this.graphQLErrors = utilities.isNonEmptyArray(result.errors) ? result.errors : [];
984
+ var graphQLErrors = utilities.isNonEmptyArray(result.errors)
985
+ ? result.errors.slice(0)
986
+ : [];
980
987
  this.reset();
988
+ if ('incremental' in result && utilities.isNonEmptyArray(result.incremental)) {
989
+ var mergedData_1 = this.getDiff().result;
990
+ var merger_1 = new utilities.DeepMerger();
991
+ result.incremental.forEach(function (_a) {
992
+ var data = _a.data, path = _a.path, errors = _a.errors;
993
+ for (var i = path.length - 1; i >= 0; --i) {
994
+ var key = path[i];
995
+ var isNumericKey = !isNaN(+key);
996
+ var parent_1 = isNumericKey ? [] : {};
997
+ parent_1[key] = data;
998
+ data = parent_1;
999
+ }
1000
+ if (errors) {
1001
+ graphQLErrors.push.apply(graphQLErrors, errors);
1002
+ }
1003
+ mergedData_1 = merger_1.merge(mergedData_1, data);
1004
+ });
1005
+ result.data = mergedData_1;
1006
+ }
1007
+ this.graphQLErrors = graphQLErrors;
981
1008
  if (options.fetchPolicy === 'no-cache') {
982
1009
  this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));
983
1010
  }
@@ -1254,7 +1281,7 @@ var QueryManager = (function () {
1254
1281
  optimistic: false,
1255
1282
  returnPartialData: true,
1256
1283
  });
1257
- if (diff.complete) {
1284
+ if (diff.complete && !(isExecutionPatchIncrementalResult(result))) {
1258
1285
  result = tslib.__assign(tslib.__assign({}, result), { data: diff.result });
1259
1286
  }
1260
1287
  }
@@ -1631,11 +1658,21 @@ var QueryManager = (function () {
1631
1658
  var requestId = queryInfo.lastRequestId = this.generateRequestId();
1632
1659
  options = utilities.cloneDeep(options);
1633
1660
  return utilities.asyncMap(this.getObservableFromLink(queryInfo.document, options.context, options.variables), function (result) {
1634
- var hasErrors = utilities.isNonEmptyArray(result.errors);
1661
+ var graphQLErrors = utilities.isNonEmptyArray(result.errors)
1662
+ ? result.errors.slice(0)
1663
+ : [];
1664
+ if ('incremental' in result && utilities.isNonEmptyArray(result.incremental)) {
1665
+ result.incremental.forEach(function (incrementalResult) {
1666
+ if (incrementalResult.errors) {
1667
+ graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);
1668
+ }
1669
+ });
1670
+ }
1671
+ var hasErrors = utilities.isNonEmptyArray(graphQLErrors);
1635
1672
  if (requestId >= queryInfo.lastRequestId) {
1636
1673
  if (hasErrors && options.errorPolicy === "none") {
1637
1674
  throw queryInfo.markError(new errors.ApolloError({
1638
- graphQLErrors: result.errors,
1675
+ graphQLErrors: graphQLErrors,
1639
1676
  }));
1640
1677
  }
1641
1678
  queryInfo.markResult(result, options, cacheWriteBehavior);
@@ -1647,7 +1684,7 @@ var QueryManager = (function () {
1647
1684
  networkStatus: exports.NetworkStatus.ready,
1648
1685
  };
1649
1686
  if (hasErrors && options.errorPolicy !== "ignore") {
1650
- aqr.errors = result.errors;
1687
+ aqr.errors = graphQLErrors;
1651
1688
  aqr.networkStatus = exports.NetworkStatus.error;
1652
1689
  }
1653
1690
  return aqr;
@@ -1680,20 +1717,23 @@ var QueryManager = (function () {
1680
1717
  });
1681
1718
  var fromVariables = function (variables) {
1682
1719
  normalized.variables = variables;
1683
- return _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);
1720
+ var concastSources = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);
1721
+ if (normalized.fetchPolicy !== "standby" &&
1722
+ concastSources.length > 0 &&
1723
+ queryInfo.observableQuery) {
1724
+ queryInfo.observableQuery["applyNextFetchPolicy"]("after-fetch", options);
1725
+ }
1726
+ return concastSources;
1684
1727
  };
1728
+ var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };
1685
1729
  this.fetchCancelFns.set(queryId, function (reason) {
1730
+ cleanupCancelFn();
1686
1731
  setTimeout(function () { return concast.cancel(reason); });
1687
1732
  });
1688
1733
  var concast = new utilities.Concast(this.transform(normalized.query).hasClientExports
1689
1734
  ? this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables)
1690
1735
  : fromVariables(normalized.variables));
1691
- concast.beforeNext(function () {
1692
- _this.fetchCancelFns.delete(queryId);
1693
- if (queryInfo.observableQuery) {
1694
- queryInfo.observableQuery["applyNextFetchPolicy"]("after-fetch", options);
1695
- }
1696
- });
1736
+ concast.promise.then(cleanupCancelFn, cleanupCancelFn);
1697
1737
  return concast;
1698
1738
  };
1699
1739
  QueryManager.prototype.refetchQueries = function (_a) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
package/core/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"","sourcesContent":["import { DocumentNode, GraphQLError } from 'graphql';\n\nimport { ApolloCache } from '../cache';\nimport { FetchResult } from '../link/core';\nimport { ApolloError } from '../errors';\nimport { QueryInfo } from './QueryInfo';\nimport { NetworkStatus } from './networkStatus';\nimport { Resolver } from './LocalState';\nimport { ObservableQuery } from './ObservableQuery';\nimport { QueryOptions } from './watchQueryOptions';\nimport { Cache } from '../cache';\nimport { IsStrictlyAny } from '../utilities';\n\nexport { TypedDocumentNode } from '@graphql-typed-document-node/core';\n\nexport type DefaultContext = Record<string, any>;\n\nexport type QueryListener = (queryInfo: QueryInfo) => void;\n\nexport type OnQueryUpdated<TResult> = (\n observableQuery: ObservableQuery<any>,\n diff: Cache.DiffResult<any>,\n lastDiff: Cache.DiffResult<any> | undefined,\n) => boolean | TResult;\n\nexport type RefetchQueryDescriptor = string | DocumentNode;\nexport type InternalRefetchQueryDescriptor = RefetchQueryDescriptor | QueryOptions;\n\ntype RefetchQueriesIncludeShorthand = \"all\" | \"active\";\n\nexport type RefetchQueriesInclude =\n | RefetchQueryDescriptor[]\n | RefetchQueriesIncludeShorthand;\n\nexport type InternalRefetchQueriesInclude =\n | InternalRefetchQueryDescriptor[]\n | RefetchQueriesIncludeShorthand;\n\n// Used by ApolloClient[\"refetchQueries\"]\n// TODO Improve documentation comments for this public type.\nexport interface RefetchQueriesOptions<\n TCache extends ApolloCache<any>,\n TResult,\n> {\n updateCache?: (cache: TCache) => void;\n // The client.refetchQueries method discourages passing QueryOptions, by\n // restricting the public type of options.include to exclude QueryOptions as\n // an available array element type (see InternalRefetchQueriesInclude for a\n // version of RefetchQueriesInclude that allows legacy QueryOptions objects).\n include?: RefetchQueriesInclude;\n optimistic?: boolean;\n // If no onQueryUpdated function is provided, any queries affected by the\n // updateCache function or included in the options.include array will be\n // refetched by default. Passing null instead of undefined disables this\n // default refetching behavior for affected queries, though included queries\n // will still be refetched.\n onQueryUpdated?: OnQueryUpdated<TResult> | null;\n}\n\n// The client.refetchQueries method returns a thenable (PromiseLike) object\n// whose result is an array of Promise.resolve'd TResult values, where TResult\n// is whatever type the (optional) onQueryUpdated function returns. When no\n// onQueryUpdated function is given, TResult defaults to ApolloQueryResult<any>\n// (thanks to default type parameters for client.refetchQueries).\nexport type RefetchQueriesPromiseResults<TResult> =\n // If onQueryUpdated returns any, all bets are off, so the results array must\n // be a generic any[] array, which is much less confusing than the union type\n // we get if we don't check for any. I hoped `any extends TResult` would do\n // the trick here, instead of IsStrictlyAny, but you can see for yourself what\n // fails in the refetchQueries tests if you try making that simplification.\n IsStrictlyAny<TResult> extends true ? any[] :\n // If the onQueryUpdated function passed to client.refetchQueries returns true\n // or false, that means either to refetch the query (true) or to skip the\n // query (false). Since refetching produces an ApolloQueryResult<any>, and\n // skipping produces nothing, the fully-resolved array of all results produced\n // will be an ApolloQueryResult<any>[], when TResult extends boolean.\n TResult extends boolean ? ApolloQueryResult<any>[] :\n // If onQueryUpdated returns a PromiseLike<U>, that thenable will be passed as\n // an array element to Promise.all, so we infer/unwrap the array type U here.\n TResult extends PromiseLike<infer U> ? U[] :\n // All other onQueryUpdated results end up in the final Promise.all array as\n // themselves, with their original TResult type. Note that TResult will\n // default to ApolloQueryResult<any> if no onQueryUpdated function is passed\n // to client.refetchQueries.\n TResult[];\n\n// The result of client.refetchQueries is thenable/awaitable, if you just want\n// an array of fully resolved results, but you can also access the raw results\n// immediately by examining the additional { queries, results } properties of\n// the RefetchQueriesResult<TResult> object.\nexport interface RefetchQueriesResult<TResult>\nextends Promise<RefetchQueriesPromiseResults<TResult>> {\n // An array of ObservableQuery objects corresponding 1:1 to TResult values\n // in the results arrays (both the TResult[] array below, and the results\n // array resolved by the Promise above).\n queries: ObservableQuery<any>[];\n // These are the raw TResult values returned by any onQueryUpdated functions\n // that were invoked by client.refetchQueries.\n results: InternalRefetchQueriesResult<TResult>[];\n}\n\n// Used by QueryManager[\"refetchQueries\"]\nexport interface InternalRefetchQueriesOptions<\n TCache extends ApolloCache<any>,\n TResult,\n> extends Omit<RefetchQueriesOptions<TCache, TResult>, \"include\"> {\n // Just like the refetchQueries option for a mutation, an array of strings,\n // DocumentNode objects, and/or QueryOptions objects, or one of the shorthand\n // strings \"all\" or \"active\", to select every (active) query.\n include?: InternalRefetchQueriesInclude;\n // This part of the API is a (useful) implementation detail, but need not be\n // exposed in the public client.refetchQueries API (above).\n removeOptimistic?: string;\n}\n\nexport type InternalRefetchQueriesResult<TResult> =\n // If onQueryUpdated returns a boolean, that's equivalent to refetching the\n // query when the boolean is true and skipping the query when false, so the\n // internal type of refetched results is Promise<ApolloQueryResult<any>>.\n TResult extends boolean ? Promise<ApolloQueryResult<any>> :\n // Otherwise, onQueryUpdated returns whatever it returns. If onQueryUpdated is\n // not provided, TResult defaults to Promise<ApolloQueryResult<any>> (see the\n // generic type parameters of client.refetchQueries).\n TResult;\n\nexport type InternalRefetchQueriesMap<TResult> =\n Map<ObservableQuery<any>,\n InternalRefetchQueriesResult<TResult>>;\n\n// TODO Remove this unnecessary type in Apollo Client 4.\nexport type { QueryOptions as PureQueryOptions };\n\nexport type OperationVariables = Record<string, any>;\n\nexport type ApolloQueryResult<T> = {\n data: T;\n errors?: ReadonlyArray<GraphQLError>;\n error?: ApolloError;\n loading: boolean;\n networkStatus: NetworkStatus;\n // If result.data was read from the cache with missing fields,\n // result.partial will be true. Otherwise, result.partial will be falsy\n // (usually because the property is absent from the result object).\n partial?: boolean;\n};\n\n// This is part of the public API, people write these functions in `updateQueries`.\nexport type MutationQueryReducer<T> = (\n previousResult: Record<string, any>,\n options: {\n mutationResult: FetchResult<T>;\n queryName: string | undefined;\n queryVariables: Record<string, any>;\n },\n) => Record<string, any>;\n\nexport type MutationQueryReducersMap<T = { [key: string]: any }> = {\n [queryName: string]: MutationQueryReducer<T>;\n};\n\n// @deprecated Use MutationUpdaterFunction instead.\nexport type MutationUpdaterFn<T = { [key: string]: any }> = (\n // The MutationUpdaterFn type is broken because it mistakenly uses the same\n // type parameter T for both the cache and the mutationResult. Do not use this\n // type unless you absolutely need it for backwards compatibility.\n cache: ApolloCache<T>,\n mutationResult: FetchResult<T>,\n) => void;\n\nexport type MutationUpdaterFunction<\n TData,\n TVariables,\n TContext,\n TCache extends ApolloCache<any>\n> = (\n cache: TCache,\n result: Omit<FetchResult<TData>, 'context'>,\n options: {\n context?: TContext,\n variables?: TVariables,\n },\n) => void;\nexport interface Resolvers {\n [key: string]: {\n [ field: string ]: Resolver;\n };\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"","sourcesContent":["import { DocumentNode, GraphQLError } from 'graphql';\n\nimport { ApolloCache } from '../cache';\nimport { FetchResult } from '../link/core';\nimport { ApolloError } from '../errors';\nimport { QueryInfo } from './QueryInfo';\nimport { NetworkStatus } from './networkStatus';\nimport { Resolver } from './LocalState';\nimport { ObservableQuery } from './ObservableQuery';\nimport { QueryOptions } from './watchQueryOptions';\nimport { Cache } from '../cache';\nimport { IsStrictlyAny } from '../utilities';\n\nexport { TypedDocumentNode } from '@graphql-typed-document-node/core';\n\nexport type DefaultContext = Record<string, any>;\n\nexport type QueryListener = (queryInfo: QueryInfo) => void;\n\nexport type OnQueryUpdated<TResult> = (\n observableQuery: ObservableQuery<any>,\n diff: Cache.DiffResult<any>,\n lastDiff: Cache.DiffResult<any> | undefined,\n) => boolean | TResult;\n\nexport type RefetchQueryDescriptor = string | DocumentNode;\nexport type InternalRefetchQueryDescriptor = RefetchQueryDescriptor | QueryOptions;\n\ntype RefetchQueriesIncludeShorthand = \"all\" | \"active\";\n\nexport type RefetchQueriesInclude =\n | RefetchQueryDescriptor[]\n | RefetchQueriesIncludeShorthand;\n\nexport type InternalRefetchQueriesInclude =\n | InternalRefetchQueryDescriptor[]\n | RefetchQueriesIncludeShorthand;\n\n// Used by ApolloClient[\"refetchQueries\"]\n// TODO Improve documentation comments for this public type.\nexport interface RefetchQueriesOptions<\n TCache extends ApolloCache<any>,\n TResult,\n> {\n updateCache?: (cache: TCache) => void;\n // The client.refetchQueries method discourages passing QueryOptions, by\n // restricting the public type of options.include to exclude QueryOptions as\n // an available array element type (see InternalRefetchQueriesInclude for a\n // version of RefetchQueriesInclude that allows legacy QueryOptions objects).\n include?: RefetchQueriesInclude;\n optimistic?: boolean;\n // If no onQueryUpdated function is provided, any queries affected by the\n // updateCache function or included in the options.include array will be\n // refetched by default. Passing null instead of undefined disables this\n // default refetching behavior for affected queries, though included queries\n // will still be refetched.\n onQueryUpdated?: OnQueryUpdated<TResult> | null;\n}\n\n// The client.refetchQueries method returns a thenable (PromiseLike) object\n// whose result is an array of Promise.resolve'd TResult values, where TResult\n// is whatever type the (optional) onQueryUpdated function returns. When no\n// onQueryUpdated function is given, TResult defaults to ApolloQueryResult<any>\n// (thanks to default type parameters for client.refetchQueries).\nexport type RefetchQueriesPromiseResults<TResult> =\n // If onQueryUpdated returns any, all bets are off, so the results array must\n // be a generic any[] array, which is much less confusing than the union type\n // we get if we don't check for any. I hoped `any extends TResult` would do\n // the trick here, instead of IsStrictlyAny, but you can see for yourself what\n // fails in the refetchQueries tests if you try making that simplification.\n IsStrictlyAny<TResult> extends true ? any[] :\n // If the onQueryUpdated function passed to client.refetchQueries returns true\n // or false, that means either to refetch the query (true) or to skip the\n // query (false). Since refetching produces an ApolloQueryResult<any>, and\n // skipping produces nothing, the fully-resolved array of all results produced\n // will be an ApolloQueryResult<any>[], when TResult extends boolean.\n TResult extends boolean ? ApolloQueryResult<any>[] :\n // If onQueryUpdated returns a PromiseLike<U>, that thenable will be passed as\n // an array element to Promise.all, so we infer/unwrap the array type U here.\n TResult extends PromiseLike<infer U> ? U[] :\n // All other onQueryUpdated results end up in the final Promise.all array as\n // themselves, with their original TResult type. Note that TResult will\n // default to ApolloQueryResult<any> if no onQueryUpdated function is passed\n // to client.refetchQueries.\n TResult[];\n\n// The result of client.refetchQueries is thenable/awaitable, if you just want\n// an array of fully resolved results, but you can also access the raw results\n// immediately by examining the additional { queries, results } properties of\n// the RefetchQueriesResult<TResult> object.\nexport interface RefetchQueriesResult<TResult>\nextends Promise<RefetchQueriesPromiseResults<TResult>> {\n // An array of ObservableQuery objects corresponding 1:1 to TResult values\n // in the results arrays (both the TResult[] array below, and the results\n // array resolved by the Promise above).\n queries: ObservableQuery<any>[];\n // These are the raw TResult values returned by any onQueryUpdated functions\n // that were invoked by client.refetchQueries.\n results: InternalRefetchQueriesResult<TResult>[];\n}\n\n// Used by QueryManager[\"refetchQueries\"]\nexport interface InternalRefetchQueriesOptions<\n TCache extends ApolloCache<any>,\n TResult,\n> extends Omit<RefetchQueriesOptions<TCache, TResult>, \"include\"> {\n // Just like the refetchQueries option for a mutation, an array of strings,\n // DocumentNode objects, and/or QueryOptions objects, or one of the shorthand\n // strings \"all\" or \"active\", to select every (active) query.\n include?: InternalRefetchQueriesInclude;\n // This part of the API is a (useful) implementation detail, but need not be\n // exposed in the public client.refetchQueries API (above).\n removeOptimistic?: string;\n}\n\nexport type InternalRefetchQueriesResult<TResult> =\n // If onQueryUpdated returns a boolean, that's equivalent to refetching the\n // query when the boolean is true and skipping the query when false, so the\n // internal type of refetched results is Promise<ApolloQueryResult<any>>.\n TResult extends boolean ? Promise<ApolloQueryResult<any>> :\n // Otherwise, onQueryUpdated returns whatever it returns. If onQueryUpdated is\n // not provided, TResult defaults to Promise<ApolloQueryResult<any>> (see the\n // generic type parameters of client.refetchQueries).\n TResult;\n\nexport type InternalRefetchQueriesMap<TResult> =\n Map<ObservableQuery<any>,\n InternalRefetchQueriesResult<TResult>>;\n\n// TODO Remove this unnecessary type in Apollo Client 4.\nexport type { QueryOptions as PureQueryOptions };\n\nexport type OperationVariables = Record<string, any>;\n\nexport type ApolloQueryResult<T> = {\n data: T;\n /**\n * A list of any errors that occurred during server-side execution of a GraphQL operation.\n * See https://www.apollographql.com/docs/react/data/error-handling/ for more information.\n */\n errors?: ReadonlyArray<GraphQLError>;\n /**\n * The single Error object that is passed to onError and useQuery hooks, and is often thrown during manual `client.query` calls. \n * This will contain both a NetworkError field and any GraphQLErrors.\n * See https://www.apollographql.com/docs/react/data/error-handling/ for more information.\n */\n error?: ApolloError;\n loading: boolean;\n networkStatus: NetworkStatus;\n // If result.data was read from the cache with missing fields,\n // result.partial will be true. Otherwise, result.partial will be falsy\n // (usually because the property is absent from the result object).\n partial?: boolean;\n};\n\n// This is part of the public API, people write these functions in `updateQueries`.\nexport type MutationQueryReducer<T> = (\n previousResult: Record<string, any>,\n options: {\n mutationResult: FetchResult<T>;\n queryName: string | undefined;\n queryVariables: Record<string, any>;\n },\n) => Record<string, any>;\n\nexport type MutationQueryReducersMap<T = { [key: string]: any }> = {\n [queryName: string]: MutationQueryReducer<T>;\n};\n\n// @deprecated Use MutationUpdaterFunction instead.\nexport type MutationUpdaterFn<T = { [key: string]: any }> = (\n // The MutationUpdaterFn type is broken because it mistakenly uses the same\n // type parameter T for both the cache and the mutationResult. Do not use this\n // type unless you absolutely need it for backwards compatibility.\n cache: ApolloCache<T>,\n mutationResult: FetchResult<T>,\n) => void;\n\nexport type MutationUpdaterFunction<\n TData,\n TVariables,\n TContext,\n TCache extends ApolloCache<any>\n> = (\n cache: TCache,\n result: Omit<FetchResult<TData>, 'context'>,\n options: {\n context?: TContext,\n variables?: TVariables,\n },\n) => void;\nexport interface Resolvers {\n [key: string]: {\n [ field: string ]: Resolver;\n };\n}\n"]}
@@ -5,7 +5,7 @@
5
5
  // consult the @apollo/client/invariantErrorCodes.js file specific to
6
6
  // your @apollo/client version. This file is not meant to be imported.
7
7
  {
8
- "@apollo/client version": "3.7.0-beta.4",
8
+ "@apollo/client version": "3.7.0-beta.7",
9
9
 
10
10
  1: {
11
11
  file: "@apollo/client/cache/inmemory/entityStore.js",
@@ -1,6 +1,31 @@
1
- import { DocumentNode, ExecutionResult } from 'graphql';
1
+ import { DocumentNode, ExecutionResult, GraphQLError } from "graphql";
2
2
  export { DocumentNode };
3
- import { Observable } from '../../utilities';
3
+ import { Observable } from "../../utilities";
4
+ export declare type Path = ReadonlyArray<string | number>;
5
+ declare type Data<T> = T | null | undefined;
6
+ interface ExecutionPatchResultBase {
7
+ hasNext?: boolean;
8
+ }
9
+ export interface ExecutionPatchInitialResult<TData = Record<string, any>, TExtensions = Record<string, any>> extends ExecutionPatchResultBase {
10
+ data: Data<TData>;
11
+ incremental?: never;
12
+ errors?: ReadonlyArray<GraphQLError>;
13
+ extensions?: TExtensions;
14
+ }
15
+ export interface IncrementalPayload<TData, TExtensions> {
16
+ data: Data<TData>;
17
+ label?: string;
18
+ path: Path;
19
+ errors?: ReadonlyArray<GraphQLError>;
20
+ extensions?: TExtensions;
21
+ }
22
+ export interface ExecutionPatchIncrementalResult<TData = Record<string, any>, TExtensions = Record<string, any>> extends ExecutionPatchResultBase {
23
+ incremental?: IncrementalPayload<TData, TExtensions>[];
24
+ data?: never;
25
+ errors?: never;
26
+ extensions?: never;
27
+ }
28
+ export declare type ExecutionPatchResult<TData = Record<string, any>, TExtensions = Record<string, any>> = ExecutionPatchInitialResult<TData, TExtensions> | ExecutionPatchIncrementalResult<TData, TExtensions>;
4
29
  export interface GraphQLRequest {
5
30
  query: DocumentNode;
6
31
  variables?: Record<string, any>;
@@ -16,11 +41,11 @@ export interface Operation {
16
41
  setContext: (context: Record<string, any>) => Record<string, any>;
17
42
  getContext: () => Record<string, any>;
18
43
  }
19
- export interface FetchResult<TData = Record<string, any>, TContext = Record<string, any>, TExtensions = Record<string, any>> extends ExecutionResult<TData, TExtensions> {
20
- data?: TData | null | undefined;
21
- extensions?: TExtensions;
44
+ export interface SingleExecutionResult<TData = Record<string, any>, TContext = Record<string, any>, TExtensions = Record<string, any>> extends ExecutionResult<TData, TExtensions> {
45
+ data?: Data<TData>;
22
46
  context?: TContext;
23
47
  }
48
+ export declare type FetchResult<TData = Record<string, any>, TContext = Record<string, any>, TExtensions = Record<string, any>> = SingleExecutionResult<TData, TContext, TExtensions> | ExecutionPatchResult<TData, TExtensions>;
24
49
  export declare type NextLink = (operation: Operation) => Observable<FetchResult>;
25
50
  export declare type RequestHandler = (operation: Operation, forward: NextLink) => Observable<FetchResult> | null;
26
51
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClE,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW,CAC1B,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACjC,SAAQ,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;IAC3C,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,oBAAY,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;AAEzE,oBAAY,cAAc,GAAG,CAC3B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,QAAQ,KACd,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- ;
2
1
  export {};
3
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/link/core/types.ts"],"names":[],"mappings":"AA8BC,CAAC","sourcesContent":["import { DocumentNode, ExecutionResult } from 'graphql';\nexport { DocumentNode };\n\nimport { Observable } from '../../utilities';\n\nexport interface GraphQLRequest {\n query: DocumentNode;\n variables?: Record<string, any>;\n operationName?: string;\n context?: Record<string, any>;\n extensions?: Record<string, any>;\n}\n\nexport interface Operation {\n query: DocumentNode;\n variables: Record<string, any>;\n operationName: string;\n extensions: Record<string, any>;\n setContext: (context: Record<string, any>) => Record<string, any>;\n getContext: () => Record<string, any>;\n}\n\nexport interface FetchResult<\n TData = Record<string, any>,\n TContext = Record<string, any>,\n TExtensions = Record<string, any>\n> extends ExecutionResult<TData, TExtensions> {\n data?: TData | null | undefined;\n extensions?: TExtensions;\n context?: TContext;\n};\n\nexport type NextLink = (operation: Operation) => Observable<FetchResult>;\n\nexport type RequestHandler = (\n operation: Operation,\n forward: NextLink,\n) => Observable<FetchResult> | null;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/link/core/types.ts"],"names":[],"mappings":"","sourcesContent":["import { DocumentNode, ExecutionResult, GraphQLError } from \"graphql\";\nexport { DocumentNode };\n\nimport { Observable } from \"../../utilities\";\n\nexport type Path = ReadonlyArray<string | number>;\ntype Data<T> = T | null | undefined;\n\n\ninterface ExecutionPatchResultBase {\n hasNext?: boolean;\n}\n\nexport interface ExecutionPatchInitialResult<\n TData = Record<string, any>,\n TExtensions = Record<string, any>\n> extends ExecutionPatchResultBase {\n // if data is present, incremental is not\n data: Data<TData>;\n incremental?: never;\n errors?: ReadonlyArray<GraphQLError>;\n extensions?: TExtensions;\n}\n\nexport interface IncrementalPayload<\n TData,\n TExtensions,\n> {\n // data and path must both be present\n // https://github.com/graphql/graphql-spec/pull/742/files#diff-98d0cd153b72b63c417ad4238e8cc0d3385691ccbde7f7674bc0d2a718b896ecR288-R293\n data: Data<TData>;\n label?: string;\n path: Path;\n errors?: ReadonlyArray<GraphQLError>;\n extensions?: TExtensions;\n}\n\nexport interface ExecutionPatchIncrementalResult<\n TData = Record<string, any>,\n TExtensions = Record<string, any>\n> extends ExecutionPatchResultBase {\n // the reverse is also true: if incremental is present,\n // data (and errors and extensions) are not\n incremental?: IncrementalPayload<TData, TExtensions>[];\n data?: never;\n // Errors only exist for chunks, not at the top level\n // https://github.com/robrichard/defer-stream-wg/discussions/50#discussioncomment-3466739\n errors?: never;\n extensions?: never;\n}\n\nexport type ExecutionPatchResult<\n TData = Record<string, any>,\n TExtensions = Record<string, any>\n> =\n | ExecutionPatchInitialResult<TData, TExtensions>\n | ExecutionPatchIncrementalResult<TData, TExtensions>;\n\nexport interface GraphQLRequest {\n query: DocumentNode;\n variables?: Record<string, any>;\n operationName?: string;\n context?: Record<string, any>;\n extensions?: Record<string, any>;\n}\n\nexport interface Operation {\n query: DocumentNode;\n variables: Record<string, any>;\n operationName: string;\n extensions: Record<string, any>;\n setContext: (context: Record<string, any>) => Record<string, any>;\n getContext: () => Record<string, any>;\n}\n\nexport interface SingleExecutionResult<\n TData = Record<string, any>,\n TContext = Record<string, any>,\n TExtensions = Record<string, any>\n> extends ExecutionResult<TData, TExtensions> {\n data?: Data<TData>;\n context?: TContext;\n}\n\nexport type FetchResult<\n TData = Record<string, any>,\n TContext = Record<string, any>,\n TExtensions = Record<string, any>\n> =\n | SingleExecutionResult<TData, TContext, TExtensions>\n | ExecutionPatchResult<TData, TExtensions>;\n\nexport type NextLink = (operation: Operation) => Observable<FetchResult>;\n\nexport type RequestHandler = (\n operation: Operation,\n forward: NextLink\n) => Observable<FetchResult> | null;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"createHttpLink.d.ts","sourceRoot":"","sources":["../../../src/link/http/createHttpLink.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAIjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMrC,OAAO,EAIL,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAQpC,eAAO,MAAM,cAAc,iBAAiB,WAAW,eAgMtD,CAAC"}
1
+ {"version":3,"file":"createHttpLink.d.ts","sourceRoot":"","sources":["../../../src/link/http/createHttpLink.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAIjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAUrC,OAAO,EAIL,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAQpC,eAAO,MAAM,cAAc,iBAAiB,WAAW,eA6JtD,CAAC"}
@@ -2,10 +2,10 @@ import { __assign, __rest } from "tslib";
2
2
  import "../../utilities/globals/index.js";
3
3
  import { visit } from 'graphql';
4
4
  import { ApolloLink } from "../core/index.js";
5
- import { Observable } from "../../utilities/index.js";
5
+ import { Observable, hasDirectives } from "../../utilities/index.js";
6
6
  import { serializeFetchParameter } from "./serializeFetchParameter.js";
7
7
  import { selectURI } from "./selectURI.js";
8
- import { parseAndCheckHttpResponse } from "./parseAndCheckHttpResponse.js";
8
+ import { handleError, readMultipartBody, readJsonBody } from "./parseAndCheckHttpResponse.js";
9
9
  import { checkFetcher } from "./checkFetcher.js";
10
10
  import { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig } from "./selectHttpOptionsAndBody.js";
11
11
  import { createSignalIfSupported } from "./createSignalIfSupported.js";
@@ -76,6 +76,9 @@ export var createHttpLink = function (linkOptions) {
76
76
  !operation.query.definitions.some(definitionIsMutation)) {
77
77
  options.method = 'GET';
78
78
  }
79
+ if (hasDirectives(['defer'], operation.query)) {
80
+ options.headers.accept = "multipart/mixed; deferSpec=20220824, application/json";
81
+ }
79
82
  if (options.method === 'GET') {
80
83
  var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;
81
84
  if (parseError) {
@@ -95,23 +98,17 @@ export var createHttpLink = function (linkOptions) {
95
98
  var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;
96
99
  currentFetch(chosenURI, options)
97
100
  .then(function (response) {
101
+ var _a;
98
102
  operation.setContext({ response: response });
99
- return response;
100
- })
101
- .then(parseAndCheckHttpResponse(operation))
102
- .then(function (result) {
103
- observer.next(result);
104
- observer.complete();
105
- return result;
106
- })
107
- .catch(function (err) {
108
- if (err.name === 'AbortError')
109
- return;
110
- if (err.result && err.result.errors && err.result.data) {
111
- observer.next(err.result);
103
+ var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type');
104
+ if (ctype !== null && /^multipart\/mixed/i.test(ctype)) {
105
+ return readMultipartBody(response, observer);
112
106
  }
113
- observer.error(err);
114
- });
107
+ else {
108
+ return readJsonBody(response, operation, observer);
109
+ }
110
+ })
111
+ .catch(function (err) { return handleError(err, observer); });
115
112
  return function () {
116
113
  if (controller)
117
114
  controller.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"createHttpLink.js","sourceRoot":"","sources":["../../../src/link/http/createHttpLink.ts"],"names":[],"mappings":"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","sourcesContent":["import '../../utilities/globals';\n\nimport { visit, DefinitionNode, VariableDefinitionNode } from 'graphql';\n\nimport { ApolloLink } from '../core';\nimport { Observable } from '../../utilities';\nimport { serializeFetchParameter } from './serializeFetchParameter';\nimport { selectURI } from './selectURI';\nimport { parseAndCheckHttpResponse } from './parseAndCheckHttpResponse';\nimport { checkFetcher } from './checkFetcher';\nimport {\n selectHttpOptionsAndBodyInternal,\n defaultPrinter,\n fallbackHttpConfig,\n HttpOptions\n} from './selectHttpOptionsAndBody';\nimport { createSignalIfSupported } from './createSignalIfSupported';\nimport { rewriteURIForGET } from './rewriteURIForGET';\nimport { fromError } from '../utils';\nimport { maybe } from '../../utilities';\n\nconst backupFetch = maybe(() => fetch);\n\nexport const createHttpLink = (linkOptions: HttpOptions = {}) => {\n let {\n uri = '/graphql',\n // use default global fetch if nothing passed in\n fetch: preferredFetch,\n print = defaultPrinter,\n includeExtensions,\n useGETForQueries,\n includeUnusedVariables = false,\n ...requestOptions\n } = linkOptions;\n\n if (__DEV__) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch is\n // defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n\n const linkConfig = {\n http: { includeExtensions },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n\n return new ApolloLink(operation => {\n let chosenURI = selectURI(operation, uri);\n\n const context = operation.getContext();\n\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n const clientAwarenessHeaders: {\n 'apollographql-client-name'?: string;\n 'apollographql-client-version'?: string;\n } = {};\n\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n if (name) {\n clientAwarenessHeaders['apollographql-client-name'] = name;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n\n const contextHeaders = { ...clientAwarenessHeaders, ...context.headers };\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n\n //uses fallback, link, and then context to build options\n const { options, body } = selectHttpOptionsAndBodyInternal(\n operation,\n print,\n fallbackHttpConfig,\n linkConfig,\n contextConfig,\n );\n\n if (body.variables && !includeUnusedVariables) {\n const unusedNames = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable(node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent && (parent as VariableDefinitionNode).kind !== 'VariableDefinition') {\n unusedNames.delete(node.name.value);\n }\n },\n });\n if (unusedNames.size) {\n // Make a shallow copy of body.variables (with keys in the same\n // order) and then delete unused variables from the copy.\n body.variables = { ...body.variables };\n unusedNames.forEach(name => {\n delete body.variables![name];\n });\n }\n }\n\n let controller: any;\n if (!(options as any).signal) {\n const { controller: _controller, signal } = createSignalIfSupported();\n controller = _controller;\n if (controller) (options as any).signal = signal;\n }\n\n // If requested, set method to GET if there are no mutations.\n const definitionIsMutation = (d: DefinitionNode) => {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n if (\n useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)\n ) {\n options.method = 'GET';\n }\n\n if (options.method === 'GET') {\n const { newURI, parseError } = rewriteURIForGET(chosenURI, body);\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n } else {\n try {\n (options as any).body = serializeFetchParameter(body, 'Payload');\n } catch (parseError) {\n return fromError(parseError);\n }\n }\n\n return new Observable(observer => {\n // Prefer linkOptions.fetch (preferredFetch) if provided, and otherwise\n // fall back to the *current* global window.fetch function (see issue\n // #7832), or (if all else fails) the backupFetch function we saved when\n // this module was first evaluated. This last option protects against the\n // removal of window.fetch, which is unlikely but not impossible.\n const currentFetch = preferredFetch || maybe(() => fetch) || backupFetch;\n\n currentFetch!(chosenURI, options)\n .then(response => {\n operation.setContext({ response });\n return response;\n })\n .then(parseAndCheckHttpResponse(operation))\n .then(result => {\n // we have data and can send it to back up the link chain\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch(err => {\n // fetch was cancelled so it's already been cleaned up in the unsubscribe\n if (err.name === 'AbortError') return;\n // if it is a network error, BUT there is graphql result info\n // fire the next observer before calling error\n // this gives apollo-client (and react-apollo) the `graphqlErrors` and `networErrors`\n // to pass to UI\n // this should only happen if we *also* have data as part of the response key per\n // the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we don't call next, the UI can only show networkError because AC didn't\n // get any graphqlErrors\n // this is graphql execution result info (i.e errors and possibly data)\n // this is because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n });\n\n return () => {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller) controller.abort();\n };\n });\n });\n};\n"]}
1
+ {"version":3,"file":"createHttpLink.js","sourceRoot":"","sources":["../../../src/link/http/createHttpLink.ts"],"names":[],"mappings":"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","sourcesContent":["import '../../utilities/globals';\n\nimport { visit, DefinitionNode, VariableDefinitionNode } from 'graphql';\n\nimport { ApolloLink } from '../core';\nimport { Observable, hasDirectives } from '../../utilities';\nimport { serializeFetchParameter } from './serializeFetchParameter';\nimport { selectURI } from './selectURI';\nimport {\n handleError,\n readMultipartBody,\n readJsonBody\n} from './parseAndCheckHttpResponse';\nimport { checkFetcher } from './checkFetcher';\nimport {\n selectHttpOptionsAndBodyInternal,\n defaultPrinter,\n fallbackHttpConfig,\n HttpOptions\n} from './selectHttpOptionsAndBody';\nimport { createSignalIfSupported } from './createSignalIfSupported';\nimport { rewriteURIForGET } from './rewriteURIForGET';\nimport { fromError } from '../utils';\nimport { maybe } from '../../utilities';\n\nconst backupFetch = maybe(() => fetch);\n\nexport const createHttpLink = (linkOptions: HttpOptions = {}) => {\n let {\n uri = '/graphql',\n // use default global fetch if nothing passed in\n fetch: preferredFetch,\n print = defaultPrinter,\n includeExtensions,\n useGETForQueries,\n includeUnusedVariables = false,\n ...requestOptions\n } = linkOptions;\n\n if (__DEV__) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch is\n // defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n\n const linkConfig = {\n http: { includeExtensions },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n\n return new ApolloLink(operation => {\n let chosenURI = selectURI(operation, uri);\n\n const context = operation.getContext();\n\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n const clientAwarenessHeaders: {\n 'apollographql-client-name'?: string;\n 'apollographql-client-version'?: string;\n } = {};\n\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n if (name) {\n clientAwarenessHeaders['apollographql-client-name'] = name;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n\n const contextHeaders = { ...clientAwarenessHeaders, ...context.headers };\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n\n //uses fallback, link, and then context to build options\n const { options, body } = selectHttpOptionsAndBodyInternal(\n operation,\n print,\n fallbackHttpConfig,\n linkConfig,\n contextConfig,\n );\n\n if (body.variables && !includeUnusedVariables) {\n const unusedNames = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable(node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent && (parent as VariableDefinitionNode).kind !== 'VariableDefinition') {\n unusedNames.delete(node.name.value);\n }\n },\n });\n if (unusedNames.size) {\n // Make a shallow copy of body.variables (with keys in the same\n // order) and then delete unused variables from the copy.\n body.variables = { ...body.variables };\n unusedNames.forEach(name => {\n delete body.variables![name];\n });\n }\n }\n\n let controller: any;\n if (!(options as any).signal) {\n const { controller: _controller, signal } = createSignalIfSupported();\n controller = _controller;\n if (controller) (options as any).signal = signal;\n }\n\n // If requested, set method to GET if there are no mutations.\n const definitionIsMutation = (d: DefinitionNode) => {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n if (\n useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)\n ) {\n options.method = 'GET';\n }\n\n // does not match custom directives beginning with @defer\n if (hasDirectives(['defer'], operation.query)) {\n options.headers.accept = \"multipart/mixed; deferSpec=20220824, application/json\";\n }\n\n if (options.method === 'GET') {\n const { newURI, parseError } = rewriteURIForGET(chosenURI, body);\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n } else {\n try {\n (options as any).body = serializeFetchParameter(body, 'Payload');\n } catch (parseError) {\n return fromError(parseError);\n }\n }\n\n return new Observable(observer => {\n // Prefer linkOptions.fetch (preferredFetch) if provided, and otherwise\n // fall back to the *current* global window.fetch function (see issue\n // #7832), or (if all else fails) the backupFetch function we saved when\n // this module was first evaluated. This last option protects against the\n // removal of window.fetch, which is unlikely but not impossible.\n const currentFetch = preferredFetch || maybe(() => fetch) || backupFetch;\n\n currentFetch!(chosenURI, options)\n .then(response => {\n operation.setContext({ response });\n const ctype = response.headers?.get('content-type');\n\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observer);\n } else {\n return readJsonBody(response, operation, observer);\n }\n })\n .catch(err => handleError(err, observer));\n\n return () => {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller) controller.abort();\n };\n });\n });\n};\n"]}