15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
declare namespace QuickLRU {
    interface Options<KeyType, ValueType> {
        /**
        The maximum number of items before evicting the least recently used items.
        */
        readonly maxSize: number;
 
        /**
        Called right before an item is evicted from the cache.
 
        Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
        */
        onEviction?: (key: KeyType, value: ValueType) => void;
    }
}
 
declare class QuickLRU<KeyType, ValueType>
    implements Iterable<[KeyType, ValueType]> {
    /**
    The stored item count.
    */
    readonly size: number;
 
    /**
    Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
 
    The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
 
    @example
    ```
    import QuickLRU = require('quick-lru');
 
    const lru = new QuickLRU({maxSize: 1000});
 
    lru.set('🦄', '🌈');
 
    lru.has('🦄');
    //=> true
 
    lru.get('🦄');
    //=> '🌈'
    ```
    */
    constructor(options: QuickLRU.Options<KeyType, ValueType>);
 
    [Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
 
    /**
    Set an item.
 
    @returns The list instance.
    */
    set(key: KeyType, value: ValueType): this;
 
    /**
    Get an item.
 
    @returns The stored item or `undefined`.
    */
    get(key: KeyType): ValueType | undefined;
 
    /**
    Check if an item exists.
    */
    has(key: KeyType): boolean;
 
    /**
    Get an item without marking it as recently used.
 
    @returns The stored item or `undefined`.
    */
    peek(key: KeyType): ValueType | undefined;
 
    /**
    Delete an item.
 
    @returns `true` if the item is removed or `false` if the item doesn't exist.
    */
    delete(key: KeyType): boolean;
 
    /**
    Delete all items.
    */
    clear(): void;
 
    /**
    Iterable for all the keys.
    */
    keys(): IterableIterator<KeyType>;
 
    /**
    Iterable for all the values.
    */
    values(): IterableIterator<ValueType>;
}
 
export = QuickLRU;