UNPKG

@apollo/client

Version:

A fully-featured caching GraphQL client.

129 lines (128 loc) 5.47 kB
import { __DEV__ } from "@apollo/client/utilities/environment"; import { cacheSizes } from "../caching/sizes.js"; const globalCaches = {}; export function registerGlobalCache(name, getSize) { globalCaches[name] = getSize; } /** * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead * @internal * * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time. */ export const getApolloClientMemoryInternals = __DEV__ ? _getApolloClientMemoryInternals : undefined; /** * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead * @internal * * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time. */ export const getInMemoryCacheMemoryInternals = __DEV__ ? _getInMemoryCacheMemoryInternals : undefined; /** * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead * @internal * * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time. */ export const getApolloCacheMemoryInternals = __DEV__ ? _getApolloCacheMemoryInternals : undefined; function getCurrentCacheSizes() { // `defaultCacheSizes` is a `const enum` that will be inlined during build, so we have to reconstruct it's shape here const defaults = { canonicalStringify: 1000 /* defaultCacheSizes["canonicalStringify"] */, checkDocument: 2000 /* defaultCacheSizes["checkDocument"] */, print: 2000 /* defaultCacheSizes["print"] */, "documentTransform.cache": 2000 /* defaultCacheSizes["documentTransform.cache"] */, "queryManager.getDocumentInfo": 2000 /* defaultCacheSizes["queryManager.getDocumentInfo"] */, "PersistedQueryLink.persistedQueryHashes": 2000 /* defaultCacheSizes["PersistedQueryLink.persistedQueryHashes"] */, "fragmentRegistry.transform": 2000 /* defaultCacheSizes["fragmentRegistry.transform"] */, "fragmentRegistry.lookup": 1000 /* defaultCacheSizes["fragmentRegistry.lookup"] */, "fragmentRegistry.findFragmentSpreads": 4000 /* defaultCacheSizes["fragmentRegistry.findFragmentSpreads"] */, "cache.fragmentQueryDocuments": 1000 /* defaultCacheSizes["cache.fragmentQueryDocuments"] */, "removeTypenameFromVariables.getVariableDefinitions": 2000 /* defaultCacheSizes["removeTypenameFromVariables.getVariableDefinitions"] */, "inMemoryCache.maybeBroadcastWatch": 5000 /* defaultCacheSizes["inMemoryCache.maybeBroadcastWatch"] */, "inMemoryCache.executeSelectionSet": 50000 /* defaultCacheSizes["inMemoryCache.executeSelectionSet"] */, "inMemoryCache.executeSubSelectedArray": 10000 /* defaultCacheSizes["inMemoryCache.executeSubSelectedArray"] */, }; return Object.fromEntries(Object.entries(defaults).map(([k, v]) => [ k, cacheSizes[k] || v, ])); } function _getApolloClientMemoryInternals() { if (!__DEV__) throw new Error("only supported in development mode"); return { limits: getCurrentCacheSizes(), sizes: { print: globalCaches.print?.(), canonicalStringify: globalCaches.canonicalStringify?.(), links: linkInfo(this.link), queryManager: { getDocumentInfo: this["queryManager"]["transformCache"].size, documentTransforms: transformInfo(this["queryManager"].documentTransform), }, ...this.cache.getMemoryInternals?.(), }, }; } function _getApolloCacheMemoryInternals() { return { cache: { fragmentQueryDocuments: getWrapperInformation(this["getFragmentDoc"]), }, }; } function _getInMemoryCacheMemoryInternals() { const fragments = this.config.fragments; return { ..._getApolloCacheMemoryInternals.apply(this), addTypenameDocumentTransform: transformInfo(this["addTypenameTransform"]), inMemoryCache: { executeSelectionSet: getWrapperInformation(this["storeReader"]["executeSelectionSet"]), executeSubSelectedArray: getWrapperInformation(this["storeReader"]["executeSubSelectedArray"]), maybeBroadcastWatch: getWrapperInformation(this["maybeBroadcastWatch"]), }, fragmentRegistry: { findFragmentSpreads: getWrapperInformation(fragments?.findFragmentSpreads), lookup: getWrapperInformation(fragments?.lookup), transform: getWrapperInformation(fragments?.transform), }, }; } function isWrapper(f) { return !!f && "dirtyKey" in f; } function getWrapperInformation(f) { return isWrapper(f) ? f.size : undefined; } function isDefined(value) { return value != null; } function transformInfo(transform) { return recurseTransformInfo(transform).map((cache) => ({ cache })); } function recurseTransformInfo(transform) { return transform ? [ getWrapperInformation(transform?.["performWork"]), ...recurseTransformInfo(transform?.["left"]), ...recurseTransformInfo(transform?.["right"]), ].filter(isDefined) : []; } function linkInfo(link) { return link ? [ link?.getMemoryInternals?.(), ...linkInfo(link?.left), ...linkInfo(link?.right), ].filter(isDefined) : []; } //# sourceMappingURL=getMemoryInternals.js.map