From 7d8e18493cd13134726c6643cbf0fadb08be2d37 Mon Sep 17 00:00:00 2001 From: Lenz Weber-Tronic Date: Tue, 14 Nov 2023 15:17:33 +0100 Subject: [PATCH] `InMemoryCache.gc`: also trigger `FragmentRegistry.resetCaches` (#11355) --- .api-reports/api-report-cache.md | 2 ++ .api-reports/api-report-core.md | 2 ++ .api-reports/api-report-utilities.md | 2 ++ .api-reports/api-report.md | 2 ++ .changeset/violet-lions-draw.md | 5 +++++ .size-limit.cjs | 4 ++-- src/cache/inmemory/fragmentRegistry.ts | 1 + src/cache/inmemory/inMemoryCache.ts | 1 + 8 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 .changeset/violet-lions-draw.md diff --git a/.api-reports/api-report-cache.md b/.api-reports/api-report-cache.md index 5e2df27abe7..c84e7527da6 100644 --- a/.api-reports/api-report-cache.md +++ b/.api-reports/api-report-cache.md @@ -488,6 +488,8 @@ export interface FragmentRegistryAPI { // (undocumented) register(...fragments: DocumentNode[]): this; // (undocumented) + resetCaches(): void; + // (undocumented) transform(document: D): D; } diff --git a/.api-reports/api-report-core.md b/.api-reports/api-report-core.md index 8028536b8dd..f8c570ceebc 100644 --- a/.api-reports/api-report-core.md +++ b/.api-reports/api-report-core.md @@ -885,6 +885,8 @@ interface FragmentRegistryAPI { // (undocumented) register(...fragments: DocumentNode[]): this; // (undocumented) + resetCaches(): void; + // (undocumented) transform(document: D): D; } diff --git a/.api-reports/api-report-utilities.md b/.api-reports/api-report-utilities.md index 67a29e74257..93fab5008fc 100644 --- a/.api-reports/api-report-utilities.md +++ b/.api-reports/api-report-utilities.md @@ -1028,6 +1028,8 @@ interface FragmentRegistryAPI { // (undocumented) register(...fragments: DocumentNode[]): this; // (undocumented) + resetCaches(): void; + // (undocumented) transform(document: D): D; } diff --git a/.api-reports/api-report.md b/.api-reports/api-report.md index e02fd3d7b75..71c954da766 100644 --- a/.api-reports/api-report.md +++ b/.api-reports/api-report.md @@ -1057,6 +1057,8 @@ interface FragmentRegistryAPI { // (undocumented) register(...fragments: DocumentNode[]): this; // (undocumented) + resetCaches(): void; + // (undocumented) transform(document: D): D; } diff --git a/.changeset/violet-lions-draw.md b/.changeset/violet-lions-draw.md new file mode 100644 index 00000000000..6e5d046a6c9 --- /dev/null +++ b/.changeset/violet-lions-draw.md @@ -0,0 +1,5 @@ +--- +"@apollo/client": patch +--- + +InMemoryCache.gc now also triggers FragmentRegistry.resetCaches (if there is a FragmentRegistry) diff --git a/.size-limit.cjs b/.size-limit.cjs index f4ad9acaf4b..63819405fd1 100644 --- a/.size-limit.cjs +++ b/.size-limit.cjs @@ -1,7 +1,7 @@ const checks = [ { path: "dist/apollo-client.min.cjs", - limit: "38142", + limit: "38164", }, { path: "dist/main.cjs", @@ -10,7 +10,7 @@ const checks = [ { path: "dist/index.js", import: "{ ApolloClient, InMemoryCache, HttpLink }", - limit: "32167", + limit: "32188", }, ...[ "ApolloProvider", diff --git a/src/cache/inmemory/fragmentRegistry.ts b/src/cache/inmemory/fragmentRegistry.ts index 0832e6a7934..f7db169e3b0 100644 --- a/src/cache/inmemory/fragmentRegistry.ts +++ b/src/cache/inmemory/fragmentRegistry.ts @@ -16,6 +16,7 @@ export interface FragmentRegistryAPI { register(...fragments: DocumentNode[]): this; lookup(fragmentName: string): FragmentDefinitionNode | null; transform(document: D): D; + resetCaches(): void; } // As long as createFragmentRegistry is not imported or used, the diff --git a/src/cache/inmemory/inMemoryCache.ts b/src/cache/inmemory/inMemoryCache.ts index 1cce80d023b..a14090acf1d 100644 --- a/src/cache/inmemory/inMemoryCache.ts +++ b/src/cache/inmemory/inMemoryCache.ts @@ -296,6 +296,7 @@ export class InMemoryCache extends ApolloCache { canonicalStringify.reset(); print.reset(); this.addTypenameTransform.resetCache(); + this.config.fragments?.resetCaches(); const ids = this.optimisticData.gc(); if (options && !this.txCount) { if (options.resetResultCache) {