import type { Layer } from "./layer"; import type { LayerKey } from "./types"; import { keySignature } from "./utils"; export interface LayerGcCacheOptions
{ /** Read at store time; `<= 0` disables caching. */ gcTime: () => number; onBeforeStore?: (layer: Layer
) => void; /** Runs for expiry and same-key displacement, but not restoration. */ onEvict?: (layer: Layer
) => void; } export interface LayerGcCache
{ maybeStore(layer: Layer
): void; take(key: LayerKey): Layer
| undefined; } /** * Retains dismissed layer data for same-key restoration without reloading. * Only the last dismissed layer for each key is retained. */ export function createLayerGcCache
( opts: LayerGcCacheOptions
, ): LayerGcCache
{ const entries = new Map< string, { layer: Layer
; timer: ReturnType