@apollo/client 4.0.0-alpha.13 → 4.0.0-alpha.14
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/.changeset/curvy-flies-accept.md +5 -0
- package/.changeset/few-crabs-move.md +6 -0
- package/.changeset/funny-boats-wink.md +35 -0
- package/.changeset/gold-oranges-double.md +5 -0
- package/.changeset/little-parrots-bow.md +14 -0
- package/.changeset/olive-cougars-ring.md +9 -0
- package/.changeset/pre.json +13 -0
- package/.changeset/serious-items-develop.md +17 -0
- package/.changeset/sixty-bats-cry.md +6 -0
- package/.changeset/spotty-mugs-poke.md +5 -0
- package/.changeset/strong-rivers-fry.md +34 -0
- package/.changeset/stupid-pumpkins-travel.md +13 -0
- package/.changeset/thirty-pens-jump.md +5 -0
- package/.changeset/wicked-kiwis-buy.md +5 -0
- package/CHANGELOG.md +134 -0
- package/__cjs/cache/core/cache.cjs +9 -7
- package/__cjs/cache/core/cache.cjs.map +1 -1
- package/__cjs/cache/core/cache.d.cts +9 -7
- package/__cjs/cache/inmemory/entityStore.cjs +3 -3
- package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
- package/__cjs/cache/inmemory/inMemoryCache.d.cts +9 -7
- package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
- package/__cjs/cache/inmemory/policies.cjs +4 -4
- package/__cjs/cache/inmemory/policies.cjs.map +1 -1
- package/__cjs/cache/inmemory/readFromStore.cjs +2 -2
- package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
- package/__cjs/cache/inmemory/writeToStore.cjs +4 -4
- package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
- package/__cjs/core/ApolloClient.cjs +23 -45
- package/__cjs/core/ApolloClient.cjs.map +1 -1
- package/__cjs/core/ApolloClient.d.cts +9 -21
- package/__cjs/core/ObservableQuery.cjs +564 -346
- package/__cjs/core/ObservableQuery.cjs.map +1 -1
- package/__cjs/core/ObservableQuery.d.cts +95 -33
- package/__cjs/core/QueryInfo.cjs +109 -179
- package/__cjs/core/QueryInfo.cjs.map +1 -1
- package/__cjs/core/QueryInfo.d.cts +9 -14
- package/__cjs/core/QueryManager.cjs +168 -108
- package/__cjs/core/QueryManager.cjs.map +1 -1
- package/__cjs/core/QueryManager.d.cts +12 -8
- package/__cjs/core/index.cjs +2 -1
- package/__cjs/core/index.cjs.map +1 -1
- package/__cjs/core/index.d.cts +2 -3
- package/__cjs/core/types.d.cts +18 -6
- package/__cjs/errors/LinkError.cjs +5 -1
- package/__cjs/errors/LinkError.cjs.map +1 -1
- package/__cjs/errors/LinkError.d.cts +5 -1
- package/__cjs/errors/LocalStateError.cjs +27 -0
- package/__cjs/errors/LocalStateError.cjs.map +1 -0
- package/__cjs/errors/LocalStateError.d.cts +20 -0
- package/__cjs/errors/index.cjs +5 -1
- package/__cjs/errors/index.cjs.map +1 -1
- package/__cjs/errors/index.d.cts +2 -0
- package/__cjs/invariantErrorCodes.cjs +130 -57
- package/__cjs/link/core/ApolloLink.cjs +17 -11
- package/__cjs/link/core/ApolloLink.cjs.map +1 -1
- package/__cjs/link/core/ApolloLink.d.cts +15 -9
- package/__cjs/link/http/checkFetcher.cjs +1 -1
- package/__cjs/link/http/createHttpLink.cjs +1 -1
- package/__cjs/link/http/parseAndCheckHttpResponse.cjs +1 -1
- package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
- package/__cjs/link/persisted-queries/index.cjs +2 -2
- package/__cjs/link/utils/transformOperation.cjs +1 -1
- package/__cjs/link/utils/transformOperation.cjs.map +1 -1
- package/__cjs/link/utils/validateOperation.cjs +1 -1
- package/__cjs/local-state/LocalState.cjs +535 -0
- package/__cjs/local-state/LocalState.cjs.map +1 -0
- package/__cjs/local-state/LocalState.d.cts +89 -0
- package/__cjs/local-state/index.cjs +6 -0
- package/__cjs/local-state/index.cjs.map +1 -0
- package/__cjs/local-state/index.d.cts +2 -0
- package/__cjs/masking/maskFragment.cjs +5 -1
- package/__cjs/masking/maskFragment.cjs.map +1 -1
- package/__cjs/masking/maskFragment.d.cts +5 -1
- package/__cjs/masking/maskOperation.cjs +5 -1
- package/__cjs/masking/maskOperation.cjs.map +1 -1
- package/__cjs/masking/maskOperation.d.cts +5 -1
- package/__cjs/masking/utils.cjs +5 -1
- package/__cjs/masking/utils.cjs.map +1 -1
- package/__cjs/masking/utils.d.cts +5 -1
- package/__cjs/react/hooks/internal/wrapHook.cjs +36 -34
- package/__cjs/react/hooks/internal/wrapHook.cjs.map +1 -1
- package/__cjs/react/hooks/internal/wrapHook.d.cts +42 -38
- package/__cjs/react/internal/cache/QueryReference.cjs +6 -9
- package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
- package/__cjs/react/internal/cache/QueryReference.d.cts +25 -7
- package/__cjs/react/ssr/prerenderStatic.cjs +7 -0
- package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -1
- package/__cjs/testing/core/mocking/mockLink.cjs +7 -3
- package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
- package/__cjs/testing/core/mocking/mockLink.d.cts +10 -2
- package/__cjs/testing/internal/ObservableStream.cjs +13 -1
- package/__cjs/testing/internal/ObservableStream.cjs.map +1 -1
- package/__cjs/testing/internal/ObservableStream.d.cts +12 -1
- package/__cjs/testing/internal/disposables/withCleanup.cjs +5 -1
- package/__cjs/testing/internal/disposables/withCleanup.cjs.map +1 -1
- package/__cjs/testing/internal/disposables/withCleanup.d.cts +5 -1
- package/__cjs/testing/matchers/index.cjs +2 -2
- package/__cjs/testing/matchers/index.cjs.map +1 -1
- package/__cjs/testing/matchers/toEmitTypedValue.cjs +1 -1
- package/__cjs/testing/matchers/toEmitTypedValue.cjs.map +1 -1
- package/__cjs/testing/matchers/toEmitTypedValue.d.cts +6 -1
- package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.cjs +31 -18
- package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.cjs.map +1 -1
- package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.d.cts +13 -6
- package/__cjs/testing/matchers/toStrictEqualTyped.cjs +1 -1
- package/__cjs/testing/matchers/toStrictEqualTyped.cjs.map +1 -1
- package/__cjs/testing/matchers/toStrictEqualTyped.d.cts +4 -0
- package/__cjs/testing/matchers/utils/getSerializableProperties.cjs +14 -2
- package/__cjs/testing/matchers/utils/getSerializableProperties.cjs.map +1 -1
- package/__cjs/testing/react/MockedProvider.cjs +2 -2
- package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
- package/__cjs/testing/react/MockedProvider.d.cts +2 -2
- package/__cjs/utilities/graphql/DocumentTransform.cjs +10 -6
- package/__cjs/utilities/graphql/DocumentTransform.cjs.map +1 -1
- package/__cjs/utilities/graphql/DocumentTransform.d.cts +10 -6
- package/__cjs/utilities/internal/DeepMerger.cjs +5 -1
- package/__cjs/utilities/internal/DeepMerger.cjs.map +1 -1
- package/__cjs/utilities/internal/DeepMerger.d.cts +5 -1
- package/__cjs/utilities/internal/argumentsObjectFromField.cjs +5 -1
- package/__cjs/utilities/internal/argumentsObjectFromField.cjs.map +1 -1
- package/__cjs/utilities/internal/argumentsObjectFromField.d.cts +5 -1
- package/__cjs/utilities/internal/caches.cjs +24 -20
- package/__cjs/utilities/internal/caches.cjs.map +1 -1
- package/__cjs/utilities/internal/caches.d.cts +32 -24
- package/__cjs/utilities/internal/canUseDOM.cjs +5 -1
- package/__cjs/utilities/internal/canUseDOM.cjs.map +1 -1
- package/__cjs/utilities/internal/canUseDOM.d.cts +5 -1
- package/__cjs/utilities/internal/checkDocument.cjs +6 -3
- package/__cjs/utilities/internal/checkDocument.cjs.map +1 -1
- package/__cjs/utilities/internal/checkDocument.d.cts +6 -3
- package/__cjs/utilities/internal/cloneDeep.cjs +6 -4
- package/__cjs/utilities/internal/cloneDeep.cjs.map +1 -1
- package/__cjs/utilities/internal/cloneDeep.d.cts +6 -4
- package/__cjs/utilities/internal/compact.cjs +7 -5
- package/__cjs/utilities/internal/compact.cjs.map +1 -1
- package/__cjs/utilities/internal/compact.d.cts +7 -5
- package/__cjs/utilities/internal/createFragmentMap.cjs +7 -4
- package/__cjs/utilities/internal/createFragmentMap.cjs.map +1 -1
- package/__cjs/utilities/internal/createFragmentMap.d.cts +7 -4
- package/__cjs/utilities/internal/createFulfilledPromise.cjs +5 -1
- package/__cjs/utilities/internal/createFulfilledPromise.cjs.map +1 -1
- package/__cjs/utilities/internal/createFulfilledPromise.d.cts +5 -1
- package/__cjs/utilities/internal/createRejectedPromise.cjs +5 -1
- package/__cjs/utilities/internal/createRejectedPromise.cjs.map +1 -1
- package/__cjs/utilities/internal/createRejectedPromise.d.cts +5 -1
- package/__cjs/utilities/internal/dealias.cjs +21 -0
- package/__cjs/utilities/internal/dealias.cjs.map +1 -0
- package/__cjs/utilities/internal/dealias.d.cts +5 -0
- package/__cjs/utilities/internal/decoratePromise.cjs +5 -1
- package/__cjs/utilities/internal/decoratePromise.cjs.map +1 -1
- package/__cjs/utilities/internal/decoratePromise.d.cts +5 -1
- package/__cjs/utilities/internal/deepFreeze.cjs +5 -1
- package/__cjs/utilities/internal/deepFreeze.cjs.map +1 -1
- package/__cjs/utilities/internal/deepFreeze.d.cts +5 -1
- package/__cjs/utilities/internal/filterMap.cjs +31 -0
- package/__cjs/utilities/internal/filterMap.cjs.map +1 -0
- package/__cjs/utilities/internal/filterMap.d.cts +4 -0
- package/__cjs/utilities/internal/getDefaultValues.cjs +5 -1
- package/__cjs/utilities/internal/getDefaultValues.cjs.map +1 -1
- package/__cjs/utilities/internal/getDefaultValues.d.cts +5 -1
- package/__cjs/utilities/internal/getFragmentDefinition.cjs +5 -1
- package/__cjs/utilities/internal/getFragmentDefinition.cjs.map +1 -1
- package/__cjs/utilities/internal/getFragmentDefinition.d.cts +5 -1
- package/__cjs/utilities/internal/getFragmentDefinitions.cjs +5 -1
- package/__cjs/utilities/internal/getFragmentDefinitions.cjs.map +1 -1
- package/__cjs/utilities/internal/getFragmentDefinitions.d.cts +5 -1
- package/__cjs/utilities/internal/getFragmentFromSelection.cjs +5 -1
- package/__cjs/utilities/internal/getFragmentFromSelection.cjs.map +1 -1
- package/__cjs/utilities/internal/getFragmentFromSelection.d.cts +5 -1
- package/__cjs/utilities/internal/getFragmentQueryDocument.cjs +25 -23
- package/__cjs/utilities/internal/getFragmentQueryDocument.cjs.map +1 -1
- package/__cjs/utilities/internal/getFragmentQueryDocument.d.cts +25 -23
- package/__cjs/utilities/internal/getGraphQLErrorsFromResult.cjs +5 -1
- package/__cjs/utilities/internal/getGraphQLErrorsFromResult.cjs.map +1 -1
- package/__cjs/utilities/internal/getGraphQLErrorsFromResult.d.cts +5 -1
- package/__cjs/utilities/internal/getMainDefinition.cjs +8 -6
- package/__cjs/utilities/internal/getMainDefinition.cjs.map +1 -1
- package/__cjs/utilities/internal/getMainDefinition.d.cts +8 -6
- package/__cjs/utilities/internal/getMemoryInternals.cjs +15 -9
- package/__cjs/utilities/internal/getMemoryInternals.cjs.map +1 -1
- package/__cjs/utilities/internal/getMemoryInternals.d.cts +15 -9
- package/__cjs/utilities/internal/getOperationDefinition.cjs +5 -1
- package/__cjs/utilities/internal/getOperationDefinition.cjs.map +1 -1
- package/__cjs/utilities/internal/getOperationDefinition.d.cts +5 -1
- package/__cjs/utilities/internal/getOperationName.cjs +7 -5
- package/__cjs/utilities/internal/getOperationName.cjs.map +1 -1
- package/__cjs/utilities/internal/getOperationName.d.cts +6 -2
- package/__cjs/utilities/internal/getQueryDefinition.cjs +5 -1
- package/__cjs/utilities/internal/getQueryDefinition.cjs.map +1 -1
- package/__cjs/utilities/internal/getQueryDefinition.d.cts +5 -1
- package/__cjs/utilities/internal/getStoreKeyName.cjs +5 -1
- package/__cjs/utilities/internal/getStoreKeyName.cjs.map +1 -1
- package/__cjs/utilities/internal/getStoreKeyName.d.cts +5 -1
- package/__cjs/utilities/internal/graphQLResultHasError.cjs +5 -1
- package/__cjs/utilities/internal/graphQLResultHasError.cjs.map +1 -1
- package/__cjs/utilities/internal/graphQLResultHasError.d.cts +5 -1
- package/__cjs/utilities/internal/hasDirectives.cjs +5 -1
- package/__cjs/utilities/internal/hasDirectives.cjs.map +1 -1
- package/__cjs/utilities/internal/hasDirectives.d.cts +5 -1
- package/__cjs/utilities/internal/hasForcedResolvers.cjs +23 -0
- package/__cjs/utilities/internal/hasForcedResolvers.cjs.map +1 -0
- package/__cjs/utilities/internal/hasForcedResolvers.d.cts +3 -0
- package/__cjs/utilities/internal/index.cjs +8 -4
- package/__cjs/utilities/internal/index.cjs.map +1 -1
- package/__cjs/utilities/internal/index.d.cts +3 -1
- package/__cjs/utilities/internal/isArray.cjs +6 -4
- package/__cjs/utilities/internal/isArray.cjs.map +1 -1
- package/__cjs/utilities/internal/isArray.d.cts +6 -4
- package/__cjs/utilities/internal/isDocumentNode.cjs +5 -1
- package/__cjs/utilities/internal/isDocumentNode.cjs.map +1 -1
- package/__cjs/utilities/internal/isDocumentNode.d.cts +5 -1
- package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.cjs +5 -1
- package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.cjs.map +1 -1
- package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.d.cts +5 -1
- package/__cjs/utilities/internal/isExecutionPatchIninitialResult.cjs +5 -1
- package/__cjs/utilities/internal/isExecutionPatchIninitialResult.cjs.map +1 -1
- package/__cjs/utilities/internal/isExecutionPatchIninitialResult.d.cts +5 -1
- package/__cjs/utilities/internal/isExecutionPatchResult.cjs +5 -1
- package/__cjs/utilities/internal/isExecutionPatchResult.cjs.map +1 -1
- package/__cjs/utilities/internal/isExecutionPatchResult.d.cts +5 -1
- package/__cjs/utilities/internal/isField.cjs +5 -1
- package/__cjs/utilities/internal/isField.cjs.map +1 -1
- package/__cjs/utilities/internal/isField.d.cts +5 -1
- package/__cjs/utilities/internal/isNonEmptyArray.cjs +5 -1
- package/__cjs/utilities/internal/isNonEmptyArray.cjs.map +1 -1
- package/__cjs/utilities/internal/isNonEmptyArray.d.cts +5 -1
- package/__cjs/utilities/internal/isNonNullObject.cjs +5 -1
- package/__cjs/utilities/internal/isNonNullObject.cjs.map +1 -1
- package/__cjs/utilities/internal/isNonNullObject.d.cts +5 -1
- package/__cjs/utilities/internal/isPlainObject.cjs +5 -1
- package/__cjs/utilities/internal/isPlainObject.cjs.map +1 -1
- package/__cjs/utilities/internal/isPlainObject.d.cts +5 -1
- package/__cjs/utilities/internal/makeReference.cjs +5 -1
- package/__cjs/utilities/internal/makeReference.cjs.map +1 -1
- package/__cjs/utilities/internal/makeReference.d.cts +5 -1
- package/__cjs/utilities/internal/makeUniqueId.cjs +7 -5
- package/__cjs/utilities/internal/makeUniqueId.cjs.map +1 -1
- package/__cjs/utilities/internal/makeUniqueId.d.cts +7 -5
- package/__cjs/utilities/internal/maybeDeepFreeze.cjs +5 -1
- package/__cjs/utilities/internal/maybeDeepFreeze.cjs.map +1 -1
- package/__cjs/utilities/internal/maybeDeepFreeze.d.cts +5 -1
- package/__cjs/utilities/internal/mergeDeep.cjs +5 -1
- package/__cjs/utilities/internal/mergeDeep.cjs.map +1 -1
- package/__cjs/utilities/internal/mergeDeep.d.cts +5 -1
- package/__cjs/utilities/internal/mergeDeepArray.cjs +5 -1
- package/__cjs/utilities/internal/mergeDeepArray.cjs.map +1 -1
- package/__cjs/utilities/internal/mergeDeepArray.d.cts +5 -1
- package/__cjs/utilities/internal/mergeIncrementalData.cjs +5 -1
- package/__cjs/utilities/internal/mergeIncrementalData.cjs.map +1 -1
- package/__cjs/utilities/internal/mergeIncrementalData.d.cts +5 -1
- package/__cjs/utilities/internal/mergeOptions.cjs +5 -1
- package/__cjs/utilities/internal/mergeOptions.cjs.map +1 -1
- package/__cjs/utilities/internal/mergeOptions.d.cts +5 -1
- package/__cjs/utilities/internal/omitDeep.cjs +5 -1
- package/__cjs/utilities/internal/omitDeep.cjs.map +1 -1
- package/__cjs/utilities/internal/omitDeep.d.cts +5 -1
- package/__cjs/utilities/internal/onAnyEvent.cjs +5 -1
- package/__cjs/utilities/internal/onAnyEvent.cjs.map +1 -1
- package/__cjs/utilities/internal/onAnyEvent.d.cts +5 -1
- package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs +5 -1
- package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs.map +1 -1
- package/__cjs/utilities/internal/removeDirectivesFromDocument.d.cts +5 -1
- package/__cjs/utilities/internal/resultKeyNameFromField.cjs +5 -1
- package/__cjs/utilities/internal/resultKeyNameFromField.cjs.map +1 -1
- package/__cjs/utilities/internal/resultKeyNameFromField.d.cts +5 -1
- package/__cjs/utilities/internal/shouldInclude.cjs +5 -1
- package/__cjs/utilities/internal/shouldInclude.cjs.map +1 -1
- package/__cjs/utilities/internal/shouldInclude.d.cts +5 -1
- package/__cjs/utilities/internal/storeKeyNameFromField.cjs +5 -1
- package/__cjs/utilities/internal/storeKeyNameFromField.cjs.map +1 -1
- package/__cjs/utilities/internal/storeKeyNameFromField.d.cts +5 -1
- package/__cjs/utilities/internal/stringifyForDisplay.cjs +5 -1
- package/__cjs/utilities/internal/stringifyForDisplay.cjs.map +1 -1
- package/__cjs/utilities/internal/stringifyForDisplay.d.cts +5 -1
- package/__cjs/utilities/internal/toQueryResult.cjs +5 -1
- package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -1
- package/__cjs/utilities/internal/toQueryResult.d.cts +5 -1
- package/__cjs/utilities/internal/types/DecoratedPromise.d.cts +5 -1
- package/__cjs/utilities/internal/types/DeepOmit.d.cts +5 -1
- package/__cjs/utilities/internal/types/DeepPartial.d.cts +5 -1
- package/__cjs/utilities/internal/types/FragmentMap.d.cts +6 -4
- package/__cjs/utilities/internal/types/FragmentMapFunction.d.cts +5 -1
- package/__cjs/utilities/internal/types/FulfilledPromise.d.cts +5 -1
- package/__cjs/utilities/internal/types/IsAny.d.cts +5 -1
- package/__cjs/utilities/internal/types/PendingPromise.d.cts +5 -1
- package/__cjs/utilities/internal/types/Prettify.d.cts +5 -1
- package/__cjs/utilities/internal/types/Primitive.d.cts +5 -1
- package/__cjs/utilities/internal/types/RejectedPromise.d.cts +5 -1
- package/__cjs/utilities/internal/types/RemoveIndexSignature.d.cts +5 -1
- package/__cjs/utilities/internal/types/VariablesOption.d.cts +5 -1
- package/__cjs/utilities/internal/valueToObjectRepresentation.cjs +5 -1
- package/__cjs/utilities/internal/valueToObjectRepresentation.cjs.map +1 -1
- package/__cjs/utilities/internal/valueToObjectRepresentation.d.cts +5 -1
- package/__cjs/version.cjs +1 -1
- package/cache/core/cache.d.ts +9 -7
- package/cache/core/cache.js +9 -7
- package/cache/core/cache.js.map +1 -1
- package/cache/inmemory/entityStore.js +3 -3
- package/cache/inmemory/inMemoryCache.d.ts +9 -7
- package/cache/inmemory/inMemoryCache.js.map +1 -1
- package/cache/inmemory/key-extractor.js +1 -1
- package/cache/inmemory/policies.js +4 -4
- package/cache/inmemory/policies.js.map +1 -1
- package/cache/inmemory/readFromStore.js +2 -2
- package/cache/inmemory/readFromStore.js.map +1 -1
- package/cache/inmemory/writeToStore.js +4 -4
- package/cache/inmemory/writeToStore.js.map +1 -1
- package/core/ApolloClient.d.ts +9 -21
- package/core/ApolloClient.js +23 -45
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.d.ts +95 -33
- package/core/ObservableQuery.js +569 -351
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts +9 -14
- package/core/QueryInfo.js +109 -179
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts +12 -8
- package/core/QueryManager.js +151 -110
- package/core/QueryManager.js.map +1 -1
- package/core/index.d.ts +2 -3
- package/core/index.js +1 -1
- package/core/index.js.map +1 -1
- package/core/types.d.ts +18 -6
- package/errors/LinkError.d.ts +5 -1
- package/errors/LinkError.js +5 -1
- package/errors/LinkError.js.map +1 -1
- package/errors/LocalStateError.d.ts +20 -0
- package/errors/LocalStateError.js +23 -0
- package/errors/LocalStateError.js.map +1 -0
- package/errors/index.d.ts +2 -0
- package/errors/index.js +2 -0
- package/errors/index.js.map +1 -1
- package/invariantErrorCodes.js +130 -57
- package/legacyEntryPoints/local-state/index.d.ts +1 -0
- package/legacyEntryPoints/local-state/index.js +1 -0
- package/legacyEntryPoints/local-state/local-state.cjs +1 -0
- package/legacyEntryPoints/local-state/local-state.d.cts +1 -0
- package/link/core/ApolloLink.d.ts +15 -9
- package/link/core/ApolloLink.js +17 -11
- package/link/core/ApolloLink.js.map +1 -1
- package/link/http/checkFetcher.js +1 -1
- package/link/http/createHttpLink.js +1 -1
- package/link/http/parseAndCheckHttpResponse.js +1 -1
- package/link/http/serializeFetchParameter.js +1 -1
- package/link/persisted-queries/index.js +2 -2
- package/link/utils/transformOperation.js +1 -1
- package/link/utils/transformOperation.js.map +1 -1
- package/link/utils/validateOperation.js +1 -1
- package/local-state/LocalState.d.ts +89 -0
- package/local-state/LocalState.js +527 -0
- package/local-state/LocalState.js.map +1 -0
- package/local-state/index.d.ts +2 -0
- package/local-state/index.js +2 -0
- package/local-state/index.js.map +1 -0
- package/masking/maskFragment.d.ts +5 -1
- package/masking/maskFragment.js +5 -1
- package/masking/maskFragment.js.map +1 -1
- package/masking/maskOperation.d.ts +5 -1
- package/masking/maskOperation.js +5 -1
- package/masking/maskOperation.js.map +1 -1
- package/masking/utils.d.ts +5 -1
- package/masking/utils.js +5 -1
- package/masking/utils.js.map +1 -1
- package/package.json +11 -1
- package/react/hooks/internal/wrapHook.d.ts +42 -38
- package/react/hooks/internal/wrapHook.js +36 -34
- package/react/hooks/internal/wrapHook.js.map +1 -1
- package/react/internal/cache/QueryReference.d.ts +25 -7
- package/react/internal/cache/QueryReference.js +6 -9
- package/react/internal/cache/QueryReference.js.map +1 -1
- package/react/ssr/prerenderStatic.js +7 -0
- package/react/ssr/prerenderStatic.js.map +1 -1
- package/testing/core/mocking/mockLink.d.ts +10 -2
- package/testing/core/mocking/mockLink.js +9 -5
- package/testing/core/mocking/mockLink.js.map +1 -1
- package/testing/internal/ObservableStream.d.ts +12 -1
- package/testing/internal/ObservableStream.js +13 -1
- package/testing/internal/ObservableStream.js.map +1 -1
- package/testing/internal/disposables/withCleanup.d.ts +5 -1
- package/testing/internal/disposables/withCleanup.js +5 -1
- package/testing/internal/disposables/withCleanup.js.map +1 -1
- package/testing/matchers/index.js +2 -2
- package/testing/matchers/index.js.map +1 -1
- package/testing/matchers/toEmitTypedValue.d.ts +6 -1
- package/testing/matchers/toEmitTypedValue.js +1 -1
- package/testing/matchers/toEmitTypedValue.js.map +1 -1
- package/testing/matchers/toRerenderWithSimilarSnapshot.d.ts +13 -6
- package/testing/matchers/toRerenderWithSimilarSnapshot.js +30 -15
- package/testing/matchers/toRerenderWithSimilarSnapshot.js.map +1 -1
- package/testing/matchers/toStrictEqualTyped.d.ts +4 -0
- package/testing/matchers/toStrictEqualTyped.js +1 -1
- package/testing/matchers/toStrictEqualTyped.js.map +1 -1
- package/testing/matchers/utils/getSerializableProperties.js +14 -2
- package/testing/matchers/utils/getSerializableProperties.js.map +1 -1
- package/testing/react/MockedProvider.d.ts +2 -2
- package/testing/react/MockedProvider.js +2 -2
- package/testing/react/MockedProvider.js.map +1 -1
- package/utilities/graphql/DocumentTransform.d.ts +10 -6
- package/utilities/graphql/DocumentTransform.js +10 -6
- package/utilities/graphql/DocumentTransform.js.map +1 -1
- package/utilities/internal/DeepMerger.d.ts +5 -1
- package/utilities/internal/DeepMerger.js +5 -1
- package/utilities/internal/DeepMerger.js.map +1 -1
- package/utilities/internal/argumentsObjectFromField.d.ts +5 -1
- package/utilities/internal/argumentsObjectFromField.js +5 -1
- package/utilities/internal/argumentsObjectFromField.js.map +1 -1
- package/utilities/internal/caches.d.ts +32 -24
- package/utilities/internal/caches.js +24 -20
- package/utilities/internal/caches.js.map +1 -1
- package/utilities/internal/canUseDOM.d.ts +5 -1
- package/utilities/internal/canUseDOM.js +5 -1
- package/utilities/internal/canUseDOM.js.map +1 -1
- package/utilities/internal/checkDocument.d.ts +6 -3
- package/utilities/internal/checkDocument.js +6 -3
- package/utilities/internal/checkDocument.js.map +1 -1
- package/utilities/internal/cloneDeep.d.ts +6 -4
- package/utilities/internal/cloneDeep.js +6 -4
- package/utilities/internal/cloneDeep.js.map +1 -1
- package/utilities/internal/compact.d.ts +7 -5
- package/utilities/internal/compact.js +7 -5
- package/utilities/internal/compact.js.map +1 -1
- package/utilities/internal/createFragmentMap.d.ts +7 -4
- package/utilities/internal/createFragmentMap.js +7 -4
- package/utilities/internal/createFragmentMap.js.map +1 -1
- package/utilities/internal/createFulfilledPromise.d.ts +5 -1
- package/utilities/internal/createFulfilledPromise.js +5 -1
- package/utilities/internal/createFulfilledPromise.js.map +1 -1
- package/utilities/internal/createRejectedPromise.d.ts +5 -1
- package/utilities/internal/createRejectedPromise.js +5 -1
- package/utilities/internal/createRejectedPromise.js.map +1 -1
- package/utilities/internal/dealias.d.ts +5 -0
- package/utilities/internal/dealias.js +18 -0
- package/utilities/internal/dealias.js.map +1 -0
- package/utilities/internal/decoratePromise.d.ts +5 -1
- package/utilities/internal/decoratePromise.js +5 -1
- package/utilities/internal/decoratePromise.js.map +1 -1
- package/utilities/internal/deepFreeze.d.ts +5 -1
- package/utilities/internal/deepFreeze.js +5 -1
- package/utilities/internal/deepFreeze.js.map +1 -1
- package/utilities/internal/filterMap.d.ts +4 -0
- package/utilities/internal/filterMap.js +28 -0
- package/utilities/internal/filterMap.js.map +1 -0
- package/utilities/internal/getDefaultValues.d.ts +5 -1
- package/utilities/internal/getDefaultValues.js +5 -1
- package/utilities/internal/getDefaultValues.js.map +1 -1
- package/utilities/internal/getFragmentDefinition.d.ts +5 -1
- package/utilities/internal/getFragmentDefinition.js +5 -1
- package/utilities/internal/getFragmentDefinition.js.map +1 -1
- package/utilities/internal/getFragmentDefinitions.d.ts +5 -1
- package/utilities/internal/getFragmentDefinitions.js +5 -1
- package/utilities/internal/getFragmentDefinitions.js.map +1 -1
- package/utilities/internal/getFragmentFromSelection.d.ts +5 -1
- package/utilities/internal/getFragmentFromSelection.js +5 -1
- package/utilities/internal/getFragmentFromSelection.js.map +1 -1
- package/utilities/internal/getFragmentQueryDocument.d.ts +25 -23
- package/utilities/internal/getFragmentQueryDocument.js +25 -23
- package/utilities/internal/getFragmentQueryDocument.js.map +1 -1
- package/utilities/internal/getGraphQLErrorsFromResult.d.ts +5 -1
- package/utilities/internal/getGraphQLErrorsFromResult.js +5 -1
- package/utilities/internal/getGraphQLErrorsFromResult.js.map +1 -1
- package/utilities/internal/getMainDefinition.d.ts +8 -6
- package/utilities/internal/getMainDefinition.js +8 -6
- package/utilities/internal/getMainDefinition.js.map +1 -1
- package/utilities/internal/getMemoryInternals.d.ts +15 -9
- package/utilities/internal/getMemoryInternals.js +15 -9
- package/utilities/internal/getMemoryInternals.js.map +1 -1
- package/utilities/internal/getOperationDefinition.d.ts +5 -1
- package/utilities/internal/getOperationDefinition.js +5 -1
- package/utilities/internal/getOperationDefinition.js.map +1 -1
- package/utilities/internal/getOperationName.d.ts +6 -2
- package/utilities/internal/getOperationName.js +7 -5
- package/utilities/internal/getOperationName.js.map +1 -1
- package/utilities/internal/getQueryDefinition.d.ts +5 -1
- package/utilities/internal/getQueryDefinition.js +5 -1
- package/utilities/internal/getQueryDefinition.js.map +1 -1
- package/utilities/internal/getStoreKeyName.d.ts +5 -1
- package/utilities/internal/getStoreKeyName.js +5 -1
- package/utilities/internal/getStoreKeyName.js.map +1 -1
- package/utilities/internal/globals/global.js +2 -2
- package/utilities/internal/globals/global.js.map +1 -1
- package/utilities/internal/graphQLResultHasError.d.ts +5 -1
- package/utilities/internal/graphQLResultHasError.js +5 -1
- package/utilities/internal/graphQLResultHasError.js.map +1 -1
- package/utilities/internal/hasDirectives.d.ts +5 -1
- package/utilities/internal/hasDirectives.js +5 -1
- package/utilities/internal/hasDirectives.js.map +1 -1
- package/utilities/internal/hasForcedResolvers.d.ts +3 -0
- package/utilities/internal/hasForcedResolvers.js +20 -0
- package/utilities/internal/hasForcedResolvers.js.map +1 -0
- package/utilities/internal/index.d.ts +3 -1
- package/utilities/internal/index.js +3 -1
- package/utilities/internal/index.js.map +1 -1
- package/utilities/internal/isArray.d.ts +6 -4
- package/utilities/internal/isArray.js +6 -4
- package/utilities/internal/isArray.js.map +1 -1
- package/utilities/internal/isDocumentNode.d.ts +5 -1
- package/utilities/internal/isDocumentNode.js +5 -1
- package/utilities/internal/isDocumentNode.js.map +1 -1
- package/utilities/internal/isExecutionPatchIncrementalResult.d.ts +5 -1
- package/utilities/internal/isExecutionPatchIncrementalResult.js +5 -1
- package/utilities/internal/isExecutionPatchIncrementalResult.js.map +1 -1
- package/utilities/internal/isExecutionPatchIninitialResult.d.ts +5 -1
- package/utilities/internal/isExecutionPatchIninitialResult.js +5 -1
- package/utilities/internal/isExecutionPatchIninitialResult.js.map +1 -1
- package/utilities/internal/isExecutionPatchResult.d.ts +5 -1
- package/utilities/internal/isExecutionPatchResult.js +5 -1
- package/utilities/internal/isExecutionPatchResult.js.map +1 -1
- package/utilities/internal/isField.d.ts +5 -1
- package/utilities/internal/isField.js +5 -1
- package/utilities/internal/isField.js.map +1 -1
- package/utilities/internal/isNonEmptyArray.d.ts +5 -1
- package/utilities/internal/isNonEmptyArray.js +5 -1
- package/utilities/internal/isNonEmptyArray.js.map +1 -1
- package/utilities/internal/isNonNullObject.d.ts +5 -1
- package/utilities/internal/isNonNullObject.js +5 -1
- package/utilities/internal/isNonNullObject.js.map +1 -1
- package/utilities/internal/isPlainObject.d.ts +5 -1
- package/utilities/internal/isPlainObject.js +5 -1
- package/utilities/internal/isPlainObject.js.map +1 -1
- package/utilities/internal/makeReference.d.ts +5 -1
- package/utilities/internal/makeReference.js +5 -1
- package/utilities/internal/makeReference.js.map +1 -1
- package/utilities/internal/makeUniqueId.d.ts +7 -5
- package/utilities/internal/makeUniqueId.js +7 -5
- package/utilities/internal/makeUniqueId.js.map +1 -1
- package/utilities/internal/maybeDeepFreeze.d.ts +5 -1
- package/utilities/internal/maybeDeepFreeze.js +5 -1
- package/utilities/internal/maybeDeepFreeze.js.map +1 -1
- package/utilities/internal/mergeDeep.d.ts +5 -1
- package/utilities/internal/mergeDeep.js +5 -1
- package/utilities/internal/mergeDeep.js.map +1 -1
- package/utilities/internal/mergeDeepArray.d.ts +5 -1
- package/utilities/internal/mergeDeepArray.js +5 -1
- package/utilities/internal/mergeDeepArray.js.map +1 -1
- package/utilities/internal/mergeIncrementalData.d.ts +5 -1
- package/utilities/internal/mergeIncrementalData.js +5 -1
- package/utilities/internal/mergeIncrementalData.js.map +1 -1
- package/utilities/internal/mergeOptions.d.ts +5 -1
- package/utilities/internal/mergeOptions.js +5 -1
- package/utilities/internal/mergeOptions.js.map +1 -1
- package/utilities/internal/omitDeep.d.ts +5 -1
- package/utilities/internal/omitDeep.js +5 -1
- package/utilities/internal/omitDeep.js.map +1 -1
- package/utilities/internal/onAnyEvent.d.ts +5 -1
- package/utilities/internal/onAnyEvent.js +5 -1
- package/utilities/internal/onAnyEvent.js.map +1 -1
- package/utilities/internal/removeDirectivesFromDocument.d.ts +5 -1
- package/utilities/internal/removeDirectivesFromDocument.js +5 -1
- package/utilities/internal/removeDirectivesFromDocument.js.map +1 -1
- package/utilities/internal/resultKeyNameFromField.d.ts +5 -1
- package/utilities/internal/resultKeyNameFromField.js +5 -1
- package/utilities/internal/resultKeyNameFromField.js.map +1 -1
- package/utilities/internal/shouldInclude.d.ts +5 -1
- package/utilities/internal/shouldInclude.js +5 -1
- package/utilities/internal/shouldInclude.js.map +1 -1
- package/utilities/internal/storeKeyNameFromField.d.ts +5 -1
- package/utilities/internal/storeKeyNameFromField.js +5 -1
- package/utilities/internal/storeKeyNameFromField.js.map +1 -1
- package/utilities/internal/stringifyForDisplay.d.ts +5 -1
- package/utilities/internal/stringifyForDisplay.js +5 -1
- package/utilities/internal/stringifyForDisplay.js.map +1 -1
- package/utilities/internal/toQueryResult.d.ts +5 -1
- package/utilities/internal/toQueryResult.js +5 -1
- package/utilities/internal/toQueryResult.js.map +1 -1
- package/utilities/internal/types/DecoratedPromise.d.ts +5 -1
- package/utilities/internal/types/DeepOmit.d.ts +5 -1
- package/utilities/internal/types/DeepPartial.d.ts +5 -1
- package/utilities/internal/types/FragmentMap.d.ts +6 -4
- package/utilities/internal/types/FragmentMapFunction.d.ts +5 -1
- package/utilities/internal/types/FulfilledPromise.d.ts +5 -1
- package/utilities/internal/types/IsAny.d.ts +5 -1
- package/utilities/internal/types/PendingPromise.d.ts +5 -1
- package/utilities/internal/types/Prettify.d.ts +5 -1
- package/utilities/internal/types/Primitive.d.ts +5 -1
- package/utilities/internal/types/RejectedPromise.d.ts +5 -1
- package/utilities/internal/types/RemoveIndexSignature.d.ts +5 -1
- package/utilities/internal/types/VariablesOption.d.ts +5 -1
- package/utilities/internal/valueToObjectRepresentation.d.ts +5 -1
- package/utilities/internal/valueToObjectRepresentation.js +5 -1
- package/utilities/internal/valueToObjectRepresentation.js.map +1 -1
- package/version.js +1 -1
- package/__cjs/core/LocalState.cjs +0 -355
- package/__cjs/core/LocalState.cjs.map +0 -1
- package/__cjs/core/LocalState.d.cts +0 -53
- package/__cjs/utilities/internal/removeClientSetsFromDocument.cjs +0 -21
- package/__cjs/utilities/internal/removeClientSetsFromDocument.cjs.map +0 -1
- package/__cjs/utilities/internal/removeClientSetsFromDocument.d.cts +0 -8
- package/core/LocalState.d.ts +0 -53
- package/core/LocalState.js +0 -351
- package/core/LocalState.js.map +0 -1
- package/utilities/internal/removeClientSetsFromDocument.d.ts +0 -8
- package/utilities/internal/removeClientSetsFromDocument.js +0 -18
- package/utilities/internal/removeClientSetsFromDocument.js.map +0 -1
package/core/QueryInfo.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import type { Cache } from "@apollo/client/cache";
|
|
|
3
3
|
import type { FetchResult } from "@apollo/client/link";
|
|
4
4
|
import type { ObservableQuery } from "./ObservableQuery.js";
|
|
5
5
|
import type { QueryManager } from "./QueryManager.js";
|
|
6
|
-
import type {
|
|
6
|
+
import type { OperationVariables } from "./types.js";
|
|
7
|
+
import type { ErrorPolicy } from "./watchQueryOptions.js";
|
|
7
8
|
export declare const enum CacheWriteBehavior {
|
|
8
9
|
FORBID = 0,
|
|
9
10
|
OVERWRITE = 1,
|
|
@@ -14,30 +15,24 @@ export declare class QueryInfo {
|
|
|
14
15
|
document: DocumentNode | null;
|
|
15
16
|
lastRequestId: number;
|
|
16
17
|
variables?: Record<string, any>;
|
|
17
|
-
stopped: boolean;
|
|
18
|
-
private cancelWatch?;
|
|
19
18
|
private cache;
|
|
20
19
|
constructor(queryManager: QueryManager, queryId?: string);
|
|
21
20
|
init(query: {
|
|
22
21
|
document: DocumentNode;
|
|
23
22
|
variables: Record<string, any> | undefined;
|
|
24
23
|
}): this;
|
|
25
|
-
|
|
26
|
-
getDiff(): Cache.DiffResult<any>;
|
|
27
|
-
private lastDiff?;
|
|
28
|
-
private updateLastDiff;
|
|
29
|
-
private getDiffOptions;
|
|
30
|
-
setDiff(diff: Cache.DiffResult<any> | null): void;
|
|
24
|
+
getDiffOptions(variables?: Record<string, any> | undefined): Cache.DiffOptions;
|
|
31
25
|
readonly observableQuery: ObservableQuery<any, any> | null;
|
|
32
26
|
setObservableQuery(oq: ObservableQuery<any, any> | null): void;
|
|
33
|
-
stop(): void;
|
|
34
|
-
private cancel;
|
|
35
|
-
private lastWatch?;
|
|
36
|
-
private updateWatch;
|
|
37
27
|
private lastWrite?;
|
|
38
28
|
resetLastWrite(): void;
|
|
39
29
|
private shouldWrite;
|
|
40
|
-
|
|
30
|
+
resetDiff(): void;
|
|
31
|
+
private lastDiff?;
|
|
32
|
+
markResult<T>(result: FetchResult<T>, document: DocumentNode, options: {
|
|
33
|
+
variables: OperationVariables;
|
|
34
|
+
errorPolicy: ErrorPolicy;
|
|
35
|
+
}, cacheWriteBehavior: CacheWriteBehavior): void;
|
|
41
36
|
}
|
|
42
37
|
export declare function shouldWriteResult<T>(result: FetchResult<T>, errorPolicy?: ErrorPolicy): boolean;
|
|
43
38
|
//# sourceMappingURL=QueryInfo.d.ts.map
|
package/core/QueryInfo.js
CHANGED
|
@@ -34,8 +34,6 @@ export class QueryInfo {
|
|
|
34
34
|
document = null;
|
|
35
35
|
lastRequestId = 1;
|
|
36
36
|
variables;
|
|
37
|
-
stopped = false;
|
|
38
|
-
cancelWatch;
|
|
39
37
|
cache;
|
|
40
38
|
constructor(queryManager, queryId = queryManager.generateQueryId()) {
|
|
41
39
|
this.queryId = queryId;
|
|
@@ -54,9 +52,7 @@ export class QueryInfo {
|
|
|
54
52
|
}
|
|
55
53
|
init(query) {
|
|
56
54
|
if (!equal(query.variables, this.variables)) {
|
|
57
|
-
this.
|
|
58
|
-
// Ensure we don't continue to receive cache updates for old variables
|
|
59
|
-
this.cancel();
|
|
55
|
+
this.resetDiff();
|
|
60
56
|
}
|
|
61
57
|
Object.assign(this, {
|
|
62
58
|
document: query.document,
|
|
@@ -64,33 +60,6 @@ export class QueryInfo {
|
|
|
64
60
|
});
|
|
65
61
|
return this;
|
|
66
62
|
}
|
|
67
|
-
resetDiff() {
|
|
68
|
-
this.lastDiff = void 0;
|
|
69
|
-
}
|
|
70
|
-
getDiff() {
|
|
71
|
-
const options = this.getDiffOptions();
|
|
72
|
-
if (this.lastDiff && equal(options, this.lastDiff.options)) {
|
|
73
|
-
return this.lastDiff.diff;
|
|
74
|
-
}
|
|
75
|
-
this.updateWatch(this.variables);
|
|
76
|
-
const oq = this.observableQuery;
|
|
77
|
-
if (oq && oq.options.fetchPolicy === "no-cache") {
|
|
78
|
-
return { result: null, complete: false };
|
|
79
|
-
}
|
|
80
|
-
const diff = this.cache.diff(options);
|
|
81
|
-
this.updateLastDiff(diff, options);
|
|
82
|
-
return diff;
|
|
83
|
-
}
|
|
84
|
-
lastDiff;
|
|
85
|
-
updateLastDiff(diff, options) {
|
|
86
|
-
this.lastDiff =
|
|
87
|
-
diff ?
|
|
88
|
-
{
|
|
89
|
-
diff,
|
|
90
|
-
options: options || this.getDiffOptions(),
|
|
91
|
-
}
|
|
92
|
-
: void 0;
|
|
93
|
-
}
|
|
94
63
|
getDiffOptions(variables = this.variables) {
|
|
95
64
|
return {
|
|
96
65
|
query: this.document,
|
|
@@ -99,25 +68,6 @@ export class QueryInfo {
|
|
|
99
68
|
optimistic: true,
|
|
100
69
|
};
|
|
101
70
|
}
|
|
102
|
-
setDiff(diff) {
|
|
103
|
-
const oldDiff = this.lastDiff && this.lastDiff.diff;
|
|
104
|
-
// If we are trying to deliver an incomplete cache result, we avoid
|
|
105
|
-
// reporting it if the query has errored, otherwise we let the broadcast try
|
|
106
|
-
// and repair the partial result by refetching the query. This check avoids
|
|
107
|
-
// a situation where a query that errors and another succeeds with
|
|
108
|
-
// overlapping data does not report the partial data result to the errored
|
|
109
|
-
// query.
|
|
110
|
-
//
|
|
111
|
-
// See https://github.com/apollographql/apollo-client/issues/11400 for more
|
|
112
|
-
// information on this issue.
|
|
113
|
-
if (diff && !diff.complete && this.observableQuery?.getLastError()) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
this.updateLastDiff(diff);
|
|
117
|
-
if (!equal(oldDiff && oldDiff.result, diff && diff.result)) {
|
|
118
|
-
this.observableQuery?.["scheduleNotify"]();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
71
|
observableQuery = null;
|
|
122
72
|
setObservableQuery(oq) {
|
|
123
73
|
if (oq === this.observableQuery)
|
|
@@ -127,40 +77,6 @@ export class QueryInfo {
|
|
|
127
77
|
oq["queryInfo"] = this;
|
|
128
78
|
}
|
|
129
79
|
}
|
|
130
|
-
stop() {
|
|
131
|
-
if (!this.stopped) {
|
|
132
|
-
this.stopped = true;
|
|
133
|
-
// Cancel the pending notify timeout
|
|
134
|
-
this.observableQuery?.["resetNotifications"]();
|
|
135
|
-
this.cancel();
|
|
136
|
-
const oq = this.observableQuery;
|
|
137
|
-
if (oq)
|
|
138
|
-
oq.stopPolling();
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
cancel() {
|
|
142
|
-
this.cancelWatch?.();
|
|
143
|
-
this.cancelWatch = void 0;
|
|
144
|
-
}
|
|
145
|
-
lastWatch;
|
|
146
|
-
updateWatch(variables = this.variables) {
|
|
147
|
-
const oq = this.observableQuery;
|
|
148
|
-
if (oq && oq.options.fetchPolicy === "no-cache") {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
const watchOptions = {
|
|
152
|
-
// Although this.getDiffOptions returns Cache.DiffOptions instead of
|
|
153
|
-
// Cache.WatchOptions, all the overlapping options should be the same, so
|
|
154
|
-
// we can reuse getDiffOptions here, for consistency.
|
|
155
|
-
...this.getDiffOptions(variables),
|
|
156
|
-
watcher: this,
|
|
157
|
-
callback: (diff) => this.setDiff(diff),
|
|
158
|
-
};
|
|
159
|
-
if (!this.lastWatch || !equal(watchOptions, this.lastWatch)) {
|
|
160
|
-
this.cancel();
|
|
161
|
-
this.cancelWatch = this.cache.watch((this.lastWatch = watchOptions));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
80
|
lastWrite;
|
|
165
81
|
resetLastWrite() {
|
|
166
82
|
this.lastWrite = void 0;
|
|
@@ -175,111 +91,110 @@ export class QueryInfo {
|
|
|
175
91
|
equal(variables, lastWrite.variables) &&
|
|
176
92
|
equal(result.data, lastWrite.result.data));
|
|
177
93
|
}
|
|
94
|
+
resetDiff() {
|
|
95
|
+
this.lastDiff = void 0;
|
|
96
|
+
}
|
|
97
|
+
lastDiff;
|
|
178
98
|
markResult(result, document, options, cacheWriteBehavior) {
|
|
179
|
-
const merger = new DeepMerger();
|
|
180
99
|
// Cancel the pending notify timeout (if it exists) to prevent extraneous network
|
|
181
100
|
// requests. To allow future notify timeouts, diff and dirty are reset as well.
|
|
182
101
|
this.observableQuery?.["resetNotifications"]();
|
|
183
|
-
if (
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
102
|
+
if (cacheWriteBehavior === 0 /* CacheWriteBehavior.FORBID */) {
|
|
103
|
+
const diffOptions = this.getDiffOptions(options.variables);
|
|
104
|
+
const lastDiff = this.lastDiff && equal(diffOptions, this.lastDiff.options) ?
|
|
105
|
+
this.lastDiff.diff
|
|
106
|
+
: { result: null, complete: false };
|
|
107
|
+
handleIncrementalResult(result, lastDiff);
|
|
108
|
+
this.lastDiff = {
|
|
109
|
+
diff: { result: result.data, complete: true },
|
|
110
|
+
options: diffOptions,
|
|
111
|
+
};
|
|
191
112
|
}
|
|
192
|
-
else
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
if (options.fetchPolicy === "no-cache") {
|
|
197
|
-
this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));
|
|
198
|
-
}
|
|
199
|
-
else if (cacheWriteBehavior !== 0 /* CacheWriteBehavior.FORBID */) {
|
|
113
|
+
else {
|
|
114
|
+
const lastDiff = this.cache.diff(this.getDiffOptions());
|
|
115
|
+
handleIncrementalResult(result, lastDiff);
|
|
200
116
|
if (shouldWriteResult(result, options.errorPolicy)) {
|
|
201
117
|
// Using a transaction here so we have a chance to read the result
|
|
202
118
|
// back from the cache before the watch callback fires as a result
|
|
203
119
|
// of writeQuery, so we can store the new diff quietly and ignore
|
|
204
120
|
// it when we receive it redundantly from the watch callback.
|
|
205
|
-
this.cache.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
//
|
|
254
|
-
//
|
|
255
|
-
|
|
256
|
-
|
|
121
|
+
this.cache.batch({
|
|
122
|
+
onWatchUpdated: (
|
|
123
|
+
// all additional options on ObservableQuery.CacheWatchOptions are
|
|
124
|
+
// optional so we can use the type here
|
|
125
|
+
watch, diff) => {
|
|
126
|
+
if (watch.watcher === this.observableQuery) {
|
|
127
|
+
// see comment on `lastOwnDiff` for explanation
|
|
128
|
+
watch.lastOwnDiff = diff;
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
update: (cache) => {
|
|
132
|
+
if (this.shouldWrite(result, options.variables)) {
|
|
133
|
+
cache.writeQuery({
|
|
134
|
+
query: document,
|
|
135
|
+
data: result.data,
|
|
136
|
+
variables: options.variables,
|
|
137
|
+
overwrite: cacheWriteBehavior === 1 /* CacheWriteBehavior.OVERWRITE */,
|
|
138
|
+
});
|
|
139
|
+
this.lastWrite = {
|
|
140
|
+
result,
|
|
141
|
+
variables: options.variables,
|
|
142
|
+
dmCount: destructiveMethodCounts.get(this.cache),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// If result is the same as the last result we received from
|
|
147
|
+
// the network (and the variables match too), avoid writing
|
|
148
|
+
// result into the cache again. The wisdom of skipping this
|
|
149
|
+
// cache write is far from obvious, since any cache write
|
|
150
|
+
// could be the one that puts the cache back into a desired
|
|
151
|
+
// state, fixing corruption or missing data. However, if we
|
|
152
|
+
// always write every network result into the cache, we enable
|
|
153
|
+
// feuds between queries competing to update the same data in
|
|
154
|
+
// incompatible ways, which can lead to an endless cycle of
|
|
155
|
+
// cache broadcasts and useless network requests. As with any
|
|
156
|
+
// feud, eventually one side must step back from the brink,
|
|
157
|
+
// letting the other side(s) have the last word(s). There may
|
|
158
|
+
// be other points where we could break this cycle, such as
|
|
159
|
+
// silencing the broadcast for cache.writeQuery (not a good
|
|
160
|
+
// idea, since it just delays the feud a bit) or somehow
|
|
161
|
+
// avoiding the network request that just happened (also bad,
|
|
162
|
+
// because the server could return useful new data). All
|
|
163
|
+
// options considered, skipping this cache write seems to be
|
|
164
|
+
// the least damaging place to break the cycle, because it
|
|
165
|
+
// reflects the intuition that we recently wrote this exact
|
|
166
|
+
// result into the cache, so the cache *should* already/still
|
|
167
|
+
// contain this data. If some other query has clobbered that
|
|
168
|
+
// data in the meantime, that's too bad, but there will be no
|
|
169
|
+
// winners if every query blindly reverts to its own version
|
|
170
|
+
// of the data. This approach also gives the network a chance
|
|
171
|
+
// to return new data, which will be written into the cache as
|
|
172
|
+
// usual, notifying only those queries that are directly
|
|
173
|
+
// affected by the cache updates, as usual. In the future, an
|
|
174
|
+
// even more sophisticated cache could perhaps prevent or
|
|
175
|
+
// mitigate the clobbering somehow, but that would make this
|
|
176
|
+
// particular cache write even less important, and thus
|
|
177
|
+
// skipping it would be even safer than it is today.
|
|
178
|
+
if (lastDiff && lastDiff.complete) {
|
|
179
|
+
// Reuse data from the last good (complete) diff that we
|
|
180
|
+
// received, when possible.
|
|
181
|
+
result.data = lastDiff.result;
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// If the previous this.diff was incomplete, fall through to
|
|
185
|
+
// re-reading the latest data with cache.diff, below.
|
|
257
186
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
if (!this.stopped && equal(this.variables, options.variables)) {
|
|
270
|
-
// Any time we're about to update this.diff, we need to make
|
|
271
|
-
// sure we've started watching the cache.
|
|
272
|
-
this.updateWatch(options.variables);
|
|
273
|
-
}
|
|
274
|
-
// If we're allowed to write to the cache, and we can read a
|
|
275
|
-
// complete result from the cache, update result.data to be the
|
|
276
|
-
// result from the cache, rather than the raw network result.
|
|
277
|
-
// Set without setDiff to avoid triggering a notify call, since
|
|
278
|
-
// we have other ways of notifying for this result.
|
|
279
|
-
this.updateLastDiff(diff, diffOptions);
|
|
280
|
-
if (diff.complete) {
|
|
281
|
-
result.data = diff.result;
|
|
282
|
-
}
|
|
187
|
+
const diffOptions = this.getDiffOptions(options.variables);
|
|
188
|
+
const diff = cache.diff(diffOptions);
|
|
189
|
+
// If we're allowed to write to the cache, and we can read a
|
|
190
|
+
// complete result from the cache, update result.data to be the
|
|
191
|
+
// result from the cache, rather than the raw network result.
|
|
192
|
+
// Set without setDiff to avoid triggering a notify call, since
|
|
193
|
+
// we have other ways of notifying for this result.
|
|
194
|
+
if (diff.complete) {
|
|
195
|
+
result.data = diff.result;
|
|
196
|
+
}
|
|
197
|
+
},
|
|
283
198
|
});
|
|
284
199
|
}
|
|
285
200
|
else {
|
|
@@ -288,6 +203,21 @@ export class QueryInfo {
|
|
|
288
203
|
}
|
|
289
204
|
}
|
|
290
205
|
}
|
|
206
|
+
function handleIncrementalResult(result, lastDiff) {
|
|
207
|
+
if ("incremental" in result && isNonEmptyArray(result.incremental)) {
|
|
208
|
+
const mergedData = mergeIncrementalData(lastDiff.result, result);
|
|
209
|
+
result.data = mergedData;
|
|
210
|
+
// Detect the first chunk of a deferred query and merge it with existing
|
|
211
|
+
// cache data. This ensures a `cache-first` fetch policy that returns
|
|
212
|
+
// partial cache data or a `cache-and-network` fetch policy that already
|
|
213
|
+
// has full data in the cache does not complain when trying to merge the
|
|
214
|
+
// initial deferred server data with existing cache data.
|
|
215
|
+
}
|
|
216
|
+
else if ("hasNext" in result && result.hasNext) {
|
|
217
|
+
const merger = new DeepMerger();
|
|
218
|
+
result.data = merger.merge(lastDiff.result, result.data);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
291
221
|
export function shouldWriteResult(result, errorPolicy = "none") {
|
|
292
222
|
const ignoreErrors = errorPolicy === "ignore" || errorPolicy === "all";
|
|
293
223
|
let writeWithErrors = !graphQLResultHasError(result);
|