diff --git a/src/Cache.ts b/src/Cache.ts index 7a425cce..e9f32ca8 100644 --- a/src/Cache.ts +++ b/src/Cache.ts @@ -4,16 +4,18 @@ import { ApolloPersistOptions, PersistedData } from './types'; export default class Cache { cache: ApolloCache; serialize: boolean; + includeOptimistic: boolean; - constructor(options: Pick, 'cache' | 'serialize'>) { - const { cache, serialize = true } = options; + constructor(options: Pick, 'cache' | 'serialize' | 'includeOptimistic'>) { + const { cache, serialize = true, includeOptimistic = false } = options; this.cache = cache; this.serialize = serialize; + this.includeOptimistic = includeOptimistic; } extract(): PersistedData { - let data: PersistedData = this.cache.extract() as T; + let data: PersistedData = this.cache.extract(this.includeOptimistic) as T; if (this.serialize) { data = JSON.stringify(data) as string; diff --git a/src/__mocks__/MockCache.ts b/src/__mocks__/MockCache.ts index e9ed22ae..c7ea47d2 100644 --- a/src/__mocks__/MockCache.ts +++ b/src/__mocks__/MockCache.ts @@ -6,11 +6,13 @@ export default class MockCache { cache: null; serialize: boolean; + includeOptimistic: boolean; data: PersistedData; - constructor(options: Pick, 'serialize'>) { - const { serialize = true } = options; + constructor(options: Pick, 'serialize' | 'includeOptimistic'>) { + const { serialize = true, includeOptimistic = false } = options; this.serialize = serialize; + this.includeOptimistic = includeOptimistic; } extract(): PersistedData { diff --git a/src/types/index.ts b/src/types/index.ts index be79303c..4c4b6300 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -35,4 +35,5 @@ export interface ApolloPersistOptions< maxSize?: number | false; persistenceMapper?: PersistenceMapperFunction; debug?: boolean; + includeOptimistic?: boolean; }