@apollo/client 3.4.17 → 3.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/{apollo-client.cjs.js → apollo-client.cjs} +1219 -1280
- package/apollo-client.cjs.map +1 -0
- package/apollo-client.min.cjs +1 -0
- package/cache/{cache.cjs.js → cache.cjs} +757 -601
- package/cache/cache.cjs.map +1 -0
- package/cache/core/cache.d.ts +6 -4
- package/cache/core/cache.d.ts.map +1 -1
- package/cache/core/cache.js +28 -1
- package/cache/core/cache.js.map +1 -1
- package/cache/core/types/Cache.d.ts +12 -10
- package/cache/core/types/Cache.d.ts.map +1 -1
- package/cache/core/types/Cache.js.map +1 -1
- package/cache/core/types/DataProxy.d.ts +4 -0
- package/cache/core/types/DataProxy.d.ts.map +1 -1
- package/cache/core/types/DataProxy.js.map +1 -1
- package/cache/core/types/common.d.ts +8 -5
- package/cache/core/types/common.d.ts.map +1 -1
- package/cache/core/types/common.js +6 -11
- package/cache/core/types/common.js.map +1 -1
- package/cache/inmemory/helpers.js +1 -1
- package/cache/inmemory/helpers.js.map +1 -1
- package/cache/inmemory/inMemoryCache.d.ts +4 -4
- package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
- package/cache/inmemory/inMemoryCache.js +12 -3
- package/cache/inmemory/inMemoryCache.js.map +1 -1
- package/cache/inmemory/key-extractor.d.ts +9 -0
- package/cache/inmemory/key-extractor.d.ts.map +1 -0
- package/cache/inmemory/key-extractor.js +118 -0
- package/cache/inmemory/key-extractor.js.map +1 -0
- package/cache/inmemory/policies.d.ts +7 -3
- package/cache/inmemory/policies.d.ts.map +1 -1
- package/cache/inmemory/policies.js +47 -118
- package/cache/inmemory/policies.js.map +1 -1
- package/cache/inmemory/readFromStore.d.ts +2 -2
- package/cache/inmemory/readFromStore.d.ts.map +1 -1
- package/cache/inmemory/readFromStore.js +54 -42
- package/cache/inmemory/readFromStore.js.map +1 -1
- package/cache/inmemory/writeToStore.d.ts +8 -3
- package/cache/inmemory/writeToStore.d.ts.map +1 -1
- package/cache/inmemory/writeToStore.js +166 -95
- package/cache/inmemory/writeToStore.js.map +1 -1
- package/cache/package.json +2 -1
- package/core/ApolloClient.d.ts +0 -1
- package/core/ApolloClient.d.ts.map +1 -1
- package/core/ApolloClient.js +3 -3
- package/core/ApolloClient.js.map +1 -1
- package/core/LocalState.js +1 -1
- package/core/LocalState.js.map +1 -1
- package/core/ObservableQuery.d.ts +2 -2
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js +19 -14
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts +2 -2
- package/core/QueryInfo.d.ts.map +1 -1
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts +0 -1
- package/core/QueryManager.d.ts.map +1 -1
- package/core/QueryManager.js +10 -10
- package/core/QueryManager.js.map +1 -1
- package/core/{core.cjs.js → core.cjs} +38 -34
- package/core/core.cjs.map +1 -0
- package/core/package.json +2 -1
- package/errors/{errors.cjs.js → errors.cjs} +3 -3
- package/errors/errors.cjs.map +1 -0
- package/errors/index.d.ts +3 -1
- package/errors/index.d.ts.map +1 -1
- package/errors/index.js +2 -2
- package/errors/index.js.map +1 -1
- package/errors/package.json +2 -1
- package/invariantErrorCodes.js +84 -104
- package/link/batch/{batch.cjs.js → batch.cjs} +2 -2
- package/link/batch/batch.cjs.map +1 -0
- package/link/batch/batchLink.d.ts +0 -1
- package/link/batch/batchLink.d.ts.map +1 -1
- package/link/batch/batching.d.ts +0 -1
- package/link/batch/batching.d.ts.map +1 -1
- package/link/batch/batching.js +1 -1
- package/link/batch/batching.js.map +1 -1
- package/link/batch/package.json +2 -1
- package/link/batch-http/{batch-http.cjs.js → batch-http.cjs} +3 -3
- package/link/batch-http/batch-http.cjs.map +1 -0
- package/link/batch-http/batchHttpLink.d.ts +0 -1
- package/link/batch-http/batchHttpLink.d.ts.map +1 -1
- package/link/batch-http/batchHttpLink.js +3 -3
- package/link/batch-http/batchHttpLink.js.map +1 -1
- package/link/batch-http/package.json +2 -1
- package/link/context/{context.cjs.js → context.cjs} +1 -1
- package/link/context/context.cjs.map +1 -0
- package/link/context/index.js.map +1 -1
- package/link/context/package.json +2 -1
- package/link/core/ApolloLink.d.ts +2 -3
- package/link/core/ApolloLink.d.ts.map +1 -1
- package/link/core/ApolloLink.js +1 -1
- package/link/core/ApolloLink.js.map +1 -1
- package/link/core/{core.cjs.js → core.cjs} +2 -2
- package/link/core/core.cjs.map +1 -0
- package/link/core/package.json +2 -1
- package/link/core/types.d.ts +4 -7
- package/link/core/types.d.ts.map +1 -1
- package/link/core/types.js.map +1 -1
- package/link/error/{error.cjs.js → error.cjs} +2 -2
- package/link/error/error.cjs.map +1 -0
- package/link/error/index.d.ts +5 -7
- package/link/error/index.d.ts.map +1 -1
- package/link/error/index.js +1 -1
- package/link/error/index.js.map +1 -1
- package/link/error/package.json +2 -1
- package/link/http/checkFetcher.js +1 -1
- package/link/http/createHttpLink.d.ts.map +1 -1
- package/link/http/createHttpLink.js +3 -3
- package/link/http/createHttpLink.js.map +1 -1
- package/link/http/{http.cjs.js → http.cjs} +28 -15
- package/link/http/http.cjs.map +1 -0
- package/link/http/index.d.ts +1 -1
- package/link/http/index.d.ts.map +1 -1
- package/link/http/index.js +1 -1
- package/link/http/index.js.map +1 -1
- package/link/http/package.json +2 -1
- package/link/http/parseAndCheckHttpResponse.js +3 -3
- package/link/http/parseAndCheckHttpResponse.js.map +1 -1
- package/link/http/rewriteURIForGET.js +1 -1
- package/link/http/rewriteURIForGET.js.map +1 -1
- package/link/http/selectHttpOptionsAndBody.d.ts +11 -1
- package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
- package/link/http/selectHttpOptionsAndBody.js +20 -7
- package/link/http/selectHttpOptionsAndBody.js.map +1 -1
- package/link/http/serializeFetchParameter.js +1 -1
- package/link/http/serializeFetchParameter.js.map +1 -1
- package/link/persisted-queries/index.d.ts.map +1 -1
- package/link/persisted-queries/index.js +3 -3
- package/link/persisted-queries/index.js.map +1 -1
- package/link/persisted-queries/package.json +2 -1
- package/link/persisted-queries/{persisted-queries.cjs.js → persisted-queries.cjs} +3 -3
- package/link/persisted-queries/persisted-queries.cjs.map +1 -0
- package/link/retry/package.json +2 -1
- package/link/retry/{retry.cjs.js → retry.cjs} +1 -1
- package/link/retry/retry.cjs.map +1 -0
- package/link/retry/retryLink.d.ts +0 -1
- package/link/retry/retryLink.d.ts.map +1 -1
- package/link/retry/retryLink.js.map +1 -1
- package/link/schema/index.d.ts +0 -1
- package/link/schema/index.d.ts.map +1 -1
- package/link/schema/index.js +8 -1
- package/link/schema/index.js.map +1 -1
- package/link/schema/package.json +2 -1
- package/link/schema/{schema.cjs.js → schema.cjs} +9 -2
- package/link/schema/schema.cjs.map +1 -0
- package/link/utils/fromError.d.ts +0 -1
- package/link/utils/fromError.d.ts.map +1 -1
- package/link/utils/fromPromise.d.ts +0 -1
- package/link/utils/fromPromise.d.ts.map +1 -1
- package/link/utils/package.json +2 -1
- package/link/utils/toPromise.d.ts +0 -1
- package/link/utils/toPromise.d.ts.map +1 -1
- package/link/utils/{utils.cjs.js → utils.cjs} +2 -2
- package/link/utils/utils.cjs.map +1 -0
- package/link/utils/validateOperation.js +1 -1
- package/link/utils/validateOperation.js.map +1 -1
- package/link/ws/index.d.ts +0 -1
- package/link/ws/index.d.ts.map +1 -1
- package/link/ws/package.json +2 -1
- package/link/ws/{ws.cjs.js → ws.cjs} +1 -1
- package/link/ws/ws.cjs.map +1 -0
- package/{main.cjs.js → main.cjs} +5 -5
- package/main.cjs.map +1 -0
- package/package.json +20 -19
- package/react/components/Query.js.map +1 -1
- package/react/components/{components.cjs.js → components.cjs} +4 -4
- package/react/components/components.cjs.map +1 -0
- package/react/components/package.json +2 -1
- package/react/context/ApolloConsumer.js +1 -1
- package/react/context/ApolloProvider.js +1 -1
- package/react/context/{context.cjs.js → context.cjs} +6 -6
- package/react/context/context.cjs.map +1 -0
- package/react/context/index.d.ts +3 -3
- package/react/context/index.d.ts.map +1 -1
- package/react/context/index.js +3 -3
- package/react/context/index.js.map +1 -1
- package/react/context/package.json +2 -1
- package/react/hoc/hoc-utils.js +1 -1
- package/react/hoc/{hoc.cjs.js → hoc.cjs} +12 -12
- package/react/hoc/hoc.cjs.map +1 -0
- package/react/hoc/mutation-hoc.js +2 -2
- package/react/hoc/mutation-hoc.js.map +1 -1
- package/react/hoc/package.json +2 -1
- package/react/hoc/query-hoc.js +1 -1
- package/react/hoc/query-hoc.js.map +1 -1
- package/react/hoc/subscription-hoc.js +1 -1
- package/react/hoc/subscription-hoc.js.map +1 -1
- package/react/hoc/withApollo.js +2 -2
- package/react/hoc/withApollo.js.map +1 -1
- package/react/hooks/hooks.cjs +502 -0
- package/react/hooks/hooks.cjs.map +1 -0
- package/react/hooks/package.json +2 -1
- package/react/hooks/useApolloClient.d.ts +1 -1
- package/react/hooks/useApolloClient.d.ts.map +1 -1
- package/react/hooks/useApolloClient.js +7 -5
- package/react/hooks/useApolloClient.js.map +1 -1
- package/react/hooks/useLazyQuery.d.ts.map +1 -1
- package/react/hooks/useLazyQuery.js +56 -2
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useMutation.d.ts.map +1 -1
- package/react/hooks/useMutation.js +89 -21
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.d.ts +2 -3
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +224 -2
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useSubscription.d.ts +2 -7
- package/react/hooks/useSubscription.d.ts.map +1 -1
- package/react/hooks/useSubscription.js +89 -32
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/package.json +2 -1
- package/react/parser/index.d.ts +1 -0
- package/react/parser/index.d.ts.map +1 -1
- package/react/parser/index.js +16 -9
- package/react/parser/index.js.map +1 -1
- package/react/parser/package.json +2 -1
- package/react/parser/{parser.cjs.js → parser.cjs} +18 -10
- package/react/parser/parser.cjs.map +1 -0
- package/react/{react.cjs.js → react.cjs} +3 -3
- package/react/react.cjs.map +1 -0
- package/react/ssr/RenderPromises.d.ts +7 -3
- package/react/ssr/RenderPromises.d.ts.map +1 -1
- package/react/ssr/RenderPromises.js.map +1 -1
- package/react/ssr/package.json +2 -1
- package/react/ssr/{ssr.cjs.js → ssr.cjs} +4 -4
- package/react/ssr/ssr.cjs.map +1 -0
- package/react/types/types.d.ts +7 -18
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/{testing.cjs.js → core/core.cjs} +10 -104
- package/testing/core/core.cjs.map +1 -0
- package/{utilities/testing → testing/core}/index.d.ts +0 -1
- package/testing/core/index.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/index.js +0 -1
- package/testing/core/index.js.map +1 -0
- package/{utilities/testing → testing/core}/itAsync.d.ts +0 -0
- package/testing/core/itAsync.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/itAsync.js +0 -0
- package/testing/core/itAsync.js.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockClient.d.ts +0 -0
- package/testing/core/mocking/mockClient.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockClient.js +0 -0
- package/testing/core/mocking/mockClient.js.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockFetch.d.ts +0 -0
- package/testing/core/mocking/mockFetch.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockFetch.js +1 -1
- package/testing/core/mocking/mockFetch.js.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockLink.d.ts +0 -1
- package/testing/core/mocking/mockLink.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockLink.js +5 -5
- package/testing/core/mocking/mockLink.js.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockQueryManager.d.ts +1 -1
- package/testing/core/mocking/mockQueryManager.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockQueryManager.js +1 -1
- package/testing/core/mocking/mockQueryManager.js.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockSubscriptionLink.d.ts +1 -4
- package/testing/core/mocking/mockSubscriptionLink.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockSubscriptionLink.js +1 -1
- package/testing/core/mocking/mockSubscriptionLink.js.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockWatchQuery.d.ts +1 -1
- package/testing/core/mocking/mockWatchQuery.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/mocking/mockWatchQuery.js +0 -0
- package/testing/core/mocking/mockWatchQuery.js.map +1 -0
- package/{utilities/testing → testing/core}/observableToPromise.d.ts +2 -3
- package/testing/core/observableToPromise.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/observableToPromise.js +1 -1
- package/testing/core/observableToPromise.js.map +1 -0
- package/testing/core/package.json +8 -0
- package/testing/core/subscribeAndCount.d.ts +4 -0
- package/testing/core/subscribeAndCount.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/subscribeAndCount.js +1 -1
- package/testing/core/subscribeAndCount.js.map +1 -0
- package/{utilities/testing → testing/core}/withConsoleSpy.d.ts +0 -0
- package/testing/core/withConsoleSpy.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/withConsoleSpy.js +0 -0
- package/testing/core/withConsoleSpy.js.map +1 -0
- package/{utilities/testing → testing/core}/wrap.d.ts +0 -0
- package/testing/core/wrap.d.ts.map +1 -0
- package/{utilities/testing → testing/core}/wrap.js +0 -0
- package/testing/core/wrap.js.map +1 -0
- package/testing/index.d.ts +2 -1
- package/testing/index.d.ts.map +1 -1
- package/testing/index.js +2 -1
- package/testing/index.js.map +1 -1
- package/testing/package.json +2 -1
- package/{utilities/testing/mocking → testing/react}/MockedProvider.d.ts +5 -5
- package/testing/react/MockedProvider.d.ts.map +1 -0
- package/{utilities/testing/mocking → testing/react}/MockedProvider.js +4 -4
- package/testing/react/MockedProvider.js.map +1 -0
- package/testing/testing.cjs +58 -0
- package/testing/testing.cjs.map +1 -0
- package/utilities/common/errorHandling.d.ts +1 -1
- package/utilities/common/errorHandling.d.ts.map +1 -1
- package/utilities/common/errorHandling.js.map +1 -1
- package/utilities/common/makeUniqueId.js +1 -1
- package/utilities/common/makeUniqueId.js.map +1 -1
- package/utilities/common/mergeDeep.d.ts.map +1 -1
- package/utilities/common/mergeDeep.js +6 -1
- package/utilities/common/mergeDeep.js.map +1 -1
- package/utilities/globals/fix-graphql.js +1 -1
- package/utilities/globals/global.d.ts.map +1 -1
- package/utilities/globals/global.js +1 -1
- package/utilities/globals/global.js.map +1 -1
- package/utilities/globals/{globals.cjs.js → globals.cjs} +3 -3
- package/utilities/globals/globals.cjs.map +1 -0
- package/utilities/globals/index.js +1 -1
- package/utilities/globals/package.json +2 -1
- package/utilities/graphql/directives.js +5 -5
- package/utilities/graphql/directives.js.map +1 -1
- package/utilities/graphql/fragments.d.ts.map +1 -1
- package/utilities/graphql/fragments.js +4 -4
- package/utilities/graphql/fragments.js.map +1 -1
- package/utilities/graphql/getFromAST.js +8 -8
- package/utilities/graphql/getFromAST.js.map +1 -1
- package/utilities/graphql/storeUtils.js +6 -6
- package/utilities/graphql/storeUtils.js.map +1 -1
- package/utilities/graphql/transform.d.ts.map +1 -1
- package/utilities/graphql/transform.js.map +1 -1
- package/utilities/observables/Concast.d.ts +0 -1
- package/utilities/observables/Concast.d.ts.map +1 -1
- package/utilities/observables/asyncMap.d.ts +0 -1
- package/utilities/observables/asyncMap.d.ts.map +1 -1
- package/utilities/observables/subclassing.d.ts +0 -1
- package/utilities/observables/subclassing.d.ts.map +1 -1
- package/utilities/package.json +2 -1
- package/utilities/{utilities.cjs.js → utilities.cjs} +31 -26
- package/utilities/utilities.cjs.map +1 -0
- package/version.js +1 -1
- package/apollo-client.cjs.js.map +0 -1
- package/apollo-client.cjs.min.js +0 -1
- package/cache/cache.cjs.js.map +0 -1
- package/core/core.cjs.js.map +0 -1
- package/errors/errors.cjs.js.map +0 -1
- package/link/batch/batch.cjs.js.map +0 -1
- package/link/batch-http/batch-http.cjs.js.map +0 -1
- package/link/context/context.cjs.js.map +0 -1
- package/link/core/core.cjs.js.map +0 -1
- package/link/error/error.cjs.js.map +0 -1
- package/link/http/http.cjs.js.map +0 -1
- package/link/persisted-queries/persisted-queries.cjs.js.map +0 -1
- package/link/retry/retry.cjs.js.map +0 -1
- package/link/schema/schema.cjs.js.map +0 -1
- package/link/utils/utils.cjs.js.map +0 -1
- package/link/ws/ws.cjs.js.map +0 -1
- package/main.cjs.js.map +0 -1
- package/react/components/components.cjs.js.map +0 -1
- package/react/context/context.cjs.js.map +0 -1
- package/react/data/MutationData.d.ts +0 -29
- package/react/data/MutationData.d.ts.map +0 -1
- package/react/data/MutationData.js +0 -115
- package/react/data/MutationData.js.map +0 -1
- package/react/data/OperationData.d.ts +0 -24
- package/react/data/OperationData.d.ts.map +0 -1
- package/react/data/OperationData.js +0 -53
- package/react/data/OperationData.js.map +0 -1
- package/react/data/QueryData.d.ts +0 -44
- package/react/data/QueryData.d.ts.map +0 -1
- package/react/data/QueryData.js +0 -298
- package/react/data/QueryData.js.map +0 -1
- package/react/data/SubscriptionData.d.ts +0 -28
- package/react/data/SubscriptionData.d.ts.map +0 -1
- package/react/data/SubscriptionData.js +0 -122
- package/react/data/SubscriptionData.js.map +0 -1
- package/react/data/data.cjs.js +0 -581
- package/react/data/data.cjs.js.map +0 -1
- package/react/data/index.d.ts +0 -6
- package/react/data/index.d.ts.map +0 -1
- package/react/data/index.js +0 -6
- package/react/data/index.js.map +0 -1
- package/react/data/package.json +0 -7
- package/react/hoc/hoc.cjs.js.map +0 -1
- package/react/hooks/hooks.cjs.js +0 -195
- package/react/hooks/hooks.cjs.js.map +0 -1
- package/react/hooks/utils/useAfterFastRefresh.d.ts +0 -3
- package/react/hooks/utils/useAfterFastRefresh.d.ts.map +0 -1
- package/react/hooks/utils/useAfterFastRefresh.js +0 -19
- package/react/hooks/utils/useAfterFastRefresh.js.map +0 -1
- package/react/hooks/utils/useBaseQuery.d.ts +0 -7
- package/react/hooks/utils/useBaseQuery.d.ts.map +0 -1
- package/react/hooks/utils/useBaseQuery.js +0 -55
- package/react/hooks/utils/useBaseQuery.js.map +0 -1
- package/react/hooks/utils/useDeepMemo.d.ts +0 -2
- package/react/hooks/utils/useDeepMemo.d.ts.map +0 -1
- package/react/hooks/utils/useDeepMemo.js +0 -10
- package/react/hooks/utils/useDeepMemo.js.map +0 -1
- package/react/parser/parser.cjs.js.map +0 -1
- package/react/react.cjs.js.map +0 -1
- package/react/ssr/ssr.cjs.js.map +0 -1
- package/testing/testing.cjs.js.map +0 -1
- package/utilities/globals/globals.cjs.js.map +0 -1
- package/utilities/testing/index.d.ts.map +0 -1
- package/utilities/testing/index.js.map +0 -1
- package/utilities/testing/itAsync.d.ts.map +0 -1
- package/utilities/testing/itAsync.js.map +0 -1
- package/utilities/testing/mocking/MockedProvider.d.ts.map +0 -1
- package/utilities/testing/mocking/MockedProvider.js.map +0 -1
- package/utilities/testing/mocking/mockClient.d.ts.map +0 -1
- package/utilities/testing/mocking/mockClient.js.map +0 -1
- package/utilities/testing/mocking/mockFetch.d.ts.map +0 -1
- package/utilities/testing/mocking/mockFetch.js.map +0 -1
- package/utilities/testing/mocking/mockLink.d.ts.map +0 -1
- package/utilities/testing/mocking/mockLink.js.map +0 -1
- package/utilities/testing/mocking/mockQueryManager.d.ts.map +0 -1
- package/utilities/testing/mocking/mockQueryManager.js.map +0 -1
- package/utilities/testing/mocking/mockSubscriptionLink.d.ts.map +0 -1
- package/utilities/testing/mocking/mockSubscriptionLink.js.map +0 -1
- package/utilities/testing/mocking/mockWatchQuery.d.ts.map +0 -1
- package/utilities/testing/mocking/mockWatchQuery.js.map +0 -1
- package/utilities/testing/observableToPromise.d.ts.map +0 -1
- package/utilities/testing/observableToPromise.js.map +0 -1
- package/utilities/testing/subscribeAndCount.d.ts +0 -5
- package/utilities/testing/subscribeAndCount.d.ts.map +0 -1
- package/utilities/testing/subscribeAndCount.js.map +0 -1
- package/utilities/testing/withConsoleSpy.d.ts.map +0 -1
- package/utilities/testing/withConsoleSpy.js.map +0 -1
- package/utilities/testing/wrap.d.ts.map +0 -1
- package/utilities/testing/wrap.js.map +0 -1
- package/utilities/utilities.cjs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readFromStore.js","sourceRoot":"","sources":["../../../src/cache/inmemory/readFromStore.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, InvariantError } from '../../utilities/globals';\n\nimport {\n DocumentNode,\n FieldNode,\n SelectionSetNode,\n} from 'graphql';\nimport { wrap, OptimisticWrapperFunction } from 'optimism';\n\nimport {\n isField,\n resultKeyNameFromField,\n Reference,\n isReference,\n makeReference,\n StoreObject,\n createFragmentMap,\n FragmentMap,\n shouldInclude,\n addTypenameToDocument,\n getDefaultValues,\n getFragmentDefinitions,\n getMainDefinition,\n getQueryDefinition,\n mergeDeepArray,\n getFragmentFromSelection,\n maybeDeepFreeze,\n isNonNullObject,\n canUseWeakMap,\n compact,\n} from '../../utilities';\nimport { Cache } from '../core/types/Cache';\nimport {\n DiffQueryAgainstStoreOptions,\n NormalizedCache,\n ReadMergeModifyContext,\n} from './types';\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from './entityStore';\nimport { getTypenameFromStoreObject, shouldCanonizeResults } from './helpers';\nimport { Policies } from './policies';\nimport { InMemoryCache } from './inMemoryCache';\nimport { MissingFieldError } from '../core/types/common';\nimport { canonicalStringify, ObjectCanon } from './object-canon';\n\nexport type VariableMap = { [name: string]: any };\n\ninterface ReadContext extends ReadMergeModifyContext {\n query: DocumentNode;\n policies: Policies;\n canonizeResults: boolean;\n fragmentMap: FragmentMap;\n path: (string | number)[];\n};\n\nexport type ExecResult<R = any> = {\n result: R;\n missing?: MissingFieldError[];\n};\n\nfunction missingFromInvariant(\n err: InvariantError,\n context: ReadContext,\n) {\n return new MissingFieldError(\n err.message,\n context.path.slice(),\n context.query,\n context.variables,\n );\n}\n\ntype ExecSelectionSetOptions = {\n selectionSet: SelectionSetNode;\n objectOrReference: StoreObject | Reference;\n enclosingRef: Reference;\n context: ReadContext;\n};\n\ntype ExecSubSelectedArrayOptions = {\n field: FieldNode;\n array: any[];\n enclosingRef: Reference;\n context: ReadContext;\n};\n\nexport interface StoreReaderConfig {\n cache: InMemoryCache,\n addTypename?: boolean;\n resultCacheMaxSize?: number;\n canonizeResults?: boolean;\n canon?: ObjectCanon;\n}\n\n// Arguments type after keyArgs translation.\ntype ExecSelectionSetKeyArgs = [\n SelectionSetNode,\n StoreObject | Reference,\n ReadMergeModifyContext,\n boolean,\n];\n\nfunction execSelectionSetKeyArgs(\n options: ExecSelectionSetOptions,\n): ExecSelectionSetKeyArgs {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults,\n ];\n}\n\nexport class StoreReader {\n // cached version of executeSelectionSet\n private executeSelectionSet: OptimisticWrapperFunction<\n [ExecSelectionSetOptions], // Actual arguments tuple type.\n ExecResult, // Actual return type.\n ExecSelectionSetKeyArgs\n >;\n\n // cached version of executeSubSelectedArray\n private executeSubSelectedArray: OptimisticWrapperFunction<\n [ExecSubSelectedArrayOptions],\n ExecResult<any>,\n [ExecSubSelectedArrayOptions]>;\n\n private config: {\n cache: InMemoryCache,\n addTypename: boolean;\n resultCacheMaxSize?: number;\n canonizeResults: boolean;\n };\n\n private knownResults = new (\n canUseWeakMap ? WeakMap : Map\n )<Record<string, any>, SelectionSetNode>();\n\n public canon: ObjectCanon;\n public resetCanon() {\n this.canon = new ObjectCanon;\n }\n\n constructor(config: StoreReaderConfig) {\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n\n this.canon = config.canon || new ObjectCanon;\n\n this.executeSelectionSet = wrap(options => {\n const { canonizeResults } = options.context;\n\n const peekArgs = execSelectionSetKeyArgs(options);\n\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n\n const other = this.executeSelectionSet.peek(...peekArgs);\n\n if (other) {\n if (canonizeResults) {\n return {\n ...other,\n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: this.canon.admit(other.result),\n };\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n\n maybeDependOnExistenceOfEntity(\n options.context.store,\n options.enclosingRef.__ref,\n );\n\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return this.execSelectionSetImpl(options);\n\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey(selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(\n selectionSet,\n isReference(parent) ? parent.__ref : parent,\n context.varString,\n canonizeResults,\n );\n }\n }\n });\n\n this.executeSubSelectedArray = wrap((options: ExecSubSelectedArrayOptions) => {\n maybeDependOnExistenceOfEntity(\n options.context.store,\n options.enclosingRef.__ref,\n );\n return this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey({ field, array, context }) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(\n field,\n array,\n context.varString,\n );\n }\n }\n });\n }\n\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n * @param {DocumentNode} query A parsed GraphQL query document\n * @param {Store} store The Apollo Client store object\n * @return {result: Object, complete: [boolean]}\n */\n public diffQueryAgainstStore<T>({\n store,\n query,\n rootId = 'ROOT_QUERY',\n variables,\n returnPartialData = true,\n canonizeResults = this.config.canonizeResults,\n }: DiffQueryAgainstStoreOptions): Cache.DiffResult<T> {\n const policies = this.config.cache.policies;\n\n variables = {\n ...getDefaultValues(getQueryDefinition(query)),\n ...variables!,\n };\n\n const rootRef = makeReference(rootId);\n const execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: {\n store,\n query,\n policies,\n variables,\n varString: canonicalStringify(variables),\n canonizeResults,\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n path: [],\n },\n });\n\n const hasMissingFields =\n execResult.missing && execResult.missing.length > 0;\n if (hasMissingFields && !returnPartialData) {\n throw execResult.missing![0];\n }\n\n return {\n result: execResult.result,\n missing: execResult.missing,\n complete: !hasMissingFields,\n };\n }\n\n public isFresh(\n result: Record<string, any>,\n parent: StoreObject | Reference,\n selectionSet: SelectionSetNode,\n context: ReadMergeModifyContext,\n ): boolean {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n const latest = this.executeSelectionSet.peek(\n selectionSet,\n parent,\n context,\n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result),\n );\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n }\n\n // Uncached version of executeSelectionSet.\n private execSelectionSetImpl({\n selectionSet,\n objectOrReference,\n enclosingRef,\n context,\n }: ExecSelectionSetOptions): ExecResult {\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: [missingFromInvariant(\n new InvariantError(\n `Dangling reference to missing ${objectOrReference.__ref} object`\n ),\n context,\n )],\n };\n }\n\n const { variables, policies, store } = context;\n const objectsToMerge: { [key: string]: any }[] = [];\n const finalResult: ExecResult = { result: null };\n const typename = store.getFieldValue<string>(objectOrReference, \"__typename\");\n\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n objectsToMerge.push({ __typename: typename });\n }\n\n function getMissing() {\n return finalResult.missing || (finalResult.missing = []);\n }\n\n function handleMissing<T>(result: ExecResult<T>): T {\n if (result.missing) getMissing().push(...result.missing);\n return result.result;\n }\n\n const workSet = new Set(selectionSet.selections);\n\n workSet.forEach(selection => {\n // Omit fields with directives @skip(if: <truthy value>) or\n // @include(if: <falsy value>).\n if (!shouldInclude(selection, variables)) return;\n\n if (isField(selection)) {\n let fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n\n const resultName = resultKeyNameFromField(selection);\n context.path.push(resultName);\n\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n getMissing().push(\n missingFromInvariant(\n new InvariantError(`Can't find field '${\n selection.name.value\n }' on ${\n isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)\n }`),\n context,\n ),\n );\n }\n\n } else if (Array.isArray(fieldValue)) {\n fieldValue = handleMissing(this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef,\n context,\n }));\n\n } else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = this.canon.pass(fieldValue);\n }\n\n } else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue as StoreObject | Reference,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context,\n }));\n }\n\n if (fieldValue !== void 0) {\n objectsToMerge.push({ [resultName]: fieldValue });\n }\n\n invariant(context.path.pop() === resultName);\n\n } else {\n const fragment = getFragmentFromSelection(\n selection,\n context.fragmentMap,\n );\n\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n\n // Perform a single merge at the end so that we can avoid making more\n // defensive shallow copies than necessary.\n const merged = mergeDeepArray(objectsToMerge);\n finalResult.result = context.canonizeResults\n ? this.canon.admit(merged)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(merged);\n\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n this.knownResults.set(finalResult.result, selectionSet);\n\n return finalResult;\n }\n\n // Uncached version of executeSubSelectedArray.\n private execSubSelectedArrayImpl({\n field,\n array,\n enclosingRef,\n context,\n }: ExecSubSelectedArrayOptions): ExecResult {\n let missing: MissingFieldError[] | undefined;\n\n function handleMissing<T>(childResult: ExecResult<T>, i: number): T {\n if (childResult.missing) {\n missing = missing || [];\n missing.push(...childResult.missing);\n }\n\n invariant(context.path.pop() === i);\n\n return childResult.result;\n }\n\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n\n array = array.map((item, i) => {\n // null value in array\n if (item === null) {\n return null;\n }\n\n context.path.push(i);\n\n // This is a nested array, recurse\n if (Array.isArray(item)) {\n return handleMissing(this.executeSubSelectedArray({\n field,\n array: item,\n enclosingRef,\n context,\n }), i);\n }\n\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context,\n }), i);\n }\n\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n\n invariant(context.path.pop() === i);\n\n return item;\n });\n\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing,\n };\n }\n}\n\nfunction assertSelectionSetForIdValue(\n store: NormalizedCache,\n field: FieldNode,\n fieldValue: any,\n) {\n if (!field.selectionSet) {\n const workSet = new Set([fieldValue]);\n workSet.forEach(value => {\n if (isNonNullObject(value)) {\n invariant(\n !isReference(value),\n `Missing selection set for object of type ${\n getTypenameFromStoreObject(store, value)\n } returned for query field ${field.name.value}`,\n );\n Object.values(value).forEach(workSet.add, workSet);\n }\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"readFromStore.js","sourceRoot":"","sources":["../../../src/cache/inmemory/readFromStore.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\n\nimport {\n DocumentNode,\n FieldNode,\n SelectionSetNode,\n} from 'graphql';\nimport { wrap, OptimisticWrapperFunction } from 'optimism';\n\nimport {\n isField,\n resultKeyNameFromField,\n Reference,\n isReference,\n makeReference,\n StoreObject,\n createFragmentMap,\n FragmentMap,\n shouldInclude,\n addTypenameToDocument,\n getDefaultValues,\n getFragmentDefinitions,\n getMainDefinition,\n getQueryDefinition,\n DeepMerger,\n getFragmentFromSelection,\n maybeDeepFreeze,\n isNonNullObject,\n canUseWeakMap,\n compact,\n} from '../../utilities';\nimport { Cache } from '../core/types/Cache';\nimport {\n DiffQueryAgainstStoreOptions,\n NormalizedCache,\n ReadMergeModifyContext,\n} from './types';\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from './entityStore';\nimport { getTypenameFromStoreObject, shouldCanonizeResults } from './helpers';\nimport { Policies } from './policies';\nimport { InMemoryCache } from './inMemoryCache';\nimport { MissingFieldError, MissingTree } from '../core/types/common';\nimport { canonicalStringify, ObjectCanon } from './object-canon';\n\nexport type VariableMap = { [name: string]: any };\n\ninterface ReadContext extends ReadMergeModifyContext {\n query: DocumentNode;\n policies: Policies;\n canonizeResults: boolean;\n fragmentMap: FragmentMap;\n // General-purpose deep-merge function for use during reads.\n merge<T>(existing: T, incoming: T): T;\n};\n\nexport type ExecResult<R = any> = {\n result: R;\n missing?: MissingTree;\n};\n\ntype ExecSelectionSetOptions = {\n selectionSet: SelectionSetNode;\n objectOrReference: StoreObject | Reference;\n enclosingRef: Reference;\n context: ReadContext;\n};\n\ntype ExecSubSelectedArrayOptions = {\n field: FieldNode;\n array: any[];\n enclosingRef: Reference;\n context: ReadContext;\n};\n\nexport interface StoreReaderConfig {\n cache: InMemoryCache,\n addTypename?: boolean;\n resultCacheMaxSize?: number;\n canonizeResults?: boolean;\n canon?: ObjectCanon;\n}\n\n// Arguments type after keyArgs translation.\ntype ExecSelectionSetKeyArgs = [\n SelectionSetNode,\n StoreObject | Reference,\n ReadMergeModifyContext,\n boolean,\n];\n\nfunction execSelectionSetKeyArgs(\n options: ExecSelectionSetOptions,\n): ExecSelectionSetKeyArgs {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults,\n ];\n}\n\nexport class StoreReader {\n // cached version of executeSelectionSet\n private executeSelectionSet: OptimisticWrapperFunction<\n [ExecSelectionSetOptions], // Actual arguments tuple type.\n ExecResult, // Actual return type.\n ExecSelectionSetKeyArgs\n >;\n\n // cached version of executeSubSelectedArray\n private executeSubSelectedArray: OptimisticWrapperFunction<\n [ExecSubSelectedArrayOptions],\n ExecResult<any>,\n [ExecSubSelectedArrayOptions]>;\n\n private config: {\n cache: InMemoryCache,\n addTypename: boolean;\n resultCacheMaxSize?: number;\n canonizeResults: boolean;\n };\n\n private knownResults = new (\n canUseWeakMap ? WeakMap : Map\n )<Record<string, any>, SelectionSetNode>();\n\n public canon: ObjectCanon;\n public resetCanon() {\n this.canon = new ObjectCanon;\n }\n\n constructor(config: StoreReaderConfig) {\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n\n this.canon = config.canon || new ObjectCanon;\n\n this.executeSelectionSet = wrap(options => {\n const { canonizeResults } = options.context;\n\n const peekArgs = execSelectionSetKeyArgs(options);\n\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n\n const other = this.executeSelectionSet.peek(...peekArgs);\n\n if (other) {\n if (canonizeResults) {\n return {\n ...other,\n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: this.canon.admit(other.result),\n };\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n\n maybeDependOnExistenceOfEntity(\n options.context.store,\n options.enclosingRef.__ref,\n );\n\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return this.execSelectionSetImpl(options);\n\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey(selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(\n selectionSet,\n isReference(parent) ? parent.__ref : parent,\n context.varString,\n canonizeResults,\n );\n }\n }\n });\n\n this.executeSubSelectedArray = wrap((options: ExecSubSelectedArrayOptions) => {\n maybeDependOnExistenceOfEntity(\n options.context.store,\n options.enclosingRef.__ref,\n );\n return this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey({ field, array, context }) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(\n field,\n array,\n context.varString,\n );\n }\n }\n });\n }\n\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n * @param {DocumentNode} query A parsed GraphQL query document\n * @param {Store} store The Apollo Client store object\n * @return {result: Object, complete: [boolean]}\n */\n public diffQueryAgainstStore<T>({\n store,\n query,\n rootId = 'ROOT_QUERY',\n variables,\n returnPartialData = true,\n canonizeResults = this.config.canonizeResults,\n }: DiffQueryAgainstStoreOptions): Cache.DiffResult<T> {\n const policies = this.config.cache.policies;\n\n variables = {\n ...getDefaultValues(getQueryDefinition(query)),\n ...variables!,\n };\n\n const rootRef = makeReference(rootId);\n const merger = new DeepMerger;\n const execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: {\n store,\n query,\n policies,\n variables,\n varString: canonicalStringify(variables),\n canonizeResults,\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n merge(a, b) {\n // We use the same DeepMerger instance throughout the read, so any\n // merged objects created during this read can be updated later in the\n // read using in-place/destructive property assignments. Once the read\n // is finished, these objects will be frozen, but in the meantime it's\n // good for performance and memory usage if we avoid allocating a new\n // object for every merged property.\n return merger.merge(a, b);\n },\n },\n });\n\n let missing: MissingFieldError[] | undefined;\n if (execResult.missing) {\n // For backwards compatibility we still report an array of\n // MissingFieldError objects, even though there will only ever be at most\n // one of them, now that all missing field error messages are grouped\n // together in the execResult.missing tree.\n missing = [new MissingFieldError(\n firstMissing(execResult.missing)!,\n execResult.missing,\n query,\n variables,\n )];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n\n return {\n result: execResult.result,\n complete: !missing,\n missing,\n };\n }\n\n public isFresh(\n result: Record<string, any>,\n parent: StoreObject | Reference,\n selectionSet: SelectionSetNode,\n context: ReadMergeModifyContext,\n ): boolean {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n const latest = this.executeSelectionSet.peek(\n selectionSet,\n parent,\n context,\n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result),\n );\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n }\n\n // Uncached version of executeSelectionSet.\n private execSelectionSetImpl({\n selectionSet,\n objectOrReference,\n enclosingRef,\n context,\n }: ExecSelectionSetOptions): ExecResult {\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: `Dangling reference to missing ${objectOrReference.__ref} object`,\n };\n }\n\n const { variables, policies, store } = context;\n const typename = store.getFieldValue<string>(objectOrReference, \"__typename\");\n\n let result: any = {};\n let missing: MissingTree | undefined;\n\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n result = { __typename: typename };\n }\n\n function handleMissing<T>(result: ExecResult<T>, resultName: string): T {\n if (result.missing) {\n missing = context.merge(missing, { [resultName]: result.missing });\n }\n return result.result;\n }\n\n const workSet = new Set(selectionSet.selections);\n\n workSet.forEach(selection => {\n // Omit fields with directives @skip(if: <truthy value>) or\n // @include(if: <falsy value>).\n if (!shouldInclude(selection, variables)) return;\n\n if (isField(selection)) {\n let fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n\n const resultName = resultKeyNameFromField(selection);\n\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = context.merge(missing, {\n [resultName]: `Can't find field '${\n selection.name.value\n }' on ${\n isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)\n }`\n });\n }\n\n } else if (Array.isArray(fieldValue)) {\n fieldValue = handleMissing(this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef,\n context,\n }), resultName);\n\n } else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = this.canon.pass(fieldValue);\n }\n\n } else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue as StoreObject | Reference,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context,\n }), resultName);\n }\n\n if (fieldValue !== void 0) {\n result = context.merge(result, { [resultName]: fieldValue });\n }\n\n } else {\n const fragment = getFragmentFromSelection(\n selection,\n context.fragmentMap,\n );\n\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n\n const finalResult: ExecResult = { result, missing };\n const frozen = context.canonizeResults\n ? this.canon.admit(finalResult)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(finalResult);\n\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n\n return frozen;\n }\n\n // Uncached version of executeSubSelectedArray.\n private execSubSelectedArrayImpl({\n field,\n array,\n enclosingRef,\n context,\n }: ExecSubSelectedArrayOptions): ExecResult {\n let missing: MissingTree | undefined;\n\n function handleMissing<T>(childResult: ExecResult<T>, i: number): T {\n if (childResult.missing) {\n missing = context.merge(missing, { [i]: childResult.missing });\n }\n return childResult.result;\n }\n\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n\n array = array.map((item, i) => {\n // null value in array\n if (item === null) {\n return null;\n }\n\n // This is a nested array, recurse\n if (Array.isArray(item)) {\n return handleMissing(this.executeSubSelectedArray({\n field,\n array: item,\n enclosingRef,\n context,\n }), i);\n }\n\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context,\n }), i);\n }\n\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n\n return item;\n });\n\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing,\n };\n }\n}\n\nfunction firstMissing(tree: MissingTree): string | undefined {\n try {\n JSON.stringify(tree, (_, value) => {\n if (typeof value === \"string\") throw value;\n return value;\n });\n } catch (result) {\n return result;\n }\n}\n\nfunction assertSelectionSetForIdValue(\n store: NormalizedCache,\n field: FieldNode,\n fieldValue: any,\n) {\n if (!field.selectionSet) {\n const workSet = new Set([fieldValue]);\n workSet.forEach(value => {\n if (isNonNullObject(value)) {\n invariant(\n !isReference(value),\n `Missing selection set for object of type ${\n getTypenameFromStoreObject(store, value)\n } returned for query field ${field.name.value}`,\n );\n Object.values(value).forEach(workSet.add, workSet);\n }\n });\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SelectionSetNode,
|
|
1
|
+
import { SelectionSetNode, FieldNode } from 'graphql';
|
|
2
2
|
import { FragmentMap, StoreObject, Reference } from '../../utilities';
|
|
3
3
|
import { NormalizedCache, ReadMergeModifyContext, MergeTree } from './types';
|
|
4
4
|
import { StoreReader } from './readFromStore';
|
|
@@ -12,12 +12,15 @@ export interface WriteContext extends ReadMergeModifyContext {
|
|
|
12
12
|
merge<T>(existing: T, incoming: T): T;
|
|
13
13
|
overwrite: boolean;
|
|
14
14
|
incomingById: Map<string, {
|
|
15
|
-
|
|
15
|
+
storeObject: StoreObject;
|
|
16
16
|
mergeTree?: MergeTree;
|
|
17
|
-
|
|
17
|
+
fieldNodeSet: Set<FieldNode>;
|
|
18
18
|
}>;
|
|
19
19
|
clientOnly: boolean;
|
|
20
|
+
deferred: boolean;
|
|
21
|
+
flavors: Map<string, FlavorableWriteContext>;
|
|
20
22
|
}
|
|
23
|
+
declare type FlavorableWriteContext = Pick<WriteContext, "clientOnly" | "deferred" | "flavors">;
|
|
21
24
|
export declare class StoreWriter {
|
|
22
25
|
readonly cache: InMemoryCache;
|
|
23
26
|
private reader?;
|
|
@@ -25,6 +28,8 @@ export declare class StoreWriter {
|
|
|
25
28
|
writeToStore(store: NormalizedCache, { query, result, dataId, variables, overwrite, }: Cache.WriteOptions): Reference | undefined;
|
|
26
29
|
private processSelectionSet;
|
|
27
30
|
private processFieldValue;
|
|
31
|
+
private flattenFields;
|
|
28
32
|
private applyMerges;
|
|
29
33
|
}
|
|
34
|
+
export {};
|
|
30
35
|
//# sourceMappingURL=writeToStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeToStore.d.ts","sourceRoot":"","sources":["../../../src/cache/inmemory/writeToStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writeToStore.d.ts","sourceRoot":"","sources":["../../../src/cache/inmemory/writeToStore.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,OAAO,EAEL,WAAW,EAUX,WAAW,EACX,SAAS,EAOV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAKnC,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,QAAQ,CAAC,OAAO,EAAE;QAChB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAEtC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QACxB,WAAW,EAAE,WAAW,CAAC;QACzB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;KAC9B,CAAC,CAAC;IAIH,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC9C;AAED,aAAK,sBAAsB,GAAG,IAAI,CAChC,YAAY,EACV,YAAY,GACZ,UAAU,GACV,SAAS,CACZ,CAAC;AAmCF,qBAAa,WAAW;aAEJ,KAAK,EAAE,aAAa;IACpC,OAAO,CAAC,MAAM,CAAC;gBADC,KAAK,EAAE,aAAa,EAC5B,MAAM,CAAC,yBAAa;IAGvB,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,EAC1C,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,GACV,EAAE,KAAK,CAAC,YAAY,GAAG,SAAS,GAAG,SAAS;IAuG7C,OAAO,CAAC,mBAAmB;IA8N3B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,aAAa;IA6GrB,OAAO,CAAC,WAAW;CA6FpB"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { __assign } from "tslib";
|
|
2
2
|
import { invariant, InvariantError } from "../../utilities/globals/index.js";
|
|
3
3
|
import { equal } from '@wry/equality';
|
|
4
|
-
import {
|
|
4
|
+
import { Trie } from '@wry/trie';
|
|
5
|
+
import { createFragmentMap, getFragmentFromSelection, getDefaultValues, getFragmentDefinitions, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, } from "../../utilities/index.js";
|
|
5
6
|
import { makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject } from "./helpers.js";
|
|
6
7
|
import { canonicalStringify } from "./object-canon.js";
|
|
8
|
+
import { normalizeReadFieldOptions } from "./policies.js";
|
|
7
9
|
;
|
|
10
|
+
function getContextFlavor(context, clientOnly, deferred) {
|
|
11
|
+
var key = "".concat(clientOnly).concat(deferred);
|
|
12
|
+
var flavored = context.flavors.get(key);
|
|
13
|
+
if (!flavored) {
|
|
14
|
+
context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&
|
|
15
|
+
context.deferred === deferred) ? context : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred }));
|
|
16
|
+
}
|
|
17
|
+
return flavored;
|
|
18
|
+
}
|
|
8
19
|
var StoreWriter = (function () {
|
|
9
20
|
function StoreWriter(cache, reader) {
|
|
10
21
|
this.cache = cache;
|
|
@@ -28,6 +39,8 @@ var StoreWriter = (function () {
|
|
|
28
39
|
overwrite: !!overwrite,
|
|
29
40
|
incomingById: new Map,
|
|
30
41
|
clientOnly: false,
|
|
42
|
+
deferred: false,
|
|
43
|
+
flavors: new Map,
|
|
31
44
|
};
|
|
32
45
|
var ref = this.processSelectionSet({
|
|
33
46
|
result: result || Object.create(null),
|
|
@@ -37,40 +50,40 @@ var StoreWriter = (function () {
|
|
|
37
50
|
context: context,
|
|
38
51
|
});
|
|
39
52
|
if (!isReference(ref)) {
|
|
40
|
-
throw __DEV__ ? new InvariantError("Could not identify object "
|
|
53
|
+
throw __DEV__ ? new InvariantError("Could not identify object ".concat(JSON.stringify(result))) : new InvariantError(6);
|
|
41
54
|
}
|
|
42
55
|
context.incomingById.forEach(function (_a, dataId) {
|
|
43
|
-
var
|
|
56
|
+
var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;
|
|
44
57
|
var entityRef = makeReference(dataId);
|
|
45
58
|
if (mergeTree && mergeTree.map.size) {
|
|
46
|
-
var applied = _this.applyMerges(mergeTree, entityRef,
|
|
59
|
+
var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);
|
|
47
60
|
if (isReference(applied)) {
|
|
48
61
|
return;
|
|
49
62
|
}
|
|
50
|
-
|
|
63
|
+
storeObject = applied;
|
|
51
64
|
}
|
|
52
65
|
if (__DEV__ && !context.overwrite) {
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
selections.forEach(function (selection) {
|
|
58
|
-
if (isField(selection) && selection.selectionSet) {
|
|
59
|
-
fieldsWithSelectionSets_1.add(selection.name.value);
|
|
66
|
+
var fieldsWithSelectionSets_1 = Object.create(null);
|
|
67
|
+
fieldNodeSet.forEach(function (field) {
|
|
68
|
+
if (field.selectionSet) {
|
|
69
|
+
fieldsWithSelectionSets_1[field.name.value] = true;
|
|
60
70
|
}
|
|
61
71
|
});
|
|
72
|
+
var hasSelectionSet_1 = function (storeFieldName) {
|
|
73
|
+
return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;
|
|
74
|
+
};
|
|
62
75
|
var hasMergeFunction_1 = function (storeFieldName) {
|
|
63
76
|
var childTree = mergeTree && mergeTree.map.get(storeFieldName);
|
|
64
77
|
return Boolean(childTree && childTree.info && childTree.info.merge);
|
|
65
78
|
};
|
|
66
|
-
Object.keys(
|
|
79
|
+
Object.keys(storeObject).forEach(function (storeFieldName) {
|
|
67
80
|
if (hasSelectionSet_1(storeFieldName) &&
|
|
68
81
|
!hasMergeFunction_1(storeFieldName)) {
|
|
69
|
-
warnAboutDataLoss(entityRef,
|
|
82
|
+
warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);
|
|
70
83
|
}
|
|
71
84
|
});
|
|
72
85
|
}
|
|
73
|
-
store.merge(dataId,
|
|
86
|
+
store.merge(dataId, storeObject);
|
|
74
87
|
});
|
|
75
88
|
store.retain(ref.__ref);
|
|
76
89
|
return ref;
|
|
@@ -79,103 +92,114 @@ var StoreWriter = (function () {
|
|
|
79
92
|
var _this = this;
|
|
80
93
|
var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;
|
|
81
94
|
var policies = this.cache.policies;
|
|
82
|
-
var
|
|
83
|
-
dataId = dataId || id;
|
|
84
|
-
if ("string" === typeof dataId) {
|
|
85
|
-
var sets = context.written[dataId] || (context.written[dataId] = []);
|
|
86
|
-
var ref = makeReference(dataId);
|
|
87
|
-
if (sets.indexOf(selectionSet) >= 0)
|
|
88
|
-
return ref;
|
|
89
|
-
sets.push(selectionSet);
|
|
90
|
-
if (this.reader && this.reader.isFresh(result, ref, selectionSet, context)) {
|
|
91
|
-
return ref;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
var incomingFields = Object.create(null);
|
|
95
|
-
if (keyObject) {
|
|
96
|
-
incomingFields = context.merge(incomingFields, keyObject);
|
|
97
|
-
}
|
|
95
|
+
var incoming = Object.create(null);
|
|
98
96
|
var typename = (dataId && policies.rootTypenamesById[dataId]) ||
|
|
99
97
|
getTypenameFromResult(result, selectionSet, context.fragmentMap) ||
|
|
100
98
|
(dataId && context.store.get(dataId, "__typename"));
|
|
101
99
|
if ("string" === typeof typename) {
|
|
102
|
-
|
|
100
|
+
incoming.__typename = typename;
|
|
103
101
|
}
|
|
104
|
-
var
|
|
105
|
-
|
|
102
|
+
var readField = function () {
|
|
103
|
+
var options = normalizeReadFieldOptions(arguments, incoming, context.variables);
|
|
104
|
+
if (isReference(options.from)) {
|
|
105
|
+
var info = context.incomingById.get(options.from.__ref);
|
|
106
|
+
if (info) {
|
|
107
|
+
var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);
|
|
108
|
+
if (result_1 !== void 0) {
|
|
109
|
+
return result_1;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return policies.readField(options, context);
|
|
114
|
+
};
|
|
115
|
+
var fieldNodeSet = new Set();
|
|
116
|
+
this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {
|
|
106
117
|
var _a;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
var
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
var resultFieldKey = resultKeyNameFromField(field);
|
|
119
|
+
var value = result[resultFieldKey];
|
|
120
|
+
fieldNodeSet.add(field);
|
|
121
|
+
if (value !== void 0) {
|
|
122
|
+
var storeFieldName = policies.getStoreFieldName({
|
|
123
|
+
typename: typename,
|
|
124
|
+
fieldName: field.name.value,
|
|
125
|
+
field: field,
|
|
126
|
+
variables: context.variables,
|
|
127
|
+
});
|
|
128
|
+
var childTree = getChildMergeTree(mergeTree, storeFieldName);
|
|
129
|
+
var incomingValue = _this.processFieldValue(value, field, field.selectionSet
|
|
130
|
+
? getContextFlavor(context, false, false)
|
|
131
|
+
: context, childTree);
|
|
132
|
+
var childTypename = void 0;
|
|
133
|
+
if (field.selectionSet &&
|
|
134
|
+
(isReference(incomingValue) ||
|
|
135
|
+
storeValueIsStoreObject(incomingValue))) {
|
|
136
|
+
childTypename = readField("__typename", incomingValue);
|
|
137
|
+
}
|
|
138
|
+
var merge = policies.getMergeFunction(typename, field.name.value, childTypename);
|
|
139
|
+
if (merge) {
|
|
140
|
+
childTree.info = {
|
|
141
|
+
field: field,
|
|
117
142
|
typename: typename,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
variables: context.variables,
|
|
121
|
-
});
|
|
122
|
-
var childTree = getChildMergeTree(mergeTree, storeFieldName);
|
|
123
|
-
var incomingValue = _this.processFieldValue(value, selection, context, childTree);
|
|
124
|
-
var childTypename = void 0;
|
|
125
|
-
if (selection.selectionSet) {
|
|
126
|
-
childTypename = context.store.getFieldValue(incomingValue, "__typename");
|
|
127
|
-
if (!childTypename && isReference(incomingValue)) {
|
|
128
|
-
var info = context.incomingById.get(incomingValue.__ref);
|
|
129
|
-
childTypename = info && info.fields.__typename;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
var merge = policies.getMergeFunction(typename, selection.name.value, childTypename);
|
|
133
|
-
if (merge) {
|
|
134
|
-
childTree.info = {
|
|
135
|
-
field: selection,
|
|
136
|
-
typename: typename,
|
|
137
|
-
merge: merge,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
maybeRecycleChildMergeTree(mergeTree, storeFieldName);
|
|
142
|
-
}
|
|
143
|
-
incomingFields = context.merge(incomingFields, (_a = {},
|
|
144
|
-
_a[storeFieldName] = incomingValue,
|
|
145
|
-
_a));
|
|
143
|
+
merge: merge,
|
|
144
|
+
};
|
|
146
145
|
}
|
|
147
|
-
else
|
|
148
|
-
|
|
149
|
-
__DEV__ && invariant.error(("Missing field '" + resultKeyNameFromField(selection) + "' while writing result " + JSON.stringify(result, null, 2)).substring(0, 1000));
|
|
146
|
+
else {
|
|
147
|
+
maybeRecycleChildMergeTree(mergeTree, storeFieldName);
|
|
150
148
|
}
|
|
151
|
-
context.
|
|
149
|
+
incoming = context.merge(incoming, (_a = {},
|
|
150
|
+
_a[storeFieldName] = incomingValue,
|
|
151
|
+
_a));
|
|
152
152
|
}
|
|
153
|
-
else
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
153
|
+
else if (__DEV__ &&
|
|
154
|
+
!context.clientOnly &&
|
|
155
|
+
!context.deferred &&
|
|
156
|
+
!addTypenameToDocument.added(field) &&
|
|
157
|
+
!policies.getReadFunction(typename, field.name.value)) {
|
|
158
|
+
__DEV__ && invariant.error("Missing field '".concat(resultKeyNameFromField(field), "' while writing result ").concat(JSON.stringify(result, null, 2)).substring(0, 1000));
|
|
159
159
|
}
|
|
160
160
|
});
|
|
161
|
+
try {
|
|
162
|
+
var _b = policies.identify(result, {
|
|
163
|
+
typename: typename,
|
|
164
|
+
selectionSet: selectionSet,
|
|
165
|
+
fragmentMap: context.fragmentMap,
|
|
166
|
+
storeObject: incoming,
|
|
167
|
+
readField: readField,
|
|
168
|
+
}), id = _b[0], keyObject = _b[1];
|
|
169
|
+
dataId = dataId || id;
|
|
170
|
+
if (keyObject) {
|
|
171
|
+
incoming = context.merge(incoming, keyObject);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
if (!dataId)
|
|
176
|
+
throw e;
|
|
177
|
+
}
|
|
161
178
|
if ("string" === typeof dataId) {
|
|
162
|
-
var
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
179
|
+
var dataRef = makeReference(dataId);
|
|
180
|
+
var sets = context.written[dataId] || (context.written[dataId] = []);
|
|
181
|
+
if (sets.indexOf(selectionSet) >= 0)
|
|
182
|
+
return dataRef;
|
|
183
|
+
sets.push(selectionSet);
|
|
184
|
+
if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {
|
|
185
|
+
return dataRef;
|
|
186
|
+
}
|
|
187
|
+
var previous_1 = context.incomingById.get(dataId);
|
|
188
|
+
if (previous_1) {
|
|
189
|
+
previous_1.storeObject = context.merge(previous_1.storeObject, incoming);
|
|
190
|
+
previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);
|
|
191
|
+
fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });
|
|
168
192
|
}
|
|
169
193
|
else {
|
|
170
194
|
context.incomingById.set(dataId, {
|
|
171
|
-
|
|
195
|
+
storeObject: incoming,
|
|
172
196
|
mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,
|
|
173
|
-
|
|
197
|
+
fieldNodeSet: fieldNodeSet,
|
|
174
198
|
});
|
|
175
199
|
}
|
|
176
|
-
return
|
|
200
|
+
return dataRef;
|
|
177
201
|
}
|
|
178
|
-
return
|
|
202
|
+
return incoming;
|
|
179
203
|
};
|
|
180
204
|
StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {
|
|
181
205
|
var _this = this;
|
|
@@ -196,6 +220,53 @@ var StoreWriter = (function () {
|
|
|
196
220
|
mergeTree: mergeTree,
|
|
197
221
|
});
|
|
198
222
|
};
|
|
223
|
+
StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {
|
|
224
|
+
if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }
|
|
225
|
+
var fieldMap = new Map();
|
|
226
|
+
var policies = this.cache.policies;
|
|
227
|
+
var limitingTrie = new Trie(false);
|
|
228
|
+
(function flatten(selectionSet, inheritedContext) {
|
|
229
|
+
var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);
|
|
230
|
+
if (visitedNode.visited)
|
|
231
|
+
return;
|
|
232
|
+
visitedNode.visited = true;
|
|
233
|
+
selectionSet.selections.forEach(function (selection) {
|
|
234
|
+
if (!shouldInclude(selection, context.variables))
|
|
235
|
+
return;
|
|
236
|
+
var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;
|
|
237
|
+
if (!(clientOnly && deferred) &&
|
|
238
|
+
isNonEmptyArray(selection.directives)) {
|
|
239
|
+
selection.directives.forEach(function (dir) {
|
|
240
|
+
var name = dir.name.value;
|
|
241
|
+
if (name === "client")
|
|
242
|
+
clientOnly = true;
|
|
243
|
+
if (name === "defer") {
|
|
244
|
+
var args = argumentsObjectFromField(dir, context.variables);
|
|
245
|
+
if (!args || args.if !== false) {
|
|
246
|
+
deferred = true;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (isField(selection)) {
|
|
252
|
+
var existing = fieldMap.get(selection);
|
|
253
|
+
if (existing) {
|
|
254
|
+
clientOnly = clientOnly && existing.clientOnly;
|
|
255
|
+
deferred = deferred && existing.deferred;
|
|
256
|
+
}
|
|
257
|
+
fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
var fragment = getFragmentFromSelection(selection, context.fragmentMap);
|
|
261
|
+
if (fragment &&
|
|
262
|
+
policies.fragmentMatches(fragment, typename, result, context.variables)) {
|
|
263
|
+
flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
})(selectionSet, context);
|
|
268
|
+
return fieldMap;
|
|
269
|
+
};
|
|
199
270
|
StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {
|
|
200
271
|
var _a;
|
|
201
272
|
var _this = this;
|
|
@@ -307,7 +378,7 @@ function warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {
|
|
|
307
378
|
var parentType = store.getFieldValue(existingRef, "__typename") ||
|
|
308
379
|
store.getFieldValue(incomingObj, "__typename");
|
|
309
380
|
var fieldName = fieldNameFromStoreName(storeFieldName);
|
|
310
|
-
var typeDotName = parentType
|
|
381
|
+
var typeDotName = "".concat(parentType, ".").concat(fieldName);
|
|
311
382
|
if (warnings.has(typeDotName))
|
|
312
383
|
return;
|
|
313
384
|
warnings.add(typeDotName);
|
|
@@ -322,9 +393,9 @@ function warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {
|
|
|
322
393
|
}
|
|
323
394
|
});
|
|
324
395
|
}
|
|
325
|
-
__DEV__ && invariant.warn("Cache data may be lost when replacing the "
|
|
396
|
+
__DEV__ && invariant.warn("Cache data may be lost when replacing the ".concat(fieldName, " field of a ").concat(parentType, " object.\n\nTo address this problem (which is not a bug in Apollo Client), ").concat(childTypenames.length
|
|
326
397
|
? "either ensure all objects of type " +
|
|
327
398
|
childTypenames.join(" and ") + " have an ID or a custom merge function, or "
|
|
328
|
-
: ""
|
|
399
|
+
: "", "define a custom merge function for the ").concat(typeDotName, " field, so InMemoryCache can safely merge these objects:\n\n existing: ").concat(JSON.stringify(existing).slice(0, 1000), "\n incoming: ").concat(JSON.stringify(incoming).slice(0, 1000), "\n\nFor more information about these options, please refer to the documentation:\n\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\n"));
|
|
329
400
|
}
|
|
330
401
|
//# sourceMappingURL=writeToStore.js.map
|