Endo API documentation
    Preparing search index...

    Module @endo/cache-map

    cache-map

    This @endo/cache-map package creates bounded-size caches having WeakMap-compatible has/get/set/delete methods. Key validity, comparison, and referential strength are controlled by a makeMap option, which defaults to WeakMap but can be set to any producer of objects with those methods (e.g., using Map allows for arbitrary keys which will be strongly held). Cache eviction policy is not currently configurable, but strives for a hit ratio at least as good as LRU (e.g., it might be CLOCK or SIEVE).

    import { makeCacheMapKit } from '@endo/cache-map';

    const { cache: weakCache, getMetrics } = makeCacheMapKit(2);
    const entries = [
    { key: Symbol('key 1'), value: Symbol('value 1') },
    { key: Symbol('key 2'), value: Symbol('value 2') },
    { key: Symbol('key 3'), value: Symbol('value 3') },
    ];
    for (const { key, value } of entries) weakCache.set(key, value);

    assert(!weakCache.has(entries[0].key));
    assert(weakCache.has(entries[1].key));
    assert(weakCache.get(entries[2].key) === entries[2].value);

    weakCache.delete(entries[2].key);
    weakCache.set(entries[1].key, entries[0]);

    assert(!weakCache.has(entries[0].key));
    assert(!weakCache.has(entries[2].key));
    assert(weakCache.get(entries[1].key) === entries[0]);

    assert.throws(() => weakCache.set('unweakable key', {}));
    import { makeCacheMapKit } from '@endo/cache-map';

    const { cache, getMetrics } = makeCacheMapKit(100, { makeMap: Map });
    cache.set('unweakable key', 'ok');
    assert(cache.get('unweakable key') === 'ok');

    Apache License, Version 2.0

    Interfaces

    CacheMapCell
    CacheMapKit

    Type Aliases

    CacheMapMetrics
    SingleEntryMap
    WeakMapAPI
    WritableDeep

    Functions

    makeCacheMapKit