@common.js/quick-lru 6.1.2 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +1 -1
  2. package/index.d.ts +14 -8
  3. package/index.js +380 -288
  4. package/package.json +7 -7
package/README.md CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  The [quick-lru](https://www.npmjs.com/package/quick-lru) package exported as CommonJS modules.
4
4
 
5
- Exported from [quick-lru@6.1.2](https://www.npmjs.com/package/quick-lru/v/6.1.2) using https://github.com/etienne-martin/common.js.
5
+ Exported from [quick-lru@7.0.0](https://www.npmjs.com/package/quick-lru/v/7.0.0) using https://github.com/etienne-martin/common.js.
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface Options<KeyType, ValueType> {
1
+ export type Options<KeyType, ValueType> = {
2
2
  /**
3
3
  The maximum number of milliseconds an item should remain in the cache.
4
4
 
@@ -22,14 +22,10 @@ export interface Options<KeyType, ValueType> {
22
22
  Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
23
23
  */
24
24
  onEviction?: (key: KeyType, value: ValueType) => void;
25
- }
26
-
27
- export default class QuickLRU<KeyType, ValueType> extends Map implements Iterable<[KeyType, ValueType]> {
28
- /**
29
- The stored item count.
30
- */
31
- readonly size: number;
25
+ };
32
26
 
27
+ // eslint-disable-next-line @typescript-eslint/naming-convention
28
+ export default class QuickLRU<KeyType, ValueType> extends Map<KeyType, ValueType> implements Iterable<[KeyType, ValueType]> {
33
29
  /**
34
30
  Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
35
31
 
@@ -101,6 +97,16 @@ export default class QuickLRU<KeyType, ValueType> extends Map implements Iterabl
101
97
  */
102
98
  resize(maxSize: number): void;
103
99
 
100
+ /**
101
+ The stored item count.
102
+ */
103
+ get size(): number;
104
+
105
+ /**
106
+ The set max size.
107
+ */
108
+ get maxSize(): number;
109
+
104
110
  /**
105
111
  Iterable for all the keys.
106
112
  */
package/index.js CHANGED
@@ -25,11 +25,85 @@ function _assertThisInitialized(self) {
25
25
  }
26
26
  return self;
27
27
  }
28
+ function _checkPrivateRedeclaration(obj, privateCollection) {
29
+ if (privateCollection.has(obj)) {
30
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
31
+ }
32
+ }
33
+ function _classApplyDescriptorGet(receiver, descriptor) {
34
+ if (descriptor.get) {
35
+ return descriptor.get.call(receiver);
36
+ }
37
+ return descriptor.value;
38
+ }
39
+ function _classApplyDescriptorSet(receiver, descriptor, value) {
40
+ if (descriptor.set) {
41
+ descriptor.set.call(receiver, value);
42
+ } else {
43
+ if (!descriptor.writable) {
44
+ throw new TypeError("attempted to set read only private field");
45
+ }
46
+ descriptor.value = value;
47
+ }
48
+ }
49
+ function _classApplyDescriptorUpdate(receiver, descriptor) {
50
+ if (descriptor.set) {
51
+ if (!("__destrWrapper" in descriptor)) {
52
+ descriptor.__destrWrapper = {
53
+ set value (v){
54
+ descriptor.set.call(receiver, v);
55
+ },
56
+ get value () {
57
+ return descriptor.get.call(receiver);
58
+ }
59
+ };
60
+ }
61
+ return descriptor.__destrWrapper;
62
+ } else {
63
+ if (!descriptor.writable) {
64
+ throw new TypeError("attempted to set read only private field");
65
+ }
66
+ return descriptor;
67
+ }
68
+ }
28
69
  function _classCallCheck(instance, Constructor) {
29
70
  if (!(instance instanceof Constructor)) {
30
71
  throw new TypeError("Cannot call a class as a function");
31
72
  }
32
73
  }
74
+ function _classExtractFieldDescriptor(receiver, privateMap, action) {
75
+ if (!privateMap.has(receiver)) {
76
+ throw new TypeError("attempted to " + action + " private field on non-instance");
77
+ }
78
+ return privateMap.get(receiver);
79
+ }
80
+ function _classPrivateFieldGet(receiver, privateMap) {
81
+ var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get");
82
+ return _classApplyDescriptorGet(receiver, descriptor);
83
+ }
84
+ function _classPrivateFieldInit(obj, privateMap, value) {
85
+ _checkPrivateRedeclaration(obj, privateMap);
86
+ privateMap.set(obj, value);
87
+ }
88
+ function _classPrivateFieldSet(receiver, privateMap, value) {
89
+ var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set");
90
+ _classApplyDescriptorSet(receiver, descriptor, value);
91
+ return value;
92
+ }
93
+ function _classPrivateFieldUpdate(receiver, privateMap) {
94
+ var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "update");
95
+ return _classApplyDescriptorUpdate(receiver, descriptor);
96
+ }
97
+ function _classPrivateMethodGet(receiver, privateSet, fn) {
98
+ if (!privateSet.has(receiver)) {
99
+ throw new TypeError("attempted to get private field on non-instance");
100
+ }
101
+ return fn;
102
+ }
103
+ function _classPrivateMethodInit(obj, privateSet) {
104
+ _checkPrivateRedeclaration(obj, privateSet);
105
+ privateSet.add(obj);
106
+ }
33
107
  function isNativeReflectConstruct() {
34
108
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
35
109
  if (Reflect.construct.sham) return false;
@@ -226,10 +300,10 @@ var __generator = (void 0) && (void 0).__generator || function(thisArg, body) {
226
300
  return this;
227
301
  }), g;
228
302
  function verb(n) {
229
- return function(v) {
303
+ return function(v1) {
230
304
  return step([
231
305
  n,
232
- v
306
+ v1
233
307
  ]);
234
308
  };
235
309
  }
@@ -303,6 +377,8 @@ var __generator = (void 0) && (void 0).__generator || function(thisArg, body) {
303
377
  };
304
378
  }
305
379
  };
380
+ var _size = /*#__PURE__*/ new WeakMap(), _cache = /*#__PURE__*/ new WeakMap(), _oldCache = /*#__PURE__*/ new WeakMap(), _maxSize = /*#__PURE__*/ new WeakMap(), _maxAge = /*#__PURE__*/ new WeakMap(), _onEviction = /*#__PURE__*/ new WeakMap(), _emitEvictions = /*#__PURE__*/ new WeakSet(), _deleteIfExpired = /*#__PURE__*/ new WeakSet(), _getOrDeleteIfExpired = /*#__PURE__*/ new WeakSet(), _getItemValue = /*#__PURE__*/ new WeakSet(), _peek = /*#__PURE__*/ new WeakSet(), _set = /*#__PURE__*/ new WeakSet(), _moveToRecent = /*#__PURE__*/ new WeakSet(), _entriesAscending = /*#__PURE__*/ new WeakSet();
381
+ var _iterator = Symbol.iterator, _toStringTag = Symbol.toStringTag;
306
382
  var QuickLRU = /*#__PURE__*/ function(Map1) {
307
383
  "use strict";
308
384
  _inherits(QuickLRU, Map1);
@@ -312,260 +388,68 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
312
388
  _classCallCheck(this, QuickLRU);
313
389
  var _this;
314
390
  _this = _super.call(this);
391
+ _classPrivateMethodInit(_assertThisInitialized(_this), _emitEvictions);
392
+ _classPrivateMethodInit(_assertThisInitialized(_this), _deleteIfExpired);
393
+ _classPrivateMethodInit(_assertThisInitialized(_this), _getOrDeleteIfExpired);
394
+ _classPrivateMethodInit(_assertThisInitialized(_this), _getItemValue);
395
+ _classPrivateMethodInit(_assertThisInitialized(_this), _peek);
396
+ _classPrivateMethodInit(_assertThisInitialized(_this), _set);
397
+ _classPrivateMethodInit(_assertThisInitialized(_this), _moveToRecent);
398
+ _classPrivateMethodInit(_assertThisInitialized(_this), _entriesAscending);
399
+ _classPrivateFieldInit(_assertThisInitialized(_this), _size, {
400
+ writable: true,
401
+ value: 0
402
+ });
403
+ _classPrivateFieldInit(_assertThisInitialized(_this), _cache, {
404
+ writable: true,
405
+ value: new Map()
406
+ });
407
+ _classPrivateFieldInit(_assertThisInitialized(_this), _oldCache, {
408
+ writable: true,
409
+ value: new Map()
410
+ });
411
+ _classPrivateFieldInit(_assertThisInitialized(_this), _maxSize, {
412
+ writable: true,
413
+ value: void 0
414
+ });
415
+ _classPrivateFieldInit(_assertThisInitialized(_this), _maxAge, {
416
+ writable: true,
417
+ value: void 0
418
+ });
419
+ _classPrivateFieldInit(_assertThisInitialized(_this), _onEviction, {
420
+ writable: true,
421
+ value: void 0
422
+ });
315
423
  if (!(options.maxSize && options.maxSize > 0)) {
316
424
  throw new TypeError("`maxSize` must be a number greater than 0");
317
425
  }
318
426
  if (typeof options.maxAge === "number" && options.maxAge === 0) {
319
427
  throw new TypeError("`maxAge` must be a number greater than 0");
320
428
  }
321
- // TODO: Use private class fields when ESLint supports them.
322
- _this.maxSize = options.maxSize;
323
- _this.maxAge = options.maxAge || Number.POSITIVE_INFINITY;
324
- _this.onEviction = options.onEviction;
325
- _this.cache = new Map();
326
- _this.oldCache = new Map();
327
- _this._size = 0;
429
+ _classPrivateFieldSet(_assertThisInitialized(_this), _maxSize, options.maxSize);
430
+ _classPrivateFieldSet(_assertThisInitialized(_this), _maxAge, options.maxAge || Number.POSITIVE_INFINITY);
431
+ _classPrivateFieldSet(_assertThisInitialized(_this), _onEviction, options.onEviction);
328
432
  return _this;
329
433
  }
330
434
  _createClass(QuickLRU, [
331
435
  {
332
- // TODO: Use private class methods when targeting Node.js 16.
333
- key: "_emitEvictions",
334
- value: function _emitEvictions(cache) {
335
- if (typeof this.onEviction !== "function") {
336
- return;
337
- }
338
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
339
- try {
340
- for(var _iterator = cache[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
341
- var _value = _slicedToArray(_step.value, 2), key = _value[0], item = _value[1];
342
- this.onEviction(key, item.value);
343
- }
344
- } catch (err) {
345
- _didIteratorError = true;
346
- _iteratorError = err;
347
- } finally{
348
- try {
349
- if (!_iteratorNormalCompletion && _iterator.return != null) {
350
- _iterator.return();
351
- }
352
- } finally{
353
- if (_didIteratorError) {
354
- throw _iteratorError;
355
- }
356
- }
357
- }
358
- }
359
- },
360
- {
361
- key: "_deleteIfExpired",
362
- value: function _deleteIfExpired(key, item) {
363
- if (typeof item.expiry === "number" && item.expiry <= Date.now()) {
364
- if (typeof this.onEviction === "function") {
365
- this.onEviction(key, item.value);
366
- }
367
- return this.delete(key);
368
- }
369
- return false;
370
- }
371
- },
372
- {
373
- key: "_getOrDeleteIfExpired",
374
- value: function _getOrDeleteIfExpired(key, item) {
375
- var deleted = this._deleteIfExpired(key, item);
376
- if (deleted === false) {
377
- return item.value;
378
- }
379
- }
380
- },
381
- {
382
- key: "_getItemValue",
383
- value: function _getItemValue(key, item) {
384
- return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;
385
- }
386
- },
387
- {
388
- key: "_peek",
389
- value: function _peek(key, cache) {
390
- var item = cache.get(key);
391
- return this._getItemValue(key, item);
392
- }
393
- },
394
- {
395
- key: "_set",
396
- value: function _set(key, value) {
397
- this.cache.set(key, value);
398
- this._size++;
399
- if (this._size >= this.maxSize) {
400
- this._size = 0;
401
- this._emitEvictions(this.oldCache);
402
- this.oldCache = this.cache;
403
- this.cache = new Map();
404
- }
405
- }
406
- },
407
- {
408
- key: "_moveToRecent",
409
- value: function _moveToRecent(key, item) {
410
- this.oldCache.delete(key);
411
- this._set(key, item);
412
- }
413
- },
414
- {
415
- key: "_entriesAscending",
416
- value: function _entriesAscending() {
417
- var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, _item, key, value, deleted, err, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, item1, _item1, key1, value1, deleted1, err;
418
- return __generator(this, function(_state) {
419
- switch(_state.label){
420
- case 0:
421
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
422
- _state.label = 1;
423
- case 1:
424
- _state.trys.push([
425
- 1,
426
- 6,
427
- 7,
428
- 8
429
- ]);
430
- _iterator = this.oldCache[Symbol.iterator]();
431
- _state.label = 2;
432
- case 2:
433
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
434
- 3,
435
- 5
436
- ];
437
- item = _step.value;
438
- _item = _slicedToArray(item, 2), key = _item[0], value = _item[1];
439
- if (!!this.cache.has(key)) return [
440
- 3,
441
- 4
442
- ];
443
- deleted = this._deleteIfExpired(key, value);
444
- if (!(deleted === false)) return [
445
- 3,
446
- 4
447
- ];
448
- return [
449
- 4,
450
- item
451
- ];
452
- case 3:
453
- _state.sent();
454
- _state.label = 4;
455
- case 4:
456
- _iteratorNormalCompletion = true;
457
- return [
458
- 3,
459
- 2
460
- ];
461
- case 5:
462
- return [
463
- 3,
464
- 8
465
- ];
466
- case 6:
467
- err = _state.sent();
468
- _didIteratorError = true;
469
- _iteratorError = err;
470
- return [
471
- 3,
472
- 8
473
- ];
474
- case 7:
475
- try {
476
- if (!_iteratorNormalCompletion && _iterator.return != null) {
477
- _iterator.return();
478
- }
479
- } finally{
480
- if (_didIteratorError) {
481
- throw _iteratorError;
482
- }
483
- }
484
- return [
485
- 7
486
- ];
487
- case 8:
488
- _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
489
- _state.label = 9;
490
- case 9:
491
- _state.trys.push([
492
- 9,
493
- 14,
494
- 15,
495
- 16
496
- ]);
497
- _iterator1 = this.cache[Symbol.iterator]();
498
- _state.label = 10;
499
- case 10:
500
- if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
501
- 3,
502
- 13
503
- ];
504
- item1 = _step1.value;
505
- _item1 = _slicedToArray(item1, 2), key1 = _item1[0], value1 = _item1[1];
506
- deleted1 = this._deleteIfExpired(key1, value1);
507
- if (!(deleted1 === false)) return [
508
- 3,
509
- 12
510
- ];
511
- return [
512
- 4,
513
- item1
514
- ];
515
- case 11:
516
- _state.sent();
517
- _state.label = 12;
518
- case 12:
519
- _iteratorNormalCompletion1 = true;
520
- return [
521
- 3,
522
- 10
523
- ];
524
- case 13:
525
- return [
526
- 3,
527
- 16
528
- ];
529
- case 14:
530
- err = _state.sent();
531
- _didIteratorError1 = true;
532
- _iteratorError1 = err;
533
- return [
534
- 3,
535
- 16
536
- ];
537
- case 15:
538
- try {
539
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
540
- _iterator1.return();
541
- }
542
- } finally{
543
- if (_didIteratorError1) {
544
- throw _iteratorError1;
545
- }
546
- }
547
- return [
548
- 7
549
- ];
550
- case 16:
551
- return [
552
- 2
553
- ];
554
- }
555
- });
436
+ key: "__oldCache",
437
+ get: // For tests.
438
+ function get() {
439
+ return _classPrivateFieldGet(this, _oldCache);
556
440
  }
557
441
  },
558
442
  {
559
443
  key: "get",
560
444
  value: function get(key) {
561
- if (this.cache.has(key)) {
562
- var item = this.cache.get(key);
563
- return this._getItemValue(key, item);
445
+ if (_classPrivateFieldGet(this, _cache).has(key)) {
446
+ var item = _classPrivateFieldGet(this, _cache).get(key);
447
+ return _classPrivateMethodGet(this, _getItemValue, getItemValue).call(this, key, item);
564
448
  }
565
- if (this.oldCache.has(key)) {
566
- var item1 = this.oldCache.get(key);
567
- if (this._deleteIfExpired(key, item1) === false) {
568
- this._moveToRecent(key, item1);
449
+ if (_classPrivateFieldGet(this, _oldCache).has(key)) {
450
+ var item1 = _classPrivateFieldGet(this, _oldCache).get(key);
451
+ if (_classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, item1) === false) {
452
+ _classPrivateMethodGet(this, _moveToRecent, moveToRecent).call(this, key, item1);
569
453
  return item1.value;
570
454
  }
571
455
  }
@@ -573,16 +457,16 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
573
457
  },
574
458
  {
575
459
  key: "set",
576
- value: function set(key, value) {
577
- var ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, _maxAge = ref.maxAge, maxAge = _maxAge === void 0 ? this.maxAge : _maxAge;
460
+ value: function set1(key, value) {
461
+ var ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, _maxAge1 = ref.maxAge, maxAge = _maxAge1 === void 0 ? _classPrivateFieldGet(this, _maxAge) : _maxAge1;
578
462
  var expiry = typeof maxAge === "number" && maxAge !== Number.POSITIVE_INFINITY ? Date.now() + maxAge : undefined;
579
- if (this.cache.has(key)) {
580
- this.cache.set(key, {
463
+ if (_classPrivateFieldGet(this, _cache).has(key)) {
464
+ _classPrivateFieldGet(this, _cache).set(key, {
581
465
  value: value,
582
466
  expiry: expiry
583
467
  });
584
468
  } else {
585
- this._set(key, {
469
+ _classPrivateMethodGet(this, _set, set).call(this, key, {
586
470
  value: value,
587
471
  expiry: expiry
588
472
  });
@@ -593,42 +477,42 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
593
477
  {
594
478
  key: "has",
595
479
  value: function has(key) {
596
- if (this.cache.has(key)) {
597
- return !this._deleteIfExpired(key, this.cache.get(key));
480
+ if (_classPrivateFieldGet(this, _cache).has(key)) {
481
+ return !_classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, _classPrivateFieldGet(this, _cache).get(key));
598
482
  }
599
- if (this.oldCache.has(key)) {
600
- return !this._deleteIfExpired(key, this.oldCache.get(key));
483
+ if (_classPrivateFieldGet(this, _oldCache).has(key)) {
484
+ return !_classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, _classPrivateFieldGet(this, _oldCache).get(key));
601
485
  }
602
486
  return false;
603
487
  }
604
488
  },
605
489
  {
606
490
  key: "peek",
607
- value: function peek(key) {
608
- if (this.cache.has(key)) {
609
- return this._peek(key, this.cache);
491
+ value: function peek1(key) {
492
+ if (_classPrivateFieldGet(this, _cache).has(key)) {
493
+ return _classPrivateMethodGet(this, _peek, peek).call(this, key, _classPrivateFieldGet(this, _cache));
610
494
  }
611
- if (this.oldCache.has(key)) {
612
- return this._peek(key, this.oldCache);
495
+ if (_classPrivateFieldGet(this, _oldCache).has(key)) {
496
+ return _classPrivateMethodGet(this, _peek, peek).call(this, key, _classPrivateFieldGet(this, _oldCache));
613
497
  }
614
498
  }
615
499
  },
616
500
  {
617
501
  key: "delete",
618
502
  value: function _delete(key) {
619
- var deleted = this.cache.delete(key);
503
+ var deleted = _classPrivateFieldGet(this, _cache).delete(key);
620
504
  if (deleted) {
621
- this._size--;
505
+ _classPrivateFieldUpdate(this, _size).value--;
622
506
  }
623
- return this.oldCache.delete(key) || deleted;
507
+ return _classPrivateFieldGet(this, _oldCache).delete(key) || deleted;
624
508
  }
625
509
  },
626
510
  {
627
511
  key: "clear",
628
512
  value: function clear() {
629
- this.cache.clear();
630
- this.oldCache.clear();
631
- this._size = 0;
513
+ _classPrivateFieldGet(this, _cache).clear();
514
+ _classPrivateFieldGet(this, _oldCache).clear();
515
+ _classPrivateFieldSet(this, _size, 0);
632
516
  }
633
517
  },
634
518
  {
@@ -637,21 +521,21 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
637
521
  if (!(newSize && newSize > 0)) {
638
522
  throw new TypeError("`maxSize` must be a number greater than 0");
639
523
  }
640
- var items = _toConsumableArray(this._entriesAscending());
524
+ var items = _toConsumableArray(_classPrivateMethodGet(this, _entriesAscending, entriesAscending).call(this));
641
525
  var removeCount = items.length - newSize;
642
526
  if (removeCount < 0) {
643
- this.cache = new Map(items);
644
- this.oldCache = new Map();
645
- this._size = items.length;
527
+ _classPrivateFieldSet(this, _cache, new Map(items));
528
+ _classPrivateFieldSet(this, _oldCache, new Map());
529
+ _classPrivateFieldSet(this, _size, items.length);
646
530
  } else {
647
531
  if (removeCount > 0) {
648
- this._emitEvictions(items.slice(0, removeCount));
532
+ _classPrivateMethodGet(this, _emitEvictions, emitEvictions).call(this, items.slice(0, removeCount));
649
533
  }
650
- this.oldCache = new Map(items.slice(removeCount));
651
- this.cache = new Map();
652
- this._size = 0;
534
+ _classPrivateFieldSet(this, _oldCache, new Map(items.slice(removeCount)));
535
+ _classPrivateFieldSet(this, _cache, new Map());
536
+ _classPrivateFieldSet(this, _size, 0);
653
537
  }
654
- this.maxSize = newSize;
538
+ _classPrivateFieldSet(this, _maxSize, newSize);
655
539
  }
656
540
  },
657
541
  {
@@ -797,7 +681,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
797
681
  }
798
682
  },
799
683
  {
800
- key: Symbol.iterator,
684
+ key: _iterator,
801
685
  value: function value() {
802
686
  var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, _item, key, value1, deleted, err, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, item1, _item1, key1, value2, deleted1, err;
803
687
  return __generator(this, function(_state) {
@@ -812,7 +696,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
812
696
  7,
813
697
  8
814
698
  ]);
815
- _iterator = this.cache[Symbol.iterator]();
699
+ _iterator = _classPrivateFieldGet(this, _cache)[Symbol.iterator]();
816
700
  _state.label = 2;
817
701
  case 2:
818
702
  if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
@@ -821,7 +705,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
821
705
  ];
822
706
  item = _step.value;
823
707
  _item = _slicedToArray(item, 2), key = _item[0], value1 = _item[1];
824
- deleted = this._deleteIfExpired(key, value1);
708
+ deleted = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, value1);
825
709
  if (!(deleted === false)) return [
826
710
  3,
827
711
  4
@@ -878,7 +762,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
878
762
  15,
879
763
  16
880
764
  ]);
881
- _iterator1 = this.oldCache[Symbol.iterator]();
765
+ _iterator1 = _classPrivateFieldGet(this, _oldCache)[Symbol.iterator]();
882
766
  _state.label = 10;
883
767
  case 10:
884
768
  if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
@@ -887,11 +771,11 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
887
771
  ];
888
772
  item1 = _step1.value;
889
773
  _item1 = _slicedToArray(item1, 2), key1 = _item1[0], value2 = _item1[1];
890
- if (!!this.cache.has(key1)) return [
774
+ if (!!_classPrivateFieldGet(this, _cache).has(key1)) return [
891
775
  3,
892
776
  12
893
777
  ];
894
- deleted1 = this._deleteIfExpired(key1, value2);
778
+ deleted1 = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key1, value2);
895
779
  if (!(deleted1 === false)) return [
896
780
  3,
897
781
  12
@@ -953,7 +837,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
953
837
  return __generator(this, function(_state) {
954
838
  switch(_state.label){
955
839
  case 0:
956
- items = _toConsumableArray(this.cache);
840
+ items = _toConsumableArray(_classPrivateFieldGet(this, _cache));
957
841
  i = items.length - 1;
958
842
  _state.label = 1;
959
843
  case 1:
@@ -963,7 +847,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
963
847
  ];
964
848
  item = items[i];
965
849
  _item = _slicedToArray(item, 2), key = _item[0], value = _item[1];
966
- deleted = this._deleteIfExpired(key, value);
850
+ deleted = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, value);
967
851
  if (!(deleted === false)) return [
968
852
  3,
969
853
  3
@@ -985,7 +869,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
985
869
  1
986
870
  ];
987
871
  case 4:
988
- items = _toConsumableArray(this.oldCache);
872
+ items = _toConsumableArray(_classPrivateFieldGet(this, _oldCache));
989
873
  i1 = items.length - 1;
990
874
  _state.label = 5;
991
875
  case 5:
@@ -995,11 +879,11 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
995
879
  ];
996
880
  item1 = items[i1];
997
881
  _item1 = _slicedToArray(item1, 2), key1 = _item1[0], value1 = _item1[1];
998
- if (!!this.cache.has(key1)) return [
882
+ if (!!_classPrivateFieldGet(this, _cache).has(key1)) return [
999
883
  3,
1000
884
  7
1001
885
  ];
1002
- deleted1 = this._deleteIfExpired(key1, value1);
886
+ deleted1 = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key1, value1);
1003
887
  if (!(deleted1 === false)) return [
1004
888
  3,
1005
889
  7
@@ -1030,7 +914,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
1030
914
  },
1031
915
  {
1032
916
  key: "entriesAscending",
1033
- value: function entriesAscending() {
917
+ value: function entriesAscending1() {
1034
918
  var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, key, value, err;
1035
919
  return __generator(this, function(_state) {
1036
920
  switch(_state.label){
@@ -1044,7 +928,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
1044
928
  7,
1045
929
  8
1046
930
  ]);
1047
- _iterator = this._entriesAscending()[Symbol.iterator]();
931
+ _iterator = _classPrivateMethodGet(this, _entriesAscending, entriesAscending).call(this)[Symbol.iterator]();
1048
932
  _state.label = 2;
1049
933
  case 2:
1050
934
  if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
@@ -1105,15 +989,15 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
1105
989
  {
1106
990
  key: "size",
1107
991
  get: function get() {
1108
- if (!this._size) {
1109
- return this.oldCache.size;
992
+ if (!_classPrivateFieldGet(this, _size)) {
993
+ return _classPrivateFieldGet(this, _oldCache).size;
1110
994
  }
1111
995
  var oldCacheSize = 0;
1112
996
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1113
997
  try {
1114
- for(var _iterator = this.oldCache.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
998
+ for(var _iterator = _classPrivateFieldGet(this, _oldCache).keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1115
999
  var key = _step.value;
1116
- if (!this.cache.has(key)) {
1000
+ if (!_classPrivateFieldGet(this, _cache).has(key)) {
1117
1001
  oldCacheSize++;
1118
1002
  }
1119
1003
  }
@@ -1131,7 +1015,13 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
1131
1015
  }
1132
1016
  }
1133
1017
  }
1134
- return Math.min(this._size + oldCacheSize, this.maxSize);
1018
+ return Math.min(_classPrivateFieldGet(this, _size) + oldCacheSize, _classPrivateFieldGet(this, _maxSize));
1019
+ }
1020
+ },
1021
+ {
1022
+ key: "maxSize",
1023
+ get: function get() {
1024
+ return _classPrivateFieldGet(this, _maxSize);
1135
1025
  }
1136
1026
  },
1137
1027
  {
@@ -1167,7 +1057,7 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
1167
1057
  }
1168
1058
  },
1169
1059
  {
1170
- key: Symbol.toStringTag,
1060
+ key: _toStringTag,
1171
1061
  get: function get() {
1172
1062
  return JSON.stringify(_toConsumableArray(this.entriesAscending()));
1173
1063
  }
@@ -1175,3 +1065,205 @@ var QuickLRU = /*#__PURE__*/ function(Map1) {
1175
1065
  ]);
1176
1066
  return QuickLRU;
1177
1067
  }(_wrapNativeSuper(Map));
1068
+ function emitEvictions(cache) {
1069
+ if (typeof _classPrivateFieldGet(this, _onEviction) !== "function") {
1070
+ return;
1071
+ }
1072
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1073
+ try {
1074
+ for(var _iterator = cache[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1075
+ var _value = _slicedToArray(_step.value, 2), key = _value[0], item = _value[1];
1076
+ _classPrivateFieldGet(this, _onEviction).call(this, key, item.value);
1077
+ }
1078
+ } catch (err) {
1079
+ _didIteratorError = true;
1080
+ _iteratorError = err;
1081
+ } finally{
1082
+ try {
1083
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1084
+ _iterator.return();
1085
+ }
1086
+ } finally{
1087
+ if (_didIteratorError) {
1088
+ throw _iteratorError;
1089
+ }
1090
+ }
1091
+ }
1092
+ }
1093
+ function deleteIfExpired(key, item) {
1094
+ if (typeof item.expiry === "number" && item.expiry <= Date.now()) {
1095
+ if (typeof _classPrivateFieldGet(this, _onEviction) === "function") {
1096
+ _classPrivateFieldGet(this, _onEviction).call(this, key, item.value);
1097
+ }
1098
+ return this.delete(key);
1099
+ }
1100
+ return false;
1101
+ }
1102
+ function getOrDeleteIfExpired(key, item) {
1103
+ var deleted = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, item);
1104
+ if (deleted === false) {
1105
+ return item.value;
1106
+ }
1107
+ }
1108
+ function getItemValue(key, item) {
1109
+ return item.expiry ? _classPrivateMethodGet(this, _getOrDeleteIfExpired, getOrDeleteIfExpired).call(this, key, item) : item.value;
1110
+ }
1111
+ function peek(key, cache) {
1112
+ var item = cache.get(key);
1113
+ return _classPrivateMethodGet(this, _getItemValue, getItemValue).call(this, key, item);
1114
+ }
1115
+ function set(key, value) {
1116
+ _classPrivateFieldGet(this, _cache).set(key, value);
1117
+ _classPrivateFieldUpdate(this, _size).value++;
1118
+ if (_classPrivateFieldGet(this, _size) >= _classPrivateFieldGet(this, _maxSize)) {
1119
+ _classPrivateFieldSet(this, _size, 0);
1120
+ _classPrivateMethodGet(this, _emitEvictions, emitEvictions).call(this, _classPrivateFieldGet(this, _oldCache));
1121
+ _classPrivateFieldSet(this, _oldCache, _classPrivateFieldGet(this, _cache));
1122
+ _classPrivateFieldSet(this, _cache, new Map());
1123
+ }
1124
+ }
1125
+ function moveToRecent(key, item) {
1126
+ _classPrivateFieldGet(this, _oldCache).delete(key);
1127
+ _classPrivateMethodGet(this, _set, set).call(this, key, item);
1128
+ }
1129
+ function entriesAscending() {
1130
+ var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, _item, key, value, deleted, err, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, item1, _item1, key1, value1, deleted1, err;
1131
+ return __generator(this, function(_state) {
1132
+ switch(_state.label){
1133
+ case 0:
1134
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1135
+ _state.label = 1;
1136
+ case 1:
1137
+ _state.trys.push([
1138
+ 1,
1139
+ 6,
1140
+ 7,
1141
+ 8
1142
+ ]);
1143
+ _iterator = _classPrivateFieldGet(this, _oldCache)[Symbol.iterator]();
1144
+ _state.label = 2;
1145
+ case 2:
1146
+ if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
1147
+ 3,
1148
+ 5
1149
+ ];
1150
+ item = _step.value;
1151
+ _item = _slicedToArray(item, 2), key = _item[0], value = _item[1];
1152
+ if (!!_classPrivateFieldGet(this, _cache).has(key)) return [
1153
+ 3,
1154
+ 4
1155
+ ];
1156
+ deleted = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key, value);
1157
+ if (!(deleted === false)) return [
1158
+ 3,
1159
+ 4
1160
+ ];
1161
+ return [
1162
+ 4,
1163
+ item
1164
+ ];
1165
+ case 3:
1166
+ _state.sent();
1167
+ _state.label = 4;
1168
+ case 4:
1169
+ _iteratorNormalCompletion = true;
1170
+ return [
1171
+ 3,
1172
+ 2
1173
+ ];
1174
+ case 5:
1175
+ return [
1176
+ 3,
1177
+ 8
1178
+ ];
1179
+ case 6:
1180
+ err = _state.sent();
1181
+ _didIteratorError = true;
1182
+ _iteratorError = err;
1183
+ return [
1184
+ 3,
1185
+ 8
1186
+ ];
1187
+ case 7:
1188
+ try {
1189
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1190
+ _iterator.return();
1191
+ }
1192
+ } finally{
1193
+ if (_didIteratorError) {
1194
+ throw _iteratorError;
1195
+ }
1196
+ }
1197
+ return [
1198
+ 7
1199
+ ];
1200
+ case 8:
1201
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
1202
+ _state.label = 9;
1203
+ case 9:
1204
+ _state.trys.push([
1205
+ 9,
1206
+ 14,
1207
+ 15,
1208
+ 16
1209
+ ]);
1210
+ _iterator1 = _classPrivateFieldGet(this, _cache)[Symbol.iterator]();
1211
+ _state.label = 10;
1212
+ case 10:
1213
+ if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
1214
+ 3,
1215
+ 13
1216
+ ];
1217
+ item1 = _step1.value;
1218
+ _item1 = _slicedToArray(item1, 2), key1 = _item1[0], value1 = _item1[1];
1219
+ deleted1 = _classPrivateMethodGet(this, _deleteIfExpired, deleteIfExpired).call(this, key1, value1);
1220
+ if (!(deleted1 === false)) return [
1221
+ 3,
1222
+ 12
1223
+ ];
1224
+ return [
1225
+ 4,
1226
+ item1
1227
+ ];
1228
+ case 11:
1229
+ _state.sent();
1230
+ _state.label = 12;
1231
+ case 12:
1232
+ _iteratorNormalCompletion1 = true;
1233
+ return [
1234
+ 3,
1235
+ 10
1236
+ ];
1237
+ case 13:
1238
+ return [
1239
+ 3,
1240
+ 16
1241
+ ];
1242
+ case 14:
1243
+ err = _state.sent();
1244
+ _didIteratorError1 = true;
1245
+ _iteratorError1 = err;
1246
+ return [
1247
+ 3,
1248
+ 16
1249
+ ];
1250
+ case 15:
1251
+ try {
1252
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
1253
+ _iterator1.return();
1254
+ }
1255
+ } finally{
1256
+ if (_didIteratorError1) {
1257
+ throw _iteratorError1;
1258
+ }
1259
+ }
1260
+ return [
1261
+ 7
1262
+ ];
1263
+ case 16:
1264
+ return [
1265
+ 2
1266
+ ];
1267
+ }
1268
+ });
1269
+ }
package/package.json CHANGED
@@ -1,27 +1,26 @@
1
1
  {
2
2
  "name": "@common.js/quick-lru",
3
- "version": "6.1.2",
3
+ "version": "7.0.0",
4
4
  "description": "quick-lru package exported as CommonJS modules",
5
5
  "license": "MIT",
6
6
  "repository": "etienne-martin/common.js",
7
7
  "funding": "https://github.com/sponsors/sindresorhus",
8
8
  "type": "commonjs",
9
9
  "engines": {
10
- "node": ">=12"
10
+ "node": ">=18"
11
11
  },
12
12
  "scripts": {
13
- "//test": "xo && nyc ava && tsd",
14
- "test": "xo && ava"
13
+ "test": "xo && nyc ava && tsd"
15
14
  },
16
15
  "files": [
17
16
  "index.js",
18
17
  "index.d.ts"
19
18
  ],
20
19
  "devDependencies": {
21
- "ava": "^3.15.0",
20
+ "ava": "^5.3.1",
22
21
  "nyc": "^15.1.0",
23
- "tsd": "^0.14.0",
24
- "xo": "^0.37.1"
22
+ "tsd": "^0.29.0",
23
+ "xo": "^0.56.0"
25
24
  },
26
25
  "nyc": {
27
26
  "reporter": [
@@ -31,5 +30,6 @@
31
30
  },
32
31
  "homepage": "https://github.com/etienne-martin/common.js#readme",
33
32
  "dependencies": {},
33
+ "types": "./index.d.ts",
34
34
  "main": "./index.js"
35
35
  }