@apollo/client 4.0.12-beta.0 → 4.0.13
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/CHANGELOG.md +10 -194
- package/__cjs/cache/core/cache.cjs +48 -169
- package/__cjs/cache/core/cache.cjs.map +1 -1
- package/__cjs/cache/core/cache.d.cts +25 -94
- package/__cjs/cache/core/types/Cache.d.cts +17 -49
- package/__cjs/cache/index.cjs.map +1 -1
- package/__cjs/cache/index.d.cts +1 -1
- package/__cjs/cache/inmemory/entityStore.cjs +4 -6
- package/__cjs/cache/inmemory/entityStore.cjs.map +1 -1
- package/__cjs/cache/inmemory/fragmentRegistry.cjs +5 -0
- package/__cjs/cache/inmemory/fragmentRegistry.cjs.map +1 -1
- package/__cjs/cache/inmemory/helpers.d.cts +1 -1
- package/__cjs/cache/inmemory/inMemoryCache.cjs +1 -15
- package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
- package/__cjs/cache/inmemory/inMemoryCache.d.cts +0 -1
- package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
- package/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
- package/__cjs/cache/inmemory/policies.cjs +17 -56
- package/__cjs/cache/inmemory/policies.cjs.map +1 -1
- package/__cjs/cache/inmemory/policies.d.cts +6 -30
- package/__cjs/cache/inmemory/readFromStore.cjs +3 -3
- package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
- package/__cjs/cache/inmemory/types.d.cts +0 -2
- package/__cjs/cache/inmemory/writeToStore.cjs +10 -24
- package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
- package/__cjs/cache/inmemory/writeToStore.d.cts +1 -2
- package/__cjs/core/ApolloClient.cjs +49 -31
- package/__cjs/core/ApolloClient.cjs.map +1 -1
- package/__cjs/core/ApolloClient.d.cts +17 -143
- package/__cjs/core/ObservableQuery.cjs +128 -162
- package/__cjs/core/ObservableQuery.cjs.map +1 -1
- package/__cjs/core/ObservableQuery.d.cts +0 -1
- package/__cjs/core/QueryInfo.cjs +1 -9
- package/__cjs/core/QueryInfo.cjs.map +1 -1
- package/__cjs/core/QueryInfo.d.cts +1 -2
- package/__cjs/core/QueryManager.cjs +24 -46
- package/__cjs/core/QueryManager.cjs.map +1 -1
- package/__cjs/core/QueryManager.d.cts +2 -18
- package/__cjs/incremental/handlers/defer20220824.cjs +19 -44
- package/__cjs/incremental/handlers/defer20220824.cjs.map +1 -1
- package/__cjs/incremental/handlers/defer20220824.d.cts +7 -15
- package/__cjs/incremental/handlers/notImplemented.cjs +1 -1
- package/__cjs/incremental/handlers/notImplemented.cjs.map +1 -1
- package/__cjs/incremental/index.cjs +1 -3
- package/__cjs/incremental/index.cjs.map +1 -1
- package/__cjs/incremental/index.d.cts +0 -1
- package/__cjs/incremental/types.d.cts +0 -9
- package/__cjs/invariantErrorCodes.cjs +62 -78
- package/__cjs/link/client-awareness/ClientAwarenessLink.cjs +1 -13
- package/__cjs/link/client-awareness/ClientAwarenessLink.cjs.map +1 -1
- package/__cjs/link/client-awareness/ClientAwarenessLink.d.cts +1 -1
- package/__cjs/link/core/ApolloLink.cjs +3 -3
- package/__cjs/link/http/checkFetcher.cjs +1 -1
- package/__cjs/link/http/parseAndCheckHttpResponse.cjs +1 -1
- package/__cjs/link/persisted-queries/index.cjs +2 -2
- package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs +51 -50
- package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs.map +1 -1
- package/__cjs/link/remove-typename/removeTypenameFromVariables.d.cts +3 -0
- package/__cjs/link/ws/index.cjs +1 -1
- package/__cjs/local-state/LocalState.cjs +14 -28
- package/__cjs/local-state/LocalState.cjs.map +1 -1
- package/__cjs/local-state/LocalState.d.cts +2 -3
- package/__cjs/masking/types.d.cts +1 -2
- package/__cjs/react/hooks/internal/useDeepMemo.cjs +0 -2
- package/__cjs/react/hooks/internal/useDeepMemo.cjs.map +1 -1
- package/__cjs/react/hooks/useApolloClient.cjs +1 -1
- package/__cjs/react/hooks/useApolloClient.cjs.map +1 -1
- package/__cjs/react/hooks/useApolloClient.d.cts +1 -1
- package/__cjs/react/hooks/useBackgroundQuery.cjs +3 -1
- package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
- package/__cjs/react/hooks/useFragment.cjs +87 -38
- package/__cjs/react/hooks/useFragment.cjs.map +1 -1
- package/__cjs/react/hooks/useFragment.d.cts +6 -65
- package/__cjs/react/hooks/useLazyQuery.cjs +0 -2
- package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
- package/__cjs/react/hooks/useMutation.cjs +1 -7
- package/__cjs/react/hooks/useMutation.cjs.map +1 -1
- package/__cjs/react/hooks/useMutation.d.cts +1 -13
- package/__cjs/react/hooks/useQuery.cjs +4 -1
- package/__cjs/react/hooks/useQuery.cjs.map +1 -1
- package/__cjs/react/hooks/useQuery.d.cts +1 -1
- package/__cjs/react/hooks/useQueryRefHandlers.cjs +3 -1
- package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
- package/__cjs/react/hooks/useReadQuery.cjs +3 -1
- package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
- package/__cjs/react/hooks/useSubscription.cjs +1 -1
- package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
- package/__cjs/react/hooks/useSuspenseFragment.cjs +16 -16
- package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
- package/__cjs/react/hooks/useSuspenseFragment.d.cts +7 -33
- package/__cjs/react/hooks/useSuspenseQuery.cjs +4 -4
- package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
- package/__cjs/react/internal/cache/FragmentReference.cjs +22 -3
- package/__cjs/react/internal/cache/FragmentReference.cjs.map +1 -1
- package/__cjs/react/internal/cache/FragmentReference.d.cts +4 -2
- package/__cjs/react/internal/cache/QueryReference.cjs +0 -16
- package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
- package/__cjs/react/internal/cache/QueryReference.d.cts +0 -5
- package/__cjs/react/internal/cache/SuspenseCache.cjs.map +1 -1
- package/__cjs/react/internal/cache/SuspenseCache.d.cts +1 -1
- package/__cjs/react/internal/cache/types.d.cts +2 -2
- package/__cjs/react/query-preloader/createQueryPreloader.cjs +1 -41
- package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
- package/__cjs/react/ssr/useSSRQuery.cjs +0 -1
- package/__cjs/react/ssr/useSSRQuery.cjs.map +1 -1
- package/__cjs/utilities/DeepPartial.cjs.map +1 -1
- package/__cjs/utilities/DeepPartial.d.cts +1 -1
- package/__cjs/utilities/internal/DeepMerger.cjs +4 -36
- package/__cjs/utilities/internal/DeepMerger.cjs.map +1 -1
- package/__cjs/utilities/internal/DeepMerger.d.cts +4 -20
- package/__cjs/utilities/internal/bindCacheKey.cjs +21 -0
- package/__cjs/utilities/internal/bindCacheKey.cjs.map +1 -0
- package/__cjs/utilities/internal/bindCacheKey.d.cts +15 -0
- package/__cjs/utilities/internal/compact.cjs +1 -1
- package/__cjs/utilities/internal/compact.cjs.map +1 -1
- package/__cjs/utilities/internal/constants.cjs +1 -17
- package/__cjs/utilities/internal/constants.cjs.map +1 -1
- package/__cjs/utilities/internal/constants.d.cts +0 -16
- package/__cjs/utilities/internal/getStoreKeyName.cjs +0 -1
- package/__cjs/utilities/internal/getStoreKeyName.cjs.map +1 -1
- package/__cjs/utilities/internal/index.cjs +4 -8
- package/__cjs/utilities/internal/index.cjs.map +1 -1
- package/__cjs/utilities/internal/index.d.cts +2 -4
- package/__cjs/utilities/internal/memoize.cjs +2 -2
- package/__cjs/utilities/internal/memoize.cjs.map +1 -1
- package/__cjs/utilities/internal/memoize.d.cts +1 -2
- package/__cjs/version.cjs +1 -1
- package/__cjs/version.cjs.map +1 -1
- package/cache/core/cache.d.ts +25 -94
- package/cache/core/cache.js +51 -172
- package/cache/core/cache.js.map +1 -1
- package/cache/core/types/Cache.d.ts +17 -49
- package/cache/core/types/Cache.js.map +1 -1
- package/cache/index.d.ts +1 -1
- package/cache/index.js.map +1 -1
- package/cache/inmemory/entityStore.js +4 -6
- package/cache/inmemory/entityStore.js.map +1 -1
- package/cache/inmemory/fragmentRegistry.js +6 -1
- package/cache/inmemory/fragmentRegistry.js.map +1 -1
- package/cache/inmemory/helpers.d.ts +1 -1
- package/cache/inmemory/inMemoryCache.d.ts +0 -1
- package/cache/inmemory/inMemoryCache.js +1 -15
- package/cache/inmemory/inMemoryCache.js.map +1 -1
- package/cache/inmemory/key-extractor.js +1 -1
- package/cache/inmemory/key-extractor.js.map +1 -1
- package/cache/inmemory/policies.d.ts +6 -30
- package/cache/inmemory/policies.js +7 -45
- package/cache/inmemory/policies.js.map +1 -1
- package/cache/inmemory/readFromStore.js +3 -3
- package/cache/inmemory/readFromStore.js.map +1 -1
- package/cache/inmemory/types.d.ts +0 -2
- package/cache/inmemory/types.js.map +1 -1
- package/cache/inmemory/writeToStore.d.ts +1 -2
- package/cache/inmemory/writeToStore.js +12 -26
- package/cache/inmemory/writeToStore.js.map +1 -1
- package/core/ApolloClient.d.ts +17 -143
- package/core/ApolloClient.js +50 -32
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.d.ts +0 -1
- package/core/ObservableQuery.js +131 -165
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts +1 -2
- package/core/QueryInfo.js +2 -10
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts +2 -18
- package/core/QueryManager.js +25 -47
- package/core/QueryManager.js.map +1 -1
- package/incremental/handlers/defer20220824.d.ts +7 -15
- package/incremental/handlers/defer20220824.js +19 -44
- package/incremental/handlers/defer20220824.js.map +1 -1
- package/incremental/handlers/notImplemented.js +1 -1
- package/incremental/handlers/notImplemented.js.map +1 -1
- package/incremental/index.d.ts +0 -1
- package/incremental/index.js +2 -3
- package/incremental/index.js.map +1 -1
- package/incremental/types.d.ts +0 -9
- package/incremental/types.js.map +1 -1
- package/invariantErrorCodes.js +62 -78
- package/link/client-awareness/ClientAwarenessLink.d.ts +1 -1
- package/link/client-awareness/ClientAwarenessLink.js +1 -13
- package/link/client-awareness/ClientAwarenessLink.js.map +1 -1
- package/link/core/ApolloLink.js +3 -3
- package/link/http/checkFetcher.js +1 -1
- package/link/http/parseAndCheckHttpResponse.js +1 -1
- package/link/persisted-queries/index.js +2 -2
- package/link/remove-typename/removeTypenameFromVariables.d.ts +3 -0
- package/link/remove-typename/removeTypenameFromVariables.js +51 -50
- package/link/remove-typename/removeTypenameFromVariables.js.map +1 -1
- package/link/ws/index.js +1 -1
- package/local-state/LocalState.d.ts +2 -3
- package/local-state/LocalState.js +14 -28
- package/local-state/LocalState.js.map +1 -1
- package/masking/types.d.ts +1 -2
- package/masking/types.js.map +1 -1
- package/package.json +1 -15
- package/react/hooks/internal/useDeepMemo.js +0 -2
- package/react/hooks/internal/useDeepMemo.js.map +1 -1
- package/react/hooks/useApolloClient.d.ts +1 -1
- package/react/hooks/useApolloClient.js +1 -1
- package/react/hooks/useApolloClient.js.map +1 -1
- package/react/hooks/useBackgroundQuery.js +3 -1
- package/react/hooks/useBackgroundQuery.js.map +1 -1
- package/react/hooks/useFragment.d.ts +6 -65
- package/react/hooks/useFragment.js +87 -38
- package/react/hooks/useFragment.js.map +1 -1
- package/react/hooks/useLazyQuery.js +0 -2
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useMutation.d.ts +1 -13
- package/react/hooks/useMutation.js +1 -7
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.js +4 -1
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useQueryRefHandlers.js +3 -1
- package/react/hooks/useQueryRefHandlers.js.map +1 -1
- package/react/hooks/useReadQuery.js +3 -1
- package/react/hooks/useReadQuery.js.map +1 -1
- package/react/hooks/useSubscription.js +1 -1
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/hooks/useSuspenseFragment.d.ts +7 -33
- package/react/hooks/useSuspenseFragment.js +17 -17
- package/react/hooks/useSuspenseFragment.js.map +1 -1
- package/react/hooks/useSuspenseQuery.js +4 -4
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- package/react/hooks-compiled/internal/useDeepMemo.js +0 -2
- package/react/hooks-compiled/internal/useDeepMemo.js.map +1 -1
- package/react/hooks-compiled/internal/useSuspenseHookCacheKey.js +2 -0
- package/react/hooks-compiled/internal/useSuspenseHookCacheKey.js.map +1 -1
- package/react/hooks-compiled/useApolloClient.d.ts +1 -1
- package/react/hooks-compiled/useApolloClient.js +1 -1
- package/react/hooks-compiled/useApolloClient.js.map +1 -1
- package/react/hooks-compiled/useBackgroundQuery.js +3 -1
- package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
- package/react/hooks-compiled/useFragment.d.ts +6 -65
- package/react/hooks-compiled/useFragment.js +88 -110
- package/react/hooks-compiled/useFragment.js.map +1 -1
- package/react/hooks-compiled/useLazyQuery.js +0 -2
- package/react/hooks-compiled/useLazyQuery.js.map +1 -1
- package/react/hooks-compiled/useLoadableQuery.js +75 -69
- package/react/hooks-compiled/useMutation.d.ts +1 -13
- package/react/hooks-compiled/useMutation.js +13 -5
- package/react/hooks-compiled/useMutation.js.map +1 -1
- package/react/hooks-compiled/useQuery.js +56 -44
- package/react/hooks-compiled/useQuery.js.map +1 -1
- package/react/hooks-compiled/useQueryRefHandlers.js +5 -1
- package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
- package/react/hooks-compiled/useReadQuery.js +14 -77
- package/react/hooks-compiled/useReadQuery.js.map +1 -1
- package/react/hooks-compiled/useSubscription.js +93 -237
- package/react/hooks-compiled/useSubscription.js.map +1 -1
- package/react/hooks-compiled/useSuspenseFragment.d.ts +7 -33
- package/react/hooks-compiled/useSuspenseFragment.js +17 -17
- package/react/hooks-compiled/useSuspenseFragment.js.map +1 -1
- package/react/hooks-compiled/useSuspenseQuery.js +8 -4
- package/react/hooks-compiled/useSuspenseQuery.js.map +1 -1
- package/react/index.compiled.d.ts +1 -1
- package/react/index.compiled.js +1 -1
- package/react/index.compiled.js.map +1 -1
- package/react/internal/cache/FragmentReference.d.ts +4 -2
- package/react/internal/cache/FragmentReference.js +22 -3
- package/react/internal/cache/FragmentReference.js.map +1 -1
- package/react/internal/cache/QueryReference.d.ts +0 -5
- package/react/internal/cache/QueryReference.js +0 -16
- package/react/internal/cache/QueryReference.js.map +1 -1
- package/react/internal/cache/SuspenseCache.d.ts +1 -1
- package/react/internal/cache/SuspenseCache.js.map +1 -1
- package/react/internal/cache/types.d.ts +2 -2
- package/react/internal/cache/types.js.map +1 -1
- package/react/query-preloader/createQueryPreloader.js +1 -41
- package/react/query-preloader/createQueryPreloader.js.map +1 -1
- package/react/ssr/useSSRQuery.js +0 -1
- package/react/ssr/useSSRQuery.js.map +1 -1
- package/utilities/DeepPartial.d.ts +1 -1
- package/utilities/DeepPartial.js.map +1 -1
- package/utilities/internal/DeepMerger.d.ts +4 -20
- package/utilities/internal/DeepMerger.js +4 -36
- package/utilities/internal/DeepMerger.js.map +1 -1
- package/utilities/internal/bindCacheKey.d.ts +15 -0
- package/utilities/internal/bindCacheKey.js +18 -0
- package/utilities/internal/bindCacheKey.js.map +1 -0
- package/utilities/internal/compact.js +1 -1
- package/utilities/internal/compact.js.map +1 -1
- package/utilities/internal/constants.d.ts +0 -16
- package/utilities/internal/constants.js +0 -16
- package/utilities/internal/constants.js.map +1 -1
- package/utilities/internal/getStoreKeyName.js +0 -1
- package/utilities/internal/getStoreKeyName.js.map +1 -1
- package/utilities/internal/index.d.ts +2 -4
- package/utilities/internal/index.js +2 -3
- package/utilities/internal/index.js.map +1 -1
- package/utilities/internal/memoize.d.ts +1 -2
- package/utilities/internal/memoize.js +2 -2
- package/utilities/internal/memoize.js.map +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/__cjs/incremental/handlers/graphql17Alpha9.cjs +0 -222
- package/__cjs/incremental/handlers/graphql17Alpha9.cjs.map +0 -1
- package/__cjs/incremental/handlers/graphql17Alpha9.d.cts +0 -98
- package/__cjs/utilities/internal/combineLatestBatched.cjs +0 -71
- package/__cjs/utilities/internal/combineLatestBatched.cjs.map +0 -1
- package/__cjs/utilities/internal/combineLatestBatched.d.cts +0 -14
- package/__cjs/utilities/internal/mapObservableFragment.cjs +0 -27
- package/__cjs/utilities/internal/mapObservableFragment.cjs.map +0 -1
- package/__cjs/utilities/internal/mapObservableFragment.d.cts +0 -3
- package/__cjs/utilities/internal/ponyfills/FinalizationRegistry.cjs +0 -61
- package/__cjs/utilities/internal/ponyfills/FinalizationRegistry.cjs.map +0 -1
- package/__cjs/utilities/internal/ponyfills/FinalizationRegistry.d.cts +0 -11
- package/__cjs/utilities/internal/ponyfills/index.cjs +0 -6
- package/__cjs/utilities/internal/ponyfills/index.cjs.map +0 -1
- package/__cjs/utilities/internal/ponyfills/index.d.cts +0 -3
- package/__cjs/utilities/internal/ponyfills/index.react-native.cjs +0 -6
- package/__cjs/utilities/internal/ponyfills/index.react-native.cjs.map +0 -1
- package/__cjs/utilities/internal/ponyfills/index.react-native.d.cts +0 -2
- package/__cjs/utilities/internal/types/ExtensionsWithStreamDetails.cjs +0 -3
- package/__cjs/utilities/internal/types/ExtensionsWithStreamDetails.cjs.map +0 -1
- package/__cjs/utilities/internal/types/ExtensionsWithStreamDetails.d.cts +0 -24
- package/incremental/handlers/graphql17Alpha9.d.ts +0 -98
- package/incremental/handlers/graphql17Alpha9.js +0 -218
- package/incremental/handlers/graphql17Alpha9.js.map +0 -1
- package/legacyEntryPoints/utilities/internal/ponyfills/index.d.ts +0 -1
- package/legacyEntryPoints/utilities/internal/ponyfills/index.js +0 -1
- package/legacyEntryPoints/utilities/internal/ponyfills/ponyfills.cjs +0 -1
- package/legacyEntryPoints/utilities/internal/ponyfills/ponyfills.d.cts +0 -1
- package/utilities/internal/combineLatestBatched.d.ts +0 -14
- package/utilities/internal/combineLatestBatched.js +0 -68
- package/utilities/internal/combineLatestBatched.js.map +0 -1
- package/utilities/internal/mapObservableFragment.d.ts +0 -3
- package/utilities/internal/mapObservableFragment.js +0 -24
- package/utilities/internal/mapObservableFragment.js.map +0 -1
- package/utilities/internal/ponyfills/FinalizationRegistry.d.ts +0 -11
- package/utilities/internal/ponyfills/FinalizationRegistry.js +0 -57
- package/utilities/internal/ponyfills/FinalizationRegistry.js.map +0 -1
- package/utilities/internal/ponyfills/index.d.ts +0 -3
- package/utilities/internal/ponyfills/index.js +0 -3
- package/utilities/internal/ponyfills/index.js.map +0 -1
- package/utilities/internal/ponyfills/index.react-native.d.ts +0 -2
- package/utilities/internal/ponyfills/index.react-native.js +0 -2
- package/utilities/internal/ponyfills/index.react-native.js.map +0 -1
- package/utilities/internal/types/ExtensionsWithStreamDetails.d.ts +0 -24
- package/utilities/internal/types/ExtensionsWithStreamDetails.js +0 -2
- package/utilities/internal/types/ExtensionsWithStreamDetails.js.map +0 -1
|
@@ -4,7 +4,7 @@ import { wrap } from "optimism";
|
|
|
4
4
|
import { ApolloLink } from "@apollo/client/link";
|
|
5
5
|
import { cacheSizes, stripTypename } from "@apollo/client/utilities";
|
|
6
6
|
import { __DEV__ } from "@apollo/client/utilities/environment";
|
|
7
|
-
import { isPlainObject } from "@apollo/client/utilities/internal";
|
|
7
|
+
import { bindCacheKey, isPlainObject } from "@apollo/client/utilities/internal";
|
|
8
8
|
/**
|
|
9
9
|
* Sentinel value used to indicate that `__typename` fields should be kept
|
|
10
10
|
* for a specific field or input type.
|
|
@@ -69,7 +69,7 @@ export class RemoveTypenameFromVariablesLink extends ApolloLink {
|
|
|
69
69
|
if (variables) {
|
|
70
70
|
operation.variables =
|
|
71
71
|
except ?
|
|
72
|
-
maybeStripTypenameUsingConfig(query, variables, except)
|
|
72
|
+
this.maybeStripTypenameUsingConfig(query, variables, except)
|
|
73
73
|
: stripTypename(variables);
|
|
74
74
|
}
|
|
75
75
|
return forward(operation);
|
|
@@ -79,64 +79,65 @@ export class RemoveTypenameFromVariablesLink extends ApolloLink {
|
|
|
79
79
|
getMemoryInternals() {
|
|
80
80
|
return {
|
|
81
81
|
removeTypenameFromVariables: {
|
|
82
|
-
getVariableDefinitions: getVariableDefinitions?.size ?? 0,
|
|
82
|
+
getVariableDefinitions: this.getVariableDefinitions?.size ?? 0,
|
|
83
83
|
},
|
|
84
84
|
};
|
|
85
85
|
},
|
|
86
86
|
}
|
|
87
87
|
: {});
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
function maybeStripTypename(value, config) {
|
|
104
|
-
if (config === KEEP) {
|
|
105
|
-
return value;
|
|
89
|
+
maybeStripTypenameUsingConfig(query, variables, config) {
|
|
90
|
+
const variableDefinitions = this.getVariableDefinitions(query);
|
|
91
|
+
return Object.fromEntries(Object.entries(variables).map((keyVal) => {
|
|
92
|
+
const [key, value] = keyVal;
|
|
93
|
+
const typename = variableDefinitions[key];
|
|
94
|
+
const typenameConfig = config[typename];
|
|
95
|
+
keyVal[1] =
|
|
96
|
+
typenameConfig ?
|
|
97
|
+
this.maybeStripTypename(value, typenameConfig)
|
|
98
|
+
: stripTypename(value);
|
|
99
|
+
return keyVal;
|
|
100
|
+
}));
|
|
106
101
|
}
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
maybeStripTypename(value, config) {
|
|
103
|
+
if (config === KEEP) {
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
if (Array.isArray(value)) {
|
|
107
|
+
return value.map((item) => this.maybeStripTypename(item, config));
|
|
108
|
+
}
|
|
109
|
+
if (isPlainObject(value)) {
|
|
110
|
+
const modified = {};
|
|
111
|
+
Object.keys(value).forEach((key) => {
|
|
112
|
+
const child = value[key];
|
|
113
|
+
if (key === "__typename") {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const fieldConfig = config[key];
|
|
117
|
+
modified[key] =
|
|
118
|
+
fieldConfig ?
|
|
119
|
+
this.maybeStripTypename(child, fieldConfig)
|
|
120
|
+
: stripTypename(child);
|
|
121
|
+
});
|
|
122
|
+
return modified;
|
|
123
|
+
}
|
|
124
|
+
return value;
|
|
109
125
|
}
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
const fieldConfig = config[key];
|
|
118
|
-
modified[key] =
|
|
119
|
-
fieldConfig ?
|
|
120
|
-
maybeStripTypename(child, fieldConfig)
|
|
121
|
-
: stripTypename(child);
|
|
126
|
+
getVariableDefinitions = wrap((document) => {
|
|
127
|
+
const definitions = {};
|
|
128
|
+
visit(document, {
|
|
129
|
+
VariableDefinition(node) {
|
|
130
|
+
definitions[node.variable.name.value] = unwrapType(node.type);
|
|
131
|
+
},
|
|
122
132
|
});
|
|
123
|
-
return
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
visit(document, {
|
|
130
|
-
VariableDefinition(node) {
|
|
131
|
-
definitions[node.variable.name.value] = unwrapType(node.type);
|
|
132
|
-
},
|
|
133
|
+
return definitions;
|
|
134
|
+
}, {
|
|
135
|
+
max: cacheSizes["removeTypenameFromVariables.getVariableDefinitions"] ||
|
|
136
|
+
2000 /* defaultCacheSizes["removeTypenameFromVariables.getVariableDefinitions"] */,
|
|
137
|
+
cache: WeakCache,
|
|
138
|
+
makeCacheKey: bindCacheKey(this),
|
|
133
139
|
});
|
|
134
|
-
|
|
135
|
-
}, {
|
|
136
|
-
max: cacheSizes["removeTypenameFromVariables.getVariableDefinitions"] ||
|
|
137
|
-
2000 /* defaultCacheSizes["removeTypenameFromVariables.getVariableDefinitions"] */,
|
|
138
|
-
cache: WeakCache,
|
|
139
|
-
});
|
|
140
|
+
}
|
|
140
141
|
function unwrapType(node) {
|
|
141
142
|
switch (node.kind) {
|
|
142
143
|
case Kind.NON_NULL_TYPE:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeTypenameFromVariables.js","sourceRoot":"","sources":["../../../src/link/remove-typename/removeTypenameFromVariables.ts"],"names":[],"mappings":"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","sourcesContent":["import { WeakCache } from \"@wry/caches\";\nimport type { DocumentNode, TypeNode } from \"graphql\";\nimport { Kind, visit } from \"graphql\";\nimport { wrap } from \"optimism\";\n\nimport type { OperationVariables } from \"@apollo/client\";\nimport { ApolloLink } from \"@apollo/client/link\";\nimport { cacheSizes, stripTypename } from \"@apollo/client/utilities\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport { isPlainObject } from \"@apollo/client/utilities/internal\";\n\nimport { defaultCacheSizes } from \"../../utilities/caching/sizes.js\";\n\n/**\n * Sentinel value used to indicate that `__typename` fields should be kept\n * for a specific field or input type.\n *\n * @remarks\n * Use this value in the `except` configuration to preserve `__typename`\n * fields in JSON scalar fields or other cases where you need to retain\n * the typename information.\n *\n * @example\n *\n * ```ts\n * import {\n * RemoveTypenameFromVariablesLink,\n * KEEP,\n * } from \"@apollo/client/link/remove-typename\";\n *\n * const link = new RemoveTypenameFromVariablesLink({\n * except: {\n * JSON: KEEP, // Keep __typename for all JSON scalar variables\n * DashboardInput: {\n * config: KEEP, // Keep __typename only for the config field\n * },\n * },\n * });\n * ```\n */\nexport const KEEP = \"__KEEP\";\n\nexport declare namespace RemoveTypenameFromVariablesLink {\n /**\n * Configuration object that specifies which input types and fields should\n * retain their `__typename` fields.\n *\n * @remarks\n * This is a recursive configuration where:\n *\n * - Keys represent GraphQL input type names or field names\n * - Values can be either the `KEEP` sentinel to preserve all `__typename`\n * fields, or a nested `KeepTypenameConfig` to preserve `__typename` fields on\n * a specific field name.\n *\n * @example\n *\n * ```ts\n * const config: KeepTypenameConfig = {\n * // Keep __typename for all JSON scalar variables\n * JSON: KEEP,\n *\n * // For DashboardInput, only keep __typename on the config field\n * DashboardInput: {\n * config: KEEP,\n * },\n *\n * // Nested configuration for complex input types\n * UserInput: {\n * profile: {\n * settings: KEEP,\n * },\n * },\n * };\n * ```\n */\n export interface KeepTypenameConfig {\n [key: string]:\n | typeof KEEP\n | RemoveTypenameFromVariablesLink.KeepTypenameConfig;\n }\n\n /**\n * Options for configuring the `RemoveTypenameFromVariablesLink`.\n */\n export interface Options {\n /**\n * Configuration that determines which input types should retain `__typename`\n * fields.\n *\n * Maps GraphQL input type names to configurations. Each configuration can\n * either be the `KEEP` sentinel, to preserve all `__typename` fields, or\n * a nested object that specifies which fields should retain `__typename`.\n *\n * @example\n *\n * ```ts\n * {\n * except: {\n * // Keep __typename for all JSON scalar variables\n * JSON: KEEP,\n *\n * // For DashboardInput, remove __typename except for config field\n * DashboardInput: {\n * config: KEEP,\n * },\n *\n * // Complex nested configuration\n * UserProfileInput: {\n * settings: {\n * preferences: KEEP,\n * },\n * },\n * },\n * }\n * ```\n */\n except?: RemoveTypenameFromVariablesLink.KeepTypenameConfig;\n }\n}\n\n/**\n * @deprecated\n * Use `RemoveTypenameFromVariablesLink` from `@apollo/client/link/remove-typename` instead.\n */\nexport function removeTypenameFromVariables(\n options?: RemoveTypenameFromVariablesLink.Options\n) {\n return new RemoveTypenameFromVariablesLink(options);\n}\n\n/**\n * `RemoveTypenameFromVariablesLink` is a non-terminating link that automatically\n * removes `__typename` fields from operation variables to prevent GraphQL\n * validation errors.\n *\n * @remarks\n *\n * When reusing data from a query as input to another GraphQL operation,\n * `__typename` fields can cause server-side validation errors because input\n * types don't accept fields that start with double underscores (`__`).\n * `RemoveTypenameFromVariablesLink` automatically strips these fields from all\n * operation variables.\n *\n * @example\n *\n * ```ts\n * import { RemoveTypenameFromVariablesLink } from \"@apollo/client/link/remove-typename\";\n *\n * const link = new RemoveTypenameFromVariablesLink();\n * ```\n */\nexport class RemoveTypenameFromVariablesLink extends ApolloLink {\n constructor(options: RemoveTypenameFromVariablesLink.Options = {}) {\n super((operation, forward) => {\n const { except } = options;\n const { query, variables } = operation;\n\n if (variables) {\n operation.variables =\n except ?\n maybeStripTypenameUsingConfig(query, variables, except)\n : stripTypename(variables);\n }\n\n return forward(operation);\n });\n return Object.assign(\n this,\n __DEV__ ?\n {\n getMemoryInternals() {\n return {\n removeTypenameFromVariables: {\n getVariableDefinitions: getVariableDefinitions?.size ?? 0,\n },\n };\n },\n }\n : {}\n );\n }\n}\n\nfunction maybeStripTypenameUsingConfig(\n query: DocumentNode,\n variables: OperationVariables,\n config: RemoveTypenameFromVariablesLink.KeepTypenameConfig\n) {\n const variableDefinitions = getVariableDefinitions(query);\n\n return Object.fromEntries(\n Object.entries(variables).map((keyVal) => {\n const [key, value] = keyVal;\n const typename = variableDefinitions[key];\n const typenameConfig = config[typename];\n\n keyVal[1] =\n typenameConfig ?\n maybeStripTypename(value, typenameConfig)\n : stripTypename(value);\n\n return keyVal;\n })\n );\n}\n\ntype JSONPrimitive = string | number | null | boolean;\ntype JSONValue = JSONPrimitive | JSONValue[] | { [key: string]: JSONValue };\n\nfunction maybeStripTypename(\n value: JSONValue,\n config: RemoveTypenameFromVariablesLink.KeepTypenameConfig[string]\n): JSONValue {\n if (config === KEEP) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => maybeStripTypename(item, config));\n }\n\n if (isPlainObject(value)) {\n const modified: Record<string, any> = {};\n\n Object.keys(value).forEach((key) => {\n const child = value[key];\n\n if (key === \"__typename\") {\n return;\n }\n\n const fieldConfig = config[key];\n\n modified[key] =\n fieldConfig ?\n maybeStripTypename(child, fieldConfig)\n : stripTypename(child);\n });\n\n return modified;\n }\n\n return value;\n}\n\nconst getVariableDefinitions = wrap(\n (document: DocumentNode) => {\n const definitions: Record<string, string> = {};\n\n visit(document, {\n VariableDefinition(node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n\n return definitions;\n },\n {\n max:\n cacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] ||\n defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"],\n cache: WeakCache,\n }\n);\n\nfunction unwrapType(node: TypeNode): string {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"removeTypenameFromVariables.js","sourceRoot":"","sources":["../../../src/link/remove-typename/removeTypenameFromVariables.ts"],"names":[],"mappings":"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","sourcesContent":["import { WeakCache } from \"@wry/caches\";\nimport type { DocumentNode, TypeNode } from \"graphql\";\nimport { Kind, visit } from \"graphql\";\nimport { wrap } from \"optimism\";\n\nimport type { OperationVariables } from \"@apollo/client\";\nimport { ApolloLink } from \"@apollo/client/link\";\nimport { cacheSizes, stripTypename } from \"@apollo/client/utilities\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport { bindCacheKey, isPlainObject } from \"@apollo/client/utilities/internal\";\n\nimport { defaultCacheSizes } from \"../../utilities/caching/sizes.js\";\n\n/**\n * Sentinel value used to indicate that `__typename` fields should be kept\n * for a specific field or input type.\n *\n * @remarks\n * Use this value in the `except` configuration to preserve `__typename`\n * fields in JSON scalar fields or other cases where you need to retain\n * the typename information.\n *\n * @example\n *\n * ```ts\n * import {\n * RemoveTypenameFromVariablesLink,\n * KEEP,\n * } from \"@apollo/client/link/remove-typename\";\n *\n * const link = new RemoveTypenameFromVariablesLink({\n * except: {\n * JSON: KEEP, // Keep __typename for all JSON scalar variables\n * DashboardInput: {\n * config: KEEP, // Keep __typename only for the config field\n * },\n * },\n * });\n * ```\n */\nexport const KEEP = \"__KEEP\";\n\nexport declare namespace RemoveTypenameFromVariablesLink {\n /**\n * Configuration object that specifies which input types and fields should\n * retain their `__typename` fields.\n *\n * @remarks\n * This is a recursive configuration where:\n *\n * - Keys represent GraphQL input type names or field names\n * - Values can be either the `KEEP` sentinel to preserve all `__typename`\n * fields, or a nested `KeepTypenameConfig` to preserve `__typename` fields on\n * a specific field name.\n *\n * @example\n *\n * ```ts\n * const config: KeepTypenameConfig = {\n * // Keep __typename for all JSON scalar variables\n * JSON: KEEP,\n *\n * // For DashboardInput, only keep __typename on the config field\n * DashboardInput: {\n * config: KEEP,\n * },\n *\n * // Nested configuration for complex input types\n * UserInput: {\n * profile: {\n * settings: KEEP,\n * },\n * },\n * };\n * ```\n */\n export interface KeepTypenameConfig {\n [key: string]:\n | typeof KEEP\n | RemoveTypenameFromVariablesLink.KeepTypenameConfig;\n }\n\n /**\n * Options for configuring the `RemoveTypenameFromVariablesLink`.\n */\n export interface Options {\n /**\n * Configuration that determines which input types should retain `__typename`\n * fields.\n *\n * Maps GraphQL input type names to configurations. Each configuration can\n * either be the `KEEP` sentinel, to preserve all `__typename` fields, or\n * a nested object that specifies which fields should retain `__typename`.\n *\n * @example\n *\n * ```ts\n * {\n * except: {\n * // Keep __typename for all JSON scalar variables\n * JSON: KEEP,\n *\n * // For DashboardInput, remove __typename except for config field\n * DashboardInput: {\n * config: KEEP,\n * },\n *\n * // Complex nested configuration\n * UserProfileInput: {\n * settings: {\n * preferences: KEEP,\n * },\n * },\n * },\n * }\n * ```\n */\n except?: RemoveTypenameFromVariablesLink.KeepTypenameConfig;\n }\n}\n\n/**\n * @deprecated\n * Use `RemoveTypenameFromVariablesLink` from `@apollo/client/link/remove-typename` instead.\n */\nexport function removeTypenameFromVariables(\n options?: RemoveTypenameFromVariablesLink.Options\n) {\n return new RemoveTypenameFromVariablesLink(options);\n}\n\n/**\n * `RemoveTypenameFromVariablesLink` is a non-terminating link that automatically\n * removes `__typename` fields from operation variables to prevent GraphQL\n * validation errors.\n *\n * @remarks\n *\n * When reusing data from a query as input to another GraphQL operation,\n * `__typename` fields can cause server-side validation errors because input\n * types don't accept fields that start with double underscores (`__`).\n * `RemoveTypenameFromVariablesLink` automatically strips these fields from all\n * operation variables.\n *\n * @example\n *\n * ```ts\n * import { RemoveTypenameFromVariablesLink } from \"@apollo/client/link/remove-typename\";\n *\n * const link = new RemoveTypenameFromVariablesLink();\n * ```\n */\nexport class RemoveTypenameFromVariablesLink extends ApolloLink {\n constructor(options: RemoveTypenameFromVariablesLink.Options = {}) {\n super((operation, forward) => {\n const { except } = options;\n const { query, variables } = operation;\n\n if (variables) {\n operation.variables =\n except ?\n this.maybeStripTypenameUsingConfig(query, variables, except)\n : stripTypename(variables);\n }\n\n return forward(operation);\n });\n return Object.assign(\n this,\n __DEV__ ?\n {\n getMemoryInternals(this: RemoveTypenameFromVariablesLink) {\n return {\n removeTypenameFromVariables: {\n getVariableDefinitions: this.getVariableDefinitions?.size ?? 0,\n },\n };\n },\n }\n : {}\n );\n }\n\n private maybeStripTypenameUsingConfig(\n query: DocumentNode,\n variables: OperationVariables,\n config: RemoveTypenameFromVariablesLink.KeepTypenameConfig\n ) {\n const variableDefinitions = this.getVariableDefinitions(query);\n\n return Object.fromEntries(\n Object.entries(variables).map((keyVal) => {\n const [key, value] = keyVal;\n const typename = variableDefinitions[key];\n const typenameConfig = config[typename];\n\n keyVal[1] =\n typenameConfig ?\n this.maybeStripTypename(value, typenameConfig)\n : stripTypename(value);\n\n return keyVal;\n })\n );\n }\n\n private maybeStripTypename(\n value: JSONValue,\n config: RemoveTypenameFromVariablesLink.KeepTypenameConfig[string]\n ): JSONValue {\n if (config === KEEP) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.maybeStripTypename(item, config));\n }\n\n if (isPlainObject(value)) {\n const modified: Record<string, any> = {};\n\n Object.keys(value).forEach((key) => {\n const child = value[key];\n\n if (key === \"__typename\") {\n return;\n }\n\n const fieldConfig = config[key];\n\n modified[key] =\n fieldConfig ?\n this.maybeStripTypename(child, fieldConfig)\n : stripTypename(child);\n });\n\n return modified;\n }\n\n return value;\n }\n\n private getVariableDefinitions = wrap(\n (document: DocumentNode) => {\n const definitions: Record<string, string> = {};\n\n visit(document, {\n VariableDefinition(node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n\n return definitions;\n },\n {\n max:\n cacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] ||\n defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"],\n cache: WeakCache,\n makeCacheKey: bindCacheKey(this),\n }\n );\n}\n\ntype JSONPrimitive = string | number | null | boolean;\ntype JSONValue = JSONPrimitive | JSONValue[] | { [key: string]: JSONValue };\n\nfunction unwrapType(node: TypeNode): string {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\n"]}
|
package/link/ws/index.js
CHANGED
|
@@ -32,7 +32,7 @@ export class WebSocketLink extends ApolloLink {
|
|
|
32
32
|
constructor(paramsOrClient) {
|
|
33
33
|
super();
|
|
34
34
|
if (__DEV__) {
|
|
35
|
-
__DEV__ && invariant.warn(
|
|
35
|
+
__DEV__ && invariant.warn(56);
|
|
36
36
|
}
|
|
37
37
|
if (paramsOrClient instanceof SubscriptionClient) {
|
|
38
38
|
this.subscriptionClient = paramsOrClient;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DocumentNode, FieldNode, FormattedExecutionResult } from "graphql";
|
|
2
|
-
import type { ApolloClient, DefaultContext, OperationVariables, TypedDocumentNode
|
|
2
|
+
import type { ApolloClient, DefaultContext, OperationVariables, TypedDocumentNode } from "@apollo/client";
|
|
3
3
|
import type { FragmentMap, NoInfer, RemoveIndexSignature } from "@apollo/client/utilities/internal";
|
|
4
4
|
type InferContextValueFromResolvers<TResolvers> = TResolvers extends {
|
|
5
5
|
[typename: string]: infer TFieldResolvers;
|
|
@@ -155,7 +155,7 @@ export declare class LocalState<TResolvers extends LocalState.Resolvers = LocalS
|
|
|
155
155
|
* ```
|
|
156
156
|
*/
|
|
157
157
|
addResolvers(resolvers: TResolvers): void;
|
|
158
|
-
execute<TData = unknown, TVariables extends OperationVariables = OperationVariables>({ document, client, context, remoteResult, variables, onlyRunForcedResolvers, returnPartialData,
|
|
158
|
+
execute<TData = unknown, TVariables extends OperationVariables = OperationVariables>({ document, client, context, remoteResult, variables, onlyRunForcedResolvers, returnPartialData, }: {
|
|
159
159
|
document: DocumentNode | TypedDocumentNode<TData, TVariables>;
|
|
160
160
|
client: ApolloClient;
|
|
161
161
|
context: DefaultContext | undefined;
|
|
@@ -163,7 +163,6 @@ export declare class LocalState<TResolvers extends LocalState.Resolvers = LocalS
|
|
|
163
163
|
variables: TVariables | undefined;
|
|
164
164
|
onlyRunForcedResolvers?: boolean;
|
|
165
165
|
returnPartialData?: boolean;
|
|
166
|
-
fetchPolicy: WatchQueryFetchPolicy;
|
|
167
166
|
}): Promise<FormattedExecutionResult<TData>>;
|
|
168
167
|
getExportedVariables<TVariables extends OperationVariables = OperationVariables>({ document, client, context, variables, }: {
|
|
169
168
|
document: DocumentNode | TypedDocumentNode<any, TVariables>;
|
|
@@ -64,7 +64,7 @@ export class LocalState {
|
|
|
64
64
|
addResolvers(resolvers) {
|
|
65
65
|
this.resolvers = mergeDeep(this.resolvers, resolvers);
|
|
66
66
|
}
|
|
67
|
-
async execute({ document, client, context, remoteResult, variables = {}, onlyRunForcedResolvers = false, returnPartialData = false,
|
|
67
|
+
async execute({ document, client, context, remoteResult, variables = {}, onlyRunForcedResolvers = false, returnPartialData = false, }) {
|
|
68
68
|
if (__DEV__) {
|
|
69
69
|
invariant(hasDirectives(["client"], document), 47);
|
|
70
70
|
validateCacheImplementation(client.cache);
|
|
@@ -78,14 +78,12 @@ export class LocalState {
|
|
|
78
78
|
}
|
|
79
79
|
const { selectionsToResolve, exportedVariableDefs, operationDefinition, fragmentMap, } = this.collectQueryDetail(document);
|
|
80
80
|
const rootValue = remoteResult ? remoteResult.data : {};
|
|
81
|
-
const diff =
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
optimistic: false,
|
|
88
|
-
});
|
|
81
|
+
const diff = client.cache.diff({
|
|
82
|
+
query: toQueryOperation(document),
|
|
83
|
+
variables,
|
|
84
|
+
returnPartialData: true,
|
|
85
|
+
optimistic: false,
|
|
86
|
+
});
|
|
89
87
|
const requestContext = { ...client.defaultContext, ...context };
|
|
90
88
|
const execContext = {
|
|
91
89
|
client,
|
|
@@ -107,7 +105,6 @@ export class LocalState {
|
|
|
107
105
|
exportedVariableDefs,
|
|
108
106
|
diff,
|
|
109
107
|
returnPartialData,
|
|
110
|
-
fetchPolicy,
|
|
111
108
|
};
|
|
112
109
|
const localResult = await this.resolveSelectionSet(operationDefinition.selectionSet, false, rootValue, execContext, []);
|
|
113
110
|
const errors = (remoteResult?.errors ?? []).concat(execContext.errors);
|
|
@@ -244,8 +241,7 @@ export class LocalState {
|
|
|
244
241
|
return this.resolveSelectionSet(field.selectionSet, false, result, execContext, path);
|
|
245
242
|
}
|
|
246
243
|
async resolveClientField(field, isClientFieldDescendant, rootValue, execContext, parentSelectionSet, path) {
|
|
247
|
-
const { client, diff, variables, operationDefinition, phase,
|
|
248
|
-
let { returnPartialData } = execContext;
|
|
244
|
+
const { client, diff, variables, operationDefinition, phase, returnPartialData, onlyRunForcedResolvers, } = execContext;
|
|
249
245
|
const isRootField = parentSelectionSet === operationDefinition.selectionSet;
|
|
250
246
|
const fieldName = field.name.value;
|
|
251
247
|
const typename = isRootField ?
|
|
@@ -267,17 +263,7 @@ export class LocalState {
|
|
|
267
263
|
if (fieldFromCache !== undefined) {
|
|
268
264
|
return fieldFromCache;
|
|
269
265
|
}
|
|
270
|
-
if (client.cache.resolvesClientField?.(typename, fieldName)) {
|
|
271
|
-
if (fetchPolicy === "no-cache") {
|
|
272
|
-
__DEV__ && invariant.warn(50, resolverName);
|
|
273
|
-
return null;
|
|
274
|
-
}
|
|
275
|
-
// assume the cache will handle returning the correct value
|
|
276
|
-
returnPartialData = true;
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
266
|
if (!returnPartialData) {
|
|
280
|
-
__DEV__ && invariant.warn(51, resolverName);
|
|
281
267
|
return null;
|
|
282
268
|
}
|
|
283
269
|
});
|
|
@@ -343,13 +329,13 @@ export class LocalState {
|
|
|
343
329
|
if (result === undefined && !returnPartialData) {
|
|
344
330
|
if (__DEV__ && phase === "resolve") {
|
|
345
331
|
if (resolver && !onlyRunForcedResolvers) {
|
|
346
|
-
__DEV__ && invariant.warn(
|
|
332
|
+
__DEV__ && invariant.warn(50, resolverName);
|
|
347
333
|
}
|
|
348
334
|
else if (onlyRunForcedResolvers) {
|
|
349
|
-
__DEV__ && invariant.warn(
|
|
335
|
+
__DEV__ && invariant.warn(51, resolverName);
|
|
350
336
|
}
|
|
351
337
|
else {
|
|
352
|
-
__DEV__ && invariant.warn(
|
|
338
|
+
__DEV__ && invariant.warn(52, fieldName, rootValue);
|
|
353
339
|
}
|
|
354
340
|
}
|
|
355
341
|
result = null;
|
|
@@ -361,7 +347,7 @@ export class LocalState {
|
|
|
361
347
|
return this.resolveSubSelectedArray(field, true, result, execContext, path);
|
|
362
348
|
}
|
|
363
349
|
if (phase === "resolve" && !result.__typename) {
|
|
364
|
-
this.addError(newInvariantError(
|
|
350
|
+
this.addError(newInvariantError(53, result, resolverName), path, execContext, { resolver: resolverName });
|
|
365
351
|
return null;
|
|
366
352
|
}
|
|
367
353
|
return this.resolveSelectionSet(field.selectionSet, true, result, execContext, path);
|
|
@@ -472,7 +458,7 @@ export class LocalState {
|
|
|
472
458
|
},
|
|
473
459
|
FragmentSpread(spread, _, __, ___, ancestors) {
|
|
474
460
|
const fragment = fragmentMap[spread.name.value];
|
|
475
|
-
invariant(fragment,
|
|
461
|
+
invariant(fragment, 54, spread.name.value);
|
|
476
462
|
const { selectionsToResolve: fragmentSelections } = traverse(fragment);
|
|
477
463
|
if (fragmentSelections.size > 0) {
|
|
478
464
|
// Fragment for this spread contains @client directive (either directly or transitively)
|
|
@@ -531,7 +517,7 @@ function getExportedVariableName(directive) {
|
|
|
531
517
|
}
|
|
532
518
|
}
|
|
533
519
|
function validateCacheImplementation(cache) {
|
|
534
|
-
invariant(cache.fragmentMatches,
|
|
520
|
+
invariant(cache.fragmentMatches, 55);
|
|
535
521
|
}
|
|
536
522
|
function getCacheResultAtPath(diff, path) {
|
|
537
523
|
if (diff.result === null) {
|