@@ -108,7 +108,7 @@ export class LRU {
108108 *
109109 * @method entries
110110 * @memberof LRU
111- * @param {string[] } [keys] - Array of keys to get entries for. If omitted, returns all keys.
111+ * @param {string[] } [keys=this.keys() ] - Array of keys to get entries for. Defaults to all keys.
112112 * @returns {Array<Array<*>> } Array of [key, value] pairs in LRU order.
113113 * @example
114114 * cache.set('a', 1).set('b', 2);
@@ -118,22 +118,11 @@ export class LRU {
118118 * @see {@link LRU#values }
119119 * @since 11.1.0
120120 */
121- entries ( keys ) {
122- if ( keys === undefined ) {
123- keys = this . keys ( ) ;
124- }
125-
126- const entryMap = Object . create ( null ) ;
127- let x = this . first ;
128-
129- while ( x !== null ) {
130- entryMap [ x . key ] = x . value ;
131- x = x . next ;
132- }
133-
121+ entries ( keys = this . keys ( ) ) {
134122 const result = new Array ( keys . length ) ;
135123 for ( let i = 0 ; i < keys . length ; i ++ ) {
136- result [ i ] = [ keys [ i ] , entryMap [ keys [ i ] ] ] ;
124+ const key = keys [ i ] ;
125+ result [ i ] = [ key , this . get ( key ) ] ;
137126 }
138127
139128 return result ;
@@ -200,7 +189,7 @@ export class LRU {
200189 *
201190 * @method get
202191 * @memberof LRU
203- * @param {any } key - The key to retrieve.
192+ * @param {string } key - The key to retrieve.
204193 * @returns {* } The value associated with the key, or undefined if not found or expired.
205194 * @example
206195 * cache.set('key1', 'value1');
@@ -214,6 +203,7 @@ export class LRU {
214203 const item = this . items [ key ] ;
215204
216205 if ( item !== undefined ) {
206+ // Check TTL only if enabled to avoid unnecessary Date.now() calls
217207 if ( this . ttl > 0 ) {
218208 if ( item . expiry <= Date . now ( ) ) {
219209 this . delete ( key ) ;
@@ -222,6 +212,7 @@ export class LRU {
222212 }
223213 }
224214
215+ // Fast LRU update without full set() overhead
225216 this . moveToEnd ( item ) ;
226217
227218 return item . value ;
@@ -235,7 +226,7 @@ export class LRU {
235226 *
236227 * @method has
237228 * @memberof LRU
238- * @param {any } key - The key to check for.
229+ * @param {string } key - The key to check for.
239230 * @returns {boolean } True if the key exists, false otherwise.
240231 * @example
241232 * cache.set('key1', 'value1');
@@ -316,7 +307,7 @@ export class LRU {
316307 let i = 0 ;
317308
318309 while ( x !== null ) {
319- result [ i ++ ] = String ( x . key ) ;
310+ result [ i ++ ] = x . key ;
320311 x = x . next ;
321312 }
322313
@@ -434,7 +425,7 @@ export class LRU {
434425 *
435426 * @method values
436427 * @memberof LRU
437- * @param {string[] } [keys] - Array of keys to get values for. If omitted, returns all values .
428+ * @param {string[] } [keys=this.keys() ] - Array of keys to get values for. Defaults to all keys .
438429 * @returns {Array<*> } Array of values corresponding to the keys in LRU order.
439430 * @example
440431 * cache.set('a', 1).set('b', 2);
@@ -444,22 +435,10 @@ export class LRU {
444435 * @see {@link LRU#entries }
445436 * @since 11.1.0
446437 */
447- values ( keys ) {
448- if ( keys === undefined ) {
449- keys = this . keys ( ) ;
450- }
451-
452- const entryMap = Object . create ( null ) ;
453- let x = this . first ;
454-
455- while ( x !== null ) {
456- entryMap [ x . key ] = x . value ;
457- x = x . next ;
458- }
459-
438+ values ( keys = this . keys ( ) ) {
460439 const result = new Array ( keys . length ) ;
461440 for ( let i = 0 ; i < keys . length ; i ++ ) {
462- result [ i ] = entryMap [ keys [ i ] ] ;
441+ result [ i ] = this . get ( keys [ i ] ) ;
463442 }
464443
465444 return result ;
0 commit comments