@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.
- package/README.md +3 -0
- package/apollo-client.cjs +412 -95
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/cache.cjs +16 -12
- package/cache/cache.cjs.map +1 -1
- package/cache/cache.cjs.native.js +16 -12
- package/cache/core/types/common.d.ts +1 -1
- package/cache/core/types/common.d.ts.map +1 -1
- package/cache/core/types/common.js +16 -11
- package/cache/core/types/common.js.map +1 -1
- package/cache/inmemory/policies.js +1 -1
- package/cache/inmemory/policies.js.map +1 -1
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js +6 -3
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts.map +1 -1
- package/core/QueryInfo.js +24 -2
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts.map +1 -1
- package/core/QueryManager.js +25 -11
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +57 -17
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +57 -17
- package/core/types.d.ts.map +1 -1
- package/core/types.js.map +1 -1
- package/invariantErrorCodes.js +1 -1
- package/link/core/types.d.ts +30 -5
- package/link/core/types.d.ts.map +1 -1
- package/link/core/types.js +0 -1
- package/link/core/types.js.map +1 -1
- package/link/http/createHttpLink.d.ts.map +1 -1
- package/link/http/createHttpLink.js +14 -17
- package/link/http/createHttpLink.js.map +1 -1
- package/link/http/http.cjs +314 -44
- package/link/http/http.cjs.map +1 -1
- package/link/http/http.cjs.native.js +314 -44
- package/link/http/iterators/async.d.ts +2 -0
- package/link/http/iterators/async.d.ts.map +1 -0
- package/link/http/iterators/async.js +14 -0
- package/link/http/iterators/async.js.map +1 -0
- package/link/http/iterators/nodeStream.d.ts +4 -0
- package/link/http/iterators/nodeStream.d.ts.map +1 -0
- package/link/http/iterators/nodeStream.js +71 -0
- package/link/http/iterators/nodeStream.js.map +1 -0
- package/link/http/iterators/promise.d.ts +2 -0
- package/link/http/iterators/promise.d.ts.map +1 -0
- package/link/http/iterators/promise.js +28 -0
- package/link/http/iterators/promise.js.map +1 -0
- package/link/http/iterators/reader.d.ts +2 -0
- package/link/http/iterators/reader.d.ts.map +1 -0
- package/link/http/iterators/reader.js +15 -0
- package/link/http/iterators/reader.js.map +1 -0
- package/link/http/parseAndCheckHttpResponse.d.ts +7 -1
- package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
- package/link/http/parseAndCheckHttpResponse.js +131 -27
- package/link/http/parseAndCheckHttpResponse.js.map +1 -1
- package/link/http/responseIterator.d.ts +3 -0
- package/link/http/responseIterator.d.ts.map +1 -0
- package/link/http/responseIterator.js +23 -0
- package/link/http/responseIterator.js.map +1 -0
- package/package.json +40 -29
- package/react/hooks/hooks.cjs +27 -17
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +27 -17
- package/react/hooks/useFragment.d.ts +1 -1
- package/react/hooks/useFragment.d.ts.map +1 -1
- package/react/hooks/useFragment.js +6 -3
- package/react/hooks/useFragment.js.map +1 -1
- package/react/hooks/useMutation.d.ts.map +1 -1
- package/react/hooks/useMutation.js +8 -6
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +12 -7
- package/react/hooks/useQuery.js.map +1 -1
- package/react/types/types.d.ts +2 -2
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/itAsync.d.ts +3 -3
- package/testing/core/itAsync.d.ts.map +1 -1
- package/testing/core/subscribeAndCount.d.ts +2 -3
- package/testing/core/subscribeAndCount.d.ts.map +1 -1
- package/testing/core/subscribeAndCount.js.map +1 -1
- package/utilities/common/canUse.d.ts +1 -0
- package/utilities/common/canUse.d.ts.map +1 -1
- package/utilities/common/canUse.js +1 -0
- package/utilities/common/canUse.js.map +1 -1
- package/utilities/common/incrementalResult.d.ts +3 -0
- package/utilities/common/incrementalResult.d.ts.map +1 -0
- package/utilities/common/incrementalResult.js +4 -0
- package/utilities/common/incrementalResult.js.map +1 -0
- package/utilities/common/responseIterator.d.ts +10 -0
- package/utilities/common/responseIterator.d.ts.map +1 -0
- package/utilities/common/responseIterator.js +21 -0
- package/utilities/common/responseIterator.js.map +1 -0
- package/utilities/graphql/directives.d.ts.map +1 -1
- package/utilities/graphql/directives.js +11 -2
- package/utilities/graphql/directives.js.map +1 -1
- package/utilities/graphql/storeUtils.d.ts +1 -1
- package/utilities/graphql/storeUtils.d.ts.map +1 -1
- package/utilities/observables/Concast.d.ts +1 -0
- package/utilities/observables/Concast.d.ts.map +1 -1
- package/utilities/observables/Concast.js.map +1 -1
- package/utilities/utilities.cjs +12 -1
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +12 -1
- package/version.js +1 -1
package/core/core.cjs.native.js
CHANGED
|
@@ -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.
|
|
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 (
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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 =
|
|
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
|
-
|
|
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.
|
|
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) {
|
package/core/types.d.ts.map
CHANGED
|
@@ -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"]}
|
package/invariantErrorCodes.js
CHANGED
|
@@ -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.
|
|
8
|
+
"@apollo/client version": "3.7.0-beta.7",
|
|
9
9
|
|
|
10
10
|
1: {
|
|
11
11
|
file: "@apollo/client/cache/inmemory/entityStore.js",
|
package/link/core/types.d.ts
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
import { DocumentNode, ExecutionResult } from
|
|
1
|
+
import { DocumentNode, ExecutionResult, GraphQLError } from "graphql";
|
|
2
2
|
export { DocumentNode };
|
|
3
|
-
import { Observable } from
|
|
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
|
|
20
|
-
data?: TData
|
|
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
|
package/link/core/types.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/core/types.ts"],"names":[],"mappings":"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"}
|
package/link/core/types.js
CHANGED
package/link/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/link/core/types.ts"],"names":[],"mappings":"
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
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"]}
|