Skip to main content
Version: v7.0.0

Cache

Cache class handles the data exchange with the dispatchers.


Import
import { Cache } from "@hyper-fetch/core"

Parameters

class Cache<Adapter> {
constructor(options: CacheOptionsType) {};
version: string;
storage: CacheStorageType;
options: CacheOptionsType;
lazyStorage: CacheAsyncStorageType;
garbageCollectors: Map<string, Timeout>;
events: { emitCacheData: <Response, Error, Adapter>(data: ResponseType<Response, Error, Adapter> & ResponseDetailsType & { cacheKey: string; cacheTime: number; cached: boolean; hydrated?: boolean; staleTime: number; version: string } & { cached: boolean }, isTriggeredExternally: boolean) => void; emitDelete: (cacheKey: string, isTriggeredExternally: boolean) => void; emitInvalidation: (cacheKey: string, isTriggeredExternally: boolean) => void; onData: <Response, Error, Adapter>(callback: (data: ResponseType<Response, Error, Adapter> & ResponseDetailsType & { cacheKey: string; cacheTime: number; cached: boolean; hydrated?: boolean; staleTime: number; version: string } & { cached: boolean }) => void) => VoidFunction; onDataByKey: <Response, Error, Adapter>(cacheKey: string, callback: (data: CacheValueType<Response, Error, Adapter>) => void) => VoidFunction; onDelete: (callback: (cacheKey: string) => void) => VoidFunction; onDeleteByKey: (cacheKey: string, callback: () => void) => VoidFunction; onInvalidate: (callback: (cacheKey: string) => void) => VoidFunction; onInvalidateByKey: (cacheKey: string, callback: () => void) => VoidFunction };
emitter: EventEmitter;
clear() => Promise<void>;
delete(cacheKey: string) => void;
get<Response, Error>(cacheKey: string) => undefined | CacheValueType<Response, Error, Adapter>;
getAllKeys() => Promise<string[]>;
getLazyKeys() => Promise<string[]>;
getLazyResource<Response, Error>(cacheKey: string) => Promise<undefined | CacheValueType<Response, Error, Adapter>>;
initialize(client: ClientInstance<{ adapter: Adapter }>) => Cache<Adapter>;
invalidate(cacheKeys: string | RegExp | RequestInstance | (string | RegExp | RequestInstance)[]) => void;
keys() => string[];
scheduleGarbageCollector(cacheKey: string) => void;
set<Request>(request: Request, response: CacheSetState<(ResponseType<ExtractResponseType<Request>, ExtractErrorType<Request>, ExtractAdapterType<Request>> & ResponseDetailsType)> & { hydrated?: boolean }) => void;
update<Request>(request: Request, partialResponse: CacheSetState<Partial<ResponseType<ExtractResponseType<Request>, ExtractErrorType<Request>, ExtractAdapterType<Request>> & ResponseDetailsType>>) => void;
}
Parameters
NameTypeDescription
options
CacheOptionsType

Properties

emitter

Type
EventEmitter

events

Type
{ emitCacheData: <Response, Error, Adapter>(data: ResponseType<Response, Error, Adapter> & ResponseDetailsType & { cacheKey: string; cacheTime: number; cached: boolean; hydrated?: boolean; staleTime: number; version: string } & { cached: boolean }, isTriggeredExternally: boolean) => void; emitDelete: (cacheKey: string, isTriggeredExternally: boolean) => void; emitInvalidation: (cacheKey: string, isTriggeredExternally: boolean) => void; onData: <Response, Error, Adapter>(callback: (data: ResponseType<Response, Error, Adapter> & ResponseDetailsType & { cacheKey: string; cacheTime: number; cached: boolean; hydrated?: boolean; staleTime: number; version: string } & { cached: boolean }) => void) => VoidFunction; onDataByKey: <Response, Error, Adapter>(cacheKey: string, callback: (data: CacheValueType<Response, Error, Adapter>) => void) => VoidFunction; onDelete: (callback: (cacheKey: string) => void) => VoidFunction; onDeleteByKey: (cacheKey: string, callback: () => void) => VoidFunction; onInvalidate: (callback: (cacheKey: string) => void) => VoidFunction; onInvalidateByKey: (cacheKey: string, callback: () => void) => VoidFunction }

garbageCollectors

Type
Map<string, Timeout>

lazyStorage

Type
CacheAsyncStorageType

options

Type
CacheOptionsType

storage

Type
CacheStorageType

version

Type
string

Methods

clear()

Clear cache storages

Preview
clear()
Returns
Promise<void>

delete()

Delete record from storages and trigger invalidation event

Preview
delete(cacheKey: string)
Parameters
Parameters
NameTypeDescription
cacheKey
string
Returns
void

get()

Get particular record from storage by cacheKey. It will trigger lazyStorage to emit lazy load event for reading it's data.

Preview
get<Response, Error>(cacheKey: string)
Parameters
Parameters
NameTypeDescription
cacheKey
string
Returns
undefined | CacheValueType<Response, Error, Adapter>

getAllKeys()

Used to receive keys from sync storage and lazy storage

Preview
getAllKeys()
Returns
Promise<string[]>

getLazyKeys()

Used to receive keys from sync storage and lazy storage

Preview
getLazyKeys()
Returns
Promise<string[]>

getLazyResource()

Used to receive data from lazy storage

Preview
getLazyResource<Response, Error>(cacheKey: string)
Parameters
Parameters
NameTypeDescription
cacheKey
string
Returns
Promise<undefined | CacheValueType<Response, Error, Adapter>>

initialize()

Preview
initialize(client: ClientInstance<{ adapter: Adapter }>)
Parameters
Parameters
NameTypeDescription
client
ClientInstance<{ adapter: Adapter }>
Returns
Cache<Adapter>

invalidate()

Invalidate cache by cacheKey or partial matching with RegExp It emits invalidation event for each matching cacheKey and sets staleTime to 0 to indicate out of time cache

Preview
invalidate(cacheKeys: string | RegExp | RequestInstance | (string | RegExp | RequestInstance)[])
Parameters
Parameters
NameTypeDescription
cacheKeys
string | RegExp | RequestInstance | (string | RegExp | RequestInstance)[]
Returns
void

keys()

Get sync storage keys, lazyStorage keys will not be included

Preview
keys()
Returns
string[]

scheduleGarbageCollector()

Schedule garbage collection for given key

Preview
scheduleGarbageCollector(cacheKey: string)
Parameters
Parameters
NameTypeDescription
cacheKey
string
Returns
void

set()

Set the cache data to the storage

Preview
set<Request>(request: Request, response: CacheSetState<(ResponseType<ExtractResponseType<Request>, ExtractErrorType<Request>, ExtractAdapterType<Request>> & ResponseDetailsType)> & { hydrated?: boolean })
Parameters
Parameters
NameTypeDescription
request
Request
response
CacheSetState<(ResponseType<ExtractResponseType<Request>, ExtractErrorType<Request>, ExtractAdapterType<Request>> & ResponseDetailsType)> & { hydrated?: boolean }
Returns
void

update()

Update the cache data with partial response data

Preview
update<Request>(request: Request, partialResponse: CacheSetState<Partial<ResponseType<ExtractResponseType<Request>, ExtractErrorType<Request>, ExtractAdapterType<Request>> & ResponseDetailsType>>)
Parameters
Parameters
NameTypeDescription
request
Request
partialResponse
CacheSetState<Partial<ResponseType<ExtractResponseType<Request>, ExtractErrorType<Request>, ExtractAdapterType<Request>> & ResponseDetailsType>>
Returns
void