@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
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { invariant } from "../../utilities/globals/index.js";
|
|
2
|
+
import { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from "../../utilities/index.js";
|
|
3
|
+
import { hasOwn } from "./helpers.js";
|
|
4
|
+
var specifierInfoCache = Object.create(null);
|
|
5
|
+
function lookupSpecifierInfo(spec) {
|
|
6
|
+
var cacheKey = JSON.stringify(spec);
|
|
7
|
+
return specifierInfoCache[cacheKey] ||
|
|
8
|
+
(specifierInfoCache[cacheKey] = Object.create(null));
|
|
9
|
+
}
|
|
10
|
+
export function keyFieldsFnFromSpecifier(specifier) {
|
|
11
|
+
var info = lookupSpecifierInfo(specifier);
|
|
12
|
+
return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {
|
|
13
|
+
var extract = function (from, key) { return context.readField(key, from); };
|
|
14
|
+
var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {
|
|
15
|
+
var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);
|
|
16
|
+
if (extracted === void 0 &&
|
|
17
|
+
object !== context.storeObject &&
|
|
18
|
+
hasOwn.call(object, schemaKeyPath[0])) {
|
|
19
|
+
extracted = extractKeyPath(object, schemaKeyPath, extractKey);
|
|
20
|
+
}
|
|
21
|
+
__DEV__ ? invariant(extracted !== void 0, "Missing field '".concat(schemaKeyPath.join('.'), "' while extracting keyFields from ").concat(JSON.stringify(object))) : invariant(extracted !== void 0, 2);
|
|
22
|
+
return extracted;
|
|
23
|
+
});
|
|
24
|
+
return "".concat(context.typename, ":").concat(JSON.stringify(keyObject));
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export function keyArgsFnFromSpecifier(specifier) {
|
|
28
|
+
var info = lookupSpecifierInfo(specifier);
|
|
29
|
+
return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {
|
|
30
|
+
var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;
|
|
31
|
+
var collected = collectSpecifierPaths(specifier, function (keyPath) {
|
|
32
|
+
var firstKey = keyPath[0];
|
|
33
|
+
var firstChar = firstKey.charAt(0);
|
|
34
|
+
if (firstChar === "@") {
|
|
35
|
+
if (field && isNonEmptyArray(field.directives)) {
|
|
36
|
+
var directiveName_1 = firstKey.slice(1);
|
|
37
|
+
var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });
|
|
38
|
+
var directiveArgs = d && argumentsObjectFromField(d, variables);
|
|
39
|
+
return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (firstChar === "$") {
|
|
44
|
+
var variableName = firstKey.slice(1);
|
|
45
|
+
if (variables && hasOwn.call(variables, variableName)) {
|
|
46
|
+
var varKeyPath = keyPath.slice(0);
|
|
47
|
+
varKeyPath[0] = variableName;
|
|
48
|
+
return extractKeyPath(variables, varKeyPath);
|
|
49
|
+
}
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (args) {
|
|
53
|
+
return extractKeyPath(args, keyPath);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
var suffix = JSON.stringify(collected);
|
|
57
|
+
if (args || suffix !== "{}") {
|
|
58
|
+
fieldName += ":" + suffix;
|
|
59
|
+
}
|
|
60
|
+
return fieldName;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
export function collectSpecifierPaths(specifier, extractor) {
|
|
64
|
+
var merger = new DeepMerger;
|
|
65
|
+
return getSpecifierPaths(specifier).reduce(function (collected, path) {
|
|
66
|
+
var _a;
|
|
67
|
+
var toMerge = extractor(path);
|
|
68
|
+
if (toMerge !== void 0) {
|
|
69
|
+
for (var i = path.length - 1; i >= 0; --i) {
|
|
70
|
+
toMerge = (_a = {}, _a[path[i]] = toMerge, _a);
|
|
71
|
+
}
|
|
72
|
+
collected = merger.merge(collected, toMerge);
|
|
73
|
+
}
|
|
74
|
+
return collected;
|
|
75
|
+
}, Object.create(null));
|
|
76
|
+
}
|
|
77
|
+
export function getSpecifierPaths(spec) {
|
|
78
|
+
var info = lookupSpecifierInfo(spec);
|
|
79
|
+
if (!info.paths) {
|
|
80
|
+
var paths_1 = info.paths = [];
|
|
81
|
+
var currentPath_1 = [];
|
|
82
|
+
spec.forEach(function (s, i) {
|
|
83
|
+
if (Array.isArray(s)) {
|
|
84
|
+
getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });
|
|
85
|
+
currentPath_1.length = 0;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
currentPath_1.push(s);
|
|
89
|
+
if (!Array.isArray(spec[i + 1])) {
|
|
90
|
+
paths_1.push(currentPath_1.slice(0));
|
|
91
|
+
currentPath_1.length = 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return info.paths;
|
|
97
|
+
}
|
|
98
|
+
function extractKey(object, key) {
|
|
99
|
+
return object[key];
|
|
100
|
+
}
|
|
101
|
+
export function extractKeyPath(object, path, extract) {
|
|
102
|
+
extract = extract || extractKey;
|
|
103
|
+
return normalize(path.reduce(function reducer(obj, key) {
|
|
104
|
+
return Array.isArray(obj)
|
|
105
|
+
? obj.map(function (child) { return reducer(child, key); })
|
|
106
|
+
: obj && extract(obj, key);
|
|
107
|
+
}, object));
|
|
108
|
+
}
|
|
109
|
+
function normalize(value) {
|
|
110
|
+
if (isNonNullObject(value)) {
|
|
111
|
+
if (Array.isArray(value)) {
|
|
112
|
+
return value.map(normalize);
|
|
113
|
+
}
|
|
114
|
+
return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });
|
|
115
|
+
}
|
|
116
|
+
return value;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=key-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-extractor.js","sourceRoot":"","sources":["../../../src/cache/inmemory/key-extractor.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from \"../../utilities/globals\";\n\nimport {\n argumentsObjectFromField,\n DeepMerger,\n isNonEmptyArray,\n isNonNullObject,\n} from \"../../utilities\";\n\nimport { hasOwn } from \"./helpers\";\nimport {\n KeySpecifier,\n KeyFieldsFunction,\n KeyArgsFunction,\n} from \"./policies\";\n\n// Mapping from JSON-encoded KeySpecifier strings to associated information.\nconst specifierInfoCache: Record<string, {\n paths?: string[][];\n keyFieldsFn?: KeyFieldsFunction;\n keyArgsFn?: KeyArgsFunction;\n}> = Object.create(null);\n\nfunction lookupSpecifierInfo(spec: KeySpecifier) {\n // It's safe to encode KeySpecifier arrays with JSON.stringify, since they're\n // just arrays of strings or nested KeySpecifier arrays, and the order of the\n // array elements is important (and suitably preserved by JSON.stringify).\n const cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null));\n}\n\nexport function keyFieldsFnFromSpecifier(\n specifier: KeySpecifier,\n): KeyFieldsFunction {\n const info = lookupSpecifierInfo(specifier);\n\n return info.keyFieldsFn || (info.keyFieldsFn = (\n object,\n context,\n ) => {\n const extract: typeof extractKey =\n (from, key) => context.readField(key, from);\n\n const keyObject = context.keyObject = collectSpecifierPaths(\n specifier,\n schemaKeyPath => {\n let extracted = extractKeyPath(\n context.storeObject,\n schemaKeyPath,\n // Using context.readField to extract paths from context.storeObject\n // allows the extraction to see through Reference objects and respect\n // custom read functions.\n extract,\n );\n\n if (\n extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])\n ) {\n // If context.storeObject fails to provide a value for the requested\n // path, fall back to the raw result object, if it has a top-level key\n // matching the first key in the path (schemaKeyPath[0]). This allows\n // key fields included in the written data to be saved in the cache\n // even if they are not selected explicitly in context.selectionSet.\n // Not being mentioned by context.selectionSet is convenient here,\n // since it means these extra fields cannot be affected by field\n // aliasing, which is why we can use extractKey instead of\n // context.readField for this extraction.\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n\n invariant(\n extracted !== void 0,\n `Missing field '${schemaKeyPath.join('.')}' while extracting keyFields from ${\n JSON.stringify(object)\n }`,\n );\n\n return extracted;\n },\n );\n\n return `${context.typename}:${JSON.stringify(keyObject)}`;\n });\n}\n\n// The keyArgs extraction process is roughly analogous to keyFields extraction,\n// but there are no aliases involved, missing fields are tolerated (by merely\n// omitting them from the key), and drawing from field.directives or variables\n// is allowed (in addition to drawing from the field's arguments object).\n// Concretely, these differences mean passing a different key path extractor\n// function to collectSpecifierPaths, reusing the shared extractKeyPath helper\n// wherever possible.\nexport function keyArgsFnFromSpecifier(specifier: KeySpecifier): KeyArgsFunction {\n const info = lookupSpecifierInfo(specifier);\n\n return info.keyArgsFn || (info.keyArgsFn = (args, {\n field,\n variables,\n fieldName,\n }) => {\n const collected = collectSpecifierPaths(specifier, keyPath => {\n const firstKey = keyPath[0];\n const firstChar = firstKey.charAt(0);\n\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n const directiveName = firstKey.slice(1);\n // If the directive appears multiple times, only the first\n // occurrence's arguments will be used. TODO Allow repetition?\n // TODO Cache this work somehow, a la aliasMap?\n const d = field.directives.find(d => d.name.value === directiveName);\n // Fortunately argumentsObjectFromField works for DirectiveNode!\n const directiveArgs = d && argumentsObjectFromField(d, variables);\n // For directives without arguments (d defined, but directiveArgs ===\n // null), the presence or absence of the directive still counts as\n // part of the field key, so we return null in those cases. If no\n // directive with this name was found for this field (d undefined and\n // thus directiveArgs undefined), we return undefined, which causes\n // this value to be omitted from the key object returned by\n // collectSpecifierPaths.\n return directiveArgs && extractKeyPath(\n directiveArgs,\n // If keyPath.length === 1, this code calls extractKeyPath with an\n // empty path, which works because it uses directiveArgs as the\n // extracted value.\n keyPath.slice(1),\n );\n }\n // If the key started with @ but there was no corresponding directive,\n // we want to omit this value from the key object, not fall through to\n // treating @whatever as a normal argument name.\n return;\n }\n\n if (firstChar === \"$\") {\n const variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n const varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n // If the key started with $ but there was no corresponding variable, we\n // want to omit this value from the key object, not fall through to\n // treating $whatever as a normal argument name.\n return;\n }\n\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n\n const suffix = JSON.stringify(collected);\n\n // If no arguments were passed to this field, and it didn't have any other\n // field key contributions from directives or variables, hide the empty\n // :{} suffix from the field key. However, a field passed no arguments can\n // still end up with a non-empty :{...} suffix if its key configuration\n // refers to directives or variables.\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n\n return fieldName;\n });\n}\n\nexport function collectSpecifierPaths(\n specifier: KeySpecifier,\n extractor: (path: string[]) => any,\n): Record<string, any> {\n // For each path specified by specifier, invoke the extractor, and repeatedly\n // merge the results together, with appropriate ancestor context.\n const merger = new DeepMerger;\n return getSpecifierPaths(specifier).reduce((collected, path) => {\n let toMerge = extractor(path);\n if (toMerge !== void 0) {\n // This path is not expected to contain array indexes, so the toMerge\n // reconstruction will not contain arrays. TODO Fix this?\n for (let i = path.length - 1; i >= 0; --i) {\n toMerge = { [path[i]]: toMerge };\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\n\nexport function getSpecifierPaths(spec: KeySpecifier): string[][] {\n const info = lookupSpecifierInfo(spec);\n\n if (!info.paths) {\n const paths: string[][] = info.paths = [];\n const currentPath: string[] = [];\n\n spec.forEach((s, i) => {\n if (Array.isArray(s)) {\n getSpecifierPaths(s).forEach(p => paths.push(currentPath.concat(p)));\n currentPath.length = 0;\n } else {\n currentPath.push(s);\n if (!Array.isArray(spec[i + 1])) {\n paths.push(currentPath.slice(0));\n currentPath.length = 0;\n }\n }\n });\n }\n\n return info.paths!;\n}\n\nfunction extractKey<\n TObj extends Record<string, any>,\n TKey extends string,\n>(object: TObj, key: TKey): TObj[TKey] | undefined {\n return object[key];\n}\n\nexport function extractKeyPath(\n object: Record<string, any>,\n path: string[],\n extract?: typeof extractKey,\n): any {\n // For each key in path, extract the corresponding child property from obj,\n // flattening arrays if encountered (uncommon for keyFields and keyArgs, but\n // possible). The final result of path.reduce is normalized so unexpected leaf\n // objects have their keys safely sorted. That final result is difficult to\n // type as anything other than any. You're welcome to try to improve the\n // return type, but keep in mind extractKeyPath is not a public function\n // (exported only for testing), so the effort may not be worthwhile unless the\n // limited set of actual callers (see above) pass arguments that TypeScript\n // can statically type. If we know only that path is some array of strings\n // (and not, say, a specific tuple of statically known strings), any (or\n // possibly unknown) is the honest answer.\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key): any {\n return Array.isArray(obj)\n ? obj.map(child => reducer(child, key))\n : obj && extract!(obj, key);\n }, object));\n}\n\nfunction normalize<T>(value: T): T {\n // Usually the extracted value will be a scalar value, since most primary\n // key fields are scalar, but just in case we get an object or an array, we\n // need to do some normalization of the order of (nested) keys.\n if (isNonNullObject(value)) {\n if (Array.isArray(value)) {\n return value.map(normalize) as any;\n }\n return collectSpecifierPaths(\n Object.keys(value).sort(),\n path => extractKeyPath(value, path),\n ) as T;\n }\n return value;\n}\n"]}
|
|
@@ -7,9 +7,11 @@ import { WriteContext } from './writeToStore';
|
|
|
7
7
|
export declare type TypePolicies = {
|
|
8
8
|
[__typename: string]: TypePolicy;
|
|
9
9
|
};
|
|
10
|
-
declare type KeySpecifier = (string |
|
|
10
|
+
export declare type KeySpecifier = (string | KeySpecifier)[];
|
|
11
11
|
export declare type KeyFieldsContext = {
|
|
12
|
-
typename
|
|
12
|
+
typename: string | undefined;
|
|
13
|
+
storeObject: StoreObject;
|
|
14
|
+
readField: ReadFieldFunction;
|
|
13
15
|
selectionSet?: SelectionSetNode;
|
|
14
16
|
fragmentMap?: FragmentMap;
|
|
15
17
|
keyObject?: Record<string, any>;
|
|
@@ -73,7 +75,7 @@ export declare class Policies {
|
|
|
73
75
|
possibleTypes?: PossibleTypesMap;
|
|
74
76
|
typePolicies?: TypePolicies;
|
|
75
77
|
});
|
|
76
|
-
identify(object: StoreObject,
|
|
78
|
+
identify(object: StoreObject, partialContext?: Partial<KeyFieldsContext>): [string?, StoreObject?];
|
|
77
79
|
addTypePolicies(typePolicies: TypePolicies): void;
|
|
78
80
|
private updateTypePolicy;
|
|
79
81
|
private setRootTypename;
|
|
@@ -85,8 +87,10 @@ export declare class Policies {
|
|
|
85
87
|
hasKeyArgs(typename: string | undefined, fieldName: string): boolean;
|
|
86
88
|
getStoreFieldName(fieldSpec: FieldSpecifier): string;
|
|
87
89
|
readField<V = StoreValue>(options: ReadFieldOptions, context: ReadMergeModifyContext): SafeReadonly<V> | undefined;
|
|
90
|
+
getReadFunction(typename: string | undefined, fieldName: string): FieldReadFunction | undefined;
|
|
88
91
|
getMergeFunction(parentTypename: string | undefined, fieldName: string, childTypename: string | undefined): FieldMergeFunction | undefined;
|
|
89
92
|
runMergeFunction(existing: StoreValue, incoming: StoreValue, { field, typename, merge }: MergeInfo, context: WriteContext, storage?: StorageType): any;
|
|
90
93
|
}
|
|
94
|
+
export declare function normalizeReadFieldOptions(readFieldArgs: IArguments, objectOrReference: StoreObject | Reference | undefined, variables?: ReadMergeModifyContext["variables"]): ReadFieldOptions;
|
|
91
95
|
export {};
|
|
92
96
|
//# sourceMappingURL=policies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/cache/inmemory/policies.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACV,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/cache/inmemory/policies.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,WAAW,EAEX,UAAU,EACV,WAAW,EAEX,SAAS,EACT,WAAW,EAIZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,QAAQ,EACR,SAAS,EAET,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAUjB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C,oBAAY,YAAY,GAAG;IACzB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC;CAClC,CAAA;AAID,oBAAY,YAAY,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;AAErD,oBAAY,gBAAgB,GAAG;IAI7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAI7B,WAAW,EAAE,WAAW,CAAC;IAMzB,SAAS,EAAE,iBAAiB,CAAC;IAa7B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAI1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC,CAAC;AAEF,oBAAY,iBAAiB,GAAG,CAC9B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,OAAO,EAAE,gBAAgB,KACtB,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAMjD,oBAAY,UAAU,GAAG;IAGvB,SAAS,CAAC,EAAE,YAAY,GAAG,iBAAiB,GAAG,KAAK,CAAC;IASrD,KAAK,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAKrC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,IAAI,CAAC;IAExB,MAAM,CAAC,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GACd,WAAW,CAAC,GAAG,CAAC,GAChB,iBAAiB,CAAC,GAAG,CAAC,CAAC;KAC5B,CAAA;CACF,CAAC;AAEF,oBAAY,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAChC,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC,KACE,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEjD,oBAAY,WAAW,CAIrB,SAAS,GAAG,GAAG,EAKf,SAAS,GAAG,SAAS,EAGrB,WAAW,GAAG,SAAS,EAGvB,QAAQ,SAAS,oBAAoB,GAAG,oBAAoB,IAC1D;IACF,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,KAAK,CAAC;IACjD,IAAI,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC;CACtE,CAAC;AAEF,oBAAY,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAO9C,MAAM,WAAW,oBAAoB,CACnC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAE3B,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAMnB,SAAS,EAAE,MAAM,CAAC;IAGlB,cAAc,EAAE,MAAM,CAAC;IAKvB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB,SAAS,CAAC,EAAE,KAAK,CAAC;IAGlB,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,WAAW,EAAE,mBAAmB,CAAC;IAKjC,OAAO,EAAE,WAAW,CAAC;IAErB,KAAK,EAAE,aAAa,CAAC;IAWrB,SAAS,EAAE,iBAAiB,CAAC;IAK7B,OAAO,EAAE,eAAe,CAAC;IAKzB,YAAY,EAAE,oBAAoB,CAAC;CACpC;AAED,aAAK,oBAAoB,GAAG,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,EAC5D,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,KACR,CAAC,CAAC;AAEP,oBAAY,iBAAiB,CAC3B,SAAS,GAAG,GAAG,EACf,WAAW,GAAG,SAAS,EACvB,QAAQ,SAAS,oBAAoB,GAAG,oBAAoB,IAC1D,CASF,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,EAC7C,OAAO,EAAE,QAAQ,KACd,WAAW,GAAG,SAAS,CAAC;AAE7B,oBAAY,kBAAkB,CAC5B,SAAS,GAAG,GAAG,EACf,SAAS,GAAG,SAAS,EAGrB,QAAQ,SAAS,oBAAoB,GAAG,oBAAoB,IAC1D,CACF,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,EAG7C,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EACjC,OAAO,EAAE,QAAQ,KACd,YAAY,CAAC,SAAS,CAAC,CAAC;AAW7B,oBAAY,gBAAgB,GAAG;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,qBAAa,QAAQ;IAsCP,OAAO,CAAC,MAAM;IArC1B,OAAO,CAAC,YAAY,CAYI;IAExB,OAAO,CAAC,SAAS,CAEO;IAMxB,OAAO,CAAC,YAAY,CAAkC;IAMtD,OAAO,CAAC,aAAa,CAA6B;IAElD,SAAgB,KAAK,EAAE,aAAa,CAAC;IAErC,SAAgB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAuB;IAChF,SAAgB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAuB;IAEhF,SAAgB,kBAAkB,SAAS;gBAEvB,MAAM,EAAE;QAC1B,KAAK,EAAE,aAAa,CAAC;QACrB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;QACrC,aAAa,CAAC,EAAE,gBAAgB,CAAC;QACjC,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;IAqBM,QAAQ,CACb,MAAM,EAAE,WAAW,EACnB,cAAc,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACzC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAmDnB,eAAe,CAAC,YAAY,EAAE,YAAY;IAmCjD,OAAO,CAAC,gBAAgB;IA2ExB,OAAO,CAAC,eAAe;IAkBhB,gBAAgB,CAAC,aAAa,EAAE,gBAAgB;IAmBvD,OAAO,CAAC,aAAa;IAiDrB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,eAAe;IAWhB,eAAe,CACpB,QAAQ,EAAE,kBAAkB,GAAG,sBAAsB,EACrD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,OAAO;IAsFH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM;IAK1D,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM;IA+CpD,SAAS,CAAC,CAAC,GAAG,UAAU,EAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,sBAAsB,GAC9B,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IA2CvB,eAAe,CACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAChB,iBAAiB,GAAG,SAAS;IAKzB,gBAAgB,CACrB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,kBAAkB,GAAG,SAAS;IAc1B,gBAAgB,CACrB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,UAAU,EACpB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EACrC,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,WAAW;CA+CxB;AAmCD,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,UAAU,EACzB,iBAAiB,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,EACtD,SAAS,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,GAC9C,gBAAgB,CAqClB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __assign, __rest } from "tslib";
|
|
2
2
|
import { invariant, InvariantError } from "../../utilities/globals/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import { getFragmentFromSelection, isField, getTypenameFromResult, storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, canUseWeakMap, isNonNullObject, stringifyForDisplay, } from "../../utilities/index.js";
|
|
3
|
+
import { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from "../../utilities/index.js";
|
|
5
4
|
import { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, } from "./helpers.js";
|
|
6
5
|
import { cacheSlot } from "./reactiveVars.js";
|
|
7
6
|
import { canonicalStringify } from "./object-canon.js";
|
|
7
|
+
import { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from "./key-extractor.js";
|
|
8
8
|
getStoreKeyName.setStringify(canonicalStringify);
|
|
9
9
|
function argsFromFieldSpecifier(spec) {
|
|
10
10
|
return spec.args !== void 0 ? spec.args :
|
|
@@ -39,18 +39,22 @@ var Policies = (function () {
|
|
|
39
39
|
this.addTypePolicies(config.typePolicies);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
Policies.prototype.identify = function (object,
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
Policies.prototype.identify = function (object, partialContext) {
|
|
43
|
+
var _a;
|
|
44
|
+
var policies = this;
|
|
45
|
+
var typename = partialContext && (partialContext.typename ||
|
|
46
|
+
((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;
|
|
46
47
|
if (typename === this.rootTypenamesById.ROOT_QUERY) {
|
|
47
48
|
return ["ROOT_QUERY"];
|
|
48
49
|
}
|
|
49
|
-
var
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
var storeObject = partialContext && partialContext.storeObject || object;
|
|
51
|
+
var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {
|
|
52
|
+
var options = normalizeReadFieldOptions(arguments, storeObject);
|
|
53
|
+
return policies.readField(options, {
|
|
54
|
+
store: policies.cache["data"],
|
|
55
|
+
variables: options.variables,
|
|
56
|
+
});
|
|
57
|
+
} });
|
|
54
58
|
var id;
|
|
55
59
|
var policy = typename && this.getTypePolicy(typename);
|
|
56
60
|
var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;
|
|
@@ -132,7 +136,7 @@ var Policies = (function () {
|
|
|
132
136
|
var rootId = "ROOT_" + which.toUpperCase();
|
|
133
137
|
var old = this.rootTypenamesById[rootId];
|
|
134
138
|
if (typename !== old) {
|
|
135
|
-
__DEV__ ? invariant(!old || old === which, "Cannot change root "
|
|
139
|
+
__DEV__ ? invariant(!old || old === which, "Cannot change root ".concat(which, " __typename more than once")) : invariant(!old || old === which, 3);
|
|
136
140
|
if (old)
|
|
137
141
|
delete this.rootIdsByTypename[old];
|
|
138
142
|
this.rootIdsByTypename[typename] = rootId;
|
|
@@ -216,7 +220,7 @@ var Policies = (function () {
|
|
|
216
220
|
if (supertypeSet.has(supertype)) {
|
|
217
221
|
if (!typenameSupertypeSet.has(supertype)) {
|
|
218
222
|
if (checkingFuzzySubtypes) {
|
|
219
|
-
__DEV__ && invariant.warn("Inferring subtype "
|
|
223
|
+
__DEV__ && invariant.warn("Inferring subtype ".concat(typename, " of supertype ").concat(supertype));
|
|
220
224
|
}
|
|
221
225
|
typenameSupertypeSet.add(supertype);
|
|
222
226
|
}
|
|
@@ -304,6 +308,10 @@ var Policies = (function () {
|
|
|
304
308
|
}
|
|
305
309
|
return existing;
|
|
306
310
|
};
|
|
311
|
+
Policies.prototype.getReadFunction = function (typename, fieldName) {
|
|
312
|
+
var policy = this.getFieldPolicy(typename, fieldName, false);
|
|
313
|
+
return policy && policy.read;
|
|
314
|
+
};
|
|
307
315
|
Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {
|
|
308
316
|
var policy = this.getFieldPolicy(parentTypename, fieldName, false);
|
|
309
317
|
var merge = policy && policy.merge;
|
|
@@ -345,39 +353,39 @@ function makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, contex
|
|
|
345
353
|
storage: storage,
|
|
346
354
|
cache: policies.cache,
|
|
347
355
|
canRead: canRead,
|
|
348
|
-
readField: function (
|
|
349
|
-
|
|
350
|
-
if (typeof fieldNameOrOptions === "string") {
|
|
351
|
-
options = {
|
|
352
|
-
fieldName: fieldNameOrOptions,
|
|
353
|
-
from: arguments.length > 1 ? from : objectOrReference,
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
else if (isNonNullObject(fieldNameOrOptions)) {
|
|
357
|
-
options = __assign({}, fieldNameOrOptions);
|
|
358
|
-
if (!hasOwn.call(fieldNameOrOptions, "from")) {
|
|
359
|
-
options.from = objectOrReference;
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
else {
|
|
363
|
-
__DEV__ && invariant.warn("Unexpected readField arguments: " + stringifyForDisplay(Array.from(arguments)));
|
|
364
|
-
return;
|
|
365
|
-
}
|
|
366
|
-
if (__DEV__ && options.from === void 0) {
|
|
367
|
-
__DEV__ && invariant.warn("Undefined 'from' passed to readField with arguments " + stringifyForDisplay(Array.from(arguments)));
|
|
368
|
-
}
|
|
369
|
-
if (void 0 === options.variables) {
|
|
370
|
-
options.variables = variables;
|
|
371
|
-
}
|
|
372
|
-
return policies.readField(options, context);
|
|
356
|
+
readField: function () {
|
|
357
|
+
return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, context), context);
|
|
373
358
|
},
|
|
374
359
|
mergeObjects: makeMergeObjectsFunction(context.store),
|
|
375
360
|
};
|
|
376
361
|
}
|
|
362
|
+
export function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {
|
|
363
|
+
var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;
|
|
364
|
+
var options;
|
|
365
|
+
if (typeof fieldNameOrOptions === "string") {
|
|
366
|
+
options = {
|
|
367
|
+
fieldName: fieldNameOrOptions,
|
|
368
|
+
from: argc > 1 ? from : objectOrReference,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
options = __assign({}, fieldNameOrOptions);
|
|
373
|
+
if (!hasOwn.call(options, "from")) {
|
|
374
|
+
options.from = objectOrReference;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
if (__DEV__ && options.from === void 0) {
|
|
378
|
+
__DEV__ && invariant.warn("Undefined 'from' passed to readField with arguments ".concat(stringifyForDisplay(Array.from(readFieldArgs))));
|
|
379
|
+
}
|
|
380
|
+
if (void 0 === options.variables) {
|
|
381
|
+
options.variables = variables;
|
|
382
|
+
}
|
|
383
|
+
return options;
|
|
384
|
+
}
|
|
377
385
|
function makeMergeObjectsFunction(store) {
|
|
378
386
|
return function mergeObjects(existing, incoming) {
|
|
379
387
|
if (Array.isArray(existing) || Array.isArray(incoming)) {
|
|
380
|
-
throw __DEV__ ? new InvariantError("Cannot automatically merge arrays") : new InvariantError(
|
|
388
|
+
throw __DEV__ ? new InvariantError("Cannot automatically merge arrays") : new InvariantError(4);
|
|
381
389
|
}
|
|
382
390
|
if (isNonNullObject(existing) &&
|
|
383
391
|
isNonNullObject(incoming)) {
|
|
@@ -405,83 +413,4 @@ function makeMergeObjectsFunction(store) {
|
|
|
405
413
|
return incoming;
|
|
406
414
|
};
|
|
407
415
|
}
|
|
408
|
-
function keyArgsFnFromSpecifier(specifier) {
|
|
409
|
-
return function (args, context) {
|
|
410
|
-
return args ? context.fieldName + ":" + JSON.stringify(computeKeyObject(args, specifier, false)) : context.fieldName;
|
|
411
|
-
};
|
|
412
|
-
}
|
|
413
|
-
function keyFieldsFnFromSpecifier(specifier) {
|
|
414
|
-
var trie = new Trie(canUseWeakMap);
|
|
415
|
-
return function (object, context) {
|
|
416
|
-
var aliasMap;
|
|
417
|
-
if (context.selectionSet && context.fragmentMap) {
|
|
418
|
-
var info = trie.lookupArray([
|
|
419
|
-
context.selectionSet,
|
|
420
|
-
context.fragmentMap,
|
|
421
|
-
]);
|
|
422
|
-
aliasMap = info.aliasMap || (info.aliasMap = makeAliasMap(context.selectionSet, context.fragmentMap));
|
|
423
|
-
}
|
|
424
|
-
var keyObject = context.keyObject =
|
|
425
|
-
computeKeyObject(object, specifier, true, aliasMap);
|
|
426
|
-
return context.typename + ":" + JSON.stringify(keyObject);
|
|
427
|
-
};
|
|
428
|
-
}
|
|
429
|
-
function makeAliasMap(selectionSet, fragmentMap) {
|
|
430
|
-
var map = Object.create(null);
|
|
431
|
-
var workQueue = new Set([selectionSet]);
|
|
432
|
-
workQueue.forEach(function (selectionSet) {
|
|
433
|
-
selectionSet.selections.forEach(function (selection) {
|
|
434
|
-
if (isField(selection)) {
|
|
435
|
-
if (selection.alias) {
|
|
436
|
-
var responseKey = selection.alias.value;
|
|
437
|
-
var storeKey = selection.name.value;
|
|
438
|
-
if (storeKey !== responseKey) {
|
|
439
|
-
var aliases = map.aliases || (map.aliases = Object.create(null));
|
|
440
|
-
aliases[storeKey] = responseKey;
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
if (selection.selectionSet) {
|
|
444
|
-
var subsets = map.subsets || (map.subsets = Object.create(null));
|
|
445
|
-
subsets[selection.name.value] =
|
|
446
|
-
makeAliasMap(selection.selectionSet, fragmentMap);
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
var fragment = getFragmentFromSelection(selection, fragmentMap);
|
|
451
|
-
if (fragment) {
|
|
452
|
-
workQueue.add(fragment.selectionSet);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
});
|
|
456
|
-
});
|
|
457
|
-
return map;
|
|
458
|
-
}
|
|
459
|
-
function computeKeyObject(response, specifier, strict, aliasMap) {
|
|
460
|
-
var keyObj = Object.create(null);
|
|
461
|
-
var lastResponseKey;
|
|
462
|
-
var lastActualKey;
|
|
463
|
-
specifier.forEach(function (s) {
|
|
464
|
-
if (Array.isArray(s)) {
|
|
465
|
-
if (typeof lastActualKey === "string" &&
|
|
466
|
-
typeof lastResponseKey === "string") {
|
|
467
|
-
var subsets = aliasMap && aliasMap.subsets;
|
|
468
|
-
var subset = subsets && subsets[lastActualKey];
|
|
469
|
-
keyObj[lastActualKey] =
|
|
470
|
-
computeKeyObject(response[lastResponseKey], s, strict, subset);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
else {
|
|
474
|
-
var aliases = aliasMap && aliasMap.aliases;
|
|
475
|
-
var responseName = aliases && aliases[s] || s;
|
|
476
|
-
if (hasOwn.call(response, responseName)) {
|
|
477
|
-
keyObj[lastActualKey = s] = response[lastResponseKey = responseName];
|
|
478
|
-
}
|
|
479
|
-
else {
|
|
480
|
-
__DEV__ ? invariant(!strict, "Missing field '" + responseName + "' while computing key fields") : invariant(!strict, 4);
|
|
481
|
-
lastResponseKey = lastActualKey = void 0;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
});
|
|
485
|
-
return keyObj;
|
|
486
|
-
}
|
|
487
416
|
//# sourceMappingURL=policies.js.map
|